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); } }
//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); } } } }
//---------------------------------------------------------------------------------------------- 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(); } } }