예제 #1
0
        public CGrapheReseau GetGrapheExistant(CSchemaReseau schema, ESensAllerRetourLienReseau?sens)
        {
            CGrapheReseau graphe = null;

            m_dicGraphes.TryGetValue(new CIdGraphe(schema.Id, sens), out graphe);
            return(graphe);
        }
예제 #2
0
        ///////////////////////////////////////////////////////////////////////////
        //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);
        }
예제 #3
0
 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);
 }
예제 #4
0
        ///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);
        }
예제 #5
0
 public void AddGrapheReseau(int nIdSchema, ESensAllerRetourLienReseau?sens, CGrapheReseau graphe)
 {
     m_dicGraphes[new CIdGraphe(nIdSchema, sens)] = graphe;
 }