private TreeNode CreateNode(object element, TreeNodeCollection nodes) { TreeNode node = null; IElementALiensReseau eltALien = element as IElementALiensReseau; if (eltALien != null) { node = new TreeNode(eltALien.Libelle); node.Tag = eltALien; } IEtapeLienReseau etape = element as IEtapeLienReseau; if (etape != null) { if (node == null) { node = new TreeNode(etape.Libelle); node.Tag = etape; node.BackColor = Color.LightCyan; } } if (node == null) { return(null); } nodes.Add(node); if (etape != null) { TreeNode dummy = new TreeNode(""); dummy.Tag = null; node.Nodes.Add(dummy); } return(node); }
//---------------------------------------------- private void m_btnOk_Click(object sender, EventArgs e) { if (m_arbre.SelectedNode.Tag == null) { return; } m_elementSelectionne = m_arbre.SelectedNode.Tag as IElementALiensReseau; TreeNode parent = m_arbre.SelectedNode.Parent; List <IEtapeLienReseau> lstEtapes = new List <IEtapeLienReseau>(); while (parent != null) { IEtapeLienReseau etape = parent.Tag as IEtapeLienReseau; if (etape != null) { lstEtapes.Insert(0, etape); } parent = parent.Parent; } m_etapes = lstEtapes.ToArray(); if (m_elementSelectionne != null) { DialogResult = DialogResult.OK; Close(); } }
protected override void MyDraw(CContextDessinObjetGraphique ctx) { if (LienReseau == null) { return; } if (LienReseau.SchemaReseau == null) { return; } ForeColor = Color.Cyan; LineWidth = 2; //Trouve l'objet de schéma associé à elt 1 et à elt2 C2iObjetDeSchema objet1 = null; C2iObjetDeSchema objet2 = null; IElementALiensReseau elt1 = LienReseau.Element1; IElementALiensReseau elt2 = LienReseau.Element2; bool bTmp = false; objet1 = GetObjetElement(elt1, ref bTmp); objet2 = GetObjetElement(elt2, ref bTmp); if (objet1 == null || objet2 == null) { return; } //on interdit de supprimer les éléments à l'extrémité du lien objet1.SetNoDelete(true); objet2.SetNoDelete(true); //calcul des extrémités du lien Point pt1 = new Point(objet1.Position.X + objet1.Size.Width / 2, objet1.Position.Y + objet1.Size.Height / 2); Point pt2 = new Point(objet2.Position.X + objet2.Size.Width / 2, objet2.Position.Y + objet2.Size.Height / 2); Position = new Point(Math.Min(pt1.X, pt2.X), Math.Min(pt1.Y, pt2.Y)); Size = new Size(Math.Abs(pt2.X - pt1.X), Math.Abs(pt2.Y - pt1.Y)); //dessin du lien Pen pen = new Pen(ForeColor, LineWidth); ctx.Graphic.DrawLine(pen, pt1, pt2); DrawFleches(ctx, pen, null, pt1, pt2, LienReseau.Direction); pen.Dispose(); }
public CFormSelectionNouveauLien( IElementALiensReseau source, IElementALiensReseau destination, CLienReseau lienSupporte) { InitializeComponent(); sc2i.win32.common.CWin32Traducteur.Translate(this); m_filtreLiens = GetFiltreListeLiens(source, destination, lienSupporte); Init(); }
public CNoeudDeGrapheReseau GetNoeudForElement(IElementALiensReseau elt, CSchemaReseau schema) { if (elt is CSite) { return(GetNoeudForSite(elt as CSite, schema)); } if (elt is CEquipementLogique) { return(GetNoeudForEquipement(elt as CEquipementLogique, schema)); } return(null); }
/// <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> /// Indique s'il faut intégrer un lien dans un graphe ou non /// </summary> /// <param name="lien"></param> /// <returns></returns> private bool IntegreLienInGraphe(CLienDeGrapheReseau lienDeGraphe) { CLienReseau lien = new CLienReseau(m_base.ContexteDonnee); if (lien.ReadIfExists(lienDeGraphe.IdLienReseau, false)) { IElementALiensReseau elt1 = lien.Element1; IElementALiensReseau elt2 = lien.Element2; if ((!(elt1 is CSite) && !(elt1 is CEquipementLogique)) || (!(elt2 is CSite) && !(elt2 is CEquipementLogique))) { return(false); } return(true); } return(false); }
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); }
public bool HasChemin(IElementALiensReseau elt1, IElementALiensReseau elt2) { Type typeNoeuds1 = null; if (elt1 is CSite) { typeNoeuds1 = typeof(CNoeudDeGrapheReseauSite); } else if (elt1 is CEquipementLogique) { typeNoeuds1 = typeof(CNoeudDeGrapheReseauEquipement); } else { return(false); } Type typeNoeuds2 = null; if (elt2 is CSite) { typeNoeuds2 = typeof(CNoeudDeGrapheReseauSite); } else if (elt2 is CEquipementLogique) { typeNoeuds2 = typeof(CNoeudDeGrapheReseauEquipement); } else { return(false); } Dictionary <CNoeudDeGrapheReseau, bool> noeudsUtilises = new Dictionary <CNoeudDeGrapheReseau, bool>(); CNoeudDeGrapheReseau noeudDepart = m_baseNoeuds.GetObjet(typeNoeuds1, elt1.Id, m_nIdSchemaReseauRacine); CNoeudDeGrapheReseau noeudArrivee = m_baseNoeuds.GetObjet(typeNoeuds2, elt2.Id, m_nIdSchemaReseauRacine); if (noeudDepart == null || noeudArrivee == null) { return(false); } return(HasChemin(noeudDepart, noeudArrivee, noeudsUtilises)); }
public static CLienReseau SelectExistant( IElementALiensReseau source, IElementALiensReseau destination, IEtapeLienReseau[] etapesCheminSrc, IEtapeLienReseau[] etapesCheminDest, CLienReseau lienSupporté, ref bool bCreate) { CLienReseau lien = null; bool bCreation = false; CFormSelectionNouveauLien frm = new CFormSelectionNouveauLien(source, destination, lienSupporté); if (!frm.ListeVide) { if (frm.ShowDialog() == DialogResult.OK) { if (frm.m_bExistant) { lien = (CLienReseau)frm.m_panelListeLiensExistants.ElementSelectionne; } else { bCreation = true; } } } else { bCreation = true; } frm.Dispose(); bCreate = bCreation; return(lien); }
/// <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); }
///Récupère un noeud dans un sous schéma. Si le sous schema n'existe pas, il est calculé //Le data du result contient le noeud private CResultAErreur GetNoeudDansSousSchema(IElementALiensReseau element, CCheminLienReseau chemin) { CResultAErreur result = CResultAErreur.True; CGrapheReseau sousGraphe = null; CSchemaReseau schemaFils = chemin.EtapeFinale as CSchemaReseau; if (schemaFils == null) { result.EmpileErreur(I.T("Can not find link extremity|20043")); return(result); } result = CalculeSousGraphe(schemaFils); sousGraphe = result.Data as CGrapheReseau; if (!result || sousGraphe == null) { result.EmpileErreur("Erreur in sub diagram @1|20044", schemaFils.Libelle); return(result); } CNoeudDeGrapheReseau noeud = sousGraphe.GetNoeudForElement(element, schemaFils); result.Data = noeud; return(result); }
/// <summary> /// Sélectionne une extremité pour l'objet de schéma demandé. /// </summary> /// <param name="objetDeSchema"></param> /// <returns></returns> public static IElementALiensReseau SelectExtremite(IElementDeSchemaReseau eltDeSchema, ref IEtapeLienReseau[] etapes) { if (eltDeSchema == null) { return(null); } IEtapeLienReseau etape = eltDeSchema as IEtapeLienReseau; IElementALiensReseau eltALien = eltDeSchema as IElementALiensReseau; if (etape == null) { return(eltALien); } IElementALiensReseau[] elementsPossibles = etape.ElementsALiensContenus; IEtapeLienReseau[] etapesPossibles = etape.EtapesContenues; if (elementsPossibles.Length == 0 && etapesPossibles.Length == 0) { return(eltALien); } if (eltALien == null && elementsPossibles.Length == 1 && etapesPossibles.Length == 0) { etapes = new IEtapeLienReseau[] { etape }; return(elementsPossibles[0]); } CFormSelectExtremiteDeElementDeSchema form = new CFormSelectExtremiteDeElementDeSchema(); form.m_elementDeSchemaRacine = eltDeSchema; eltALien = null; form.Location = Cursor.Position; if (form.ShowDialog() == DialogResult.OK) { eltALien = form.m_elementSelectionne; etapes = form.m_etapes; } form.Dispose(); return(eltALien); }
/// <summary> /// Indique s'il faut intégrer un lien dans un graphe ou non /// </summary> /// <param name="lien"></param> /// <returns></returns> private bool IntegreLienInGraphe(CLienDeGrapheReseau lienDeGraphe) { CLienReseau lien = new CLienReseau(m_base.ContexteDonnee); if (lien.ReadIfExists(lienDeGraphe.IdLienReseau, false)) { IElementALiensReseau elt1 = lien.Element1; IElementALiensReseau elt2 = lien.Element2; if ((!(elt1 is CSite) && !(elt1 is CEquipementLogique)) || (!(elt2 is CSite) && !(elt2 is CEquipementLogique))) { return(false); } return(true); /*if (!(lien.Complement1 is CExtremiteLienSurSite) || !(lien.Complement2 is CExtremiteLienSurSite)) * return false; * CSpvLiai spvLiai = new CSpvLiai(m_base.ContexteDonnee); * if (!spvLiai.ReadIfExists(new CFiltreData(CSpvLiai.c_champSmtLienReseau_Id + "=@1", * lien.Id), false)) * return false; * return true;*/ } return(false); }
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); }
/// <summary> /// Calcule un graphe pour un schéma donné /// </summary> /// <param name="schema"></param> /// <param name="sens"></param> /// <returns></returns> public CResultAErreur CalculeGraphe( CSchemaReseau schema, ESensAllerRetourLienReseau?sens) { CResultAErreur result = CResultAErreur.True; m_baseDeGraphes.AddGrapheReseau(schema.Id, sens, this); m_sensGraphe = sens; m_nIdSchemaReseauRacine = schema.Id; m_baseLiens.Clear(); m_baseNoeuds.Clear(); m_dicSuccesseurs.Clear(); m_dicPredecesseurs.Clear(); Dictionary <int, CNoeudDeGrapheReseauSite> dicIdSiteToNoeud = new Dictionary <int, CNoeudDeGrapheReseauSite>(); Dictionary <int, CNoeudDeGrapheReseauEquipement> dicIdEquipementToNoeud = new Dictionary <int, CNoeudDeGrapheReseauEquipement>(); foreach (CElementDeSchemaReseau elt in schema.ElementsDeSchema)//Ne prend que les éléments de premier niveau { CSite site = elt.ElementAssocie as CSite; if (site != null) { CNoeudDeGrapheReseauSite noeud = new CNoeudDeGrapheReseauSite(site.Id, schema.Id, elt.IsCableALinterieur); if (!m_baseNoeuds.Contains(noeud)) { if (IntegreNoeud == null || IntegreNoeud(noeud)) { m_baseNoeuds.Add(noeud); dicIdSiteToNoeud[site.Id] = noeud; } } } else { CEquipementLogique eqpt = elt.ElementAssocie as CEquipementLogique; if (eqpt != null) { CNoeudDeGrapheReseauEquipement noeud = new CNoeudDeGrapheReseauEquipement(eqpt.Id, schema.Id); if (!m_baseNoeuds.Contains(noeud)) { if (IntegreNoeud == null || IntegreNoeud(noeud)) { m_baseNoeuds.Add(noeud); dicIdEquipementToNoeud[eqpt.Id] = noeud; } } } } } Dictionary <int, CGrapheReseau> dicGraphesCalcules = new Dictionary <int, CGrapheReseau>(); foreach (CElementDeSchemaReseau elt in schema.GetElementsForType <CLienReseau>()) { if (elt.SchemaReseau.Id == schema.Id) //Ne prend pas les sous schémas { CLienReseau lien = elt.ElementAssocie as CLienReseau; if (lien != null) { if (m_sensGraphe != null) { CDonneeDessinLienDeSchemaReseau donneeDessin = elt.DonneeDessin as CDonneeDessinLienDeSchemaReseau; if (donneeDessin == null) { continue; } if (m_sensGraphe.Value != donneeDessin.Forward_Backward) { continue; } } EDirectionLienReseau[] directions = new EDirectionLienReseau[] { EDirectionLienReseau.UnVersDeux, EDirectionLienReseau.DeuxVersUn }; foreach (EDirectionLienReseau direction in directions) { if (direction == lien.Direction.Code || lien.Direction == EDirectionLienReseau.Bidirectionnel) { int nSigne = direction == EDirectionLienReseau.UnVersDeux ? 1 : -1; IElementALiensReseau elt1 = null; IElementALiensReseau elt2 = null; CCheminLienReseau chemin1 = null; CCheminLienReseau chemin2 = null; if (direction == EDirectionLienReseau.UnVersDeux) { elt1 = lien.Element1; chemin1 = elt.RacineChemin1; elt2 = lien.Element2; chemin2 = elt.RacineChemin2; } else if (direction == EDirectionLienReseau.DeuxVersUn) { elt1 = lien.Element2; chemin1 = elt.RacineChemin2; elt2 = lien.Element1; chemin2 = elt.RacineChemin2; } if (!(elt1 is CSite) && !(elt1 is CEquipementLogique)) { elt1 = null; } if (!(elt2 is CSite) && !(elt2 is CEquipementLogique)) { elt2 = null; } if (elt1 != null && elt2 != null) { CNoeudDeGrapheReseau noeud1 = null; if (chemin1 != null) { result = GetNoeudDansSousSchema(elt1, chemin1);//Result testé ensuite avec noeud1 = null; noeud1 = result.Data as CNoeudDeGrapheReseau; } else { if (elt1 is CSite) { CNoeudDeGrapheReseauSite noeudSite = null; dicIdSiteToNoeud.TryGetValue(elt1.Id, out noeudSite); noeud1 = noeudSite; } else if (elt1 is CEquipementLogique) { CNoeudDeGrapheReseauEquipement noeudEqpt = null; dicIdEquipementToNoeud.TryGetValue(elt1.Id, out noeudEqpt); noeud1 = noeudEqpt; } } if (noeud1 == null) { result.EmpileErreur(I.T("Can not find link @1 extremity|20043", lien.Libelle)); return(result); } CNoeudDeGrapheReseau noeud2 = null; if (chemin2 != null) { result = GetNoeudDansSousSchema(elt2, chemin2);//Result testé ensuite avec noeud2= null; noeud2 = result.Data as CNoeudDeGrapheReseau; } else { if (elt2 is CSite) { CNoeudDeGrapheReseauSite noeudSite = null; dicIdSiteToNoeud.TryGetValue(elt2.Id, out noeudSite); noeud2 = noeudSite; } else if (elt2 is CEquipementLogique) { CNoeudDeGrapheReseauEquipement noeudEquip = null; dicIdEquipementToNoeud.TryGetValue(elt2.Id, out noeudEquip); noeud2 = noeudEquip; } } if (noeud2 == null) { result.EmpileErreur(I.T("Can not find link @1 extremity|20043", lien.Libelle)); return(result); } CLienDeGrapheReseau lienDeGraphe = m_baseLiens.GetObjet(typeof(CLienDeGrapheReseau), nSigne * lien.Id, schema.Id); if (lienDeGraphe == null) { CEtapesExtremiteLienDeGraphe etapes1 = null; if (chemin1 != null) { etapes1 = new CEtapesExtremiteLienDeGraphe(chemin1); } CEtapesExtremiteLienDeGraphe etapes2 = null; if (chemin2 != null) { etapes2 = new CEtapesExtremiteLienDeGraphe(chemin2); } lienDeGraphe = new CLienDeGrapheReseau( nSigne * lien.Id, schema.Id, noeud1, noeud2, etapes1, etapes2); if (IntegreLiaison == null || IntegreLiaison(lienDeGraphe)) { m_baseLiens.Add(lienDeGraphe); m_dicSuccesseurs.AddSuccesseur(noeud1, lienDeGraphe); m_dicPredecesseurs.AddPredecesseur(noeud2, lienDeGraphe); } } } } } } } } return(result); }