100 lines
3.5 KiB
Java
100 lines
3.5 KiB
Java
package LibrarySystem.facade;
|
|
|
|
import LibrarySystem.domain.benutzern.*;
|
|
import LibrarySystem.domain.medien.*;
|
|
|
|
import java.time.LocalDate;
|
|
import java.util.ArrayList;
|
|
import java.util.HashMap;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.stream.Collectors;
|
|
|
|
public class BibliothekSystem {
|
|
private List<Benutzer> benutzerListe;
|
|
private LocalDate aktuellesDatum;
|
|
private List<Medium> medienListe;
|
|
|
|
public BibliothekSystem() {
|
|
this.benutzerListe = new ArrayList<>();
|
|
this.aktuellesDatum = LocalDate.now();
|
|
this.medienListe = new ArrayList<>();
|
|
initialMedienHinzufuegen();
|
|
}
|
|
|
|
// Methode zum Hinzufügen von Medien
|
|
private void initialMedienHinzufuegen() {
|
|
// Beispiel-Medien hinzufügen
|
|
Buch buch1 = new Buch(123,"Java lernen", "Max Mustermann", 2020, "Buch");
|
|
Buch buch2 = new Buch(234,"Java für Einsteiger", "Erika Musterfrau", 2014, "Buch");
|
|
DVD dvd1 = new DVD(345,"Die Matrix", "Lana Wachowski", 2014, "DVD");
|
|
CD cd1 = new CD(456,"Best of Mozart", "-", 1850, "CD");
|
|
Brettspiel brettspiel1 = new Brettspiel(567,"Monopoly", "-",2010, "Brettspiel");
|
|
Videospiel videospiel1 = new Videospiel(678,"Minecraft", "-", 2011, "Videospiel");
|
|
|
|
// Medien zur Bibliothek hinzufügen
|
|
addMedium(buch1);
|
|
addMedium(buch2);
|
|
addMedium(dvd1);
|
|
addMedium(cd1);
|
|
addMedium(brettspiel1);
|
|
addMedium(videospiel1);
|
|
}
|
|
|
|
public void addMedium(Medium medium) {
|
|
medienListe.add(medium);
|
|
}
|
|
|
|
// Durchsuchen der Medien nach einem Titel (Teilstring) und Filterung nach Eigenschaften
|
|
public List<Medium> durchsuchenMedien(String titelTeil, String medienart) {
|
|
List medienliste = medienListe.stream()
|
|
.filter(m -> m.getTitel().toLowerCase().contains(titelTeil.toLowerCase())) // Titel-Filter
|
|
.filter(m -> medienart == null || m.getMedienart().equalsIgnoreCase(medienart)) // Medienart-Filter
|
|
//.filter(m -> istAusgeliehen == null || m.istAusgeliehen() == istAusgeliehen) // Ausleihstatus-Filter
|
|
.collect(Collectors.toList());
|
|
|
|
if(medienliste.isEmpty()) {
|
|
System.out.println("Keine passende Medien gefunden.");
|
|
return null;
|
|
} else {
|
|
return medienliste;
|
|
}
|
|
|
|
}
|
|
|
|
public void datumAendern(LocalDate neuesDatum) {
|
|
this.aktuellesDatum = neuesDatum;
|
|
System.out.println("Systemdatum geändert auf: " + aktuellesDatum);
|
|
}
|
|
|
|
public LocalDate getAktuellesDatum() {
|
|
return aktuellesDatum;
|
|
}
|
|
|
|
public void benutzerRegistrieren(Benutzer benutzer) {
|
|
benutzerListe.add(benutzer);
|
|
System.out.println("Benutzer registriert: " + benutzer);
|
|
}
|
|
|
|
public void zeigeGebuehren(Benutzer benutzer) {
|
|
benutzer.aktualisiereGebuehren(aktuellesDatum);
|
|
|
|
if (benutzer.sindGebuehrenBezahlt()) {
|
|
System.out.println("Alle Gebühren von " + benutzer.getName() + " sind bezahlt.");
|
|
} else {
|
|
System.out.println("Aktuelle Gebühren für " + benutzer.getName() + ": " + benutzer.getOffeneGebuehren() + "€");
|
|
}
|
|
}
|
|
|
|
public Benutzer anmelden(String kartennummer) {
|
|
for (Benutzer benutzer : benutzerListe) {
|
|
if (benutzer.getKartennummer().equals(kartennummer)) {
|
|
System.out.println("Willkommen, " + benutzer.getName() + "!");
|
|
return benutzer;
|
|
}
|
|
}
|
|
System.out.println("Benutzer nicht gefunden.");
|
|
return null;
|
|
}
|
|
}
|