Bib1/Verwaltung.java

101 lines
4.1 KiB
Java

import javax.crypto.spec.PSource;
import java.util.*;
import java.util.stream.Collectors;
public class Verwaltung {
LinkedList<Medien> mediensListe = new LinkedList<>();
LinkedList<Benutzer> benutzerListe = new LinkedList<>();
Creator obj = new Creator();
void addFunktion(Medien medien) {
mediensListe.add(medien);
}
void addBenutzer(Benutzer benutzer) {
benutzerListe.add(benutzer);
}
static int mrgen() {
Random m = new Random();
int[] zahl = new int[7];
int number;
for (int i = 0; i < 7; ++i) {
number = m.nextInt(10);
zahl[i] = number;
}
number = Arrays.stream(zahl).reduce(0, (acc, digit) -> {
return acc * 10 + digit;
});
return number;
}
public int generiereEindeutigeKundennummer() {
final int[] genkundennummer = new int[1]; // Verwendung eines Arrays, um den Wert zu ändern
do {
genkundennummer[0] = mrgen(); // Eine neue Kundennummer generieren
} while (benutzerListe.stream().anyMatch(benutzer -> benutzer.getKundennummer() == genkundennummer[0]));
return genkundennummer[0]; // Rückgabe der Kundennummer
}
// Verbesserte Version der durchsuchenMedien-Methode
public static List<Medien> durchsuchenMedien(LinkedList<Medien> medienListe, String suchbegriff) {
String suchbegriffKlein = suchbegriff.toLowerCase(); // Der Suchbegriff in Kleinbuchstaben für einfache Vergleiche
return medienListe.stream()
.filter(medien -> {
// Sucht nach dem Mediumstyp (Art des Mediums) und dem Namen des Werkes
boolean gefunden = false;
// Überprüfe, ob die Art des Mediums im Suchbegriff enthalten ist
if (medien instanceof Medien.Book) {
gefunden |= "buch".contains(suchbegriffKlein);
} else if (medien instanceof Medien.Dvds) {
gefunden |= "dvd".contains(suchbegriffKlein);
} else if (medien instanceof Medien.Cds) {
gefunden |= "cd".contains(suchbegriffKlein);
} else if (medien instanceof Medien.Brettspiel) {
gefunden |= "sb".contains(suchbegriffKlein); // "sb" für Brettspiel
} else if (medien instanceof Medien.Videospiel) {
gefunden |= "videospiel".contains(suchbegriffKlein);
}
// Zusätzlich wird nach dem Namen des Werkes gesucht
gefunden |= medien.getName().toLowerCase().contains(suchbegriffKlein);
return gefunden; // Wenn das Medium den Suchbegriff in der Art oder im Namen enthält, bleibt es in der Liste
})
.collect(Collectors.toList()); // Rückgabe der gefilterten Liste
}
}
class Creator {
static Benutzer factoryBenutzer(String name, String nachname, int kundennummer, Date date) {
if (Benutzer.getJahr(new Benutzer(name, nachname, kundennummer, date)) > 18) {
return new Benutzer.Erwachsen(name, nachname, kundennummer, date);
} else {
return new Benutzer.Kinder(name, nachname, kundennummer, date);
}
}
public static Medien factoryMedien(String name, String regisseur, int id, String art, int erscheinungsjahr) {
switch (art.toLowerCase()) {
case "buch":
return new Medien.Book(name, regisseur, id, erscheinungsjahr); // Autor für Bücher
case "dvd":
return new Medien.Dvds(name, regisseur, id); // Regisseur für DVDs
case "cd":
return new Medien.Cds(name, id); // CDs benötigen keinen Autor
case "sb": // Brettspiel
return new Medien.Brettspiel(name, id); // Brettspiele benötigen keinen Autor
case "videospiel":
return new Medien.Videospiel(name, regisseur, id); // Entwickler für Videospiele
default:
throw new IllegalArgumentException("Unbekannter Medientyp: " + art);
}
}
}