Medium verlängernProzess fertig implementiert und getestet

Gebührenberechnen
3009594 2024-11-15 18:19:05 +01:00
parent 1b02808644
commit da0ce0845f
5 changed files with 68 additions and 13 deletions

View File

@ -21,41 +21,38 @@ public class Ausleihe {
this.benutzer = benutzer; this.benutzer = benutzer;
} }
public Mediumverwalter getMediumverwalter() { public Mediumverwalter getMediumverwalter() {
return medium; return medium;
} }
public Benutzer getBenutzer() { public Benutzer getBenutzer() {
return benutzer; return benutzer;
} }
public LocalDate getAusleiheBeginn() { public LocalDate getAusleiheBeginn() {
return ausleiheBeginn; return ausleiheBeginn;
} }
public void setAusleiheBeginn(LocalDate ausleiheBeginn) { public void setAusleiheBeginn(LocalDate ausleiheBeginn) {
this.ausleiheBeginn = ausleiheBeginn; this.ausleiheBeginn = ausleiheBeginn;
} }
public LocalDate getAusleiheEnde() { public LocalDate getAusleiheEnde() {
return ausleiheEnde; return ausleiheEnde;
} }
public void setAusleiheEnde(LocalDate ausleiheEnde) { public void setAusleiheEnde(LocalDate ausleiheEnde) {
this.ausleiheEnde = ausleiheEnde; this.ausleiheEnde = ausleiheEnde;
} }
public int getVerlängerungen() {
return verlängerungen;
}
public void setVerlängerungen(int verlängerungen) {
this.verlängerungen = verlängerungen;
}
@Override @Override
public String toString() { public String toString() {

View File

@ -112,6 +112,30 @@ public class AusleiheSystem {
return gebühren; 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 { private Mediumverwalter findMedium(String eindeutigeKennung) throws MediumNichtGefundenException {
if (medien.containsKey(eindeutigeKennung)) if (medien.containsKey(eindeutigeKennung))

View File

@ -1,10 +1,12 @@
package domain.fassade; package domain.AusleiheSystem;
import java.util.ArrayList; import java.util.ArrayList;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import domain.fassade.BibSystem;
class MedienRückgabeTest { class MedienRückgabeTest {
private BibSystem bib; private BibSystem bib;

View File

@ -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"));
}
}

View File

@ -54,6 +54,11 @@ public class BibSystem {
return ausleiheSystem.SimulieremediumRückgabe(ausleihe, eindeutigeKennung, datum); 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<String> mediumDurchsuchen(String auswahl, String bibKartenNummer) public ArrayList<String> mediumDurchsuchen(String auswahl, String bibKartenNummer)
throws FalscheEingabeException, MediumNichtGefundenException, BenutzerNichtAngemeldetException { throws FalscheEingabeException, MediumNichtGefundenException, BenutzerNichtAngemeldetException {