Skip to content
Snippets Groups Projects
IngredientManager.java 2.43 KiB
Newer Older
Karsch Lukas's avatar
Karsch Lukas committed
import mi.hdm.exceptions.InvalidIngredientException;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
public class IngredientManager {
    private static final Logger log = LogManager.getLogger(IngredientManager.class);

    private final List<Ingredient> allIngredients;
    public IngredientManager(List<Ingredient> ingredients) {
        allIngredients = ingredients;
    /**
     * Adds an ingredient if there is no equal ingredient (no ingredient with the same name).
     * @param in Ingredient that is to be added
     * @return True if the ingredient has been added (meaning no equal ingredient existed before), otherwise false.
     */
    public void addIngredient(Ingredient in) {
        if (getIngredientByName(in.getName()).isPresent()) {
            log.error("Ingredient {} not added because it already exists.", in.getName());
            throw new InvalidIngredientException("Ingredient already exists.");
        } else {
            log.info("Ingredient {} added successfully.", in.getName());
            allIngredients.add(in);
        }
    }
    public void addIngredient(Measurement unit, String name, NutritionTable nutritionTable) {
        Ingredient in = new Ingredient(unit, name, nutritionTable);
    }

    public Ingredient deleteIngredient(int i) {
        log.info("Ingredient {} deleted successfully.", allIngredients.get(i).getName());
    public void deleteIngredient(String name) {
Karsch Lukas's avatar
Karsch Lukas committed
        Ingredient ingredient = getIngredientByName(name).orElseThrow(() -> new InvalidIngredientException("No ingredient with name " + name));
        log.info("Ingredient {} deleted successfully.", name);
Karsch Lukas's avatar
Karsch Lukas committed

    public void clearIngredients() {
        log.info("List allIngredients cleared successfully.");
Karsch Lukas's avatar
Karsch Lukas committed
        allIngredients.clear();
    }

    public List<Ingredient> getAllIngredients() {
        return allIngredients;
    }

    private Optional<Ingredient> getIngredientByName(String name) {
Karsch Lukas's avatar
Karsch Lukas committed
        for (final Ingredient i : allIngredients) {
            if (name.equals(i.getName())) {
                return Optional.of(i);
            }
        }
        return Optional.empty();
    }
}