From faf685214739e68a933754bf81ec049138389306 Mon Sep 17 00:00:00 2001
From: Hugo BLANQUART <hugo.blanquart.etu@univ-lille.fr>
Date: Fri, 6 Mar 2020 11:51:08 +0100
Subject: [PATCH] json

---
 src/main/java/fr/ulille/iut/pizzaland/ApiV1.java | 16 ++++++++++++++++
 .../fr/ulille/iut/pizzaland/beans/Pizza.java     |  2 +-
 .../fr/ulille/iut/pizzaland/dao/PizzaDao.java    |  8 ++++++--
 .../iut/pizzaland/resources/PizzaResource.java   |  2 +-
 src/main/resources/pizzas.json                   |  6 ++++++
 5 files changed, 30 insertions(+), 4 deletions(-)
 create mode 100644 src/main/resources/pizzas.json

diff --git a/src/main/java/fr/ulille/iut/pizzaland/ApiV1.java b/src/main/java/fr/ulille/iut/pizzaland/ApiV1.java
index 2fd7689..c44a1f9 100644
--- a/src/main/java/fr/ulille/iut/pizzaland/ApiV1.java
+++ b/src/main/java/fr/ulille/iut/pizzaland/ApiV1.java
@@ -6,6 +6,7 @@ import java.util.logging.Logger;
 
 import javax.ws.rs.ApplicationPath;
 import fr.ulille.iut.pizzaland.beans.Ingredient;
+import fr.ulille.iut.pizzaland.beans.Pizza;
 import fr.ulille.iut.pizzaland.dao.IngredientDao;
 import fr.ulille.iut.pizzaland.dao.PizzaDao;
 
@@ -33,6 +34,7 @@ public class ApiV1 extends ResourceConfig {
     	  	FileReader reader = new FileReader( getClass().getClassLoader().getResource("ingredients.json").getFile() );
             List<Ingredient> ingredients = JsonbBuilder.create().fromJson(reader, new ArrayList<Ingredient>(){}.getClass().getGenericSuperclass());
                 
+            
             IngredientDao ingredientDao = BDDFactory.buildDao(IngredientDao.class);
             ingredientDao.dropTable();
             ingredientDao.createTable();
@@ -40,7 +42,21 @@ public class ApiV1 extends ResourceConfig {
                  ingredientDao.insert(ingredient.getName());              
             }
             
+            FileReader readerPizza = new FileReader( getClass().getClassLoader().getResource("pizzas.json").getFile() );
+            List<Pizza> pizzas= JsonbBuilder.create().fromJson(readerPizza, new ArrayList<Pizza>(){}.getClass().getGenericSuperclass());
             PizzaDao pizzaDao = BDDFactory.buildDao(PizzaDao.class);
+            pizzaDao.dropTablePizza();
+            pizzaDao.dropTableAssociations();
+            pizzaDao.createTableAndIngredientAssociation();
+            for (Pizza pizza : pizzas) {
+            	System.out.println(pizza.getName() + " - " +pizza.getIngredients().toString());
+            	pizzaDao.insert(pizza.getName());
+            	for(Ingredient ingredient : pizza.getIngredients()) {
+            		System.out.println(pizza.getId() +"-" +ingredient.getId());
+            		pizzaDao.insertAssoc(pizza.getId(), ingredient.getId());
+            	}
+            	
+            }
             
             
     	  } catch ( Exception ex ) {
diff --git a/src/main/java/fr/ulille/iut/pizzaland/beans/Pizza.java b/src/main/java/fr/ulille/iut/pizzaland/beans/Pizza.java
index 2961374..101c8ba 100644
--- a/src/main/java/fr/ulille/iut/pizzaland/beans/Pizza.java
+++ b/src/main/java/fr/ulille/iut/pizzaland/beans/Pizza.java
@@ -42,7 +42,7 @@ public class Pizza {
 	}
 
 	public List<Ingredient> getIngredients() {
-		return ingredient;
+		return this.ingredient;
 	}
 
 	public static PizzaDto toDto(Pizza p) {
diff --git a/src/main/java/fr/ulille/iut/pizzaland/dao/PizzaDao.java b/src/main/java/fr/ulille/iut/pizzaland/dao/PizzaDao.java
index 2eafe9c..cc7681c 100644
--- a/src/main/java/fr/ulille/iut/pizzaland/dao/PizzaDao.java
+++ b/src/main/java/fr/ulille/iut/pizzaland/dao/PizzaDao.java
@@ -12,7 +12,7 @@ import fr.ulille.iut.pizzaland.beans.Pizza;
 
 public interface PizzaDao {
 
-	@SqlUpdate("CREATE TABLE IF NOT EXISTS Pizzas (id INTEGER PRIMARY KEY, name VARCHAR UNIQUE NOT NULL")
+	@SqlUpdate("CREATE TABLE IF NOT EXISTS Pizzas (id INTEGER PRIMARY KEY, name VARCHAR UNIQUE NOT NULL)")
 	void createPizzaTable();
 
 	@SqlUpdate("CREATE TABLE IF NOT EXISTS PizzaIngredientsAssociation(pizza Integer," 
@@ -23,8 +23,8 @@ public interface PizzaDao {
 
 	@Transaction
 	default void createTableAndIngredientAssociation() {
-		createAssociationTable();
 		createPizzaTable();
+		createAssociationTable();
 
 	}
 
@@ -50,6 +50,10 @@ public interface PizzaDao {
 	@SqlUpdate("INSERT INTO Pizzas (name) VALUES(:name)")
 	@GetGeneratedKeys
 	long insert(String name);
+
+	@SqlUpdate("INSERT INTO PizzaIngredientsAssociation (pizza,ingredient) VALUES(:pizza,:ingredient)")
+	@GetGeneratedKeys
+	long insertAssoc(long pizza,long ingredient);
 	
 	@SqlUpdate("DELETE FROM Pizzas WHERE id = :id")
 	void remove(long id);
diff --git a/src/main/java/fr/ulille/iut/pizzaland/resources/PizzaResource.java b/src/main/java/fr/ulille/iut/pizzaland/resources/PizzaResource.java
index 891a3c8..8d232e0 100644
--- a/src/main/java/fr/ulille/iut/pizzaland/resources/PizzaResource.java
+++ b/src/main/java/fr/ulille/iut/pizzaland/resources/PizzaResource.java
@@ -43,7 +43,7 @@ public class PizzaResource {
 
 	public PizzaResource() {
 		pizzas = BDDFactory.buildDao(PizzaDao.class);
-		pizzas.createPizzaTable();
+		pizzas.createTableAndIngredientAssociation();
 	}
 
 	@GET
diff --git a/src/main/resources/pizzas.json b/src/main/resources/pizzas.json
new file mode 100644
index 0000000..d15b145
--- /dev/null
+++ b/src/main/resources/pizzas.json
@@ -0,0 +1,6 @@
+[
+	{"name": "reine","ingredient": [{"id":1,"name":"mozzarella" },{"id":2,"name":"jambon" },{"id":3,"name":"champignons" }]},
+{"name": "margarita","ingredient": [{"id":1,"name":"mozzarella" },{"id":2,"name":"jambon" },{"id":5,"name":"tomate" }]},
+{"name": "4 fromages","ingredient": [{"id":1,"name":"mozzarella" },{"id":8,"name":"fromage" }]},
+{"name": "pesto","ingredient": [{"id":1,"name":"mozzarella" },{"id":2,"name":"jambon" },{"id":6,"name":"merguez" }]}
+]
-- 
GitLab