public CGrapheReseau GetGrapheExistant(CSchemaReseau schema, ESensAllerRetourLienReseau?sens) { CGrapheReseau graphe = null; m_dicGraphes.TryGetValue(new CIdGraphe(schema.Id, sens), out graphe); return(graphe); }
/////////////////////////////////////////////////////////////////////////// //Calcule un sous graphe //Le data du result contient le graphe private CResultAErreur CalculeSousGraphe(CSchemaReseau schema) { CResultAErreur result = CResultAErreur.True; CGrapheReseau graphe = m_baseDeGraphes.GetGrapheExistant(schema, SensDuGraphe);; if (graphe != null) { if (m_graphesIntegres.GetGrapheExistant(schema, SensDuGraphe) == null) { IntegreSousGraphe(graphe); } result.Data = graphe; return(result); } graphe = new CGrapheReseau(m_baseDeGraphes); graphe.IntegreLiaison = IntegreLiaison; graphe.IntegreNoeud = IntegreNoeud; result = graphe.CalculeGraphe(schema, SensDuGraphe); if (result) { result.Data = graphe; //Intègre les éléments du sous graphe dans ce graphe IntegreSousGraphe(graphe); } return(result); }
private void IntegreSousGraphe(CGrapheReseau graphe) { m_baseNoeuds.IntegreBase(graphe.m_baseNoeuds); m_baseLiens.IntegreBase(graphe.m_baseLiens); m_dicSuccesseurs.IntegreLiens(graphe.m_dicSuccesseurs); m_dicPredecesseurs.IntegreLiens(graphe.m_dicPredecesseurs); m_graphesIntegres.AddGrapheReseau(graphe.m_nIdSchemaReseauRacine, graphe.SensDuGraphe, graphe); }
///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); }
public void AddGrapheReseau(int nIdSchema, ESensAllerRetourLienReseau?sens, CGrapheReseau graphe) { m_dicGraphes[new CIdGraphe(nIdSchema, sens)] = graphe; }