예제 #1
0
 internal void FillDicsConcernes(
     CDictionnaireConcerne dicConcernesParSite,
     CDictionnaireConcerne dicConcernesParLiaison,
     CDictionnaireConcerne dicConcernesParEquipement,
     CDictionnaireConcerne dicConcernesParService)
 {
     foreach (int nId in m_dicSitesSpvConcernant.Keys)
     {
         dicConcernesParSite.Add(nId, this);
     }
     foreach (int nId in m_dicLiaisonsSpvConcernant.Keys)
     {
         dicConcernesParLiaison.Add(nId, this);
     }
     foreach (int nId in m_dicEquipementsSpvConcernant.Keys)
     {
         dicConcernesParEquipement.Add(nId, this);
     }
     foreach (int nId in m_dicServicesSpvConcernant.Keys)
     {
         dicConcernesParService.Add(nId, this);
     }
     foreach (CInfoElementDeSchemaSupervise fils in m_listeFils)
     {
         fils.FillDicsConcernes(
             dicConcernesParSite,
             dicConcernesParLiaison,
             dicConcernesParEquipement,
             dicConcernesParService);
     }
 }
예제 #2
0
        //Initialise la base des alarmes en cours avec les alarmes de la base et les acces concernant chaque élément
        private void LoadAlarmesEtLiensTransForElement(string strChampDansAcces, CDictionnaireConcerne dicConcernes)
        {
            //Récupère la relation entre CSpvLienAccesAlarme et CSpvLienAccesAlarmeRep
            if (m_relationFromLienAlarmeToLienAlarmeRep == null)
            {
                foreach (CInfoRelation relation in CContexteDonnee.GetListeRelationsTable(CSpvLienAccesAlarme.c_nomTable))
                {
                    if (relation.TableFille == CSpvLienAccesAlarme_Rep.c_nomTable && relation.TableParente == CSpvLienAccesAlarme.c_nomTable)
                    {
                        m_relationFromLienAlarmeToLienAlarmeRep = relation;
                        break;
                    }
                }
            }
            List <int> lstIdsElements = new List <int>();

            lstIdsElements.AddRange(dicConcernes.Keys);
            int nSizePaquet = 100;

            for (int nPaquet = 0; nPaquet < lstIdsElements.Count; nPaquet += nSizePaquet)
            {
                int           nMax = Math.Min(nPaquet + nSizePaquet, lstIdsElements.Count);
                StringBuilder bl   = new StringBuilder();
                for (int nId = 0; nId < nMax; nId++)
                {
                    bl.Append(lstIdsElements[nId]);
                    bl.Append(';');
                }
                if (bl.Length > 0)
                {
                    bl.Remove(bl.Length - 1, 1);
                    //Charge tous les Liens d'alarme pour les éléments
                    CListeObjetsDonnees lstLiensAccesAlarme = new CListeObjetsDonnees(m_contexteDonnee, typeof(CSpvLienAccesAlarme));
                    lstLiensAccesAlarme.Filtre = new CFiltreDataAvance(CSpvLienAccesAlarme.c_nomTable,
                                                                       CSpvAccesAlarme.c_nomTable + "." + strChampDansAcces + " in (" +
                                                                       bl.ToString() + ")");
                    lstLiensAccesAlarme.AssureLectureFaite();

                    // Chargement des acces correspondant
                    CListeObjetsDonnees lstAcces = lstLiensAccesAlarme.GetDependances("AccesAlarmeOne");
                    lstAcces.InterditLectureInDB = true;

                    CListeObjetsDonnees lstEtatAlarme = lstLiensAccesAlarme.GetDependances(m_relationFromLienAlarmeToLienAlarmeRep);
                    lstEtatAlarme.Filtre = new CFiltreData(CSpvLienAccesAlarme_Rep.c_champALARM_ID + " is not null");
                    lstEtatAlarme.AssureLectureFaite();
                    lstEtatAlarme.InterditLectureInDB = true;

                    // Chargement des données alarmes
                    CListeObjetsDonnees listAlarmesDonnees = lstEtatAlarme.GetDependances("AlarmeDonnee");
                    listAlarmesDonnees.AssureLectureFaite();
                    listAlarmesDonnees.InterditLectureInDB = true;

                    lstLiensAccesAlarme.InterditLectureInDB = true;
                    lstEtatAlarme.InterditLectureInDB       = true;

                    foreach (CSpvAlarmeDonnee donneeAlarme in listAlarmesDonnees)
                    {
                        if (donneeAlarme != null)
                        {
                            CInfoAlarmeAffichee info = new CInfoAlarmeAffichee(donneeAlarme);
                            //m_dicAlarmes[info.IdSpvEvtAlarme] = info;
                            m_dicAlarmes[info.IdSpvAlarmeData] = info;
                            StartAlarme(info);
                        }
                    }

                    foreach (CSpvLienAccesAlarme lienAlarme in lstLiensAccesAlarme)
                    {
                        CSpvAcces acces = lienAlarme.AccesAlarmeOne;
                        if (acces != null)
                        {
                            int?nId = acces.Row[strChampDansAcces] as int?;
                            if (nId != null)
                            {
                                List <CInfoElementDeSchemaSupervise> lst = null;
                                if (dicConcernes.TryGetValue(nId.Value, out lst))
                                {
                                    foreach (CInfoElementDeSchemaSupervise info in lst)
                                    {
                                        info.SetConcerneParAlarmes();
                                        if (lienAlarme.MaskAdminDateMin != null && lienAlarme.MaskBriDateMin > DateTime.Now)
                                        {
                                            if (lienAlarme.MaskAdminDateMax == null || lienAlarme.MaskAdminDateMax < DateTime.Now)
                                            {
                                                info.SetMasquageAdministrateur(lienAlarme.Id, true);
                                            }
                                        }
                                        if (lienAlarme.MaskBriDateMin != null && lienAlarme.MaskBriDateMin > DateTime.Now)
                                        {
                                            if (lienAlarme.MaskBriDateMax == null || lienAlarme.MaskBriDateMax < DateTime.Now)
                                            {
                                                info.SetMasquageBrigadier(lienAlarme.Id, true);
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                    if (m_infoSchemaRacine != null)
                    {
                        List <CInfoElementDeSchemaSupervise> lstTmp = new List <CInfoElementDeSchemaSupervise>();
                        m_infoSchemaRacine.RecalculeToutLeMasquage(lstTmp);
                    }
                }
            }
        }
예제 #3
0
        //----------------------------------------------------------------------------------------------
        private void MaskAlarme(CEvenementAlarmMask evenement)
        {
            if (evenement.IdLienAccesAlarme <= 0 || evenement.DetailMasquage == null)
            {
                return;
            }
            CDictionnaireConcerne dic = null;
            int nIdElement            = 0;

            if (evenement.IdSite != null)
            {
                nIdElement = evenement.IdSite.Value;
                dic        = m_dicDirectementConcernesParSite;
            }
            if (evenement.IdEquipement != null)
            {
                nIdElement = evenement.IdEquipement.Value;
                dic        = m_dicDirectementConcernesParEquipement;
            }
            if (evenement.IdLiaison != null)
            {
                nIdElement = evenement.IdLiaison.Value;
                dic        = m_dicDirectementConcernesParLiaison;
            }
            List <CInfoElementDeSchemaSupervise> lst     = null;
            EGraviteAlarmeAvecMasquage           gravite = (EGraviteAlarmeAvecMasquage)evenement.NiveauMasquage;

            if (dic.TryGetValue((int)nIdElement, out lst))
            {
                List <CInfoElementDeSchemaSupervise> lstAPrevenir = new List <CInfoElementDeSchemaSupervise>(lst);
                while (lstAPrevenir.Count != 0)
                {
                    lstAPrevenir.Sort();
                    CInfoElementDeSchemaSupervise[] infos = lstAPrevenir.ToArray();
                    lstAPrevenir.Clear();
                    foreach (CInfoElementDeSchemaSupervise info in infos)
                    {
                        switch (evenement.DetailMasquage)
                        {
                        case EEvenementMasquage.DebutMasquageAdministrateur:
                            info.SetMasquageAdministrateur(evenement.IdLienAccesAlarme, true);
                            break;

                        case EEvenementMasquage.FinMasquageAdministrateur:
                            info.SetMasquageAdministrateur(evenement.IdLienAccesAlarme, false);
                            break;

                        case EEvenementMasquage.DebutMasquageBrigadier:
                            info.SetMasquageBrigadier(evenement.IdLienAccesAlarme, true);
                            break;

                        case EEvenementMasquage.FinMasquageBrigadier:
                            info.SetMasquageBrigadier(evenement.IdLienAccesAlarme, false);
                            break;
                        }
                        CInfoElementDeSchemaSupervise parent = info.Parent;
                        if (parent != null)
                        {
                            lstAPrevenir.Add(parent);
                        }
                    }
                }
                if (lst.Count != 0 && m_infoSchemaRacine != null)
                {
                    List <CInfoElementDeSchemaSupervise> lstModifs = new List <CInfoElementDeSchemaSupervise>();
                    m_infoSchemaRacine.RecalculeToutLeMasquage(lstModifs);
                    lock (typeof(CLockerRefresh))
                    {
                        foreach (CInfoElementDeSchemaSupervise info in lstModifs)
                        {
                            if (info.IdElementDeSchema != null)
                            {
                                m_dicChangesDepuisDernierRefresh[info.IdElementDeSchema.Value] = true;
                            }
                        }
                    }
                    Refresh();
                }
            }
        }