private void CalculArbreOperationnel() { // Calcul les graphes CResultAErreur result = CResultAErreur.True; CGrapheReseau grapheAller = new CGrapheReseau(); result = grapheAller.CalculeGraphe(m_schema, ESensAllerRetourLienReseau.Forward); if (result) { result = m_arbreAller.CalculArbreRedondanceAuto(m_schema, grapheAller); } CGrapheReseau grapheRetour = new CGrapheReseau(); result = grapheRetour.CalculeGraphe(m_schema, ESensAllerRetourLienReseau.Backward); if (result) { result = m_arbreRetour.CalculArbreRedondanceAuto(m_schema, grapheAller); } foreach (CInfoElementDeSchemaSupervise info in this.ListeFils) { CInfoSchemaDeSchemaSupervise infoSchema = info as CInfoSchemaDeSchemaSupervise; if (infoSchema != null) { infoSchema.CalculArbreOperationnel(); } } }
private void TrouveLesConcernes(CSchemaReseau schema) { m_infoSchemaRacine = new CInfoSchemaDeSchemaSupervise(null, null, this, 0); m_infoSchemaRacine.InitFromSchema(schema); m_dicDirectementConcernesParEquipement.Clear(); m_dicDirectementConcernesParLiaison.Clear(); m_dicDirectementConcernesParSite.Clear(); m_dicDirectementConcernesParServices.Clear(); m_infoSchemaRacine.FillDicsConcernes( m_dicDirectementConcernesParSite, m_dicDirectementConcernesParLiaison, m_dicDirectementConcernesParEquipement, m_dicDirectementConcernesParServices); }
public override void FillDicNoeudArbreRacineToInfoElement( Dictionary <CElementDeArbreOperationnel, CInfoElementDeSchemaSupervise> dicNoeudArbreRacineToInfoElement) { //base.FillDicNoeudArbreRacineToInfoElement(dicNoeudArbreRacineToInfoElement); foreach (CInfoElementDeSchemaSupervise infoFils in m_listeFils) { CInfoSchemaDeSchemaSupervise infoSchema = infoFils as CInfoSchemaDeSchemaSupervise; if (infoSchema != null) { if (!dicNoeudArbreRacineToInfoElement.ContainsKey(infoSchema.ArbreAller.ElementRacine)) { dicNoeudArbreRacineToInfoElement.Add(infoSchema.ArbreAller.ElementRacine, this); } } } }
internal override void InitFromElementDeSchema(CElementDeSchemaReseau eltDeSchema) { base.InitFromElementDeSchema(eltDeSchema); CSite site = eltDeSchema.Site; if (site == null) { throw new Exception("Bad element for supervision data "); } InitForSite(site); //Cherche les cablages pour ce site foreach (CSchemaReseau sousSchema in eltDeSchema.SchemaReseau.SchemaFils) { if (site.Equals(sousSchema.SiteApparenance)) { CInfoSchemaDeSchemaSupervise info = new CInfoSchemaDeSchemaSupervise(this, eltDeSchema, m_base, NiveauProfondeur + 1); m_listeFils.Add(info); info.InitFromSchema(sousSchema); break; } } }
//--------------------------------------------------------------------------------------------- protected override void RecalculeGravite() { //bool bOldOperationnel = m_bIsOperationnel; EEtatOperationnelSchema OldEtat = m_etatOperationnel; try { base.RecalculeGravite(); //Normallement, il n'y a qu'un fils ! m_bIsOperationnel = true; foreach (CInfoElementDeSchemaSupervise infoFils in m_listeFils) { CInfoSchemaDeSchemaSupervise infoSchema = infoFils as CInfoSchemaDeSchemaSupervise; if (infoSchema != null) { m_etatOperationnel = infoSchema.EtatOperationnel; } if (infoFils.GraviteAlarme > GraviteAlarme) { ChangeGravite(infoFils.GraviteAlarme); } } //if (GraviteAlarme >= EGraviteAlarme.Major && (m_dicSitesSpvConcernant.Count > 0 || m_dicEquipementsSpvConcernant.Count > 0))//Pas de schéma if (GraviteAlarme >= EGraviteAlarme.Major)// && (m_dicSitesSpvConcernant.Count > 0 || m_dicEquipementsSpvConcernant.Count > 0))//Pas de schéma { m_etatOperationnel = EEtatOperationnelSchema.HS; } } finally { if (m_etatOperationnel != OldEtat) { m_base.OnChangementEtatSupervise(this); } } }
internal override void InitFromElementDeSchema(CElementDeSchemaReseau elementDeSchema) { base.InitFromElementDeSchema(elementDeSchema); CLienReseau lien = elementDeSchema.LienReseau; if (lien == null) { throw new Exception("Bad element for supervision data "); } m_nIdLienSmt = lien.Id; CSpvLiai liaisonSpv = CSpvLiai.GetObjetSpvFromObjetTimos(lien); if (liaisonSpv != null) { m_dicLiaisonsSpvConcernant[liaisonSpv.Id] = true; m_nIdLienSpv = liaisonSpv.Id; } /* */ CSchemaReseau schemaDeLiaison = lien.SchemaReseau; if (schemaDeLiaison != null) { CInfoSchemaDeSchemaSupervise info = new CInfoSchemaDeSchemaSupervise(this, null, m_base, NiveauProfondeur + 1); m_listeFils.Add(info); info.InitFromSchema(schemaDeLiaison); } //Si pas de schéma ou que le schéma ne contient pas les sites bool bHasElement1 = false; bool bHasElement2 = false; IElementALiensReseau elt1 = lien.Element1; IElementALiensReseau elt2 = lien.Element2; if (schemaDeLiaison != null) { foreach (CElementDeSchemaReseau elt in schemaDeLiaison.ElementsDeSchema) { IElementALiensReseau eltAssocie = elt.ElementAssocie as IElementALiensReseau; if (eltAssocie != null && eltAssocie.Equals(elt1)) { bHasElement1 = true; } if (eltAssocie != null && eltAssocie.Equals(elt2)) { bHasElement2 = true; } if (bHasElement1 && bHasElement2) { break; } } } CSpvSite site = new CSpvSite(m_base.ContexteDonnee); CSpvEquip equip = new CSpvEquip(m_base.ContexteDonnee); if (!bHasElement1) { if (elt1 is CSite) { if (site.ReadIfExists(new CFiltreData(CSpvSite.c_champSmtSite_Id + "=@1", elt1.Id), false)) { m_dicSitesSpvConcernant[site.Id] = true; } } else if (elt1 is CEquipementLogique) { if (equip.ReadIfExists(new CFiltreData(CSpvEquip.c_champSmtEquipementLogique_Id + "=@1", elt1.Id), false)) { m_dicEquipementsSpvConcernant[equip.Id] = true; } } } if (!bHasElement2) { if (elt2 is CSite) { if (site.ReadIfExists(new CFiltreData(CSpvSite.c_champSmtSite_Id + "=@1", elt2.Id), false)) { m_dicSitesSpvConcernant[site.Id] = true; } } else if (elt2 is CEquipementLogique) { if (equip.ReadIfExists(new CFiltreData(CSpvEquip.c_champSmtEquipementLogique_Id + "=@1", elt2.Id), false)) { m_dicEquipementsSpvConcernant[equip.Id] = true; } } } }
public void InitFromSchema(CSchemaReseau schema) { m_nIdSchemaReseau = schema.Id; m_schema = schema; CSpvSchemaReseau schemaSPV = CSpvSchemaReseau.GetObjetSpvFromObjetTimos(schema); if (schemaSPV != null) { m_nIdSchemaReseauSpv = schemaSPV.Id; } CListeObjetsDonnees lstElements = schema.ElementsDeSchema; lstElements.ReadDependances( "SchemaReseauInclu", "SchemaReseauContenu"); //Charge les données SPV AssureRelationsToSpv(); CListeObjetsDonnees lstTmp = lstElements.GetDependances("Site"); lstTmp.GetDependances(m_relationFromSiteSpvToSite).AssureLectureFaite(); lstTmp = lstElements.GetDependances("EquipementLogique"); lstTmp.GetDependances(m_relationFromEquipementSpvToEquipement).AssureLectureFaite(); lstTmp = lstElements.GetDependances("LienReseau"); lstTmp.GetDependances(m_relationFromLiaisonSpvToLiaison).AssureLectureFaite(); //CSpvService service = CSpvService.GetObjetSpvFromObjetTimos(schema); foreach (CElementDeSchemaReseau elt in lstElements) { IElementDeSchemaReseau elementFils = elt.ElementAssocie; if (elementFils != null) { CInfoElementDeSchemaSupervise fils = null; if (elementFils is CSite) { fils = new CInfoSiteDeSchemaSupervise(this, elt, m_base, NiveauProfondeur + 1); } if (elementFils is CLienReseau) { fils = new CInfoLienDeSchemaSupervise(this, elt, m_base, NiveauProfondeur + 1); } if (elementFils is CElementDeSchemaReseau) { fils = new CInfoEquipementDeSchemaSupervise(this, elt, m_base, NiveauProfondeur + 1); } if (elementFils is CSchemaReseau) { fils = new CInfoSchemaDeSchemaSupervise(this, elt, m_base, NiveauProfondeur + 1); } if (elementFils is CEquipementLogique) { fils = new CInfoEquipementDeSchemaSupervise(this, elt, m_base, NiveauProfondeur + 1); } if (elementFils != null) { fils.InitFromElementDeSchema(elt); m_listeFils.Add(fils); } } } PrepareSupervisionEtatOperationnel(schema); CalculArbreOperationnel(); }