From da0ce0845fbcdff6e4099d6fe78f5ad518909201 Mon Sep 17 00:00:00 2001 From: 3009594 Date: Fri, 15 Nov 2024 18:19:05 +0100 Subject: [PATCH] =?UTF-8?q?Medium=20verl=C3=A4ngernProzess=20fertig=20impl?= =?UTF-8?q?ementiert=20und=20getestet?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/domain/AusleiheSystem/Ausleihe.java | 21 +++++++-------- .../domain/AusleiheSystem/AusleiheSystem.java | 24 +++++++++++++++++ .../MedienRückgabeTest.java | 4 ++- .../AusleiheSystem/MediumVerlängernTest.java | 27 +++++++++++++++++++ .../src/domain/fassade/BibSystem.java | 5 ++++ 5 files changed, 68 insertions(+), 13 deletions(-) rename Bibliotheksverwaltungssystem/src/domain/{fassade => AusleiheSystem}/MedienRückgabeTest.java (90%) create mode 100644 Bibliotheksverwaltungssystem/src/domain/AusleiheSystem/MediumVerlängernTest.java diff --git a/Bibliotheksverwaltungssystem/src/domain/AusleiheSystem/Ausleihe.java b/Bibliotheksverwaltungssystem/src/domain/AusleiheSystem/Ausleihe.java index fabf7fb..cf07307 100644 --- a/Bibliotheksverwaltungssystem/src/domain/AusleiheSystem/Ausleihe.java +++ b/Bibliotheksverwaltungssystem/src/domain/AusleiheSystem/Ausleihe.java @@ -21,41 +21,38 @@ public class Ausleihe { this.benutzer = benutzer; } - - public Mediumverwalter getMediumverwalter() { return medium; } - + public Benutzer getBenutzer() { return benutzer; } - - public LocalDate getAusleiheBeginn() { return ausleiheBeginn; } - - public void setAusleiheBeginn(LocalDate ausleiheBeginn) { this.ausleiheBeginn = ausleiheBeginn; } - - public LocalDate getAusleiheEnde() { return ausleiheEnde; } - - public void setAusleiheEnde(LocalDate ausleiheEnde) { this.ausleiheEnde = ausleiheEnde; } + + public int getVerlängerungen() { + return verlängerungen; + } - + public void setVerlängerungen(int verlängerungen) { + this.verlängerungen = verlängerungen; + } + @Override public String toString() { diff --git a/Bibliotheksverwaltungssystem/src/domain/AusleiheSystem/AusleiheSystem.java b/Bibliotheksverwaltungssystem/src/domain/AusleiheSystem/AusleiheSystem.java index ee77ef0..f33d34c 100644 --- a/Bibliotheksverwaltungssystem/src/domain/AusleiheSystem/AusleiheSystem.java +++ b/Bibliotheksverwaltungssystem/src/domain/AusleiheSystem/AusleiheSystem.java @@ -112,6 +112,30 @@ public class AusleiheSystem { 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() + .orElse(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)) diff --git a/Bibliotheksverwaltungssystem/src/domain/fassade/MedienRückgabeTest.java b/Bibliotheksverwaltungssystem/src/domain/AusleiheSystem/MedienRückgabeTest.java similarity index 90% rename from Bibliotheksverwaltungssystem/src/domain/fassade/MedienRückgabeTest.java rename to Bibliotheksverwaltungssystem/src/domain/AusleiheSystem/MedienRückgabeTest.java index 68d0ab7..5572ce9 100644 --- a/Bibliotheksverwaltungssystem/src/domain/fassade/MedienRückgabeTest.java +++ b/Bibliotheksverwaltungssystem/src/domain/AusleiheSystem/MedienRückgabeTest.java @@ -1,10 +1,12 @@ -package domain.fassade; +package domain.AusleiheSystem; import java.util.ArrayList; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import domain.fassade.BibSystem; + class MedienRückgabeTest { private BibSystem bib; diff --git a/Bibliotheksverwaltungssystem/src/domain/AusleiheSystem/MediumVerlängernTest.java b/Bibliotheksverwaltungssystem/src/domain/AusleiheSystem/MediumVerlängernTest.java new file mode 100644 index 0000000..20afe0f --- /dev/null +++ b/Bibliotheksverwaltungssystem/src/domain/AusleiheSystem/MediumVerlängernTest.java @@ -0,0 +1,27 @@ +package domain.AusleiheSystem; + +import static org.junit.jupiter.api.Assertions.*; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import domain.fassade.BibSystem; + +class MediumVerlängernTest { + + private BibSystem bib; + + @BeforeEach + void setUp() throws Exception { + this.bib = new BibSystem(); + } + + @Test + void test() throws Exception { + bib.userRegistrieren("obai", "student", 15, "nein"); + bib.userAnmdelden("K1001"); + bib.mediumAusleihen("K1001", "B001"); + assertTrue(bib.medienVerlängern("B001", "K1001")); + } + +} diff --git a/Bibliotheksverwaltungssystem/src/domain/fassade/BibSystem.java b/Bibliotheksverwaltungssystem/src/domain/fassade/BibSystem.java index 9cf7286..cda2b62 100644 --- a/Bibliotheksverwaltungssystem/src/domain/fassade/BibSystem.java +++ b/Bibliotheksverwaltungssystem/src/domain/fassade/BibSystem.java @@ -54,6 +54,11 @@ public class BibSystem { 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); + } public ArrayList mediumDurchsuchen(String auswahl, String bibKartenNummer) throws FalscheEingabeException, MediumNichtGefundenException, BenutzerNichtAngemeldetException {