//---------------------------------------------------------------------------------------------- private void StopAlarme(int?nIdAlarme) { if (nIdAlarme == null) { return; } // Traitement de l'état opérationnel des schémas CSpvAlarmeDonnee alarmeData = new CSpvAlarmeDonnee(ContexteDonnee); if (alarmeData.ReadIfExists(nIdAlarme.Value)) { List <CElementDeArbreOperationnel> listeNoeudsConcernes = new List <CElementDeArbreOperationnel>(); if (alarmeData.EquipId != null) { m_dicEquipementToNoeudArbreOp.TryGetValue(alarmeData.EquipId.Value, out listeNoeudsConcernes); } else if (alarmeData.SiteId != null) { m_dicSiteToNoeudArbreOp.TryGetValue(alarmeData.SiteId.Value, out listeNoeudsConcernes); } else if (alarmeData.LiaiId != null) { m_dicLiaisonToNoeudArbreOp.TryGetValue(alarmeData.LiaiId.Value, out listeNoeudsConcernes); } // Passe tous les coef opérationnels à 1 = OK PropageCoefOperationnel(listeNoeudsConcernes, 1.0); } List <CInfoElementDeSchemaSupervise> lst = null; if (m_dicAlarmeToElementsConcernes.TryGetValue((int)nIdAlarme, 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) { info.StopAlarme(nIdAlarme.Value); CInfoElementDeSchemaSupervise parent = info.Parent; if (parent != null) { lstAPrevenir.Add(parent); } } } } if (lst != null && lst.Count > 0) { Refresh(); } }
public CSpvAlarmeDonnee GetSpvAlarme(CContexteDonnee contexteDonnee) { AssureData(); CSpvAlarmeDonnee alarme = new CSpvAlarmeDonnee(contexteDonnee); if (alarme.ReadIfExists(m_nIdAlarmData)) { return(alarme); } return(null); }
//---------------------------------------------------------------------------------------------- private void StartAlarme(CInfoAlarmeAffichee infoAlarme) { //int nIdAlarme = infoAlarme.IdSpvEvtAlarme; int nIdAlarmeData = infoAlarme.IdSpvAlarmeData; m_dicAlarmes[nIdAlarmeData] = infoAlarme; // Traitement de l'état opérationnel des schémas CSpvAlarmeDonnee alarmeData = new CSpvAlarmeDonnee(ContexteDonnee); if (infoAlarme.SeverityCode >= (int)EGraviteAlarme.Major && alarmeData.ReadIfExists(nIdAlarmeData)) { List <CElementDeArbreOperationnel> listeNoeudsConcernes = new List <CElementDeArbreOperationnel>(); if (alarmeData.EquipId != null) { m_dicEquipementToNoeudArbreOp.TryGetValue(alarmeData.EquipId.Value, out listeNoeudsConcernes); } else if (alarmeData.SiteId != null) { m_dicSiteToNoeudArbreOp.TryGetValue(alarmeData.SiteId.Value, out listeNoeudsConcernes); } else if (alarmeData.LiaiId != null) { m_dicLiaisonToNoeudArbreOp.TryGetValue(alarmeData.LiaiId.Value, out listeNoeudsConcernes); } PropageCoefOperationnel(listeNoeudsConcernes, 0.0); } List <CInfoElementDeSchemaSupervise> lstConcernes = null; if (infoAlarme.InfoEquipement != null) { m_dicDirectementConcernesParEquipement.TryGetValue(infoAlarme.InfoEquipement.Id, out lstConcernes); } if (infoAlarme.InfoLiaison != null) { m_dicDirectementConcernesParLiaison.TryGetValue(infoAlarme.InfoLiaison.Id, out lstConcernes); } if (infoAlarme.InfoSite != null && infoAlarme.InfoSite.Id != null) { m_dicDirectementConcernesParSite.TryGetValue(infoAlarme.InfoSite.Id.Value, out lstConcernes); } Dictionary <CInfoElementDeSchemaSupervise, bool> dicConcernes = new Dictionary <CInfoElementDeSchemaSupervise, bool>(); if (lstConcernes != null) { List <CInfoElementDeSchemaSupervise> lstAPrevenir = new List <CInfoElementDeSchemaSupervise>(lstConcernes); bool bFirstNiveau = true; while (lstAPrevenir.Count != 0) { lstAPrevenir.Sort(); CInfoElementDeSchemaSupervise[] infos = lstAPrevenir.ToArray(); lstAPrevenir.Clear(); foreach (CInfoElementDeSchemaSupervise info in infos) { if (bFirstNiveau) { dicConcernes[info] = true; } info.StartAlarme(infoAlarme, false); CInfoElementDeSchemaSupervise parent = info.Parent; if (parent != null) { lstAPrevenir.Add(parent); } } bFirstNiveau = false; } if (lstConcernes.Count > 0) { Refresh(); } } List <CInfoElementDeSchemaSupervise> lst = new List <CInfoElementDeSchemaSupervise>(); lst.AddRange(dicConcernes.Keys); m_dicAlarmeToElementsConcernes[nIdAlarmeData] = lst; }