/// <summary> /// Deelt de tram in op een vrij onderhoudsspoor. /// </summary> /// <param name="tram"></param> /// <param name="dc"></param> public static void DeelTramInOpReservering(Tram tram, DatabaseController dc) //ToDo: Rekening houden met verbinding. { BeheerController bc = new BeheerController(); Reservering reservering = bc.GetReservering(tram); foreach (Spoor spoor in alleSporen) { if (reservering.Spoor.ID == spoor.ID) { Sector sector = spoor.GetEersteSector(); if (sector == null) { DeelTramInVolgensAlgoritme(tram, dc); return; } else { sector.PlaatsTram(tram); if (sector.ID == spoor.Sectoren[(spoor.Sectoren.Count - 1)].ID) { spoor.Beschikbaar = false; } tram.Beschikbaar = true; dc.UpdateSpoor(spoor); dc.UpdateTram(tram); dc.UpdateSector(sector, huidigeRemise); dc.DeleteReservering(reservering.ID); } } } }
public List <Reservering> GetAllReservering(Remise r) { try { List <Reservering> reserveringen = new List <Reservering>(); string sql = "SELECT * FROM RESERVERING"; List <Tram> trams = GetAllTrams(r); List <Spoor> sporen = GetAllSporen(r); OracleCommand cmd = MaakOracleCommand(sql); OracleDataReader reader = VoerQueryUit(cmd); while (reader.Read()) { int id = Convert.ToInt32(reader.GetValue(0)); Tram tram = VerkrijgTram(trams, Convert.ToInt32(reader.GetValue(1))); Spoor spoor = VerkrijgSpoor(sporen, Convert.ToInt32(reader.GetValue(2))); Reservering reservering = new Reservering(id, tram, spoor); reserveringen.Add(reservering); } return(reserveringen); } catch { return(null); } finally { verbinding.Close(); } }
/// <summary> /// Deelt de tram in op een vrij onderhoudsspoor. /// </summary> /// <param name="tram"></param> /// <param name="dc"></param> public static void DeelTramInOpOnderhoudsSpoor(Tram tram, DatabaseController dc) //ToDo: Rekening houden met verbinding. { OnderhoudController oc = new OnderhoudController(huidigeRemise); Onderhoud onderhoud = oc.GetOnderhoud(tram); Spoor spoor = oc.GetVrijOnderhoudsSpoor(); if (spoor != null) { Sector sector = spoor.GetEersteSector(); sector.PlaatsTram(tram); if (sector.ID == spoor.Sectoren[(spoor.Sectoren.Count - 1)].ID) { spoor.Beschikbaar = false; } dc.UpdateSpoor(spoor); dc.UpdateSector(sector, huidigeRemise); dc.UpdateTram(sector.Tram); } else { DeelTramInVolgensAlgoritme(tram, dc); } }
public List <Onderhoud> GetAllOnderhoud(Remise r) { try { List <Onderhoud> onderhoudList = new List <Onderhoud>(); List <Tram> trams = GetAllTrams(r); string sql = "SELECT * FROM TRAM_ONDERHOUD"; // Moet nog worden ingevuld. OracleCommand cmd = MaakOracleCommand(sql); OracleDataReader reader = VoerQueryUit(cmd); while (reader.Read()) { int id = Convert.ToInt32(reader.GetValue(0)); int adid = Convert.ToInt32(reader.GetValue(1)); Tram tram = VerkrijgTram(trams, Convert.ToInt32(reader.GetValue(2))); DateTime tijdstip = Convert.ToDateTime(reader.GetValue(3)); DateTime beschikbaarDatum = Convert.ToDateTime(reader.GetValue(4)); TypeOnderhoud typeOnderhoud = (TypeOnderhoud)Convert.ToInt32(reader.GetValue(5)); Onderhoud o = new Onderhoud(id, adid, tram, tijdstip, beschikbaarDatum, typeOnderhoud); onderhoudList.Add(o); } return(onderhoudList); } finally { verbinding.Close(); } }
/// <summary> /// Update alle tram waarden in de database voor het gegeven tram id. /// </summary> /// <param name="tram">De tram die moet worden geüpdate</param> /// <returns></returns> public bool UpdateTram(Tram tram) { try { string sql = "UPDATE TRAM SET Remise_ID_Standplaats = :Remise_ID, Tramtype_ID = :Tramtype_ID, Vertrektijd = :Vertrektijd, Nummer = :Nummer," + " Lengte = :Lengte, Status = :Status, Vervuild = :Vervuild, Defect = :Defect, ConducteurGeschikt = :ConducteurGeschikt, Beschikbaar = :Beschikbaar" + " WHERE ID = :ID"; OracleCommand command = MaakOracleCommand(sql); command.Parameters.Add(":Remise_ID", tram.Remise.ID); command.Parameters.Add(":Tramtype_ID", Convert.ToInt32(tram.TramType)); command.Parameters.Add(":Vertrektijd", Convert.ToDateTime(tram.Vertrektijd)); command.Parameters.Add(":Nummer", tram.TramNummer); command.Parameters.Add(":Lengte", tram.Lengte); command.Parameters.Add(":Status", tram.Opmerking); command.Parameters.Add(":Vervuild", Convert.ToInt32(tram.Vervuild)); command.Parameters.Add(":Defect", Convert.ToInt32(tram.Defect)); command.Parameters.Add(":ConducteurGeschikt", Convert.ToInt32(tram.ConducteurGeschikt)); command.Parameters.Add(":Beschikbaar", Convert.ToInt32(tram.Beschikbaar)); command.Parameters.Add(":ID", tram.ID); return(VoerNonQueryUit(command)); } catch { return(false); } finally { verbinding.Close(); } }
/// <summary> /// Voegt een nieuwe tram toe aan de database. /// </summary> /// <param name="tram">De tram die aan de database moet worden toegevoegd</param> /// <returns>Of de tram is toegevoegd of niet</returns> public bool AddTram(Tram tram) { try { string sql = "INSERT INTO TRAM (Remise_ID_Standplaats, Tramtype_ID, Vertrektijd, Nummer, Lengte, Status, Vervuild, Defect, ConducteurGeschikt, Beschikbaar) " + "VALUES (:Remise_ID, :Tramtype_ID, :Vertrektijd, :Nummer, :Lengte, :Status, :Vervuild, :Defect, :ConducteurGeschikt, :Beschikbaar)"; OracleCommand command = MaakOracleCommand(sql); command.Parameters.Add(":Remise_ID", tram.Remise.ID); command.Parameters.Add(":Tramtype_ID", (Convert.ToInt32(tram.TramType) + 1)); command.Parameters.Add(":Vertrektijd", DateTime.Now); //tram.Vertrektijd command.Parameters.Add(":Nummer", tram.TramNummer); command.Parameters.Add(":Lengte", tram.Lengte); command.Parameters.Add(":Status", tram.Opmerking); command.Parameters.Add(":Vervuild", Convert.ToInt32(tram.Vervuild)); command.Parameters.Add(":Defect", Convert.ToInt32(tram.Defect)); command.Parameters.Add(":ConducteurGeschikt", Convert.ToInt32(tram.ConducteurGeschikt)); command.Parameters.Add(":Beschikbaar", Convert.ToInt32(tram.Beschikbaar)); return(VoerNonQueryUit(command)); } catch { return(false); } finally { verbinding.Close(); } }
/// <summary> /// Reserveert een sector voor een tram. /// </summary> /// <param name="sector">De sector die gereserveerd moet worden.</param> /// <param name="tram">De tram waarvoor de reservering wordt gemaakt.</param> /// <returns>Een string met het bericht of iets is gelukt of niet.</returns> public void SpoorReserveren(Spoor spoor, Tram tram) { DatabaseController dc = new DatabaseController(); int aantalReserveringen = 0; foreach (Reservering r in GetAllReserveringen()) { if (r.Spoor.ID == spoor.ID) { aantalReserveringen++; if (r.Tram.ID == tram.ID) { throw new SpoorReserveerException("Tram is al gereserveerd!"); } } } if (aantalReserveringen < spoor.Sectoren.Count) { Reservering res = new Reservering(tram, spoor); if (!dc.AddReservering(res)) { throw new SpoorReserveerException("De reservering kon niet worden toegevoegd aan de database!"); } } else { throw new SpoorReserveerException("Er zijn al teveel reserveringen voor dit spoor waardoor er geen sectoren meer over zijn!"); } }
/// <summary> /// Verplaats de tram naar een ander spoor of sector /// </summary> /// <param name="tram">De tram die verplaatst moet worden</param> /// <param name="spoorVan">Het spoor waar die tram op staat</param> /// <param name="sectorVan">De sector waar die tram op staat</param> /// <param name="spoorNaar">Het spoor waar de tram naar toe gaat</param> /// <param name="sectorNaar">De sector waar de tram naar toe gaat.</param> /// <returns>Retourneert een fout string</returns> public bool TramVerplaatsen(Tram tram, Spoor spoorVan, Sector sectorVan, Spoor spoorNaar, Sector sectorNaar) //TODO: Exception geven wanneer het niet lukt. Dit in het form afhandelen. { foreach (Sector sector in spoorVan.Sectoren) { if (sector.Tram.ID == tram.ID) { foreach (Sector naarSector in spoorNaar.Sectoren) { if (naarSector.ID == sectorNaar.ID) { sector.VerwijderTram(); naarSector.VerwijderTram(); DatabaseController dc = new DatabaseController(); if (dc.UpdateSector(sector, huidigeRemise)) { if (dc.UpdateSector(naarSector, huidigeRemise)) { return(true); } else { throw new TramVerplaatsException("De sector waar de tram naar verplaatst wordt kon niet worden geüpdate in de database!"); } } else { throw new TramVerplaatsException("De sector waarvan de tram word verplaats kon niet worden geüpdate in de database!"); } } } } } throw new TramVerplaatsException("De sector waarvan de tram word verplaats of de sector waarnaar de tram wordt verplaats kon niet gevonden worden!"); }
public Onderhoud(int adID, Tram tram, DateTime tijdstip, DateTime beschikbaarDatum, TypeOnderhoud typeOnderhoud) { this.adid = adID; this.tram = tram; this.tijdstip = tijdstip; this.beschikbaarDatum = beschikbaarDatum; this.typeOnderhoud = typeOnderhoud; }
public Sector(int id, Tram tram, int spoorID, int nummer, bool beschikbaar, bool geblokkeerd) { this.id = id; this.tram = tram; this.spoorID = spoorID; this.nummer = nummer; this.beschikbaar = beschikbaar; this.geblokkeerd = geblokkeerd; }
/// <summary> /// Kijkt of een tram nog gerepareerd moet worden. /// </summary> /// <param name="tram"></param> /// <returns>Of een tram wel of niet moet worden gerepareerd</returns> public bool TramControleerOnderhoud(Tram tram) { foreach (Onderhoud o in GetAllOnderhoud()) { if (o.Tram.ID == tram.ID) { return(true); } } return(false); }
/// <summary> /// Verkrijgt de reservering van een tram /// </summary> /// <param name="tram"></param> /// <returns></returns> public Reservering GetReservering(Tram tram) { foreach (Reservering reservering in GetAllReserveringen()) { if (reservering.Tram.ID == tram.ID) { return(reservering); } } return(null); }
/// <summary> /// Controleert of een tram een reservering heeft. /// </summary> /// <param name="tram"></param> /// <returns></returns> public bool TramControleerReservering(Tram tram) { foreach (Reservering reservering in GetAllReserveringen()) { if (reservering.Tram.TramNummer == tram.TramNummer) { return(true); } } return(false); }
/// <summary> /// Veranderd de status van de tram /// </summary> /// <param name="tram">De tram die van status moet worden veranderd</param> /// <param name="tramStatus">De status waar de tram naar moet worden veranderd</param> public void TramStatusAanpassen(Tram tram, bool vervuild, bool defect) //TODO: Exception geven wanneer het niet lukt. Dit in het form afhandelen. { tram.Vervuild = vervuild; tram.Defect = defect; DatabaseController dc = new DatabaseController(); if (!dc.UpdateTram(tram)) { throw new TramStatusException("De status van de tram kont niet worden veranderd."); } }
public Onderhoud GetOnderhoud(Tram tram) { foreach (Onderhoud onderhoud in GetAllOnderhoud()) { if (onderhoud.Tram.ID == tram.ID) { return(onderhoud); } } return(null); }
/// <summary> /// Verwijdert een tram van de database /// </summary> /// <param name="tramNummer">Welke tram verwijdert moet worden.</param> public bool TramVerwijderen(Tram tram) { DatabaseController dc = new DatabaseController(); if (dc.DeleteTram(tram)) { return(true); } else { throw new TramVerwijderException(); } }
/// <summary> /// Deelt de tram in op het spoor. /// </summary> /// <param name="tram"></param> public static void DeelTramInBeter(Tram tram) { if (tram == null) { throw new InUitRijException("U probeert een leeg tram object in te delen"); } DatabaseController dc = new DatabaseController(); //Maakt een verbinding met de database via de databaseklasse. alleSporen = dc.GetAllSporen(huidigeRemise); //Verkrijgt alle sporen. DeelTramIn deelTramIn = IndelingMethodes[ControleerTram(tram)]; //Voegt een methode toe aan de delegate afhankelijk van de stauts van de tram. deelTramIn(tram, dc); //Voert DeelTramInOpOnderhoudsSpoor of DeelTramInVolgensAlgoritme afhankelijk van de status van de Tram. }
/// <summary> /// Voegt een tram toe aan de database /// </summary> /// <param name="tramNummer">Het nummer van de tram die je wilt toevoegen</param> /// <param name="vertrektijd">De vertrektijd van de tram die je wilt toevoegen</param> /// <param name="type">Het soort tram dat je wilt toevoegen</param> public bool TramToevoegen(int tramNummer, DateTime vertrektijd, TramType type) { DatabaseController dc = new DatabaseController(); Tram tram = new Tram(huidigeRemise, type, vertrektijd, tramNummer, 1, "", false, false, true, false); if (dc.AddTram(tram)) { return(true); } else { throw new TramToevoegException(); } }
/// <summary> /// Deelt de tram in volgens het normaal algrotime. /// </summary> /// <param name="tram"></param> /// <param name="dc"></param> public static void DeelTramInVolgensAlgoritme(Tram tram, DatabaseController dc) //ToDo: Rekening houden met verbinding. { for (int x = 0; x < alleSporen.Count; x++) { if (alleSporen[x].Beschikbaar && alleSporen[x].SpoorType == SpoorType.Normaal) //TODO: spoor op niet beschikbaar zetten wanneer de laatste sector word gewijzigt naar niet beschikbaar of geblokkeerd. { for (int i = 0; i < alleSporen[x].Sectoren.Count; i++) { if (alleSporen[x].Sectoren[i].Beschikbaar && !alleSporen[x].Sectoren[i].Geblokkeerd && alleSporen[x].GenoegVrijeSporen()) { //Kijken of vertrektijd met vorige kan //Kijken of vertrektijd met reservering kan if (i - 1 != -1 && alleSporen[x].Sectoren[i - 1].Tram != null) { if (alleSporen[x].Sectoren[i - 1].Tram.Vertrektijd <= tram.Vertrektijd) { //plaats tram, TODO: Aparte MEthode volgende stuk alleSporen[x].Sectoren[i].PlaatsTram(tram); if (alleSporen[x].Sectoren[i].ID == alleSporen[x].Sectoren[(alleSporen[x].Sectoren.Count - 1)].ID) { alleSporen[x].Beschikbaar = false; } dc.UpdateSpoor(alleSporen[x]); dc.UpdateSector(alleSporen[x].Sectoren[i], huidigeRemise); dc.UpdateTram(alleSporen[x].Sectoren[i].Tram); return; } } else if (i - 1 == -1) { //plaats tram, TODO: Aparte MEthode volgende stuk alleSporen[x].Sectoren[i].PlaatsTram(tram); if (alleSporen[x].Sectoren[i].ID == alleSporen[x].Sectoren[(alleSporen[x].Sectoren.Count - 1)].ID) { alleSporen[x].Beschikbaar = false; } dc.UpdateSpoor(alleSporen[x]); dc.UpdateSector(alleSporen[x].Sectoren[i], huidigeRemise); dc.UpdateTram(alleSporen[x].Sectoren[i].Tram); return; } } } } } }
/// <summary> /// Verkrijgt de sector waar mogelijk een tram op staat. /// </summary> /// <param name="tram">De tram waarmee je de sector zoekt.</param> /// <returns>Retourneert de sector waar de meegegeven tram op staat</returns> public Sector GetSectorByTram(Tram tram) { foreach (Spoor spoor in GetAllSporen()) { foreach (Sector s in spoor.Sectoren) { if (s.Tram != null) { if (s.Tram.ID == tram.ID) { return(s); } } } } return(null); }
/// <summary> /// Controleer of de tram een onderhoudsbeurt nodig heeft. /// </summary> /// <param name="tram">De tram die wordt gecontroleerd</param> /// <returns></returns> public static int ControleerTram(Tram tram) { OnderhoudController oc = new OnderhoudController(huidigeRemise); BeheerController bc = new BeheerController(); if (oc.TramControleerOnderhoud(tram)) { return(0); } else if (bc.TramControleerReservering(tram)) { return(1); } else { return(2); } }
/// <summary> /// Verwijdert een tram uit de database /// </summary> /// <param name="ID">Nummer of identifier van het tram object.</param> /// <returns>Of de verwijdering goed is uitgevoerd</returns> public bool DeleteTram(Tram tram) { try { string sql = "DELETE FROM TRAM WHERE ID = :ID"; OracleCommand command = MaakOracleCommand(sql); command.Parameters.Add(":ID", tram.ID); return(VoerNonQueryUit(command)); } catch { return(false); } finally { verbinding.Close(); } }
public bool AddTramLijn(Lijn lijn, Tram tram) { try { string sql = "INSERT INTO TRAM_LIJN ( Tram_ID, Lijn_ID ) VALUES ( :Tram_ID, :Lijn_ID )"; OracleCommand command = MaakOracleCommand(sql); command.Parameters.Add(":Tram_ID", tram.ID); command.Parameters.Add(":Lijn_ID", lijn.ID); return(VoerNonQueryUit(command)); } catch { return(false); } finally { verbinding.Close(); } }
public List <Tram> GetAllTramsFromLijn(int lijnID, Remise r) { try { List <Tram> trams = new List <Tram>(); List <int> tramIds = new List <int>(); string sql = "SELECT TRAM_ID FROM TRAM_LIJN WHERE LIJN_ID = :ID"; OracleCommand command = MaakOracleCommand(sql); command.Parameters.Add(":ID", lijnID); OracleDataReader reader = VoerQueryUit(command); while (reader.Read()) { int tramid = Convert.ToInt32(reader.GetValue(0)); tramIds.Add(tramid); } List <Tram> allTrams = GetAllTrams(r); foreach (int id in tramIds) { Tram tram = VerkrijgTram(allTrams, id); trams.Add(tram); } return(trams); } catch { return(null); } finally { verbinding.Close(); } }
public void VerwijderTram() { this.tram = null; beschikbaar = true; }
// Constructors public Reservering(Tram tram, Spoor spoor) { this.tram = tram; this.spoor = spoor; }
public void PlaatsTram(Tram tram) { this.tram = tram; tram.Beschikbaar = true; beschikbaar = false; }
public Reservering(int id, Tram tram, Spoor spoor) { this.id = id; this.tram = tram; this.spoor = spoor; }