2024-11-13 17:48:43 +01:00
|
|
|
import javax.crypto.spec.PSource;
|
|
|
|
import java.util.*;
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
2024-11-08 16:21:34 +01:00
|
|
|
public class Verwaltung {
|
2024-11-13 17:48:43 +01:00
|
|
|
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);
|
|
|
|
}
|
|
|
|
}
|
2024-11-08 16:21:34 +01:00
|
|
|
}
|