public Dictionary <string, Provincie> BouwStraten(string path, Dictionary <string, Graaf> straatIdGraafKoppeling)
        {
            #region setup
            List <string> filter = new List <string>();
            //ID links
            Dictionary <string, List <string> > provincieIDGemeenteIDLink = new Dictionary <string, List <string> >();
            Dictionary <string, List <string> > gemeenteIdStraatID        = new Dictionary <string, List <string> >();

            //ID en naam links
            Dictionary <string, string> gemeenteIdEnNaam = new Dictionary <string, string>();
            Dictionary <string, string> straatIdEnNaam   = new Dictionary <string, string>();

            //datatypes
            Dictionary <string, Provincie> provincies = new Dictionary <string, Provincie>();
            Dictionary <string, Gemeente>  gemeenten  = new Dictionary <string, Gemeente>();
            Dictionary <string, Straat>    straten    = new Dictionary <string, Straat>();
            #endregion
            #region file extracting
            using (StreamReader sr = new StreamReader(Path.Combine(path, "ProvincieIDsVlaanderen.csv")))
            {
                string[] filterIDs = sr.ReadLine().Split(",");
                foreach (string id in filterIDs)
                {
                    filter.Add(id);
                }
            }

            //provincies aanmaken en gemeenteIDs koppelen
            using (StreamReader sr = new StreamReader(Path.Combine(path, "ProvincieInfo.csv")))
            {
                //gemeenteId; provincieId; taalCodeProvincieNaam; provincieNaam
                //1;1;nl;Antwerpen
                sr.ReadLine();
                string line = "";
                while ((line = sr.ReadLine()) != null)
                {
                    string[] splitLine     = line.Split(";");
                    string   provincieId   = splitLine[1];
                    string   provincieNaam = splitLine[3];
                    string   gemeenteId    = splitLine[0];
                    if (splitLine[2] == "nl")
                    {
                        if (filter.Contains(provincieId))
                        {
                            //kijken of mijn verzameling provincies deze al bevat
                            if (!provincies.ContainsKey(provincieId))
                            {
                                provincies.Add(provincieId, new Provincie(int.Parse(provincieId), provincieNaam));
                            }

                            //mijn verzameling van provincieIDs gelinkt aan gemeenteIDs in orde brengen.
                            if (provincieIDGemeenteIDLink.ContainsKey(provincieId))
                            {
                                provincieIDGemeenteIDLink[provincieId].Add(gemeenteId);
                            }
                            else
                            {
                                provincieIDGemeenteIDLink.Add(provincieId, new List <string>());
                                provincieIDGemeenteIDLink[provincieId].Add(gemeenteId);
                            }
                        }
                    }
                }
            }
            //Gemeente naam en ID aan elkaar koppelen.
            using (StreamReader sr = new StreamReader(Path.Combine(path, "WRGemeentenaam.csv")))
            {
                //gemeenteNaamId; gemeenteId; taalCodeGemeenteNaam; gemeenteNaam
                //1; 1; nl; Aartselaar
                sr.ReadLine();
                string line;
                while ((line = sr.ReadLine()) != null)
                {
                    string[] splitLine = line.Split(";");
                    if (splitLine[2] == "nl")
                    {
                        gemeenteIdEnNaam.Add(splitLine[1], splitLine[3]);
                    }
                }
            }
            //gemeenten aanmaken en koppelen aan hun provincie.
            foreach (KeyValuePair <string, List <string> > entry in provincieIDGemeenteIDLink)
            {
                foreach (string gemeenteId in entry.Value)
                {
                    Gemeente temp = new Gemeente(int.Parse(gemeenteId), gemeenteIdEnNaam[gemeenteId]);
                    provincies[entry.Key].VoegGemeenteToe(temp);
                    gemeenten.Add(gemeenteId, temp);
                }
            }
            //straatnaamIDs koppelen aan de straatnamen
            using (StreamReader sr = new StreamReader(Path.Combine(path, "WRstraatnamen.csv")))
            {
                //EXN; LOS
                //-9; NULL
                //1; Acacialaan
                sr.ReadLine();
                sr.ReadLine();
                string line;
                while ((line = sr.ReadLine()) != null)
                {
                    string[] splitLine = line.Split(";");
                    straatIdEnNaam.Add(splitLine[0], splitLine[1].Trim());
                }
            }
            //gemeenteIDs koppelen aan de straatnaamIDs
            using (StreamReader sr = new StreamReader(Path.Combine(path, "WRGemeenteID.csv")))
            {
                //straatNaamId; gemeenteId
                //1; 1
                sr.ReadLine();
                string line;
                while ((line = sr.ReadLine()) != null)
                {
                    string[] splitLine = line.Split(";");
                    if (gemeenten.ContainsKey(splitLine[1]))
                    {
                        if (gemeenteIdStraatID.ContainsKey(splitLine[1]))
                        {
                            gemeenteIdStraatID[splitLine[1]].Add(splitLine[0]);
                        }
                        else
                        {
                            gemeenteIdStraatID.Add(splitLine[1], new List <string>());
                            gemeenteIdStraatID[splitLine[1]].Add(splitLine[0]);
                        }
                    }
                }
            }
            #endregion
            //effectieve straten aanmaken
            foreach (KeyValuePair <string, List <string> > entry in gemeenteIdStraatID)
            {
                foreach (string straatId in entry.Value)
                {
                    if (straatIdGraafKoppeling.ContainsKey(straatId))
                    { //184418 was not present in the dictionary error gegeven dus dit geschreven
                      //de gemeente wordt in de Straat constructor in order gebracht zodat die zijn lijst van straten correct blijft.
                        string   naam         = straatIdEnNaam[straatId];
                        Graaf    tempGraaf    = straatIdGraafKoppeling[straatId];
                        Gemeente tempGemeente = gemeenten[entry.Key];
                        Straat   tempStraat   = new Straat(int.Parse(straatId), naam, tempGraaf, tempGemeente);
                        straten.Add(straatId, tempStraat);
                    }
                }
            }

            //Lege Provincies weghalen uit de verzameling gemeenten
            foreach (KeyValuePair <string, Gemeente> gemeente in gemeenten)
            {
                if (gemeente.Value.Straten.Count == 0)
                {
                    gemeente.Value.Provincie.VerwijderGemeente(gemeente.Value);
                }
            }
            return(provincies);
        }
Пример #2
0
 public void StraatReport(Straat straat)
 {
     Console.WriteLine($"StraatReport van {straat.ToString()}");
     straat.ShowStraat();
     Console.WriteLine("--------------------------------------------------------------------------------------------------------------------------------------------\n\n");
 }