Esempio n. 1
0
        public void AddAlarm(string strCodeCreateur, int nCondition, CFuturocomTrace trace)
        {
            CCreateurAlarme createur = m_trapHandler.GetCreateur(strCodeCreateur);

            if (createur != null)
            {
                CLocalTypeAlarme typeAl = createur.TypeAlarme;
                if (typeAl != null)
                {
                    CLocalAlarme alarme = new CLocalAlarme(m_dbPourAlarmes);
                    alarme.CreateNew();
                    alarme.TypeAlarme         = typeAl;
                    alarme.EntiteDeclencheuse = EntiteAssociee;
                    alarme.EtatCode           = typeAl.EtatDefaut;
                    CResultAErreur result = createur.FillAlarm(this, alarme);
                    if (!result && trace != null)
                    {
                        trace.Write("Creator fill alarm error " + result.Erreur.ToString(), ALTRACE.DEBUG);
                    }
                    if (m_listeAlarmesACreer.FirstOrDefault(ac => ac.Alarme.GetKey() == alarme.GetKey()) == null)
                    {
                        CAlarmeACreer create = new CAlarmeACreer(alarme, (EOptionCreationAlarme)nCondition);
                        m_listeAlarmesACreer.Add(create);
                    }
                }
                else if (trace != null)
                {
                    trace.Write(createur.Libelle + " alarm type is null");
                }
            }
            else
            {
                if (trace != null)
                {
                    trace.Write(
                        "Can not find creator " + strCodeCreateur,
                        ALTRACE.DEBUG);
                }
            }
        }
Esempio n. 2
0
        public void CreateAlarmesOnTrap(CTrapInstance trap, CFuturocomTrace trace)
        {
            trap.CurrentTrapHandler = this;
            CDefinitionProprieteDynamiqueVariableFormule def = AssureVariableTrap(FormulePreTraitementTrap);
            CContexteEvaluationExpression ctx = new CContexteEvaluationExpression(TypeAgent);

            if (def != null)
            {
                ctx.SetValeurVariable(def, trap);
            }
            CResultAErreur result = CResultAErreur.True;

            trap.EntiteAssociee = null;
            if (FormuleIndexEntite != null && TypeEntiteAssocie != null)
            {
                CContexteEvaluationExpression ctxSurThis = new CContexteEvaluationExpression(trap);
                result = FormuleIndexEntite.Eval(ctxSurThis);
                if (result && result.Data != null)
                {
                    CListeEntitesDeMemoryDb <CEntiteSnmpPourSupervision> lst = trap.AgentSnmp.Entites;
                    lst.Filtre = new CFiltreMemoryDb(CEntiteSnmpPourSupervision.c_champIndex + "=@1 and " +
                                                     CTypeEntiteSnmpPourSupervision.c_champId + "=@2",
                                                     result.Data.ToString(),
                                                     TypeEntiteAssocie.Id);
                    if (lst.Count() > 0)
                    {
                        trap.EntiteAssociee = lst.ElementAt(0);
                        if (trace != null)
                        {
                            trace.Write(
                                "Trap associated to entity " + trap.EntiteAssociee.Libelle + " (" + trap.EntiteAssociee.TypeEntite.Libelle + ")",
                                ALTRACE.DEBUG);
                        }
                    }
                    else
                    {
                        if (trace != null)
                        {
                            trace.Write(
                                "Associated entity is null (" + TypeEntiteAssocie.Libelle + " " + result.Data.ToString() + ")",
                                ALTRACE.DEBUG);
                        }
                    }
                }
                else
                {
                    if (trace != null)
                    {
                        if (!result)
                        {
                            trace.Write(
                                "Error in associed entity index formula : " + result.Erreur.ToString(),
                                ALTRACE.DEBUG);
                        }
                        else
                        {
                            trace.Write(
                                "Error in associed entity index formula : the formula returned a null result",
                                ALTRACE.DEBUG);
                        }
                    }
                }
            }
            bool bEvalPretraite = true;

            if (FormulePreTraitementTrap is C2iExpressionGraphique &&
                FormulePreTraitementTrap.Parametres.Count == 0)
            {
                bEvalPretraite = false;
            }
            if (bEvalPretraite)
            {
                result = FormulePreTraitementTrap.Eval(ctx);
                if (!result && trace != null)
                {
                    trace.Write(
                        "Error in Pretreatment formula " + result.Erreur.ToString(),
                        ALTRACE.DEBUG);
                }
            }



            foreach (CCreateurAlarme createur in CreateursAlarmes)
            {
                if (trace != null)
                {
                    trace.Write(
                        "Try creator " + createur.Libelle + " (" + createur.Code + ")",
                        ALTRACE.DEBUG);
                }
                bool bCreer = createur.FormuleCondition.GetType() == typeof(C2iExpressionVrai);
                if (!bCreer)
                {
                    ctx    = new CContexteEvaluationExpression(trap);
                    result = createur.FormuleCondition.Eval(ctx);
                    if (result && result.Data is bool && (bool)result.Data)
                    {
                        bCreer = true;
                    }
                    else if (trace != null)
                    {
                        if (!result)
                        {
                            trace.Write(
                                "Creator " + createur.Libelle + " condition error : " + result.Erreur.ToString(),
                                ALTRACE.DEBUG);
                        }
                        else
                        {
                            trace.Write(
                                "Create " + createur.Libelle + " condition returned false",
                                ALTRACE.DEBUG);
                        }
                    }
                }
                if (bCreer)
                {
                    if (trace != null)
                    {
                        trace.Write(
                            "Creator " + createur.Libelle + " condition returned true",
                            ALTRACE.DEBUG);
                    }
                    trap.AddAlarm(createur.Code, 0, trace);
                }
            }
        }