diff --git a/src/main/java/mi/hdm/recipes/Ingredient.java b/src/main/java/mi/hdm/recipes/Ingredient.java index 6dfeb658764b57a305ae3b7c415fe2b1ab4c6733..2b20b963156709c3cb44bbbf43dc3dae6a3a5c83 100644 --- a/src/main/java/mi/hdm/recipes/Ingredient.java +++ b/src/main/java/mi/hdm/recipes/Ingredient.java @@ -26,4 +26,13 @@ public class Ingredient implements RecipeComponent { public NutritionTable getNutritionTable() { return nutritionTable; } + + @Override + public boolean equals(Object o){ + if (o instanceof Ingredient) { + Ingredient in = (Ingredient) o; + return this.name.equals(in.getName()); + } + return false; + } } diff --git a/src/main/java/mi/hdm/recipes/RecipeManager.java b/src/main/java/mi/hdm/recipes/RecipeManager.java index ed3801fafc60e3eed8245729193d4546c309b47c..19cf5e74bbfe5d31a90ffefd96bc341d757058af 100644 --- a/src/main/java/mi/hdm/recipes/RecipeManager.java +++ b/src/main/java/mi/hdm/recipes/RecipeManager.java @@ -1,5 +1,8 @@ package mi.hdm.recipes; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + import java.util.List; import java.util.Optional; @@ -8,6 +11,7 @@ public class RecipeManager { private final Categories categories; private final List<Ingredient> ingredients; private final NutritionCalculator nutritionCalculator; + private static final Logger log = LogManager.getLogger(RecipeManager.class); public RecipeManager(List<Recipe> recipes, Categories categories, List<Ingredient> ingredients, NutritionCalculator nutritionCalculator) { this.recipes = recipes; @@ -43,8 +47,15 @@ public class RecipeManager { return new RecipeEditor(recipe); } - public void addIngredient(Ingredient ingredient) { - ingredients.add(ingredient); + public boolean addIngredient(Ingredient in) { + if (ingredients.contains(in)) { + log.error("Ingredient: {} not added because it already exists", in.getName()); + return false; + } else { + log.info("Ingredient {} added successfully.", in.getName()); + ingredients.add(in); + return true; + } } public Ingredient deleteIngredient(int i) { diff --git a/src/test/java/mi/hdm/recipes/IngredientTest.java b/src/test/java/mi/hdm/recipes/IngredientTest.java new file mode 100644 index 0000000000000000000000000000000000000000..c3698e0d167e6d17ce4ff6788a693b45664cea41 --- /dev/null +++ b/src/test/java/mi/hdm/recipes/IngredientTest.java @@ -0,0 +1,37 @@ +package mi.hdm.recipes; + +import mi.hdm.exceptions.InvalidIngredientException; +import org.junit.Test; +import org.junit.Assert; + +import java.util.ArrayList; +import java.util.List; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotEquals; + + +public class IngredientTest { + + List<Ingredient> ingredients = new ArrayList<Ingredient>(); + NutritionTable tt = new NutritionTable(null); + //Nutrition.CALORIES, 300, Nutrition.CARBS, 40, Nutrition.FAT, 15, Nutrition.PROTEINS, 7, Nutrition.FIBERS, 3.2, Nutrition.SALT, 0.6 + + @Test public void testEquals () { + Ingredient i1 = new Ingredient(Measurement.GRAM, "Banana", tt); + Ingredient i2 = new Ingredient(Measurement.PIECE, "Banana", tt); + Ingredient i3 = new Ingredient(Measurement.GRAM, "Apple", tt); + + assertEquals(i1, i2); + assertNotEquals(i1, i3); + assertNotEquals(i2, i3); + } + + /*@Test public void shouldNotBeAbleToAddIdenticalName () { + + ingredients.add(Measurement.GRAM, "Banana", tt); + ingredients.add(Measurement.PIECE, "Banana", tt); + + Assert.assertEquals(1, ingredients.size()); + }*/ +}