diff --git a/Bibliotheksverwaltungssystem/src/domain/AusleiheSystem/AusleiheSystem.java b/Bibliotheksverwaltungssystem/src/domain/AusleiheSystem/AusleiheSystem.java index f33d34c..cee25bd 100644 --- a/Bibliotheksverwaltungssystem/src/domain/AusleiheSystem/AusleiheSystem.java +++ b/Bibliotheksverwaltungssystem/src/domain/AusleiheSystem/AusleiheSystem.java @@ -9,36 +9,32 @@ import domain.ExceptionsKlassen.MediumNichtGefundenException; import domain.Medium.*; public class AusleiheSystem { - - private HashMap medien; - private LocalDate ausleiheBeginn,ausleiheEnde; - private Calendar calendar; - - public AusleiheSystem( HashMap medien) { + private HashMap medien; + private LocalDate ausleiheBeginn, ausleiheEnde; + + public AusleiheSystem(HashMap medien) { this.medien = medien; } - + public Ausleihe mediumAusleihen(Benutzer benutzer, String eindeutigenummer) throws MediumNichtGefundenException { - Mediumverwalter mediumAusleihen = findMedium(eindeutigenummer); - - if (mediumAusleihen.isIstAusgeliehen()) - throw new MediumNichtGefundenException("Das Medium ist ausgeliehen"); - + Mediumverwalter mediumAusleihen = findMedium(eindeutigenummer); - mediumAusleihen.setIstAusgeliehen(true); - mediumAusleihen.setAnzahl(mediumAusleihen.getAnzahl() - 1); + if (mediumAusleihen.isIstAusgeliehen()) + throw new MediumNichtGefundenException("Das Medium ist ausgeliehen"); - this.ausleiheBeginn = LocalDate.now(); + mediumAusleihen.setIstAusgeliehen(true); + mediumAusleihen.setAnzahl(mediumAusleihen.getAnzahl() - 1); - this.ausleiheEnde = ausleiheBeginn.plusWeeks(mediumAusleihen.getLeihdauer()); + this.ausleiheBeginn = LocalDate.now(); - Ausleihe neueAusleihe = new Ausleihe(mediumAusleihen, benutzer, ausleiheBeginn, ausleiheEnde); + this.ausleiheEnde = ausleiheBeginn.plusWeeks(mediumAusleihen.getLeihdauer()); - return neueAusleihe; + Ausleihe neueAusleihe = new Ausleihe(mediumAusleihen, benutzer, ausleiheBeginn, ausleiheEnde); + + return neueAusleihe; } - public ArrayList mediumRückgabe(ArrayList ausleihe, String eindeutigeKennung) { Ausleihe ausgelieheneMedium = ausleihe.stream() .filter(k -> k.getMediumverwalter().getMedium().getID().equalsIgnoreCase(eindeutigeKennung)).findFirst() @@ -47,23 +43,23 @@ public class AusleiheSystem { ArrayList ausgeliehenMedien = new ArrayList<>(); LocalDate heutigesDatum; Benutzer bibBenutzer = ausgelieheneMedium.getBenutzer(); - + if (ausgelieheneMedium != null) { heutigesDatum = LocalDate.now(); if (heutigesDatum.isAfter(ausgelieheneMedium.getAusleiheEnde())) { - long überfälligeTage = ausgelieheneMedium.getAusleiheEnde().until(heutigesDatum, ChronoUnit.DAYS); - double gebühren = 0.0; - if (überfälligeTage <= 7) - gebühren = überfälligeTage * 1.0; - - else { - gebühren = (7 * 1.0); - gebühren += ((überfälligeTage - 7) * 2.0); - - } - - bibBenutzer.setGebühren( bibBenutzer.getGebühren() + gebühren); - + long überfälligeTage = ausgelieheneMedium.getAusleiheEnde().until(heutigesDatum, ChronoUnit.DAYS); + double gebühren = 0.0; + if (überfälligeTage <= 7) + gebühren = überfälligeTage * 1.0; + + else { + gebühren = (7 * 1.0); + gebühren += ((überfälligeTage - 7) * 2.0); + + } + + bibBenutzer.setGebühren(bibBenutzer.getGebühren() + gebühren); + } ausgelieheneMedium.getBenutzer().mediumZurückgeben(ausgelieheneMedium); ausleihe.remove(ausgelieheneMedium); @@ -71,80 +67,75 @@ public class AusleiheSystem { ausgelieheneMedium.getMediumverwalter().setAnzahl(ausgelieheneMedium.getMediumverwalter().getAnzahl() + 1); for (Ausleihe a : ausgelieheneMedium.getBenutzer().getAusgeliehenenMedien()) ausgeliehenMedien.add(a.toString()); - + } return ausgeliehenMedien; } - - public double SimulieremediumRückgabe(ArrayList ausleihe, String eindeutigeKennung, String datum)throws MediumNichtGefundenException { + + public double SimulieremediumRückgabe(ArrayList ausleihe, String eindeutigeKennung, String datum) + throws MediumNichtGefundenException { Ausleihe ausgelieheneMedium = ausleihe.stream() .filter(k -> k.getMediumverwalter().getMedium().getID().equalsIgnoreCase(eindeutigeKennung)).findFirst() .orElse(null); - + LocalDate heutigesDatum; LocalDate testDatum = LocalDate.parse(datum); - Benutzer bibBenutzer = ausgelieheneMedium.getBenutzer(); - double gebühren = 0.0; + Benutzer bibBenutzer = ausgelieheneMedium.getBenutzer(); + double gebühren = 0.0; if (ausgelieheneMedium != null) { heutigesDatum = LocalDate.now(); - + if (heutigesDatum.isAfter(testDatum)) { - long überfälligeTage = testDatum.until(heutigesDatum, ChronoUnit.DAYS); - - - if (überfälligeTage <= 7) - gebühren = überfälligeTage * 1.0; - - else { - gebühren = (7 * 1.0); - gebühren += ((überfälligeTage - 7) * 2.0); - - } - - bibBenutzer.setGebühren( bibBenutzer.getGebühren() + gebühren); - return bibBenutzer.getGebühren(); + long überfälligeTage = testDatum.until(heutigesDatum, ChronoUnit.DAYS); + + if (überfälligeTage <= 7) + gebühren = überfälligeTage * 1.0; + + else { + gebühren = (7 * 1.0); + gebühren += ((überfälligeTage - 7) * 2.0); + + } + + bibBenutzer.setGebühren(bibBenutzer.getGebühren() + gebühren); + return bibBenutzer.getGebühren(); } - - }else - throw new MediumNichtGefundenException ("Das Medium wurde nicht gefunden"); - + + } else + throw new MediumNichtGefundenException("Das Medium wurde nicht gefunden"); + return gebühren; } - + public boolean medienVerlängern(Benutzer benutzer, String eindeutigeKennung) throws MediumNichtGefundenException { - Ausleihe medium = benutzer.getAusgeliehenenMedien() - .stream() - .filter(m -> m.getMediumverwalter().getMedium().getID().equalsIgnoreCase(eindeutigeKennung)) - .findFirst() + Ausleihe medium = benutzer.getAusgeliehenenMedien().stream() + .filter(m -> m.getMediumverwalter().getMedium().getID().equalsIgnoreCase(eindeutigeKennung)).findFirst() .orElse(null); - - if (medium == null) + + if (medium == null) return false; - + LocalDate heutigesDatum = LocalDate.now(); if (heutigesDatum.isAfter(medium.getAusleiheEnde())) return false; - + if (!medium.getMediumverwalter().isVerlängerbar()) return false; - + if (medium.getVerlängerungen() == 3) return false; - + medium.setVerlängerungen(medium.getVerlängerungen() + 1); return true; } - - + private Mediumverwalter findMedium(String eindeutigeKennung) throws MediumNichtGefundenException { - if (medien.containsKey(eindeutigeKennung)) - return medien.get(eindeutigeKennung); - else - throw new MediumNichtGefundenException("Das ausgewählte Medium ist nicht verfügbar"); - + if (medien.containsKey(eindeutigeKennung)) + return medien.get(eindeutigeKennung); + else + throw new MediumNichtGefundenException("Das ausgewählte Medium ist nicht verfügbar"); + } - - } diff --git a/Bibliotheksverwaltungssystem/src/domain/fassade/BibSystem.java b/Bibliotheksverwaltungssystem/src/domain/fassade/BibSystem.java index cda2b62..7b79a1a 100644 --- a/Bibliotheksverwaltungssystem/src/domain/fassade/BibSystem.java +++ b/Bibliotheksverwaltungssystem/src/domain/fassade/BibSystem.java @@ -46,15 +46,13 @@ public class BibSystem { } public ArrayList medienRückgabe(String eindeutigeKennung) { - return ausleiheSystem.mediumRückgabe(ausleihe, eindeutigeKennung); } - + public double simuliereMedienRückgabe(String eindeutigeKennung, String datum) throws MediumNichtGefundenException { - return ausleiheSystem.SimulieremediumRückgabe(ausleihe, eindeutigeKennung, datum); } - + public boolean medienVerlängern(String eindeutigeKennung, String bibKartennummer) throws BenutzerNichtGefundenException, MediumNichtGefundenException { Benutzer benutzer = findeBenutzer(bibKartennummer); return ausleiheSystem.medienVerlängern(benutzer,eindeutigeKennung); @@ -86,7 +84,6 @@ public class BibSystem { throw new MediumNichtGefundenException("Kein treffer"); return treffer; - } public void userRegistrieren(String name, String type, int alter, String istAdmin) throws FalscheEingabeException { @@ -115,6 +112,7 @@ public class BibSystem { return "Das Medium wurde erfolgreich ausgeliehen"; } + // Temporäre Test Methode private void mediumsAufladen() { Mediumverwalter buch = new Mediumverwalter(true, 10, 28,