diff --git a/Bibliotheksverwaltung/src/ServiceLayer/LibraryService.java b/Bibliotheksverwaltung/src/ServiceLayer/LibraryService.java index d8198af..d50dd7e 100644 --- a/Bibliotheksverwaltung/src/ServiceLayer/LibraryService.java +++ b/Bibliotheksverwaltung/src/ServiceLayer/LibraryService.java @@ -1,24 +1,95 @@ package ServiceLayer; +import java.util.ArrayList; import java.util.List; -import java.util.Map; +import java.util.stream.Collectors; -import DomainLayer.LibraryItem; -import DomainLayer.User; +import DomainLayer.*; public class LibraryService { - private Map items; // ID -> Medien - private Map users; // Kartennummer -> Benutzer + private List mediaList = new ArrayList<>(); + private List userList = new ArrayList<>(); + private Admin admin; // Ein Adminnutzer - public void borrowItem(String itemId, String userId) { - // Prüfen, ob verfügbar, und Ausleihe durchführen + // Administrator hinzufügen (fest codiert) + public LibraryService() { + mediaList = new ArrayList<>(); + userList = new ArrayList<>(); + + // Hardcodierter Admin + admin = new Admin("001", "Bibliotheks Admin"); + userList.add(admin); // Admin wird zur Benutzerliste hinzugefügt + } + public Admin getAdmin() { + return admin; + } + + public void displayCatalog() { + System.out.println("Medienkatalog:"); + for (Medium medium : mediaList) { + String status = medium.isBorrowed() ? "Ausgeliehen bis: " + medium.getDueDate() : "Verfügbar"; + System.out.println("Titel: " + medium.getTitle() + ", Autor: " + medium.getAuthor() + ", Status: " + status); + } } - public void returnItem(String itemId) { - // Rückgabe-Logik und Gebührenberechnung - } + public List searchMedia(String query, boolean filterBorrowed, String mediaType) { + return mediaList.stream().filter(medium -> medium.getTitle().toLowerCase().startsWith(query.toLowerCase())) // Filter + // nach + // Titel + .filter(medium -> !filterBorrowed || !medium.isBorrowed()) // Optionaler Filter nach Ausleihstatus + .filter(medium -> mediaType.isEmpty() || medium.getClass().getSimpleName().equals(mediaType)) // Optionaler + // Filter + // nach + // Medienart + .collect(Collectors.toList()); + } + + public void initializeMedia() { + // Beispielmedien + addMedium(new Book("B001", "Harry Potter und der Stein der Weisen", "1997")); + addMedium(new DVD("D001", "Inception", "2010")); + addMedium(new CD("C001", "Michael Jackson - Thriller", "1982")); + addMedium(new BoardGame("BG001", "Monopoly", "1935")); + addMedium(new VideoGame("VG001", "The Last of Us", "2013")); + } - public List searchItems(String query) { - // Suchfunktion für Medien - } + // Medien hinzufügen + public void addMedium(Medium medium) { + mediaList.add(medium); + } + + // Alle Medien abrufen + public List getAllMedia() { + return mediaList; + } + + // Medium anhand der ID suchen + public Medium findMediumById(String mediumId) { + for (Medium medium : mediaList) { + if (medium.getId().equals(mediumId)) { + return medium; + } + } + return null; // Medium nicht gefunden + } + + // Benutzer hinzufügen + public void addUser(User user) { + userList.add(user); + } + + // Benutzer anhand der ID suchen + public User findUserById(String userId) { + for (User user : userList) { + if (user.getId().equals(userId)) { + return user; + } + } + return null; // Benutzer nicht gefunden + } + + // Alle Benutzer abrufen + public List getAllUsers() { + return userList; + } } \ No newline at end of file