Esempio n. 1
0
 //-------------------------------------------------------
 private void DeleteAlarme(CLocalAlarme alarme)
 {
     lock (typeof(CLockerDatabase))
     {
         foreach (CLocalAlarme alarmeFille in alarme.Childs.ToArray())
         {
             DeleteAlarme(alarmeFille);
         }
         if (m_dicAlarmes.ContainsKey(alarme.Id))
         {
             m_dicAlarmes.Remove(alarme.Id);
         }
         string strKey = alarme.GetKey();
         if (m_dicCurrent.ContainsKey(strKey))
         {
             m_dicCurrent.Remove(strKey);
         }
         if (m_dicEnded.ContainsKey(strKey))
         {
             m_dicEnded.Remove(strKey);
         }
         lock (typeof(CLockListeAlarmes))
         {
             if (m_listeAlarmesATransmettre.Contains(alarme))
             {
                 m_listeAlarmesATransmettre.Remove(alarme);
             }
         }
     }
     alarme.Delete();
 }
Esempio n. 2
0
        //-------------------------------------------------------
        public CLocalAlarme GetAlarmFromId(string strId)
        {
            CLocalAlarme alrm = null;

            m_dicAlarmes.TryGetValue(strId, out alrm);
            return(alrm);
        }
Esempio n. 3
0
        private void GereMasquage(CLocalAlarme alarme)
        {
            /// Passe l'Alarme dans les filtre de masquage, avec ou sans remontée en BDD
            /// Il peut y avoir plusieurs filtres qui masquent l'Alarme. Donc il faut prendre celui qui a
            /// une Catégorie de Masquage de plus haute priorité
            CLocalParametrageFiltrageAlarmes localMasque = null;

            IEnumerable <IParametrageFiltrageAlarmes> lstParametres = from p in ParametresFiltrage select p as IParametrageFiltrageAlarmes;

            localMasque = CUtilMasquageAlarmes.GetParametreAAppliquer(
                alarme,
                DateTime.Now,
                lstParametres) as CLocalParametrageFiltrageAlarmes;

            if (localMasque != null && localMasque.IgnorerEnBase)
            {
                m_trace.Write("Alarm is hidden " + alarme.Libelle, ALTRACE.DEBUG);
                DeleteAlarme(alarme);
            }


            if (localMasque != null)
            {
                alarme.MasquagePropre = localMasque;
            }
        }
Esempio n. 4
0
 //-------------------------------------------------------
 public void NettoyageDB()
 {
     lock (typeof(CLockerDatabase))
         lock (typeof(CLockListeAlarmes))
         {
             List <CLocalAlarme> listeATraiter          = new List <CLocalAlarme>();
             CListeEntitesDeMemoryDb <CLocalAlarme> lst = new CListeEntitesDeMemoryDb <CLocalAlarme>(Database);
             lst.Filtre = new CFiltreMemoryDb(CLocalAlarme.c_champIdParent + " is null");
             foreach (CLocalAlarme alarme in lst)
             {
                 if (!m_listeAlarmesATransmettre.Contains(alarme))
                 {
                     listeATraiter.Add(alarme);
                 }
             }
             while (listeATraiter.Count > 0)
             {
                 List <CLocalAlarme> nextList = new List <CLocalAlarme>();
                 foreach (CLocalAlarme alrm in listeATraiter)
                 {
                     if (alrm.EtatCode == EEtatAlarme.Close)
                     {
                         CLocalAlarme parent = alrm.Parent;
                         if (parent != null && !m_listeAlarmesATransmettre.Contains(parent))
                         {
                             nextList.Add(parent);
                         }
                     }
                     DeleteAlarme(alrm);
                 }
                 listeATraiter = nextList;
             }
         }
 }
Esempio n. 5
0
        //-------------------------------------------------------
        public CLocalAlarme GetCurrentAlarmFromKey(string strKey)
        {
            CLocalAlarme alarme = null;

            m_dicCurrent.TryGetValue(strKey, out alarme);
            return(alarme);
        }
Esempio n. 6
0
 //-------------------------------------------------------
 private CLocalAlarme GetNewAlarme()
 {
     lock (typeof(CLockerDatabase))
     {
         CLocalAlarme alrm = new CLocalAlarme(m_database);
         alrm.CreateNew();
         return(alrm);
     }
 }
Esempio n. 7
0
        //-------------------------------------------------------
        private void GereParent(CLocalAlarme alarme)
        {
            if (alarme == null)
            {
                return;
            }
            CLocalTypeAlarme type = alarme.TypeAlarme;

            if (alarme.Parent == null && type.TypeParent != null)
            {
                string       strKey = alarme.CalcParentKey();
                CLocalAlarme parent = GetCurrentAlarmFromKey(strKey);;
                if (parent != null)
                {
                    alarme.Parent = parent;
                }
                else
                {
                    parent            = GetNewAlarme();
                    parent.TypeAlarme = type.TypeParent;
                    if ((parent.TypeAlarme.TypeElementSupervise & ETypeElementSupervise.Site) == ETypeElementSupervise.Site)
                    {
                        parent.SiteId = alarme.SiteId;
                    }
                    if ((parent.TypeAlarme.TypeElementSupervise & ETypeElementSupervise.Equipement) == ETypeElementSupervise.Equipement)
                    {
                        parent.EquipementId = alarme.EquipementId;
                    }
                    if ((parent.TypeAlarme.TypeElementSupervise & ETypeElementSupervise.Lien) == ETypeElementSupervise.Lien)
                    {
                        parent.LienId = alarme.LienId;
                    }
                    if ((parent.TypeAlarme.TypeElementSupervise & ETypeElementSupervise.EntiteSnmp) == ETypeElementSupervise.EntiteSnmp)
                    {
                        parent.EntiteSnmpId = alarme.EntiteSnmpId;
                    }

                    CLocalTypeAlarme typeForChamps = parent.TypeAlarme;
                    while (typeForChamps != null)
                    {
                        foreach (CLocalRelationTypeAlarmeChampAlarme rel in typeForChamps.RelationsChamps)
                        {
                            parent.SetValeurChamp(rel.Champ.Id, alarme.GetValeurChamp(rel.Champ.Id));
                        }
                        typeForChamps = typeForChamps.TypeParent;
                    }
                    alarme.Parent = parent;
                }
                parent.Etat = new CEtatAlarme(EEtatAlarme.Open);
            }
            if (alarme.Parent != null)
            {
                alarme.AgitSurParent();
                GereAlarme(alarme.Parent, EModeRemonteeAlarmes.InscrireARemonterMaisNePasLeFaire);
            }
        }
Esempio n. 8
0
        //-------------------------------------------------------
        public void CreateAlarme(CAlarmeACreer alarmeACreer, EModeRemonteeAlarmes modeRemontee)
        {
            bool bGerer = false;

            lock (typeof(CLockerDatabase))
            {
                string strParentKey = alarmeACreer.Alarme.CalcParentKey();

                switch (alarmeACreer.OptionCreation)
                {
                case EOptionCreationAlarme.Always:
                    bGerer = true;
                    break;

                case EOptionCreationAlarme.SiPasDeParentActif:
                    if (strParentKey == null)
                    {
                        bGerer = true;
                    }
                    else
                    {
                        bGerer = !m_dicCurrent.ContainsKey(strParentKey);
                    }
                    break;

                case EOptionCreationAlarme.SiParentActif:
                    if (strParentKey == null)
                    {
                        bGerer = true;
                    }
                    else
                    {
                        bGerer = m_dicCurrent.ContainsKey(strParentKey);
                    }
                    break;

                default:
                    break;
                }
                if (alarmeACreer.Alarme.TypeAlarme.RegrouperSurLaCle &&
                    m_dicCurrent.ContainsKey(alarmeACreer.Alarme.GetKey()))
                {
                    CLocalAlarme alrmExistante = m_dicCurrent[alarmeACreer.Alarme.GetKey()];
                    if (alrmExistante.EtatCode == alarmeACreer.Alarme.EtatCode)
                    {
                        m_trace.Write("Alarm already exists", ALTRACE.DEBUG);
                        return;
                    }
                }
            }
            if (bGerer)
            {
                GereAlarme(alarmeACreer.Alarme, modeRemontee);
            }
        }
Esempio n. 9
0
        public CResultAErreur SetValue(object objet, string strPropriete, object valeur)
        {
            CResultAErreur result = CResultAErreur.True;
            CLocalAlarme   alarme = objet as CLocalAlarme;

            if (alarme == null)
            {
                return(result);
            }
            alarme.SetValeurChamp(strPropriete, valeur);
            return(result);
        }
Esempio n. 10
0
        //-------------------------------------------------------
        public void GereAlarme(CLocalAlarme alarme, EModeRemonteeAlarmes modeRemontee)
        {
            CResultAErreur result = CResultAErreur.True;

            DateTime dtChrono = DateTime.Now;

            lock (typeof(CLockerDatabase))
            {
                if (alarme.Database != Database)
                {
                    CLocalAlarme tmpAlarme = new CLocalAlarme(Database);
                    if (!tmpAlarme.ReadIfExist(alarme.Id))
                    {
                        m_dicCurrent.TryGetValue(alarme.GetKey(), out tmpAlarme);
                        if (tmpAlarme == null)
                        {
                            tmpAlarme = Database.ImporteObjet(alarme, false, false) as CLocalAlarme;
                        }
                    }

                    //Reprend l'état de l'alarme qui vient d'arriver. Le reste ne bouge pas
                    tmpAlarme.EtatCode = alarme.EtatCode;//Mise à jour de l'état
                    alarme             = tmpAlarme;
                }

                TimeSpan sp = DateTime.Now - dtChrono;

                string strKey = alarme.GetKey();
                if (alarme.Etat.Code == EEtatAlarme.Open && alarme.DateFin == null)
                {
                    IntegreAlarmeAListeOuvertes(alarme);
                }
                else
                {
                    IntegreAlarmeAListeFermees(alarme);
                }

                m_dicAlarmes[alarme.Id] = alarme;
                if (modeRemontee != EModeRemonteeAlarmes.NePasRemonter)
                {
                    AddAlarmeAEnvoyer(alarme);
                }
            }

            GereParent(alarme);
            GereMasquage(alarme);


            if (modeRemontee == EModeRemonteeAlarmes.RemonterEnFin && m_traiteurAlarmes != null)
            {
                SendAlarmes();
            }
        }
Esempio n. 11
0
        public CResultAErreur GetValue(object objet, string strPropriete)
        {
            CResultAErreur result = CResultAErreur.True;
            CLocalAlarme   alarme = objet as CLocalAlarme;

            if (alarme == null)
            {
                return(result);
            }
            result.Data = alarme.GetValeurChamp(strPropriete);
            return(result);
        }
Esempio n. 12
0
        //-------------------------------------------------------
        public void RedescendAlarmes(CMemoryDb dbContenantLesAlarmesARedescendre)
        {
            CListeEntitesDeMemoryDb <CLocalAlarme> lst = new CListeEntitesDeMemoryDb <CLocalAlarme>(dbContenantLesAlarmesARedescendre);

            foreach (CLocalAlarme alrm in lst)
            {
                CLocalAlarme myAlarm = new CLocalAlarme(m_database);
                if (myAlarm.ReadIfExist(alrm.Id))
                {
                    GereAlarme(alrm, EModeRemonteeAlarmes.NePasRemonter);
                }
            }
        }
Esempio n. 13
0
 private void AddAlarmeAEnvoyer(CLocalAlarme alarme)
 {
     lock (typeof(CLockListeAlarmes))
     {
         if (!m_listeAlarmesATransmettre.Contains(alarme))
         {
             m_listeAlarmesATransmettre.Add(alarme);
             m_nNbTotalAEnvoyer++;
         }
         foreach (CLocalAlarme child in alarme.Childs.ToArray())
         {
             AddAlarmeAEnvoyer(child);
         }
     }
 }
Esempio n. 14
0
        //-------------------------------------------------------
        private void IntegreAlarmeAListeFermees(CLocalAlarme alarme)
        {
            string strKey = alarme.GetKey();

            if (m_dicCurrent.ContainsKey(strKey))
            {
                m_dicCurrent.Remove(strKey);
            }
            if (!m_dicEnded.ContainsKey(strKey))
            {
                m_dicEnded[strKey] = alarme;
            }
            foreach (CLocalAlarme fille in alarme.Childs)
            {
                IntegreAlarmeAListeFermees(fille);
            }
        }
Esempio n. 15
0
 public CAlarmeACreer(CLocalAlarme alarme, EOptionCreationAlarme option)
 {
     m_alarme         = alarme;
     m_optionCreation = option;
 }
Esempio n. 16
0
        //----------------------------------------------
        private string CalcKey(CLocalTypeAlarme type, CLocalAlarme alarmePossédantLesChamps)
        {
            if (type == null)
            {
                return(null);
            }
            if (!type.RegrouperSurLaCle)
            {
                return(alarmePossédantLesChamps.Id);
            }
            if (type == null)
            {
                return(alarmePossédantLesChamps.Id);
            }
            StringBuilder bl = new StringBuilder();

            bl.Append(type.Id);

            bl.Append('~');
            switch (type.TypeElementSupervise)
            {
            case ETypeElementSupervise.Site:
                bl.Append(SiteId == null ? "" : SiteId.StringValue);
                bl.Append('~');
                break;

            case ETypeElementSupervise.Equipement:
                bl.Append(SiteId == null ? "" : SiteId.StringValue);
                bl.Append('~');
                bl.Append(EquipementId == null ? "" : EquipementId.StringValue);
                bl.Append('~');
                break;

            case ETypeElementSupervise.Lien:
                bl.Append(LienId == null ? "" : LienId.StringValue);
                bl.Append('~');
                break;

            case ETypeElementSupervise.EntiteSnmp:
                bl.Append(SiteId == null ? "" : SiteId.StringValue);
                bl.Append('~');
                bl.Append(EntiteSnmpId == null ? "" : EntiteSnmpId.StringValue);
                bl.Append('~');
                break;

            default:
                break;
            }


            foreach (CLocalChampTypeAlarme champ in type.TousLesChampsCles)
            {
                object val    = GetValeurChamp(champ.Id);
                string strVal = val == null ? "null" : val.ToString();
                bl.Append(strVal);
                bl.Append('~');
            }
            if (bl.Length == 0)
            {
                bl.Append(alarmePossédantLesChamps.Id);
            }
            return(bl.ToString());
        }
Esempio n. 17
0
 public void SendAlarmes()
 {
     if (m_traiteurAlarmes == null)
     {
         return;
     }
     if (m_nWaitingCounter > 5)
     {
         return;
     }
     m_nWaitingCounter++;
     lock (typeof(CLockTraiteurAlarmes))
     {
         m_nWaitingCounter--;
         List <CLocalAlarme> lstToSend = null;
         lock (typeof(CLockListeAlarmes))
         {
             if (m_listeAlarmesATransmettre.Count < 250 || m_nWaitingCounter == 0)
             {
                 lstToSend = m_listeAlarmesATransmettre;
                 m_listeAlarmesATransmettre = new List <CLocalAlarme>();
             }
             else
             {
                 lstToSend = new List <CLocalAlarme>();
                 for (int n = 0; n < 250; n++)
                 {
                     lstToSend.Add(m_listeAlarmesATransmettre[n]);
                 }
                 m_listeAlarmesATransmettre.RemoveRange(0, 250);
             }
         }
         try
         {
             System.Data.DataTable tbl = Database.Tables[CLocalAlarme.c_nomTable];
             Console.WriteLine("Nb in db : " + tbl.Rows.Count);
             if (lstToSend.Count == 0)
             {
                 return;
             }
             using (CMemoryDb memDB = new CMemoryDb())
             {
                 memDB.EnforceConstraints = false;
                 lock (typeof(CLockerDatabase))
                 {
                     foreach (CLocalAlarme alrm in lstToSend)
                     {
                         try
                         {
                             if (alrm.Row.Row.RowState != System.Data.DataRowState.Detached)
                             {
                                 memDB.ImporteObjet(alrm, true, false);
                             }
                         }
                         catch (Exception e)
                         {
                             throw e;
                         }
                     }
                 }
                 m_nNbSend += lstToSend.Count;
                 CResultAErreurType <CMappageIdsAlarmes> result = m_traiteurAlarmes.Traite(memDB);
                 if (result)
                 {
                     if (result.DataType != null)
                     {
                         foreach (KeyValuePair <string, string> kv in result.DataType)
                         {
                             if (kv.Value != kv.Key)
                             {
                                 CLocalAlarme alarme = GetAlarmFromId(kv.Key);
                                 if (alarme != null)
                                 {
                                     alarme.Id = kv.Key;
                                     m_dicAlarmes.Remove(kv.Key);
                                     m_dicAlarmes[kv.Value] = alarme;
                                 }
                             }
                         }
                     }
                     NettoyageDB();
                     return;
                 }
                 if (!result)
                 {
                     m_trace.Write("Error while sending to Timos manager", ALTRACE.DEBUG);
                     m_trace.Write(result.Erreur.ToString(), ALTRACE.DEBUG);
                 }
             }
         }
         catch (Exception exep)
         {
         }
         lock (typeof(CLockListeAlarmes))
         {
             for (int n = lstToSend.Count - 1; n >= 0; n--)
             {
                 if (lstToSend[n].Row.Row.RowState == System.Data.DataRowState.Detached)
                 {
                     lstToSend.RemoveAt(n);
                 }
             }
             m_listeAlarmesATransmettre.InsertRange(0, lstToSend);
         }
     }
 }