Esempio n. 1
0
 public void CreateGraphe(CSchemaReseau schema)
 {
     m_liens.Clear();
     m_noeuds.Clear();
     //Création des noeuds
     foreach (CSite site in schema.GetElementsLies <CSite>())
     {
         CSpvSite spvSite = CSpvSite.GetObjetSpvFromObjetTimos(site);
         if (spvSite != null)
         {
             if (GetNoeud(spvSite) == null)
             {
                 m_noeuds.Add(new CNoeud(spvSite));
             }
         }
     }
     foreach (CLienReseau lien in schema.GetElementsLies <CLienReseau>())
     {
         CSpvLiai spvLiai = CSpvLiai.GetSpvLiaiFromLienReseau(lien) as CSpvLiai;
         if (spvLiai != null)
         {
             CNoeud noeud1 = GetNoeud(spvLiai.SiteOrigine);
             CNoeud noeud2 = GetNoeud(spvLiai.SiteDestination);
             if (noeud1 != null && noeud2 != null)
             {
                 m_liens.Add(new CLien(spvLiai, noeud1, noeud2));
             }
         }
     }
 }
Esempio n. 2
0
 public void AddNoeud(CNoeud noeud)
 {
     if (!m_noeuds.Contains(noeud))
     {
         m_noeuds.Add(noeud);
         m_dicSiteToNoeud[noeud.Site] = noeud;
     }
 }
Esempio n. 3
0
        public override bool Equals(object obj)
        {
            CNoeud noeud = obj as CNoeud;

            if (noeud != null)
            {
                return(noeud.m_site.Id == m_site.Id);
            }
            return(false);
        }
Esempio n. 4
0
        public CNoeud GetNoeud(CSpvSite site)
        {
            CNoeud noeud = null;

            if (m_dicSiteToNoeud.TryGetValue(site, out noeud))
            {
                return(noeud);
            }
            return(null);
        }
Esempio n. 5
0
        public List <CChemin> GetChemins(CSpvSite siteOrigine, CSpvSite siteDestination)
        {
            List <CChemin> lstFinale   = new List <CChemin>();
            CNoeud         noeudDepart = GetNoeud(siteOrigine);
            CNoeud         noeudFinal  = GetNoeud(siteDestination);
            CChemin        chemin      = new CChemin();

            FindChemins(chemin, noeudDepart, noeudFinal, lstFinale);
            return(lstFinale);
        }
Esempio n. 6
0
        public CLien[] GetSuccesseurs(CNoeud noeud)
        {
            List <CLien> lst = null;

            m_dicLiensSortants.TryGetValue(noeud, out lst);
            if (lst != null)
            {
                return(lst.ToArray());
            }
            return(new CLien[0]);
        }
Esempio n. 7
0
 public void AddLien(CLien lien)
 {
     if (!m_liens.Contains(lien))
     {
         m_liens.Add(lien);
         List <CLien> lst   = null;
         CNoeud       noeud = GetNoeud(lien.Liaison.SiteOrigine);
         if (noeud != null)
         {
             if (!m_dicLiensSortants.TryGetValue(noeud, out lst))
             {
                 lst = new List <CLien>();
                 m_dicLiensSortants[noeud] = lst;
             }
             lst.Add(lien);
         }
     }
 }
Esempio n. 8
0
 private void FindChemins(CChemin chemin, CNoeud noeudDepart, CNoeud noeudObjectif, List <CChemin> cheminsTrouves)
 {
     if (noeudObjectif.Equals(noeudDepart))
     {
         chemin += new CPassageChemin(noeudObjectif.Site, null);
         cheminsTrouves.Add(chemin);
         return;
     }
     else
     {
         foreach (CLien lien in GetSuccesseurs(noeudDepart))
         {
             CPassageChemin passage = new CPassageChemin(noeudDepart.Site, lien.Liaison);
             if (!chemin.PasseParSite(lien.NoeudArrivee.Site))
             {
                 FindChemins(chemin + passage, lien.NoeudArrivee, noeudObjectif, cheminsTrouves);
             }
         }
     }
 }
Esempio n. 9
0
 public CLien(CSpvLiai liaison, CNoeud noeudDepart, CNoeud noeudArrivee)
 {
     m_liaison      = liaison;
     m_noeudArrivee = noeudArrivee;
     m_noeudDepart  = noeudDepart;
 }