public override int GetHashCode()
 {
     // gegenereerde code
     unchecked
     {
         var hashCode = (Naam != null ? Naam.GetHashCode() : 0);
         hashCode = (hashCode * 397) ^ (Straat != null ? Straat.GetHashCode() : 0);
         hashCode = (hashCode * 397) ^ Nummer.GetHashCode();
         hashCode = (hashCode * 397) ^ (Bus != null ? Bus.GetHashCode() : 0);
         hashCode = (hashCode * 397) ^ Postcode;
         hashCode = (hashCode * 397) ^ (Gemeente != null ? Gemeente.GetHashCode() : 0);
         hashCode = (hashCode * 397) ^ AantalWerkuren.GetHashCode();
         return(hashCode);
     }
 }
        public void StraatHuisTest()
        {
            Huis mynHuis  = new Huis();
            Huis jouwHuis = new Huis();

            mynHuis.Ramen  = 10;
            jouwHuis.Ramen = 1;

            Straat straatje = new Straat();

            straatje.Huizen = new List <Huis>();
            straatje.Huizen.Add(mynHuis);
            straatje.Huizen.Add(jouwHuis);

            int aantalGeteld = straatje.GetAantalRamen();

            Assert.Equal(11, aantalGeteld);
        }
示例#3
0
        public void AddStraatPlusLink(Straat straat)
        {
            SqlConnection connection  = getConnection();
            string        straatQuery = "INSERT INTO dbo.straat VALUES(@Id,@Naam)";
            string        linkQuery   = "INSERT INTO dbo.gemeenteStraatLink VALUES(@StraatId,@GemeenteId)";

            using (SqlCommand linkCommand = connection.CreateCommand())
                using (SqlCommand gemCommand = connection.CreateCommand())
                {
                    connection.Open();
                    SqlTransaction transaction = connection.BeginTransaction();
                    linkCommand.Transaction = transaction;
                    gemCommand.Transaction  = transaction;
                    try
                    {
                        gemCommand.Parameters.Add(new SqlParameter("@Id", SqlDbType.Int));
                        gemCommand.Parameters.Add(new SqlParameter("@Naam", SqlDbType.NVarChar));
                        gemCommand.CommandText               = straatQuery;
                        gemCommand.Parameters["@Id"].Value   = straat.StraatID;
                        gemCommand.Parameters["@Naam"].Value = straat.Naam;

                        linkCommand.Parameters.Add(new SqlParameter("@StraatId", SqlDbType.Int));
                        linkCommand.Parameters.Add(new SqlParameter("@GemeenteId", SqlDbType.Int));
                        linkCommand.CommandText = linkQuery;
                        linkCommand.Parameters["@StraatId"].Value   = straat.StraatID;
                        linkCommand.Parameters["@GemeenteId"].Value = straat.Gemeente.Id;

                        gemCommand.ExecuteNonQuery();
                        linkCommand.ExecuteNonQuery();
                        transaction.Commit();
                    }
                    catch (Exception ex)
                    {
                        transaction.Rollback();
                        Console.WriteLine(ex);
                        Console.WriteLine($"straat met ID {straat.StraatID} onsuccesvol toegevoegd");
                    }
                    finally
                    {
                        connection.Close();
                    }
                }
        }
示例#4
0
        private static void PrintStraat(Straat s)
        {
            var info = Importers.GetGemeenteNaamEnProvincieNaamByGemeenteId(s.GemeenteId);

            Console.WriteLine(s.Id + ", " + s.StraatNaam + ", " + info.Item1 + ", " + info.Item2);
            Console.WriteLine("Graaf: " + s.Graaf.Id);
            Console.WriteLine("Aantal knopen : " + Importers.GetAllKnoopIdsFromStraatId(s.Id).Count);
            Console.WriteLine("Aantal wegsegmenten : " + s.Graaf.Map.Count);

            foreach (var segment in s.Graaf.Map)
            {
                Console.WriteLine($"Knoop[{segment.BeginKnoop.Id}, [{segment.BeginKnoop.Punt.X}, {segment.BeginKnoop.Punt.Y}]]");
                Console.WriteLine($"     [segment : {segment.Id}, begin:{segment.BeginKnoop.Id}, eind:{segment.EindKnoop.Id}]");
                foreach (var punt in segment.Vertices)
                {
                    Console.WriteLine($"              ({punt.X}, {punt.Y})");
                }
                Console.WriteLine($"Knoop[{segment.EindKnoop.Id}, [{segment.EindKnoop.Punt.X}, {segment.EindKnoop.Punt.Y}]]");
            }
        }
示例#5
0
        public bool CheckStraat(Straat str)
        {
            SqlConnection connection = getConnection();
            string        query      = "SELECT COUNT(*) AS count FROM dbo.straat WHERE Id=@Id";

            using (SqlCommand command = connection.CreateCommand())
            {
                command.CommandText = query;
                SqlParameter paramId = new SqlParameter();
                paramId.ParameterName = "@Id";
                paramId.DbType        = DbType.Int32;
                paramId.Value         = str.StraatID;
                command.Parameters.Add(paramId);
                connection.Open();
                try
                {
                    IDataReader reader = command.ExecuteReader();
                    reader.Read();
                    int knoopCount = (int)reader["count"];

                    if (knoopCount == 1)
                    {
                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex);
                    throw new Exception("Incorrect SQL syntax in CheckStraat");
                }
                finally
                {
                    connection.Close();
                }
            }
        }
示例#6
0
        private static HashSet <int> GetAdjacentStraatIdsInGemeente(Straat s)
        {
            HashSet <int> adjStratenIds = new HashSet <int>();
            List <int>    knopen        = GetAllKnoopIdsFromStraatId(s.Id);
            string        gemeenteNaam  = GetGemeenteNaamEnProvincieNaamByGemeenteId(s.GemeenteId).Item1;
            List <int>    straatIds     = GetListStraatIdByGemeenteNaam(gemeenteNaam);

            foreach (var straatId in straatIds)
            {
                if (straatId != s.Id && !adjStratenIds.Contains(straatId))
                {
                    foreach (var knoopid in GetAllKnoopIdsFromStraatId(straatId))
                    {
                        if (knopen.Contains(knoopid))
                        {
                            adjStratenIds.Add(straatId);
                        }
                    }
                }
            }
            return(adjStratenIds);
        }
示例#7
0
        private static StringBuilder PrintGemeenteInfo(Gemeente g)
        {
            var    sb                  = new StringBuilder();
            double totalLength         = 0;
            double lengteKorsteStraat  = double.MaxValue;
            int    indexKorste         = 0;
            double lengteLangsteStraat = 0;
            int    indexLangste        = 0;
            var    straten             = _stratenProvider.GetStratenByGemId(g.Id);

            if (straten == null)
            {
                sb.Append("     †  " + g.Naam + " werd gefuseerd in 2019  †\n\n");
                return(sb);
            }
            for (int i = 0; i < straten.Count; i++)
            {
                var length = Calculator.getLenthOfStraat(straten[i]);
                totalLength += length;
                if (length > lengteLangsteStraat)
                {
                    indexLangste        = i;
                    lengteLangsteStraat = length;
                }
                if (length < lengteKorsteStraat)
                {
                    indexKorste        = i;
                    lengteKorsteStraat = length;
                }
            }
            Straat korsteStraat  = straten[indexKorste];
            Straat langsteStraat = straten[indexLangste];

            sb.Append("     -" + g.Naam + ": " + straten.Count + " straten ||  " + totalLength + "\n");
            sb.Append(GetSpaces(g.Naam.Length) + "       +" + korsteStraat.Id + ", " + korsteStraat.StraatNaam + ", " + lengteKorsteStraat + "\n");
            sb.Append(GetSpaces(g.Naam.Length) + "       +" + langsteStraat.Id + ", " + langsteStraat.StraatNaam + ", " + lengteLangsteStraat + "\n\n");
            return(sb);
        }
示例#8
0
        public void AddSegmenten(Straat str)
        {
            List <Segment> segmenten = str.GetSegmenten();

            for (int i = 0; i < segmenten.Count; i++)
            {
                //segmenten kunnen tot meerdere straten behoren, dus perfect mogenlijk dat dit segment al in de databank is toegevoegd door een andere straat
                if (CheckSegment(segmenten[i]))
                {
                    //hier moet ik enkel de koppeling tussen het segment en de straat aanmaken
                    if (!CheckSegmentLink(segmenten[i], str.StraatID))      //controle op dubbele entries
                    {
                        LinkSegment(segmenten[i], str.StraatID);
                    }
                }
                //als het Segment zich nog niet in de databank bevindt.
                else
                {
                    //hier moet ik het segment EN de koppeling aanmaken.
                    AddSegmentWithLink(segmenten[i], str.StraatID);
                }
            }
        }
示例#9
0
        public static void StraatOpvragenMetStraatNaam_enGemeenteNaam(DataBeheer db, string straatNaam, string gemeenteNaam)
        {
            Straat x = db.geefStraat_VanStraatNaam_enGemeenteNaam(straatNaam, gemeenteNaam);

            Console.WriteLine(x.ToString());
        }
示例#10
0
        public static void StraatOpvragenMetId(DataBeheer db, int straatId)
        {
            Straat x = db.geefStraat_VanStraatId(straatId);

            Console.WriteLine(x.ToString());
        }
示例#11
0
        //Console.WriteLine("testen");
        //Belgie belg = TestData();
        ////Knoop knoop1 = new Knoop(30, new Punt(2.45, 3.45));
        ////dp.FillDataBase();
        //}

        static Belgie TestData()
        {
            Punt  testPunt1 = new Punt(2.45, 3.45);
            Punt  testPunt2 = new Punt(3.45, 4.45);
            Punt  testPunt3 = new Punt(4.45, 5.45);
            Punt  testPunt4 = new Punt(5.45, 6.45);
            Punt  testPunt5 = new Punt(6.45, 7.45);
            Knoop knoop1    = new Knoop(30, testPunt1);
            Knoop knoop2    = new Knoop(40, testPunt2);
            Knoop knoop3    = knoop1;
            Knoop knoop4    = new Knoop(50, testPunt3);

            List <Punt> puntlijstSeg1 = new List <Punt> {
                testPunt4
            };
            List <Punt> puntlijstSeg2 = new List <Punt> {
                testPunt5
            };

            Segment testSegment1 = new Segment(112, knoop1, knoop2, puntlijstSeg1);
            Segment testSegment2 = new Segment(113, knoop3, knoop4, puntlijstSeg2);

            Dictionary <Knoop, List <Segment> > testMap1 = new Dictionary <Knoop, List <Segment> >();

            testMap1.Add(knoop1, new List <Segment> {
                testSegment1
            });
            testMap1.Add(knoop2, new List <Segment> {
                testSegment1
            });
            Dictionary <Knoop, List <Segment> > testMap2 = new Dictionary <Knoop, List <Segment> >();

            testMap2.Add(knoop1, new List <Segment> {
                testSegment2
            });
            testMap2.Add(knoop2, new List <Segment> {
                testSegment2
            });

            Graaf testGraaf1 = new Graaf(250, testMap1);
            Graaf testGraaf2 = new Graaf(260, testMap2);



            Gemeente  testGemeente  = new Gemeente(12, "testGemeente");
            Straat    testStraat1   = new Straat(10, "TestStraat1", testGraaf1, testGemeente);
            Straat    testStraat2   = new Straat(20, "TestStraat2", testGraaf2, testGemeente);
            Provincie testProvincie = new Provincie(1, "testProvincie");

            testProvincie.VoegGemeenteToe(testGemeente);
            Belgie belg = new Belgie(new List <Provincie>()
            {
                testProvincie
            });

            DataProcessing dp = new DataProcessing(belg);

            dp.CompletelyFillDataBase();

            return(belg);
        }
示例#12
0
        private void Read()
        {
            GenericParser reader = new GenericParser(Config.Path + "/" + Config.Straatnamen)
            {
                ColumnDelimiter   = ';',
                MaxBufferSize     = 49600,
                FirstRowHasHeader = true
            };

            while (reader.Read())
            {
                int    id         = Convert.ToInt32(reader[0].Trim());
                string straatNaam = reader[1].Trim();
                if (_idStraatnaam.ContainsKey(id))
                {
                    continue;
                }
                _idStraatnaam.Add(id, straatNaam);
            }
            reader = new GenericParser(Config.Path + "/" + Config.StraatIdGemeenteId)
            {
                ColumnDelimiter   = ';',
                MaxBufferSize     = 49600,
                FirstRowHasHeader = true
            };
            int graafIdCounter = 0;

            while (reader.Read())
            {
                int gemeenteId   = Convert.ToInt32(reader[1].Trim());
                int straatNaamId = Convert.ToInt32(reader[0].Trim());

                Graaf graaf = new Graaf();
                graaf.Id = ++graafIdCounter;

                var map = _wrDataProvider.GetSegmentListByStraatId(straatNaamId);
                if (map == null)
                {
                    continue;
                }
                graaf.Map = map;

                string straatnaam = _idStraatnaam.ContainsKey(straatNaamId) ? _idStraatnaam[straatNaamId] : null;
                if (straatnaam != null)
                {
                    Straat s = new Straat(straatNaamId, straatnaam, gemeenteId, graaf);


                    if (_gemIdStraten.ContainsKey(gemeenteId))
                    {
                        _gemIdStraten[gemeenteId].Add(s);
                    }
                    else
                    {
                        _gemIdStraten.Add(gemeenteId, new List <Straat> {
                            s
                        });
                    }
                }
            }
        }
示例#13
0
        //--•Als gebruiker   wil ik   een straat   kunnen opvragen   op basis   van de   straatnaam en   de gemeentenaam
        //--wat ik niet makkelijk kon doen in 1 query, heb ik maar in 3 gedaan
        public Straat geefStraat_VanStraatNaam_enGemeenteNaam(string straatNaam, string gemeenteNaam)
        {
            SqlConnection connection = getConnection();

            Straat straat = new Straat();

            //Maakt de straat aan
            string queryString = "SELECT DISTINCT  s.straatId, straatNaam, gemeenteNaam, provincienaam, s.GraafId" +
                                 " FROM Straat s" +
                                 " JOIN Gemeente_straat gs ON s.straatId = gs.straatId" +
                                 " JOIN Gemeente g ON g.gemeenteId = gs.gemeenteId" +
                                 " JOIN Provincie_Gemeente pg ON pg.provincieID = g.gemeenteId" +
                                 " JOIN Provincie p ON p.provincieID = pg.provincieID" +
                                 " JOIN Graaf_Knoop gk ON s.GraafId = gk.GraafId" +
                                 " JOIN Knoop k ON k.knoopId = gk.knoopId" +
                                 " JOIN Knoop_Segment ks ON ks.knoopId = k.knoopId" +
                                 " JOIN Segment se ON se.SegmentId = ks.SegmentId" +
                                 " JOIN Punt pu ON pu.SegmId = se.SegmentId" +
                                 " Where s.straatNaam = @gegstraatNaam AND g.gemeenteNaam = @geggemeenteNaam ";


            using (SqlCommand command = connection.CreateCommand())
            {
                command.CommandText = queryString;
                SqlParameter paramId = new SqlParameter();
                paramId.ParameterName = "@gegstraatNaam";
                paramId.DbType        = DbType.String;
                paramId.Value         = straatNaam;


                command.CommandText = queryString;
                SqlParameter paramId2 = new SqlParameter();
                paramId2.ParameterName = "@geggemeenteNaam";
                paramId2.DbType        = DbType.String;
                paramId2.Value         = gemeenteNaam;

                command.Parameters.Add(paramId);
                command.Parameters.Add(paramId2);
                connection.Open();

                try
                {
                    SqlDataReader dataReader = command.ExecuteReader();
                    while (dataReader.Read())
                    {
                        int    straatId      = (int)dataReader["straatId"];
                        string sstraatNaam   = (string)dataReader["straatNaam"];
                        string ggemeenteNaam = (string)dataReader["gemeenteNaam"];
                        string provincienaam = (string)dataReader["provincienaam"];
                        int    GraafId       = (int)dataReader["GraafId"];

                        straat.StraatID      = straatId;
                        straat.Straatnaam    = sstraatNaam;
                        straat.gemeenteNaam  = ggemeenteNaam;
                        straat.ProvincieNaam = provincienaam;
                        straat.GraafId       = GraafId;
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex);
                    return(null);
                }
                finally
                {
                    connection.Close();
                }
            }

            //maakt de knopen aan voor deze straat
            string queryString2 = "SELECT DISTINCT k.knoopId, k.puntX, k.puntY" +
                                  " FROM Straat s" +
                                  " JOIN Gemeente_straat gs ON s.straatId = gs.straatId" +
                                  " JOIN Gemeente g ON g.gemeenteId = gs.gemeenteId" +
                                  " JOIN Graaf_Knoop gk ON s.GraafId = gk.GraafId" +
                                  " JOIN Knoop k ON k.knoopId = gk.knoopId" +
                                  " JOIN Knoop_Segment ks ON ks.knoopId = k.knoopId" +
                                  " JOIN Segment se ON se.SegmentId = ks.SegmentId" +
                                  " JOIN Punt pu ON pu.SegmId = se.SegmentId" +
                                  " Where s.straatNaam = @gegstraatNaam AND g.gemeenteNaam = @geggemeenteNaam ";



            using (SqlCommand command = connection.CreateCommand())
            {
                command.CommandText = queryString2;
                SqlParameter paramId = new SqlParameter();
                paramId.ParameterName = "@gegstraatNaam";
                paramId.DbType        = DbType.String;
                paramId.Value         = straatNaam;


                command.CommandText = queryString2;
                SqlParameter paramId2 = new SqlParameter();
                paramId2.ParameterName = "@geggemeenteNaam";
                paramId2.DbType        = DbType.String;
                paramId2.Value         = gemeenteNaam;

                command.Parameters.Add(paramId);
                command.Parameters.Add(paramId2);
                connection.Open();

                try
                {
                    SqlDataReader dataReader = command.ExecuteReader();
                    while (dataReader.Read())
                    {
                        int    knoopId = (int)dataReader["knoopId"];
                        double puntX   = (double)dataReader["puntX"];
                        double puntY   = (double)dataReader["puntY"];

                        straat.knopen.Add(new Knoop(knoopId, puntX, puntY));
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex);
                    return(null);
                }
                finally
                {
                    connection.Close();
                }
            }
            //geeft hem segmenten en punten
            string queryString3 = "SELECT DISTINCT k.knoopId,se.SegmentId, se.BeginKnoopId, se.EindKnoopId, pu.puntX, pu.puntY" +
                                  " FROM Straat s" +
                                  " JOIN Gemeente_straat gs ON s.straatId = gs.straatId" +
                                  " JOIN Gemeente g ON g.gemeenteId = gs.gemeenteId" +
                                  " JOIN Graaf_Knoop gk ON s.GraafId = gk.GraafId" +
                                  " JOIN Knoop k ON k.knoopId = gk.knoopId" +
                                  " JOIN Knoop_Segment ks ON ks.knoopId = k.knoopId" +
                                  " JOIN Segment se ON se.SegmentId = ks.SegmentId" +
                                  " JOIN Punt pu ON pu.SegmId = se.SegmentId" +
                                  " Where s.straatNaam = @gegstraatNaam AND g.gemeenteNaam = @geggemeenteNaam ";

            using (SqlCommand command = connection.CreateCommand())
            {
                command.CommandText = queryString3;
                SqlParameter paramId = new SqlParameter();
                paramId.ParameterName = "@gegstraatNaam";
                paramId.DbType        = DbType.String;
                paramId.Value         = straatNaam;


                command.CommandText = queryString3;
                SqlParameter paramId2 = new SqlParameter();
                paramId2.ParameterName = "@geggemeenteNaam";
                paramId2.DbType        = DbType.String;
                paramId2.Value         = gemeenteNaam;

                command.Parameters.Add(paramId);
                command.Parameters.Add(paramId2);
                connection.Open();


                try
                {
                    SqlDataReader dataReader = command.ExecuteReader();
                    while (dataReader.Read())
                    {
                        int    knoopId      = (int)dataReader["knoopId"];
                        int    SegmentId    = (int)dataReader["SegmentId"];
                        int    BeginKnoopId = (int)dataReader["BeginKnoopId"];
                        int    EindKnoopId  = (int)dataReader["EindKnoopId"];
                        double puntX        = (double)dataReader["puntX"];
                        double puntY        = (double)dataReader["puntY"];



                        //als de knoop de segment nog niet heeft dan maak je die aan en voeg je punt toe
                        if (!straat.knopen.Where(k => k.knoopID.Equals(knoopId)).FirstOrDefault().segmenten.Any(s => s.segmentID.Equals(SegmentId)))
                        {
                            straat.knopen.Where(k => k.knoopID.Equals(knoopId))
                            .FirstOrDefault().segmenten.Add(new Segment(SegmentId, BeginKnoopId, EindKnoopId));

                            straat.knopen.Where(k => k.knoopID.Equals(knoopId))
                            .FirstOrDefault().segmenten.Where(s => s.segmentID.Equals(SegmentId)).FirstOrDefault()
                            .punten_verticles.Add(new Punt(puntX, puntY));
                        }
                        //als de knoop de segment wel al heeft, dan voeg je enkel de punt toe
                        else
                        {
                            straat.knopen.Where(k => k.knoopID.Equals(knoopId))
                            .FirstOrDefault().segmenten.Where(s => s.segmentID.Equals(SegmentId)).FirstOrDefault()
                            .punten_verticles.Add(new Punt(puntX, puntY));
                        }
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex);
                    return(null);
                }
                finally
                {
                    connection.Close();
                }
            }
            return(straat);
        }
示例#14
0
        // --•Als  gebruiker  wil  ik  alle  straten  kunnen  opvragen  die  grenzen  aan  een  opgegeven  straat (straatID).
        public List <Straat> stratenDieGrenzenZoeken(int straatid)
        {
            List <Straat> stratenlijt = new List <Straat>();
            SqlConnection connection  = getConnection();



            //Maakt de straten aan met enkel hun s.straatId, straatNaam, gemeenteNaam, provincienaam, s.GraafId"

            string queryString = "SELECT DISTINCT  s.straatId, straatNaam, gemeenteNaam, provincienaam, s.GraafId" +
                                 "        FROM Straat s" +
                                 "         JOIN Gemeente_straat gs ON s.straatId = gs.straatId" +
                                 "         JOIN Gemeente g ON g.gemeenteId = gs.gemeenteId" +
                                 "         JOIN Provincie_Gemeente pg ON pg.provincieID = g.gemeenteId" +
                                 "         JOIN Provincie p ON p.provincieID = pg.provincieID" +
                                 "          JOIN Graaf_Knoop gk ON s.GraafId = gk.GraafId" +
                                 "          JOIN Knoop k ON k.knoopId = gk.knoopId" +
                                 "          JOIN Knoop_Segment ks ON ks.knoopId = k.knoopId" +
                                 "          JOIN Segment se ON se.SegmentId = ks.SegmentId" +
                                 "          JOIN Punt pu ON pu.SegmId = se.SegmentId" +
                                 "        Where se.linksStraatnaamID = @gegstraatId OR se.rechtsStraatnaamID =  @gegstraatId; ";


            using (SqlCommand command = connection.CreateCommand())
            {
                command.CommandText = queryString;
                SqlParameter paramId = new SqlParameter();
                paramId.ParameterName = "@gegstraatId";
                paramId.DbType        = DbType.Int32;
                paramId.Value         = straatid;

                command.Parameters.Add(paramId);
                connection.Open();

                try
                {
                    SqlDataReader dataReader = command.ExecuteReader();
                    while (dataReader.Read())
                    {
                        Straat straat        = new Straat();
                        int    straatId      = (int)dataReader["straatId"];
                        string straatNaam    = (string)dataReader["straatNaam"];
                        string gemeenteNaam  = (string)dataReader["gemeenteNaam"];
                        string provincienaam = (string)dataReader["provincienaam"];
                        int    GraafId       = (int)dataReader["GraafId"];

                        straat.StraatID      = straatId;
                        straat.Straatnaam    = straatNaam;
                        straat.gemeenteNaam  = gemeenteNaam;
                        straat.ProvincieNaam = provincienaam;
                        straat.GraafId       = GraafId;

                        stratenlijt.Add(straat);
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex);
                    return(null);
                }
                finally
                {
                    connection.Close();
                }
            }

            //stratenlijst bevat nu de nodige straten, hun gegevens moeten wel nog worden opgevuld
            //hiervoor heb ik een for en herbruik ik queries voor een straatopvragen met de straatId
            for (int i = 0; i < stratenlijt.Count(); i++)
            {
                //maakt de knopen aan voor deze straat
                string queryString2 = "SELECT DISTINCT k.knoopId, k.puntX, k.puntY FROM Straat JOIN graaf g ON g.GraafId = Straat.graafID JOIN Graaf_Knoop gk ON g.GraafId = gk.GraafId JOIN Knoop k ON k.knoopId = gk.knoopId JOIN Knoop_Segment ks ON ks.knoopId = k.knoopId JOIN Segment se ON se.SegmentId = ks.SegmentId JOIN Punt p ON p.SegmId = se.SegmentId Where Straat.straatId = @gegstraatId; ";

                using (SqlCommand command = connection.CreateCommand())
                {
                    command.CommandText = queryString2;
                    SqlParameter paramId = new SqlParameter();
                    paramId.ParameterName = "@gegstraatId";
                    paramId.DbType        = DbType.Int32;
                    paramId.Value         = stratenlijt[i].StraatID;

                    command.Parameters.Add(paramId);
                    connection.Open();

                    try
                    {
                        SqlDataReader dataReader = command.ExecuteReader();
                        while (dataReader.Read())
                        {
                            int    knoopId = (int)dataReader["knoopId"];
                            double puntX   = (double)dataReader["puntX"];
                            double puntY   = (double)dataReader["puntY"];

                            stratenlijt[i].knopen.Add(new Knoop(knoopId, puntX, puntY));
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex);
                        return(null);
                    }
                    finally
                    {
                        connection.Close();
                    }
                }
                //geeft hem segmenten en punten
                string queryString3 = "SELECT DISTINCT k.knoopId,se.SegmentId, se.BeginKnoopId, se.EindKnoopId, p.puntX, p.puntY" +
                                      " FROM Straat s" +
                                      " JOIN graaf g ON g.GraafId = s.graafID" +
                                      " JOIN Graaf_Knoop gk ON g.GraafId = gk.GraafId" +
                                      " JOIN Knoop k ON k.knoopId = gk.knoopId" +
                                      " JOIN Knoop_Segment ks ON ks.knoopId = k.knoopId" +
                                      " JOIN Segment se ON se.SegmentId = ks.SegmentId" +
                                      " JOIN Punt p ON p.SegmId = se.SegmentId" +
                                      " Where s.straatId = @gegstraatId; ";

                using (SqlCommand command = connection.CreateCommand())
                {
                    command.CommandText = queryString3;
                    SqlParameter paramId = new SqlParameter();
                    paramId.ParameterName = "@gegstraatId";
                    paramId.DbType        = DbType.Int32;
                    paramId.Value         = stratenlijt[i].StraatID;

                    command.Parameters.Add(paramId);
                    connection.Open();

                    try
                    {
                        SqlDataReader dataReader = command.ExecuteReader();
                        while (dataReader.Read())
                        {
                            int    knoopId      = (int)dataReader["knoopId"];
                            int    SegmentId    = (int)dataReader["SegmentId"];
                            int    BeginKnoopId = (int)dataReader["BeginKnoopId"];
                            int    EindKnoopId  = (int)dataReader["EindKnoopId"];
                            double puntX        = (double)dataReader["puntX"];
                            double puntY        = (double)dataReader["puntY"];



                            //als de knoop de segment nog niet heeft dan maak je die aan en voeg je punt toe
                            if (!stratenlijt[i].knopen.Where(k => k.knoopID.Equals(knoopId)).FirstOrDefault().segmenten.Any(s => s.segmentID.Equals(SegmentId)))
                            {
                                stratenlijt[i].knopen.Where(k => k.knoopID.Equals(knoopId))
                                .FirstOrDefault().segmenten.Add(new Segment(SegmentId, BeginKnoopId, EindKnoopId));

                                stratenlijt[i].knopen.Where(k => k.knoopID.Equals(knoopId))
                                .FirstOrDefault().segmenten.Where(s => s.segmentID.Equals(SegmentId)).FirstOrDefault()
                                .punten_verticles.Add(new Punt(puntX, puntY));
                            }
                            //als de knoop de segment wel al heeft, dan voeg je enkel de punt toe
                            else
                            {
                                stratenlijt[i].knopen.Where(k => k.knoopID.Equals(knoopId))
                                .FirstOrDefault().segmenten.Where(s => s.segmentID.Equals(SegmentId)).FirstOrDefault()
                                .punten_verticles.Add(new Punt(puntX, puntY));
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex);
                        return(null);
                    }
                    finally
                    {
                        connection.Close();
                    }
                }
            }
            return(stratenlijt);
        }
 public bool VoegStraatToe(Straat toeTeVoegen)
 {
     return(StratenBeheer.VoegStraatToe(toeTeVoegen));
 }
示例#16
0
        public static List <Provincie> Run()
        {
            List <String> FileReader;

            // Lees provincies vlaanderen
            List <int> ProvincieIds_Vlaanderen = new List <int>();

            FileReader = ReadFile(pathProvincieIDsVlaanderen, false);
            foreach (string s in FileReader)
            {
                string[] temps = s.Split(',');

                foreach (string id in temps)
                {
                    ProvincieIds_Vlaanderen.Add(int.Parse(id));
                }
            }

            // Maak provincie, link gemeenten
            List <Provincie> Provincies_Vlaanderen = new List <Provincie>();
            // Couple int1 = gemeenteId; Couple int2 = provincieId
            List <Couple> GemeentenPerProvincie = new List <Couple>();

            FileReader = ReadFile(pathProvincieInfo);
            foreach (string s in FileReader)
            {
                string[] temps = s.Split(';');
                if (temps[2].Equals("nl"))
                {
                    int provincieId = int.Parse(temps[1]);
                    if (ProvincieIds_Vlaanderen.Any(p => p.Equals(provincieId)))
                    {
                        // Save gemeenteId's
                        GemeentenPerProvincie.Add(new Couple {
                            Int1 = int.Parse(temps[0]), Int2 = provincieId
                        });

                        // Save provincie
                        if (!Provincies_Vlaanderen.Any(p => p.ProvincieID.Equals(provincieId)))
                        {
                            Console.WriteLine("Creating Provincie: " + temps[3]);
                            Provincies_Vlaanderen.Add(new Provincie()
                            {
                                ProvincieID = provincieId, ProvincieNaam = temps[3]
                            });
                        }
                    }
                }
            }

            // Maak gemeenten
            List <Gemeente> Gemeentes_Vlaanderen = new List <Gemeente>();

            FileReader = ReadFile(pathWRgemeentenaam);
            foreach (string s in FileReader)
            {
                string[] temps = s.Split(';');
                if (temps[2].Equals("nl"))
                {
                    // If Gemeente is in Vlaanderen
                    Couple gemeenteProvincie = GemeentenPerProvincie.FirstOrDefault(c => c.Int1.Equals(int.Parse(temps[1])));
                    if (!(gemeenteProvincie is null))
                    {
                        // Save gemeente
                        Console.WriteLine("Creating Gemeente: " + temps[3]);
                        Gemeente gemeente = new Gemeente()
                        {
                            GemeenteID = gemeenteProvincie.Int1, GemeenteNaam = temps[3]
                        };
                        Gemeentes_Vlaanderen.Add(gemeente);
                        Provincies_Vlaanderen.First(p => p.ProvincieID.Equals(gemeenteProvincie.Int2)).Gemeenten.Add(gemeente);
                    }
                }
            }

            // Lees koppeling straten
            // Couple int1 = straatId; Couple int2 = gemeenteId
            List <Couple> StratenPerGemeentes = new List <Couple>();

            FileReader = ReadFile(pathWRGemeenteID);
            foreach (string s in FileReader)
            {
                string[] temps      = s.Split(';');
                int      straatID   = int.Parse(temps[0]);
                int      gemeenteID = int.Parse(temps[1]);
                if (GemeentenPerProvincie.Any(c => c.Int1.Equals(gemeenteID)))
                {
                    StratenPerGemeentes.Add(new Couple()
                    {
                        Int1 = straatID, Int2 = gemeenteID
                    });
                }
            }

            // Maak straten
            List <Straat> Straten_Vlaanderen = new List <Straat>();

            FileReader = ReadFile(pathstraatnamen);
            foreach (string s in FileReader)
            {
                string[] temps          = s.Split(';');
                int      straatID       = int.Parse(temps[0]);
                string   straatnaam     = temps[1].Trim();
                Couple   straatGemeente = StratenPerGemeentes.FirstOrDefault(c => c.Int1.Equals(straatID));
                if (!(straatGemeente is null))
                {
                    Console.WriteLine("Creating Straat: " + straatnaam);
                    Straat straat = new Straat()
                    {
                        StraatID = straatID, Straatnaam = straatnaam
                    };
                    Straten_Vlaanderen.Add(straat);
                    Gemeentes_Vlaanderen.FirstOrDefault(g => g.GemeenteID.Equals(straatGemeente.Int2)).Straten.Add(straat);
                }
            }

            // Segmenten
            Console.WriteLine("Creating segmenten");
            FileReader = ReadFile(pathWRdata);
            foreach (string s in FileReader)
            {
                string[] temps          = s.Split(';');
                int      segmentId      = int.Parse(temps[0]);
                string   geo            = temps[1].Remove(0, 12).Remove(temps[1].Length - 12 - 2);
                int      straatIdLinks  = int.Parse(temps[6]);
                int      straatIdRechts = int.Parse(temps[7]);
                if (!(straatIdLinks.Equals(-9) && straatIdRechts.Equals(-9)))
                {
                    Straat straatLinks = Straten_Vlaanderen.FirstOrDefault(s => s.StraatID.Equals(straatIdLinks));
                    if (!(straatLinks is null))
                    {
                        List <Punt> punten = new List <Punt>();
                        foreach (string punt in geo.Split(", "))
                        {
                            string[] puntSplit = punt.Split(" ");
                            punten.Add(new Punt(double.Parse(puntSplit[0]), double.Parse(puntSplit[1])));
                        }
                        Segment segment = new Segment()
                        {
                            SegmentID = segmentId, Beginknoop = new Knoop()
                            {
                                Punt = punten.First()
                            }, Eindknoop = new Knoop()
                            {
                                Punt = punten.Last()
                            }, Vertices = punten
                        };
                        straatLinks.Graaf.parsList(segment);
                    }
                }
            }

            // Toon rapport
            #region rapport
            Console.WriteLine(
                "\n\n" +
                $"Totaal aantal straten: {Straten_Vlaanderen.Count} \n\n" +
                $"Aantal straten per provincie: "
                );
            foreach (Provincie prov in Provincies_Vlaanderen)
            {
                Console.WriteLine($"   - {prov.ProvincieNaam}: {prov.Gemeenten.Sum(g => g.Straten.Count)}");
            }
            foreach (Provincie prov in Provincies_Vlaanderen)
            {
                Console.WriteLine($"\nStraatInfo {prov.ProvincieNaam}:");
                foreach (Gemeente gem in prov.Gemeenten)
                {
                    Console.WriteLine(
                        $"   - {gem.GemeenteNaam}: Aantal straten = {gem.Straten.Count}, Totale lengte = {gem.Straten.Sum(s => s.Graaf.ListMap.Count)}\n" +
                        $"      - Kortste straat: {gem.Straten.Min(s => s.Graaf.ListMap.Count)}\n" +
                        $"      - Langste straat: {gem.Straten.Max(s => s.Graaf.ListMap.Count)}"
                        );
                }
            }
            #endregion

            return(Provincies_Vlaanderen);
        }
示例#17
0
        public static void Run()
        {
            using (ProvinciesContext ctx = new ProvinciesContext())
            {
                dc = new DomainController(ctx);
                string antwoord = "";
                do
                {
                    Console.Clear();
                    Console.WriteLine("Welk wilt u doen? ");
                    Console.WriteLine("Geef ID's van een gemeente terug (0)");
                    Console.WriteLine("Geef straat op basis van zijn ID (1)");
                    Console.WriteLine("Geef straat op basis van zijn Naam (2)");
                    Console.WriteLine("Geef een lijst van straatnamen op basis van een gemeente ID (3)");
                    Console.WriteLine("Geef een verslach van een provincie op basis van een provincie ID (4)");
                    antwoord = Console.ReadLine();
                    if (antwoord == "0")
                    {
                        Console.WriteLine("Geef de ID van de gemeente:");
                        antwoord = Console.ReadLine();

                        ListToString(dc.GeefLijstStraatIDsVanGemeente(int.Parse(antwoord)));
                    }
                    if (antwoord == "1")
                    {
                        Console.WriteLine("Geef de ID van de straat:");
                        antwoord = Console.ReadLine();
                        Straat tempStraat = dc.GeefStraatOpBasisVanID(int.Parse(antwoord));
                        if (tempStraat is null)
                        {
                            Console.WriteLine("Deze straat bestaat niet.");
                        }
                        else
                        {
                            Console.WriteLine(tempStraat.ToString());
                        }
                    }
                    if (antwoord == "2")
                    {
                        Console.WriteLine("Geef de naam van de straat:");
                        antwoord = Console.ReadLine();
                        Straat tempStraat = dc.GeefStraatOpBasisVanNaam(antwoord);
                        if (tempStraat is null)
                        {
                            Console.WriteLine("Deze straat bestaat niet.");
                        }
                        else
                        {
                            Console.WriteLine(tempStraat.ToString());
                        }
                    }
                    if (antwoord == "3")
                    {
                        Console.WriteLine("Geef de naam van de Gemeente waar u de straten van wilt zien:");
                        antwoord = Console.ReadLine();
                        List <string> tempStraten = dc.GeefLijstVanStraatNamenVanGemeente(int.Parse(antwoord));

                        if (tempStraten is null)
                        {
                            Console.WriteLine("Deze straat bestaat niet.");
                        }
                        else
                        {
                            foreach (string straat in tempStraten)
                            {
                                Console.WriteLine(straat.TrimEnd());
                            }
                        }
                    }
                    if (antwoord == "4")
                    {
                        Console.WriteLine("Geef de ID van de provincie van wie u een verslag wilt hebben:");
                        antwoord = Console.ReadLine();
                        string verslach = dc.GeefRaportVanProvincie(int.Parse(antwoord));

                        if (verslach is null)
                        {
                            Console.WriteLine("Deze provincie bestaat niet.");
                        }
                        else
                        {
                            Console.WriteLine(verslach);
                        }
                    }
                    Console.ReadLine();
                } while (antwoord != "stop");
            }
        }
示例#18
0
        public Straat ReturnStraatInGemeente(int straatId, Gemeente gemeente)
        {
            string        straatQuery  = "SELECT * FROM dbo.straat WHERE Id=@StraatId";
            string        segmentQuery = "SELECT * FROM dbo.segment JOIN straatSegmenten ON straatSegmenten.SegmentId = segment.Id WHERE straatId = @StraatId";
            string        knoopQuery   = "SELECT punt.X,punt.Y FROM dbo.knoop JOIN punt ON knoop.PuntId = Punt.Id WHERE knoop.Id = @KnoopId";
            string        puntQuery    = "SELECT * FROM dbo.punt JOIN dbo.vertices ON punt.Id=vertices.PuntId WHERE vertices.segmentId = @segmentId ORDER BY vertices.PuntId";
            SqlConnection connection   = getConnection();

            using (SqlCommand puntCommand = connection.CreateCommand())
                using (SqlCommand knoopCommand = connection.CreateCommand())
                    using (SqlCommand segmentCommand = connection.CreateCommand())
                        using (SqlCommand straatCommand = connection.CreateCommand())
                        {
                            straatCommand.CommandText = straatQuery;
                            straatCommand.Parameters.Add(new SqlParameter("@StraatId", SqlDbType.Int));
                            straatCommand.Parameters["@StraatId"].Value = straatId;

                            segmentCommand.CommandText = segmentQuery;
                            segmentCommand.Parameters.Add(new SqlParameter("@StraatId", SqlDbType.Int));
                            segmentCommand.Parameters["@StraatId"].Value = straatId;

                            knoopCommand.CommandText = knoopQuery;
                            knoopCommand.Parameters.Add(new SqlParameter("@KnoopId", SqlDbType.Int));

                            puntCommand.CommandText = puntQuery;
                            puntCommand.Parameters.Add(new SqlParameter("@SegmentId", SqlDbType.Int));
                            connection.Open();

                            try
                            {
                                List <Segment> segmenten = new List <Segment>();

                                SqlDataReader reader = straatCommand.ExecuteReader();
                                reader.Read();
                                string straatnaam = (string)reader["Naam"];
                                reader.Close();

                                reader = segmentCommand.ExecuteReader();
                                List <int> segmentIds    = new List <int>();
                                List <int> beginKnoopIds = new List <int>();
                                List <int> eindKnoopIds  = new List <int>();
                                while (reader.Read())
                                {
                                    segmentIds.Add((int)reader["Id"]);
                                    beginKnoopIds.Add((int)reader["BeginKnoopId"]);
                                    eindKnoopIds.Add((int)reader["EindKnoopId"]);
                                }
                                reader.Close();

                                //hier beginnen we te loopen om onze segmenten op te bouwen.
                                for (int i = 0; i < segmentIds.Count; i++)
                                {
                                    knoopCommand.Parameters["@KnoopId"].Value = beginKnoopIds[i];
                                    reader = knoopCommand.ExecuteReader();
                                    reader.Read();
                                    double beginX = (double)reader["X"];
                                    double beginY = (double)reader["Y"];
                                    reader.Close();

                                    knoopCommand.Parameters["@KnoopId"].Value = eindKnoopIds[i];
                                    reader = knoopCommand.ExecuteReader();
                                    reader.Read();
                                    double eindX = (double)reader["X"];
                                    double eindY = (double)reader["Y"];
                                    reader.Close();

                                    puntCommand.Parameters["@SegmentId"].Value = segmentIds[i];
                                    reader = puntCommand.ExecuteReader();
                                    Knoop       beginKnoop = new Knoop(beginKnoopIds[i], new Punt(beginX, beginY));
                                    Knoop       eindKnoop  = new Knoop(eindKnoopIds[i], new Punt(eindX, eindY));
                                    List <Punt> punten     = new List <Punt>()
                                    {
                                        beginKnoop.SegmentPunt
                                    };
                                    while (reader.Read())
                                    {
                                        punten.Add(new Punt((double)reader["X"], (double)reader["Y"]));
                                    }
                                    reader.Close();
                                    punten.Add(eindKnoop.SegmentPunt);
                                    segmenten.Add(new Segment(segmentIds[i], beginKnoop, eindKnoop, punten));
                                }

                                Graaf tempGraaf = BouwGraaf(segmenten, straatId);

                                Straat returnStraat = new Straat(straatId, straatnaam, tempGraaf, gemeente);
                                return(returnStraat);
                            }
                            catch (Exception ex)
                            {
                                Console.WriteLine(ex);
                                return(null);
                            }
                            finally
                            {
                                connection.Close();
                            }
                        }
        }
示例#19
0
        //extra ter vervollediging
        public Gemeente ReturnGemeenteVoorGemeenteNaam(string gemeenteNaam)
        {
            string gemeenteQuery = "SELECT * FROM dbo.gemeente WHERE Naam=@gemeenteNaam";
            string straatQuery   = "SELECT * FROM dbo.straat JOIN gemeenteStraatLink ON gemeenteStraatLink.StraatId = straat.Id WHERE gemeenteStraatLink.GemeenteId = @GemeenteId";

            string segmentQuery = "SELECT * FROM dbo.segment JOIN straatSegmenten ON straatSegmenten.SegmentId = segment.Id WHERE straatId = @StraatId";
            string knoopQuery   = "SELECT punt.X,punt.Y FROM dbo.knoop JOIN punt ON knoop.PuntId = Punt.Id WHERE knoop.Id = @KnoopId";
            string puntQuery    = "SELECT * FROM dbo.punt JOIN dbo.vertices ON punt.Id=vertices.PuntId WHERE vertices.segmentId = @segmentId";

            SqlConnection connection = getConnection();

            using (SqlCommand knoopCommand = connection.CreateCommand())
                using (SqlCommand puntCommand = connection.CreateCommand())
                    using (SqlCommand segmentCommand = connection.CreateCommand())
                        using (SqlCommand gemeenteCommand = connection.CreateCommand())
                            using (SqlCommand straatCommand = connection.CreateCommand())
                            {
                                gemeenteCommand.CommandText = gemeenteQuery;
                                gemeenteCommand.Parameters.Add(new SqlParameter("@GemeenteNaam", SqlDbType.NVarChar));
                                gemeenteCommand.Parameters["@GemeenteNaam"].Value = gemeenteNaam;

                                straatCommand.CommandText = straatQuery;
                                straatCommand.Parameters.Add(new SqlParameter("@GemeenteId", SqlDbType.Int));

                                segmentCommand.CommandText = segmentQuery;
                                segmentCommand.Parameters.Add(new SqlParameter("@StraatId", SqlDbType.Int));

                                knoopCommand.CommandText = knoopQuery;
                                knoopCommand.Parameters.Add(new SqlParameter("@KnoopId", SqlDbType.Int));

                                puntCommand.CommandText = puntQuery;
                                puntCommand.Parameters.Add(new SqlParameter("@SegmentId", SqlDbType.Int));

                                connection.Open();

                                try
                                {
                                    SqlDataReader reader = gemeenteCommand.ExecuteReader();
                                    reader.Read();
                                    int gemeenteId = (int)reader["Id"];
                                    reader.Close();
                                    List <int>    straatIds   = new List <int>();
                                    List <string> straatNamen = new List <string>();
                                    straatCommand.Parameters["@GemeenteId"].Value = gemeenteId;
                                    reader = straatCommand.ExecuteReader();
                                    Gemeente gemeente = new Gemeente(gemeenteId, gemeenteNaam);
                                    while (reader.Read())
                                    {
                                        straatIds.Add((int)reader["Id"]);
                                        straatNamen.Add((string)reader["Naam"]);
                                    }
                                    reader.Close();
                                    for (int index = 0; index < straatIds.Count; index++)
                                    {
                                        segmentCommand.Parameters["@StraatId"].Value = straatIds[index];
                                        reader = segmentCommand.ExecuteReader();
                                        List <Segment> segmenten     = new List <Segment>();
                                        List <int>     segmentIds    = new List <int>();
                                        List <int>     beginKnoopIds = new List <int>();
                                        List <int>     eindKnoopIds  = new List <int>();
                                        while (reader.Read())
                                        {
                                            segmentIds.Add((int)reader["Id"]);
                                            beginKnoopIds.Add((int)reader["BeginKnoopId"]);
                                            eindKnoopIds.Add((int)reader["EindKnoopId"]);
                                        }
                                        reader.Close();

                                        //hier beginnen we te loopen om onze segmenten op te bouwen.
                                        for (int i = 0; i < segmentIds.Count; i++)
                                        {
                                            knoopCommand.Parameters["@KnoopId"].Value = beginKnoopIds[i];
                                            reader = knoopCommand.ExecuteReader();
                                            reader.Read();
                                            double beginX = (double)reader["X"];
                                            double beginY = (double)reader["Y"];
                                            reader.Close();

                                            knoopCommand.Parameters["@KnoopId"].Value = eindKnoopIds[i];
                                            reader = knoopCommand.ExecuteReader();
                                            reader.Read();
                                            double eindX = (double)reader["X"];
                                            double eindY = (double)reader["Y"];
                                            reader.Close();

                                            puntCommand.Parameters["@SegmentId"].Value = segmentIds[i];
                                            reader = puntCommand.ExecuteReader();
                                            List <Punt> punten = new List <Punt>();
                                            while (reader.Read())
                                            {
                                                punten.Add(new Punt((double)reader["X"], (double)reader["Y"]));
                                            }
                                            reader.Close();
                                            Knoop beginKnoop = new Knoop(beginKnoopIds[i], new Punt(beginX, beginY));
                                            Knoop eindKnoop  = new Knoop(eindKnoopIds[i], new Punt(eindX, eindY));
                                            segmenten.Add(new Segment(segmentIds[i], beginKnoop, eindKnoop, punten));
                                        }

                                        Graaf  tempGraaf  = BouwGraaf(segmenten, straatIds[index]);
                                        Straat tempstraat = new Straat(straatIds[index], straatNamen[index], tempGraaf, gemeente);
                                    }



                                    return(gemeente);
                                }
                                catch (Exception ex)
                                {
                                    Console.WriteLine(ex);
                                    return(null);
                                }
                                finally
                                {
                                    connection.Close();
                                }
                            }
        }