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); }
public void StraatReport(Straat straat) { Console.WriteLine($"StraatReport van {straat.ToString()}"); straat.ShowStraat(); Console.WriteLine("--------------------------------------------------------------------------------------------------------------------------------------------\n\n"); }