private void FillDicsForNode(CElementDeArbreOperationnel node, CDictionnaireElementToNoeudArbre dicEquipementToNoeudArbreOp, CDictionnaireElementToNoeudArbre dicSiteToNoeudArbreOp, CDictionnaireElementToNoeudArbre dicLiaisonToNoeudArbreOp, CDictionnaireElementToNoeudArbre dicServiceToNoeudArbreOp) { CElementDeArbreOperationnelEntite noeudEntite = node as CElementDeArbreOperationnelEntite; if (noeudEntite != null) { try { IElementDeSchemaReseau eltAssocie = noeudEntite.Composant.GetElementAssocie(m_base.ContexteDonnee); if (eltAssocie is CEquipementLogique) { CSpvEquip equipement = CSpvEquip.GetObjetSpvFromObjetTimos((CEquipementLogique)eltAssocie); if (equipement != null) { dicEquipementToNoeudArbreOp.Add(equipement.Id, noeudEntite); } } else if (eltAssocie is CSite) { CSpvSite site = CSpvSite.GetObjetSpvFromObjetTimos((CSite)eltAssocie); if (site != null) { dicSiteToNoeudArbreOp.Add(site.Id, noeudEntite); } } else if (eltAssocie is CLienReseau) { CSpvLiai liaison = CSpvLiai.GetObjetSpvFromObjetTimos((CLienReseau)eltAssocie); if (liaison != null) { dicLiaisonToNoeudArbreOp.Add(liaison.Id, noeudEntite); } } else if (eltAssocie is CSchemaReseau) { CSpvSchemaReseau schema = CSpvSchemaReseau.GetObjetSpvFromObjetTimos((CSchemaReseau)eltAssocie); if (schema != null) { dicServiceToNoeudArbreOp.Add(schema.Id, noeudEntite); } } } catch { } } // Fonction récursive sur les noeuds fils foreach (CElementDeArbreOperationnel nodeFils in node.Fils) { FillDicsForNode(nodeFils, dicEquipementToNoeudArbreOp, dicSiteToNoeudArbreOp, dicLiaisonToNoeudArbreOp, dicServiceToNoeudArbreOp); } }
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; } } } }