/// <summary> /// MP : Masquage Propre /// MH : Masquage Hérité /// Cette fonction ne se pose pas de question,elle propage directement le Mh sur les filles /// Elles est récursive, elle propoage le MH sur les filles des filles des filles... /// </summary> private void PropageMasquageHeriteSurFilles(CParametrageFiltrageAlarmes masque) { foreach (CAlarme fille in AlarmesFilles) { fille.MasquageHerite = null; fille.MasquageHerite = masque; fille.PropageMasquageHeriteSurFilles(fille.GetMasquageApplique()); } }
/// <summary> /// MP : Masquage Propre /// MH : Masquage Hérité /// Règle de calcul du MH en fonction des Alarmes filles: /// Avant de regarder toutes les filles, si l'Alarme en cours a un MP, on ne tient pas compte de l'état des filles /// et on propage automatiquement un MH sur toutes les filles /// Sinon, on regarde toutes les filles: /// Si toutes les filles sont masquées (MP ou MH) on met l'Alarme en cours à MH = true; /// Si une des filles n'est pas masquée, on met l'Alarme en cours à MH = false; /// En d'autres termes, si toutes mes filles sont masquées, je n'ai pas de raison d'apparaître! /// </summary> private void RecalcMasquageEnCascadeFromFilles() { MasquageHerite = null; if (MasquagePropre != null) { // On arrête ici le calcul à partir des filles, // et on force la propagation du MH sur les filles PropageMasquageHeriteSurFilles(MasquagePropre); return; } foreach (CAlarme fille in AlarmesFilles) { fille.RecalcMasquageEnCascadeFromFilles(); } bool bMasqueHerite = AlarmesFilles.Count > 0; CParametrageFiltrageAlarmes masqueLePlusPrioritaire = null; foreach (CAlarme alarmeFille in AlarmesFilles) { CParametrageFiltrageAlarmes masque = alarmeFille.GetMasquageApplique(); if (masque == null) { bMasqueHerite = false; break; } else { if (masqueLePlusPrioritaire == null || masque.CategorieMasquage.Priorite < masqueLePlusPrioritaire.CategorieMasquage.Priorite) { masqueLePlusPrioritaire = masque; } } } if (bMasqueHerite) { MasquageHerite = masqueLePlusPrioritaire; } }
//---------------------------------------------------- /// <summary> /// Remplit ou met à jour l'alarme à partir de données /// issues d'un service de médiation /// </summary> /// <param name="alarme"></param> public void FillFromLocalAlarmeFromMediation(CLocalAlarme alarme) { Libelle = alarme.Libelle; Cle = alarme.GetKey(); AlarmId = alarme.Id; EtatCode = (int)alarme.EtatCode; DateDebut = alarme.DateDebut; DateFin = alarme.DateFin; CTypeAlarme ta = new CTypeAlarme(ContexteDonnee); if (ta.ReadIfExists(Int32.Parse(alarme.TypeAlarme.Id))) { TypeAlarme = ta; } else { throw new Exception(I.T("Alarm type @1 doesn't exists|20104", alarme.TypeAlarme.Libelle)); } Site = null; EquipementLogique = null; LienReseau = null; EntiteSnmp = null; //Site if (alarme.SiteId != null) { /*int? nId = CDbKeyAddOn.GetIdFromUniverselId(typeof(CSite), alarme.SiteId); * if (nId != null) * Row[CSite.c_champId] = nId.Value;*/ CSite site = new CSite(ContexteDonnee); if (site.ReadIfExists(alarme.SiteId)) { Site = site; } } if (alarme.EquipementId != null) { /*int? nId = CDbKeyAddOn.GetIdFromUniverselId(typeof(CEquipementLogique), alarme.EquipementId); * if (nId != null) * Row[CEquipementLogique.c_champId] = nId.Value;*/ CEquipementLogique eqt = new CEquipementLogique(ContexteDonnee); if (eqt.ReadIfExists(alarme.EquipementId)) { EquipementLogique = eqt; } } if (alarme.LienId != null) { /*int? nId = CDbKeyAddOn.GetIdFromUniverselId(typeof(CLienReseau), alarme.LienId); * if (nId != null) * Row[CLienReseau.c_champId] = nId.Value;*/ CLienReseau lien = new CLienReseau(ContexteDonnee); if (lien.ReadIfExists(alarme.LienId)) { LienReseau = lien; } } if (alarme.EntiteSnmpId != null) { /*int? nId = CDbKeyAddOn.GetIdFromUniverselId(typeof(CEntiteSnmp), alarme.EntiteSnmpId); * if (nId != null) * Row[CEntiteSnmp.c_champId] = nId.Value;*/ CEntiteSnmp entite = new CEntiteSnmp(ContexteDonnee); if (entite.ReadIfExists(alarme.EntiteSnmpId)) { EntiteSnmp = entite; } } IsHS = alarme.IsHS; if (alarme.IdSeverite != null) { CSeveriteAlarme severite = new CSeveriteAlarme(ContexteDonnee); if (severite.ReadIfExists(Int32.Parse(alarme.IdSeverite))) { Severite = severite; } } if (alarme.MasquagePropre != null) { CParametrageFiltrageAlarmes parametreFiltre = new CParametrageFiltrageAlarmes(ContexteDonnee); if (parametreFiltre.ReadIfExists(Int32.Parse(alarme.MasquagePropre.Id))) { MasquagePropre = parametreFiltre; } } else { MasquagePropre = null; } foreach (CChampCustom champ in ta.TousLesChampsAssocies) { object val = alarme.GetValeurChamp(champ.Id.ToString()); if (val != null) { SetValeurChamp(champ.Id, val); } } }