SE2-Restaurantverwaltung/Restaurantverwaltung/src/Inventory.java

129 lines
3.7 KiB
Java

import java.util.*;
import java.io.*;
class Inventory {
private Map<String, Integer> 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<String, Integer> 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<String, Integer> entry : stock.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
}
public boolean showIngredientsAvailable(Map<String, Integer> ingredients) {
for (Map.Entry<String, Integer> 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<String, Integer> ingredients) {
for (Map.Entry<String, Integer> 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<String, Integer> 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);
}
}
}