From 8238efc356b12258fdd5b2a7a13c82f984498811 Mon Sep 17 00:00:00 2001
From: Lara Blersch <lb210@hdm-stuttgart.de>
Date: Wed, 3 May 2023 14:06:31 +0200
Subject: [PATCH] started to implement ShoppingList

---
 src/main/java/mi/hdm/mealPlan/MealPlan.java   |  1 +
 .../mi/hdm/shoppingList/ShoppingList.java     | 31 +++++++++++++++++--
 2 files changed, 30 insertions(+), 2 deletions(-)

diff --git a/src/main/java/mi/hdm/mealPlan/MealPlan.java b/src/main/java/mi/hdm/mealPlan/MealPlan.java
index bf805f6..29ab90f 100644
--- a/src/main/java/mi/hdm/mealPlan/MealPlan.java
+++ b/src/main/java/mi/hdm/mealPlan/MealPlan.java
@@ -7,6 +7,7 @@ import mi.hdm.recipes.Recipe;
  * Allow the user to create a meal plan for the week. The user can check out his nutrition scores for the week.
  */
 public class MealPlan {
+    //TODO: implement class<
     private static final MealPlan mealPlan = new MealPlan();
 
     public static MealPlan getInstance() {
diff --git a/src/main/java/mi/hdm/shoppingList/ShoppingList.java b/src/main/java/mi/hdm/shoppingList/ShoppingList.java
index 187fb3f..3f34656 100644
--- a/src/main/java/mi/hdm/shoppingList/ShoppingList.java
+++ b/src/main/java/mi/hdm/shoppingList/ShoppingList.java
@@ -1,15 +1,23 @@
 package mi.hdm.shoppingList;
 
+import mi.hdm.exceptions.InvalidIngredientException;
 import mi.hdm.recipes.Ingredient;
+import mi.hdm.recipes.IngredientManager;
+import mi.hdm.recipes.NutritionCalculator;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Optional;
 
 /**
  * Shopping list that the user can add ingredients to. The elements on the list can be marked as done or undone.
  */
 public class ShoppingList {
     //TODO: implement class
+
+    private static final Logger log = LogManager.getLogger(ShoppingList.class);
     private final Map<Ingredient, Boolean> list;
 
     private static final ShoppingList shoppingList = new ShoppingList();
@@ -22,13 +30,32 @@ public class ShoppingList {
         return shoppingList;
     }
 
-    public void clear() {}
+    public void clear() {
+        list.clear();
+        log.info("ShoppingList cleared successfully.");
+    }
 
-    public void markDone(int id) {}
+    public void markDone(Ingredient in) {
+        list.put(in, true);
+        log.info("Ingredient {} marked as done", in);
+    }
+    public void markDone(String name){
+        Ingredient in = getIngredientByName(name).orElseThrow(() -> new InvalidIngredientException("No ingredient with name " + name));;
+        markDone(in);
+    }
 
     public void markUndone(int id) {}
 
     public Map<Ingredient, Boolean> getList() {
         return list;
     }
+
+    private Optional<Ingredient> getIngredientByName(String name) {
+        for (final Ingredient i : list.keySet()) {
+            if (name.equals(i.getName())) {
+                return Optional.of(i);
+            }
+        }
+        return Optional.empty();
+    }
 }
-- 
GitLab