/// <summary> /// Retourne l'extremité opposée à l'extremité demandée. /// </summary> /// <param name="elt">Si cet élément correspond à l'élément1, retourne l'élement2, /// si il correspond à l'élement 2, retourne l'élément 1</param> /// <returns></returns> public IElementALiensReseau GetAutreExtremite(IElementALiensReseau elt) { if (elt == null) { return(null); } if (elt.Equals(Element1)) { return(Element2); } if (elt.Equals(Element2)) { return(Element1); } return(null); }
/// <summary> /// Retourne le chemin correspondant à l'extremité demandée /// </summary> /// <param name="elt"></param> /// <returns></returns> public CCheminLienReseau GetCheminToElement(IElementALiensReseau elt) { CLienReseau lien = LienReseau; if (lien == null) { return(null); } if (elt == null) { return(null); } if (elt.Equals(lien.Element1)) { return(RacineChemin1); } if (elt.Equals(lien.Element2)) { return(RacineChemin2); } return(null); }
public CFiltreData GetFiltreListeLiens( IElementALiensReseau element1, IElementALiensReseau element2, CLienReseau lienSupporte) { CFiltreData filtre = null; if (lienSupporte != null) { CTypeLienReseau typeLien = lienSupporte.TypeLienReseau; StringBuilder bl = new StringBuilder(); if (typeLien != null) { foreach (CTypeLienReseauSupport supportant in typeLien.TypesPouvantSupporterCeType) { bl.Append(supportant.TypeSupportant.Id); bl.Append(','); } } if (bl.Length > 0) { bl.Remove(bl.Length - 1, 1); filtre = new CFiltreData(CTypeLienReseau.c_champId + " in (" + bl.ToString() + ")"); } } StringBuilder blIdsLiens = new StringBuilder(); foreach (CLienReseau lien in element1.LiensSortants) { IElementALiensReseau elt = lien.GetAutreExtremite(element1); if (elt != null && elt.Equals(element2)) { blIdsLiens.Append(lien.Id); blIdsLiens.Append(','); } } if (blIdsLiens.Length > 0) { blIdsLiens.Remove(blIdsLiens.Length - 1, 1); filtre = CFiltreData.GetAndFiltre(filtre, new CFiltreData( CLienReseau.c_champId + " in (" + blIdsLiens.ToString() + ")")); return(filtre); } return(null); }
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; } } } }
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_dbKeyLien = lien.DbKey; 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; } } } IElementALiensReseau extremite = lien.Element1; if (extremite is CSite) { m_dicSitesConcernant[extremite.DbKey] = true; } if (extremite is CEquipementLogique) { m_dicEquipementsConcernant[extremite.DbKey] = true; } extremite = lien.Element2; if (extremite is CSite) { m_dicSitesConcernant[extremite.DbKey] = true; } if (extremite is CEquipement) { m_dicEquipementsConcernant[extremite.DbKey] = true; } m_dicLiaisonsConcernant[lien.DbKey] = true; }
//------------------------------------------------------------------- public override CResultAErreur VerifieDonnees(CObjetDonnee objet) { CResultAErreur result = CResultAErreur.True; try { CLienReseau lien = (CLienReseau)objet; // Verifie le champ "Libelle if (lien.Libelle == "") { result.EmpileErreur(I.T("Network link label cannot be empty|30004")); } bool bTrouve = false; if (lien.Element1 == null) { result.EmpileErreur(I.T("The linked element 1 cannot be null|30019")); } else { if (lien.Element1.GetType() != lien.TypeLienReseau.TypeElement1) { result.EmpileErreur(I.T("The linked element 1 is not of the right type|30016")); } if (lien.Complement1 != null) { foreach (CObjetDonnee obj in lien.Element1.ComplementsPossibles) { if (obj == (CObjetDonnee)lien.Complement1) { bTrouve = true; break; } } if (!bTrouve) { result.EmpileErreur(I.T("Complementary element 1 does not belong to the possible complements of the element 1|30014")); } } } bTrouve = false; if (lien.Element2 == null) { result.EmpileErreur(I.T("The linked element 2 cannot be null|30020")); } else { if (lien.Element2.GetType() != lien.TypeLienReseau.TypeElement2) { result.EmpileErreur(I.T("The linked element 2 is not of the right type|30017")); } if (lien.Complement2 != null) { foreach (CObjetDonnee obj in lien.Element2.ComplementsPossibles) { if (obj == (CObjetDonnee)lien.Complement2) { bTrouve = true; break; } } if (!bTrouve) { result.EmpileErreur(I.T("Complementary element 2 does not belong to the possible complements of the element 2|30014")); } } } if (lien.Row.HasVersion(DataRowVersion.Original)) { //Si changement de l'élément 1 lien.VersionToReturn = DataRowVersion.Original; IElementALiensReseau eltOriginal = lien.Element1; lien.VersionToReturn = DataRowVersion.Current; IElementALiensReseau eltNew = lien.Element1; if (eltNew != null && eltOriginal != null && eltNew.Equals(eltOriginal)) { //Vérifie qu'il n'y a pas de chemin sur l'élément 1 CListeObjetsDonnees lst = new CListeObjetsDonnees(objet.ContexteDonnee, typeof(CElementDeSchemaReseau)); lst.Filtre = new CFiltreData(CLienReseau.c_champId + "=@1", lien.Id); bool bOk = true; foreach (CElementDeSchemaReseau elt in lst) { if (elt.RacineChemin1 != null) { bOk = false; break; } } if (!bOk) { result.EmpileErreur(I.T("The linked element 1 cannot be changed because the link is associted with a path|30022")); } } //Si changement de l'élément 2 lien.VersionToReturn = DataRowVersion.Original; eltOriginal = lien.Element2; lien.VersionToReturn = DataRowVersion.Current; eltNew = lien.Element2; if (eltNew != null && eltOriginal != null && eltNew.Equals(eltOriginal)) { //Vérifie qu'il n'y a pas de chemin sur l'élément 2 CListeObjetsDonnees lst = new CListeObjetsDonnees(objet.ContexteDonnee, typeof(CElementDeSchemaReseau)); lst.Filtre = new CFiltreData(CLienReseau.c_champId + "=@1", lien.Id); bool bOk = true; foreach (CElementDeSchemaReseau elt in lst) { if (elt.RacineChemin2 != null) { bOk = false; break; } } if (!bOk) { result.EmpileErreur(I.T("The linked element 2 cannot be changed because the link is associted with a path|30023")); } } } } catch (Exception e) { result.EmpileErreur(new CErreurException(e)); } return(result); }