diff --git a/Bibliotheksverwaltungssystem/Design/SystemUml.drawio b/Bibliotheksverwaltungssystem/Design/SystemUml.drawio index 242ecd9..810d82d 100644 --- a/Bibliotheksverwaltungssystem/Design/SystemUml.drawio +++ b/Bibliotheksverwaltungssystem/Design/SystemUml.drawio @@ -1,11 +1,11 @@ - + - - + + @@ -238,13 +238,13 @@ - + - + @@ -286,16 +286,6 @@ - - - - - - - - - - @@ -357,7 +347,7 @@ - + @@ -416,35 +406,83 @@ - + - + - + - + - + - - - - - - - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Bibliotheksverwaltungssystem/Design/SystemUml.drawio (1).png b/Bibliotheksverwaltungssystem/Design/SystemUml.drawio (1).png new file mode 100644 index 0000000..28d9551 Binary files /dev/null and b/Bibliotheksverwaltungssystem/Design/SystemUml.drawio (1).png differ diff --git a/Bibliotheksverwaltungssystem/Design/SystemUml.drawio.png b/Bibliotheksverwaltungssystem/Design/SystemUml.drawio.png deleted file mode 100644 index a7f084f..0000000 Binary files a/Bibliotheksverwaltungssystem/Design/SystemUml.drawio.png and /dev/null differ diff --git a/Bibliotheksverwaltungssystem/src/domain/Benutzer/Benutzer.java b/Bibliotheksverwaltungssystem/src/domain/Benutzer/Benutzer.java index 15a0011..96235a9 100644 --- a/Bibliotheksverwaltungssystem/src/domain/Benutzer/Benutzer.java +++ b/Bibliotheksverwaltungssystem/src/domain/Benutzer/Benutzer.java @@ -75,12 +75,14 @@ public abstract class Benutzer { return angemeldet; } - public void anmelden() { + public boolean anmelden() { this.angemeldet = true; + return this.angemeldet; } - public void abmelden() { + public boolean abmelden() { this.angemeldet = false ; + return this.angemeldet; } diff --git a/Bibliotheksverwaltungssystem/src/domain/Bibliothekskatalog/MedienSuchenTest.java b/Bibliotheksverwaltungssystem/src/domain/Bibliothekskatalog/MedienSuchenTest.java index 3b729fe..f2c7fe4 100644 --- a/Bibliotheksverwaltungssystem/src/domain/Bibliothekskatalog/MedienSuchenTest.java +++ b/Bibliotheksverwaltungssystem/src/domain/Bibliothekskatalog/MedienSuchenTest.java @@ -24,27 +24,27 @@ private BibSystem fassade; void erstelleObjekt() throws FalscheEingabeException, BenutzerNichtGefundenException { this.fassade = new BibSystem(); fassade.userRegistrieren("obai", "student", 15, "nein"); - fassade.userAnmelden("K1000"); + fassade.userAnmelden("K1001"); } @Disabled - void testMedienSuchenNachTitle()throws MediumNichtGefundenException, FalscheEingabeException, BenutzerNichtAngemeldetException { - ArrayList nichtAusgeliehen = fassade.mediumDurchsuchen("Effektives Java Programmieren", "K1000"); + void testMedienSuchenNachTitle()throws MediumNichtGefundenException, FalscheEingabeException, BenutzerNichtAngemeldetException, BenutzerNichtGefundenException { + ArrayList nichtAusgeliehen = fassade.mediumDurchsuchen("Effektives Java Programmieren", "K1001"); nichtAusgeliehen.forEach(System.out::println); } @Disabled - void testMedienSuchenNachMedienart()throws MediumNichtGefundenException, FalscheEingabeException, BenutzerNichtAngemeldetException { - ArrayList nichtAusgeliehen = fassade.mediumDurchsuchen("Videospiele", "K1000"); + void testMedienSuchenNachMedienart()throws MediumNichtGefundenException, FalscheEingabeException, BenutzerNichtAngemeldetException, BenutzerNichtGefundenException { + ArrayList nichtAusgeliehen = fassade.mediumDurchsuchen("Videospiele", "K1001"); nichtAusgeliehen.forEach(System.out::println); } @Test - void testMedienSuchenNachausgeliehen()throws MediumNichtGefundenException, FalscheEingabeException, BenutzerNichtAngemeldetException { - ArrayList nichtAusgeliehen = fassade.mediumDurchsuchen("ausgeliehen", "K1000"); + void testMedienSuchenNachausgeliehen()throws MediumNichtGefundenException, FalscheEingabeException, BenutzerNichtAngemeldetException, BenutzerNichtGefundenException { + ArrayList nichtAusgeliehen = fassade.mediumDurchsuchen("ausgeliehen", "K1001"); nichtAusgeliehen.forEach(System.out::println); } diff --git a/Bibliotheksverwaltungssystem/src/domain/Bibliothekskatalog/Mediensuchen.java b/Bibliotheksverwaltungssystem/src/domain/Bibliothekskatalog/Mediensuchen.java index 6195038..af38a44 100644 --- a/Bibliotheksverwaltungssystem/src/domain/Bibliothekskatalog/Mediensuchen.java +++ b/Bibliotheksverwaltungssystem/src/domain/Bibliothekskatalog/Mediensuchen.java @@ -1,7 +1,11 @@ package domain.Bibliothekskatalog; +import java.time.LocalDate; +import java.time.temporal.ChronoUnit; import java.util.*; import java.util.stream.Collectors; + +import domain.AusleiheSystem.Ausleihe; import domain.Medium.*; public class Mediensuchen { @@ -60,14 +64,25 @@ public class Mediensuchen { .filter(t -> t.getValue().getMedium() instanceof Videospiel) .map(t -> t.getValue().getMedium()) .map(t -> ((Videospiel)t)) - .map(t -> "Eindutige Kennung= " + t.toString()).collect(Collectors.toCollection(ArrayList::new)); + .map(t -> "Eindutige Kennung= " + t.toString()) + .collect(Collectors.toCollection(ArrayList::new)); default: return null; } + + } + + public Collection baldVerfügbareMedien(ArrayList ausleihe) { + LocalDate heutigesDatum = LocalDate.now(); - + return ausleihe.stream() + .filter(t -> t.getAusleiheEnde().until(heutigesDatum, ChronoUnit.DAYS) <= 3) + .map(t -> t.getMediumverwalter()) + .map(t -> t.toString()) + .collect(Collectors.toCollection(ArrayList::new)); } + } diff --git a/Bibliotheksverwaltungssystem/src/domain/fassade/BibSystem.java b/Bibliotheksverwaltungssystem/src/domain/fassade/BibSystem.java index 1e9309b..b760c2a 100644 --- a/Bibliotheksverwaltungssystem/src/domain/fassade/BibSystem.java +++ b/Bibliotheksverwaltungssystem/src/domain/fassade/BibSystem.java @@ -41,8 +41,10 @@ public class BibSystem { // Mediums Durchsuchen - public ArrayList mediumDurchsuchen(String auswahl, String bibKartenNummer) throws FalscheEingabeException, MediumNichtGefundenException, BenutzerNichtAngemeldetException { - if (!checkIfUserImSystemAngemeldetIst(bibKartenNummer)) + public ArrayList mediumDurchsuchen(String auswahl, String bibKartenNummer) throws FalscheEingabeException, MediumNichtGefundenException, BenutzerNichtAngemeldetException, BenutzerNichtGefundenException { + Benutzer benutzer = findeBenutzer(bibKartenNummer); + + if (benutzer.abmelden()) throw new BenutzerNichtAngemeldetException("Sie müssen sich erst im System anmelden"); ArrayList treffer = new ArrayList<>(); @@ -58,7 +60,11 @@ public class BibSystem { || auswahl.equalsIgnoreCase("Dvds") || auswahl.equalsIgnoreCase("Cds") || auswahl.equalsIgnoreCase("Videospiele")) treffer = medienSuchen.medienart(auswahl, medien); - + + else if (auswahl.equalsIgnoreCase("ja")) { + treffer = baldVerfügbareMedien(ausleihe); + } + else treffer = medienSuchen.title(auswahl, medien); @@ -83,7 +89,7 @@ public class BibSystem { if (bibBenutzer instanceof Mitarbeiter) throw new Exception("Mitarbeiter können keine Mediums ausleihen!"); - if (!checkIfUserImSystemAngemeldetIst(bibKartenNummer)) + if (bibBenutzer.abmelden()) throw new BenutzerNichtAngemeldetException("Sie müssen sich erst im System anmelden"); Ausleihe neueAusleihe = ausleiheSystem.mediumAusleihen(bibBenutzer, eindeutigeKennung); @@ -203,11 +209,7 @@ public class BibSystem { medien.put(Videospiel.getMedium().getID(), Videospiel); } - private boolean checkIfUserImSystemAngemeldetIst(String bibKartenNummer) { - return alleBibBenutzer.stream() - .filter(b -> b.getBibAusweis().getKartenNummer().equalsIgnoreCase(bibKartenNummer)) - .anyMatch(user -> user.isAngemeldet()); - } + public Benutzer findeBenutzer(String bibKartenNummer) throws BenutzerNichtGefundenException { return alleBibBenutzer.stream() diff --git a/Bibliotheksverwaltungssystem/src/tui/Tui.java b/Bibliotheksverwaltungssystem/src/tui/Tui.java index 1b2c73f..46009d5 100644 --- a/Bibliotheksverwaltungssystem/src/tui/Tui.java +++ b/Bibliotheksverwaltungssystem/src/tui/Tui.java @@ -134,13 +134,18 @@ public class Tui { // Aktion: 3 private void mediumDurchsuchenProzess() { System.out.println("<< Medien durchsuchen >>"); - System.out.print("Suchkriterium (z. B. Titel, Medienart): "); + System.out.print("Suchkriterium (z. B. Titel, Medienart, Ausgeliehen, nicht Ausgeliehen,Medien die bald wieder verügbar sind (ja/nein)): "); String auswahl = eingabe.nextLine(); System.out.print("BibKartennummer: "); String bibKartennummer = eingabe.nextLine(); try { + if (auswahl.equalsIgnoreCase("Medienart")) { + System.out.println("Bücher, Brettspiele, Dvds, Cds, Videospiele"); + auswahl = eingabe.nextLine(); + } + ArrayList treffer = fassade.mediumDurchsuchen(auswahl, bibKartennummer); treffer.forEach(System.out::println); } catch (Exception e) {