package mi.hdm.recipes;

import mi.hdm.exceptions.InvalidIngredientException;

public class Ingredient implements RecipeComponent {
    private final Measurement unit;
    private final String name;
    private final NutritionTable nutritionTable;

    public Ingredient(Measurement unit, String name, NutritionTable nutritionTable) {
        if (name == null || name.equals("")) {
            throw new InvalidIngredientException("Can not add ingredient with name " + name);
        }
        if (nutritionTable == null) {
            throw new InvalidIngredientException("Can not add ingredient without Nutrition Table");
        }

        this.unit = unit;
        this.name = name;
        this.nutritionTable = nutritionTable;
    }

    public String getName() {
        return name;
    }

    public NutritionTable getNutritionTable() {
        return nutritionTable;
    }

    @Override
    public Measurement getMeasurement() {
        return unit;
    }

    @Override
    public boolean equals(Object o) {
        if (o instanceof Ingredient in) {
            return this.name.equals(in.getName()) && this.unit.equals(in.getMeasurement()) && this.nutritionTable.equals(in.getNutritionTable());
        }
        return false;
    }

    @Override
    public String toString() {
        return "Ingredient{" +
                "unit=" + unit +
                ", name='" + name + '\'' +
                ", nutritionTable=" + nutritionTable +
                '}';
    }
}