import java.util.*; import java.io.*; class Inventory { private Map stock; private final String STOCK_FILE = "src/stock.txt"; public void loadStockFromFile() { stock = new HashMap<>(); try (BufferedReader reader = new BufferedReader(new FileReader(STOCK_FILE))) { String line; while ((line = reader.readLine()) != null) { String[] parts = line.split(","); String name = parts[0]; Integer count = Integer.parseInt(parts[1]); stock.put(name, count); } } catch (FileNotFoundException e) { System.out.println("Stockdatenbank nicht gefunden. Einträge müssen manuell erstellt werden"); } catch (IOException e) { System.out.println("Fehler beim Lesen der Benutzerdatenbank: " + e.getMessage()); } } public void saveStockToFile() { try (BufferedWriter writer = new BufferedWriter(new FileWriter(STOCK_FILE))) { for (Map.Entry entry : stock.entrySet()) { writer.write(entry.getKey() + "," + entry.getValue()); writer.newLine(); } } catch (IOException e) { System.out.println("Fehler beim Speichern der Datei: " + e.getMessage()); } } public Inventory() { } public void viewStock() { System.out.println("Aktueller Bestand:"); for (Map.Entry entry : stock.entrySet()) { System.out.println(entry.getKey() + ": " + entry.getValue()); } } public boolean showIngredientsAvailable(Map ingredients) { for (Map.Entry entry : ingredients.entrySet()) { String ingredient = entry.getKey(); int amount = entry.getValue(); if (!stock.containsKey(ingredient) || stock.get(ingredient) < amount) { return false; } } return true; } public void useIngredients(Map ingredients) { for (Map.Entry entry : ingredients.entrySet()) { stock.put(entry.getKey(), stock.get(entry.getKey()) - entry.getValue()); saveStockToFile(); } } // Neue Methode: Zutaten hinzufügen public void addIngredients(String ingredient, int amount) { if (amount <= 0) { System.out.println("Ungültige Menge: " + amount); return; } stock.put(ingredient, stock.getOrDefault(ingredient, 0) + amount); System.out.println(amount + " " + ingredient + " hinzugefügt."); } // Neue Methode: Zutaten entfernen public void removeIngredient(String ingredient) { if (stock.containsKey(ingredient)) { stock.remove(ingredient); System.out.println(ingredient + " wurde aus dem Lager entfernt."); } else { System.out.println(ingredient + " ist nicht im Lager vorhanden."); } } // Neue Methode: Gesamten Bestand prüfen public int totalStock() { int total = 0; for (int amount : stock.values()) { total += amount; } return total; } // Neue Methode: Warnungen bei niedrigem Bestand public void lowStockWarning(int threshold) { System.out.println("Warnung: Niedriger Bestand bei folgenden Zutaten:"); for (Map.Entry entry : stock.entrySet()) { if (entry.getValue() < threshold) { System.out.println(entry.getKey() + ": " + entry.getValue()); } } } // Neue Methode: Zutatenbestand überschreiben public void overwriteStock(String ingredient, int amount) { if (amount < 0) { System.out.println("Ungültige Menge: " + amount); return; } if (stock.containsKey(ingredient)) { stock.put(ingredient, amount); System.out.println(ingredient + " Bestand auf " + amount + " gesetzt."); } else { System.out.println(ingredient + " ist nicht im Lager vorhanden. Hinzufügen mit neuer Menge."); stock.put(ingredient, amount); } } }