From a8955e0a97edc2b59401e92a51ed824901fbb566 Mon Sep 17 00:00:00 2001
From: "antoine.gaienier" <antoine.gaienier.etu@univ-lille.fr>
Date: Mon, 11 Mar 2024 18:00:53 +0100
Subject: [PATCH] pour la doc

---
 META-INF/context.xml                          |   1 +
 .../1_ingredient/DeleteIngredient.bru         |  15 ++
 .../1_ingredient/FindIngrediantByID.bru       |  11 ++
 .../1_ingredient/IngrediantPatch price.bru    |  17 ++
 .../pizzeria/1_ingredient/IngrediantPost.bru  |  19 ++
 .../1_ingredient/Ingredient Patch name.bru    |  17 ++
 .../pizzeria/1_ingredient/IngretiantName.bru  |  11 ++
 .../bruno/pizzeria/1_ingredient/findall.bru   |  11 ++
 .../pizzeria/2_ingrediantError/FailDelete.bru |  15 ++
 .../2_ingrediantError/FindByIDFail.bru        |  15 ++
 .../2_ingrediantError/FindByIDNameFail.bru    |  19 ++
 .../2_ingrediantError/IngrediantPostFail.bru  |  23 +++
 ...dient Patch fail (not foud ingredient).bru |  21 +++
 .../Ingredient Patch name fail.bru            |  21 +++
 .../3_Pizza/Pizza Delete (une pizza).bru      |  11 ++
 .../bruno/pizzeria/3_Pizza/PizzaByName.bru    |  11 ++
 ...Ingredient (un ingredient d'une pizza).bru |  11 ++
 WEB-INF/bruno/pizzeria/3_Pizza/PizzaPost.bru  |  31 ++++
 .../bruno/pizzeria/3_Pizza/PizzaPrixtotal.bru |  11 ++
 WEB-INF/bruno/pizzeria/3_Pizza/pizzaALL.bru   |  11 ++
 .../Commande Delete (une commande).bru        |  11 ++
 .../Commande Delete (une pizza).bru           |  11 ++
 .../pizzeria/5_Commande/CommandePost.bru      |  27 +++
 .../pizzeria/5_Commande/Commandes fidAll.bru  |  11 ++
 .../5_Commande/Commandes findById.bru         |  11 ++
 .../5_Commande/Commandes totalPrice.bru       |  11 ++
 WEB-INF/bruno/pizzeria/bruno.json             |   9 +
 .../classes/controleurs/CommandeRestAPI.class | Bin 0 -> 3244 bytes
 .../controleurs/IngredientRestAPI.class       | Bin 0 -> 4656 bytes
 .../classes/controleurs/PizzasRestAPI.class   | Bin 0 -> 3575 bytes
 WEB-INF/classes/dao/CommandeDAO.class         | Bin 0 -> 5356 bytes
 .../classes/dao/IngredientDAODatabase.class   | Bin 0 -> 4514 bytes
 WEB-INF/classes/dao/PizzasDAO.class           | Bin 0 -> 5884 bytes
 WEB-INF/classes/dto/Commande.class            | Bin 0 -> 800 bytes
 WEB-INF/classes/dto/CommandeDetail.class      | Bin 0 -> 1393 bytes
 WEB-INF/classes/dto/Ingredient.class          | Bin 0 -> 1900 bytes
 WEB-INF/classes/dto/Pizza.class               | Bin 0 -> 1125 bytes
 WEB-INF/classes/dto/PizzaCompo.class          | Bin 0 -> 2106 bytes
 WEB-INF/classes/utils/DS.class                | Bin 0 -> 1287 bytes
 WEB-INF/src/controleurs/CommandeRestAPI.java  |  86 +++++++++
 .../src/controleurs/IngredientRestAPI.java    | 175 ++++++++++++++++++
 WEB-INF/src/controleurs/PizzasRestAPI.java    |  99 ++++++++++
 WEB-INF/src/dao/CommandeDAO.java              | 133 +++++++++++++
 WEB-INF/src/dao/IngredientDAODatabase.java    | 107 +++++++++++
 WEB-INF/src/dao/PizzasDAO.java                | 141 ++++++++++++++
 WEB-INF/src/dto/Commande.java                 |  32 ++++
 WEB-INF/src/dto/CommandeDetail.java           |  38 ++++
 WEB-INF/src/dto/Ingredient.java               |  56 ++++++
 WEB-INF/src/dto/Pizza.java                    |  41 ++++
 WEB-INF/src/dto/PizzaCompo.java               |  48 +++++
 WEB-INF/src/utils/DS.java                     |  29 +++
 51 files changed, 1378 insertions(+)
 create mode 100755 META-INF/context.xml
 create mode 100644 WEB-INF/bruno/pizzeria/1_ingredient/DeleteIngredient.bru
 create mode 100644 WEB-INF/bruno/pizzeria/1_ingredient/FindIngrediantByID.bru
 create mode 100644 WEB-INF/bruno/pizzeria/1_ingredient/IngrediantPatch price.bru
 create mode 100644 WEB-INF/bruno/pizzeria/1_ingredient/IngrediantPost.bru
 create mode 100644 WEB-INF/bruno/pizzeria/1_ingredient/Ingredient Patch name.bru
 create mode 100644 WEB-INF/bruno/pizzeria/1_ingredient/IngretiantName.bru
 create mode 100644 WEB-INF/bruno/pizzeria/1_ingredient/findall.bru
 create mode 100644 WEB-INF/bruno/pizzeria/2_ingrediantError/FailDelete.bru
 create mode 100644 WEB-INF/bruno/pizzeria/2_ingrediantError/FindByIDFail.bru
 create mode 100644 WEB-INF/bruno/pizzeria/2_ingrediantError/FindByIDNameFail.bru
 create mode 100644 WEB-INF/bruno/pizzeria/2_ingrediantError/IngrediantPostFail.bru
 create mode 100644 WEB-INF/bruno/pizzeria/2_ingrediantError/Ingredient Patch fail (not foud ingredient).bru
 create mode 100644 WEB-INF/bruno/pizzeria/2_ingrediantError/Ingredient Patch name fail.bru
 create mode 100644 WEB-INF/bruno/pizzeria/3_Pizza/Pizza Delete (une pizza).bru
 create mode 100644 WEB-INF/bruno/pizzeria/3_Pizza/PizzaByName.bru
 create mode 100644 WEB-INF/bruno/pizzeria/3_Pizza/PizzaDeleteIngredient (un ingredient d'une pizza).bru
 create mode 100644 WEB-INF/bruno/pizzeria/3_Pizza/PizzaPost.bru
 create mode 100644 WEB-INF/bruno/pizzeria/3_Pizza/PizzaPrixtotal.bru
 create mode 100644 WEB-INF/bruno/pizzeria/3_Pizza/pizzaALL.bru
 create mode 100644 WEB-INF/bruno/pizzeria/5_Commande/Commande Delete (une commande).bru
 create mode 100644 WEB-INF/bruno/pizzeria/5_Commande/Commande Delete (une pizza).bru
 create mode 100644 WEB-INF/bruno/pizzeria/5_Commande/CommandePost.bru
 create mode 100644 WEB-INF/bruno/pizzeria/5_Commande/Commandes fidAll.bru
 create mode 100644 WEB-INF/bruno/pizzeria/5_Commande/Commandes findById.bru
 create mode 100644 WEB-INF/bruno/pizzeria/5_Commande/Commandes totalPrice.bru
 create mode 100644 WEB-INF/bruno/pizzeria/bruno.json
 create mode 100644 WEB-INF/classes/controleurs/CommandeRestAPI.class
 create mode 100644 WEB-INF/classes/controleurs/IngredientRestAPI.class
 create mode 100644 WEB-INF/classes/controleurs/PizzasRestAPI.class
 create mode 100644 WEB-INF/classes/dao/CommandeDAO.class
 create mode 100644 WEB-INF/classes/dao/IngredientDAODatabase.class
 create mode 100644 WEB-INF/classes/dao/PizzasDAO.class
 create mode 100644 WEB-INF/classes/dto/Commande.class
 create mode 100644 WEB-INF/classes/dto/CommandeDetail.class
 create mode 100644 WEB-INF/classes/dto/Ingredient.class
 create mode 100644 WEB-INF/classes/dto/Pizza.class
 create mode 100644 WEB-INF/classes/dto/PizzaCompo.class
 create mode 100644 WEB-INF/classes/utils/DS.class
 create mode 100644 WEB-INF/src/controleurs/CommandeRestAPI.java
 create mode 100644 WEB-INF/src/controleurs/IngredientRestAPI.java
 create mode 100644 WEB-INF/src/controleurs/PizzasRestAPI.java
 create mode 100644 WEB-INF/src/dao/CommandeDAO.java
 create mode 100644 WEB-INF/src/dao/IngredientDAODatabase.java
 create mode 100644 WEB-INF/src/dao/PizzasDAO.java
 create mode 100644 WEB-INF/src/dto/Commande.java
 create mode 100644 WEB-INF/src/dto/CommandeDetail.java
 create mode 100644 WEB-INF/src/dto/Ingredient.java
 create mode 100644 WEB-INF/src/dto/Pizza.java
 create mode 100644 WEB-INF/src/dto/PizzaCompo.java
 create mode 100644 WEB-INF/src/utils/DS.java

diff --git a/META-INF/context.xml b/META-INF/context.xml
new file mode 100755
index 0000000..195700d
--- /dev/null
+++ b/META-INF/context.xml
@@ -0,0 +1 @@
+<Context reloadable="true" />
diff --git a/WEB-INF/bruno/pizzeria/1_ingredient/DeleteIngredient.bru b/WEB-INF/bruno/pizzeria/1_ingredient/DeleteIngredient.bru
new file mode 100644
index 0000000..e43cc0f
--- /dev/null
+++ b/WEB-INF/bruno/pizzeria/1_ingredient/DeleteIngredient.bru
@@ -0,0 +1,15 @@
+meta {
+  name: DeleteIngredient
+  type: http
+  seq: 7
+}
+
+delete {
+  url: http://localhost:8080/pizzeria/ingredients/0
+  body: none
+  auth: none
+}
+
+docs {
+  Avant de faire ce DELETE vou de vais faire la requête "IngrediantPost"
+}
diff --git a/WEB-INF/bruno/pizzeria/1_ingredient/FindIngrediantByID.bru b/WEB-INF/bruno/pizzeria/1_ingredient/FindIngrediantByID.bru
new file mode 100644
index 0000000..f3148a3
--- /dev/null
+++ b/WEB-INF/bruno/pizzeria/1_ingredient/FindIngrediantByID.bru
@@ -0,0 +1,11 @@
+meta {
+  name: FindIngrediantByID
+  type: http
+  seq: 2
+}
+
+get {
+  url: http://localhost:8080/pizzeria/ingredients/2
+  body: none
+  auth: none
+}
diff --git a/WEB-INF/bruno/pizzeria/1_ingredient/IngrediantPatch price.bru b/WEB-INF/bruno/pizzeria/1_ingredient/IngrediantPatch price.bru
new file mode 100644
index 0000000..08a1612
--- /dev/null
+++ b/WEB-INF/bruno/pizzeria/1_ingredient/IngrediantPatch price.bru	
@@ -0,0 +1,17 @@
+meta {
+  name: IngrediantPatch price
+  type: http
+  seq: 6
+}
+
+patch {
+  url: http://localhost:8080/pizzeria/ingredients/0
+  body: json
+  auth: none
+}
+
+body:json {
+  {
+    "price":10.5
+  }
+}
diff --git a/WEB-INF/bruno/pizzeria/1_ingredient/IngrediantPost.bru b/WEB-INF/bruno/pizzeria/1_ingredient/IngrediantPost.bru
new file mode 100644
index 0000000..e1f2213
--- /dev/null
+++ b/WEB-INF/bruno/pizzeria/1_ingredient/IngrediantPost.bru
@@ -0,0 +1,19 @@
+meta {
+  name: IngrediantPost
+  type: http
+  seq: 4
+}
+
+post {
+  url: http://localhost:8080/pizzeria/ingredients
+  body: json
+  auth: none
+}
+
+body:json {
+  {
+    "id":0 ,
+    "name":"poison" ,
+    "price":0
+  }
+}
diff --git a/WEB-INF/bruno/pizzeria/1_ingredient/Ingredient Patch name.bru b/WEB-INF/bruno/pizzeria/1_ingredient/Ingredient Patch name.bru
new file mode 100644
index 0000000..753735e
--- /dev/null
+++ b/WEB-INF/bruno/pizzeria/1_ingredient/Ingredient Patch name.bru	
@@ -0,0 +1,17 @@
+meta {
+  name: Ingredient Patch name
+  type: http
+  seq: 5
+}
+
+patch {
+  url: http://localhost:8080/pizzeria/ingredients/0
+  body: json
+  auth: none
+}
+
+body:json {
+  {
+    "name":"poisson"
+  }
+}
diff --git a/WEB-INF/bruno/pizzeria/1_ingredient/IngretiantName.bru b/WEB-INF/bruno/pizzeria/1_ingredient/IngretiantName.bru
new file mode 100644
index 0000000..297ac65
--- /dev/null
+++ b/WEB-INF/bruno/pizzeria/1_ingredient/IngretiantName.bru
@@ -0,0 +1,11 @@
+meta {
+  name: IngretiantName
+  type: http
+  seq: 3
+}
+
+get {
+  url: http://localhost:8080/pizzeria/ingredients/2/name
+  body: none
+  auth: none
+}
diff --git a/WEB-INF/bruno/pizzeria/1_ingredient/findall.bru b/WEB-INF/bruno/pizzeria/1_ingredient/findall.bru
new file mode 100644
index 0000000..a21f00c
--- /dev/null
+++ b/WEB-INF/bruno/pizzeria/1_ingredient/findall.bru
@@ -0,0 +1,11 @@
+meta {
+  name: findall
+  type: http
+  seq: 1
+}
+
+get {
+  url: http://localhost:8080/pizzeria/ingredients
+  body: none
+  auth: none
+}
diff --git a/WEB-INF/bruno/pizzeria/2_ingrediantError/FailDelete.bru b/WEB-INF/bruno/pizzeria/2_ingrediantError/FailDelete.bru
new file mode 100644
index 0000000..abb421b
--- /dev/null
+++ b/WEB-INF/bruno/pizzeria/2_ingrediantError/FailDelete.bru
@@ -0,0 +1,15 @@
+meta {
+  name: FailDelete
+  type: http
+  seq: 5
+}
+
+delete {
+  url: http://localhost:8080/pizzeria/ingredients/0
+  body: none
+  auth: none
+}
+
+assert {
+  res.status: eq 404
+}
diff --git a/WEB-INF/bruno/pizzeria/2_ingrediantError/FindByIDFail.bru b/WEB-INF/bruno/pizzeria/2_ingrediantError/FindByIDFail.bru
new file mode 100644
index 0000000..5776f8f
--- /dev/null
+++ b/WEB-INF/bruno/pizzeria/2_ingrediantError/FindByIDFail.bru
@@ -0,0 +1,15 @@
+meta {
+  name: FindByIDFail
+  type: http
+  seq: 1
+}
+
+get {
+  url: http://localhost:8080/pizzeria/ingredients/0
+  body: none
+  auth: none
+}
+
+assert {
+  res.status: eq 404
+}
diff --git a/WEB-INF/bruno/pizzeria/2_ingrediantError/FindByIDNameFail.bru b/WEB-INF/bruno/pizzeria/2_ingrediantError/FindByIDNameFail.bru
new file mode 100644
index 0000000..ebb72f0
--- /dev/null
+++ b/WEB-INF/bruno/pizzeria/2_ingrediantError/FindByIDNameFail.bru
@@ -0,0 +1,19 @@
+meta {
+  name: FindByIDNameFail
+  type: http
+  seq: 6
+}
+
+get {
+  url: http://localhost:8080/pizzeria/ingredients/0/name
+  body: none
+  auth: none
+}
+
+query {
+  : 
+}
+
+assert {
+  res.status: eq 404
+}
diff --git a/WEB-INF/bruno/pizzeria/2_ingrediantError/IngrediantPostFail.bru b/WEB-INF/bruno/pizzeria/2_ingrediantError/IngrediantPostFail.bru
new file mode 100644
index 0000000..7b4f63f
--- /dev/null
+++ b/WEB-INF/bruno/pizzeria/2_ingrediantError/IngrediantPostFail.bru
@@ -0,0 +1,23 @@
+meta {
+  name: IngrediantPostFail
+  type: http
+  seq: 2
+}
+
+post {
+  url: http://localhost:8080/pizzeria/ingredients
+  body: json
+  auth: none
+}
+
+body:json {
+  {
+    "id":2 ,
+    "name":"fromage" ,
+    "price":10
+  }
+}
+
+assert {
+  res.status: eq 409
+}
diff --git a/WEB-INF/bruno/pizzeria/2_ingrediantError/Ingredient Patch fail (not foud ingredient).bru b/WEB-INF/bruno/pizzeria/2_ingrediantError/Ingredient Patch fail (not foud ingredient).bru
new file mode 100644
index 0000000..85f2abd
--- /dev/null
+++ b/WEB-INF/bruno/pizzeria/2_ingrediantError/Ingredient Patch fail (not foud ingredient).bru	
@@ -0,0 +1,21 @@
+meta {
+  name: Ingredient Patch fail (not foud ingredient) 
+  type: http
+  seq: 4
+}
+
+patch {
+  url: http://localhost:8080/pizzeria/ingredients/0
+  body: json
+  auth: none
+}
+
+body:json {
+  {
+    "name":"poisson"
+  }
+}
+
+assert {
+  res.status: eq 404
+}
diff --git a/WEB-INF/bruno/pizzeria/2_ingrediantError/Ingredient Patch name fail.bru b/WEB-INF/bruno/pizzeria/2_ingrediantError/Ingredient Patch name fail.bru
new file mode 100644
index 0000000..6b8c20d
--- /dev/null
+++ b/WEB-INF/bruno/pizzeria/2_ingrediantError/Ingredient Patch name fail.bru	
@@ -0,0 +1,21 @@
+meta {
+  name: Ingredient Patch name fail
+  type: http
+  seq: 3
+}
+
+patch {
+  url: http://localhost:8080/pizzeria/ingredients/1
+  body: json
+  auth: none
+}
+
+body:json {
+  {
+    "nom":"poisson"
+  }
+}
+
+assert {
+  res.status: eq 500
+}
diff --git a/WEB-INF/bruno/pizzeria/3_Pizza/Pizza Delete (une pizza).bru b/WEB-INF/bruno/pizzeria/3_Pizza/Pizza Delete (une pizza).bru
new file mode 100644
index 0000000..651c689
--- /dev/null
+++ b/WEB-INF/bruno/pizzeria/3_Pizza/Pizza Delete (une pizza).bru	
@@ -0,0 +1,11 @@
+meta {
+  name: Pizza Delete (une pizza)
+  type: http
+  seq: 6
+}
+
+delete {
+  url: http://localhost:8080/pizzeria/pizzas/chorizo
+  body: none
+  auth: none
+}
diff --git a/WEB-INF/bruno/pizzeria/3_Pizza/PizzaByName.bru b/WEB-INF/bruno/pizzeria/3_Pizza/PizzaByName.bru
new file mode 100644
index 0000000..baa5588
--- /dev/null
+++ b/WEB-INF/bruno/pizzeria/3_Pizza/PizzaByName.bru
@@ -0,0 +1,11 @@
+meta {
+  name: PizzaByName
+  type: http
+  seq: 2
+}
+
+get {
+  url: http://localhost:8080/pizzeria/pizzas/3fromages
+  body: none
+  auth: none
+}
diff --git a/WEB-INF/bruno/pizzeria/3_Pizza/PizzaDeleteIngredient (un ingredient d'une pizza).bru b/WEB-INF/bruno/pizzeria/3_Pizza/PizzaDeleteIngredient (un ingredient d'une pizza).bru
new file mode 100644
index 0000000..b55a0e4
--- /dev/null
+++ b/WEB-INF/bruno/pizzeria/3_Pizza/PizzaDeleteIngredient (un ingredient d'une pizza).bru	
@@ -0,0 +1,11 @@
+meta {
+  name: PizzaDeleteIngredient (un ingredient d'une pizza)
+  type: http
+  seq: 5
+}
+
+delete {
+  url: http://localhost:8080/pizzeria/pizzas/chorizo/7
+  body: none
+  auth: none
+}
diff --git a/WEB-INF/bruno/pizzeria/3_Pizza/PizzaPost.bru b/WEB-INF/bruno/pizzeria/3_Pizza/PizzaPost.bru
new file mode 100644
index 0000000..a31e761
--- /dev/null
+++ b/WEB-INF/bruno/pizzeria/3_Pizza/PizzaPost.bru
@@ -0,0 +1,31 @@
+meta {
+  name: PizzaPost
+  type: http
+  seq: 4
+}
+
+post {
+  url: http://localhost:8080/pizzeria/pizzas
+  body: json
+  auth: none
+}
+
+body:json {
+  {
+    "nom" : "chorizo",
+    "pate" :"classique",
+    "prixBase" : 4,
+    "ingredients":[
+      {
+        "id":7 ,
+        "name":"sauce tomate" ,
+        "price":0.50
+      },
+      {"id":1 ,
+        "name":"pomme de terre" ,
+        "price":1      
+      }
+    ]
+  }
+  
+}
diff --git a/WEB-INF/bruno/pizzeria/3_Pizza/PizzaPrixtotal.bru b/WEB-INF/bruno/pizzeria/3_Pizza/PizzaPrixtotal.bru
new file mode 100644
index 0000000..96a90a3
--- /dev/null
+++ b/WEB-INF/bruno/pizzeria/3_Pizza/PizzaPrixtotal.bru
@@ -0,0 +1,11 @@
+meta {
+  name: PizzaPrixtotal
+  type: http
+  seq: 3
+}
+
+get {
+  url: http://localhost:8080/pizzeria/pizzas/3fromages/prixfinal
+  body: none
+  auth: none
+}
diff --git a/WEB-INF/bruno/pizzeria/3_Pizza/pizzaALL.bru b/WEB-INF/bruno/pizzeria/3_Pizza/pizzaALL.bru
new file mode 100644
index 0000000..ce2ec08
--- /dev/null
+++ b/WEB-INF/bruno/pizzeria/3_Pizza/pizzaALL.bru
@@ -0,0 +1,11 @@
+meta {
+  name: pizzaALL
+  type: http
+  seq: 1
+}
+
+get {
+  url: http://localhost:8080/pizzeria/pizzas
+  body: none
+  auth: none
+}
diff --git a/WEB-INF/bruno/pizzeria/5_Commande/Commande Delete (une commande).bru b/WEB-INF/bruno/pizzeria/5_Commande/Commande Delete (une commande).bru
new file mode 100644
index 0000000..96f585f
--- /dev/null
+++ b/WEB-INF/bruno/pizzeria/5_Commande/Commande Delete (une commande).bru	
@@ -0,0 +1,11 @@
+meta {
+  name: Commande Delete (une commande)
+  type: http
+  seq: 5
+}
+
+delete {
+  url: http://localhost:8080/pizzeria/commandes/4/3fromages
+  body: none
+  auth: none
+}
diff --git a/WEB-INF/bruno/pizzeria/5_Commande/Commande Delete (une pizza).bru b/WEB-INF/bruno/pizzeria/5_Commande/Commande Delete (une pizza).bru
new file mode 100644
index 0000000..b625b59
--- /dev/null
+++ b/WEB-INF/bruno/pizzeria/5_Commande/Commande Delete (une pizza).bru	
@@ -0,0 +1,11 @@
+meta {
+  name: Commande Delete (une pizza)
+  type: http
+  seq: 4
+}
+
+delete {
+  url: http://localhost:8080/pizzeria/commandes/4
+  body: none
+  auth: none
+}
diff --git a/WEB-INF/bruno/pizzeria/5_Commande/CommandePost.bru b/WEB-INF/bruno/pizzeria/5_Commande/CommandePost.bru
new file mode 100644
index 0000000..effed99
--- /dev/null
+++ b/WEB-INF/bruno/pizzeria/5_Commande/CommandePost.bru
@@ -0,0 +1,27 @@
+meta {
+  name: CommandePost
+  type: http
+  seq: 3
+}
+
+post {
+  url: http://localhost:8080/pizzeria/commandes
+  body: json
+  auth: none
+}
+
+body:json {
+  {
+    "id": 4,
+    "nom": "truc bidule",
+    "date": 1711922400000,
+    "pizzas": [
+      {
+        "nom": "6fromages"      
+      },
+      {
+        "nom": "3fromages"
+      }
+    ]
+  }
+}
diff --git a/WEB-INF/bruno/pizzeria/5_Commande/Commandes fidAll.bru b/WEB-INF/bruno/pizzeria/5_Commande/Commandes fidAll.bru
new file mode 100644
index 0000000..3a2115c
--- /dev/null
+++ b/WEB-INF/bruno/pizzeria/5_Commande/Commandes fidAll.bru	
@@ -0,0 +1,11 @@
+meta {
+  name: Commandes fidAll
+  type: http
+  seq: 1
+}
+
+get {
+  url: http://localhost:8080/pizzeria/commandes
+  body: none
+  auth: none
+}
diff --git a/WEB-INF/bruno/pizzeria/5_Commande/Commandes findById.bru b/WEB-INF/bruno/pizzeria/5_Commande/Commandes findById.bru
new file mode 100644
index 0000000..723c18a
--- /dev/null
+++ b/WEB-INF/bruno/pizzeria/5_Commande/Commandes findById.bru	
@@ -0,0 +1,11 @@
+meta {
+  name: Commandes findById
+  type: http
+  seq: 2
+}
+
+get {
+  url: http://localhost:8080/pizzeria/commandes/1
+  body: none
+  auth: none
+}
diff --git a/WEB-INF/bruno/pizzeria/5_Commande/Commandes totalPrice.bru b/WEB-INF/bruno/pizzeria/5_Commande/Commandes totalPrice.bru
new file mode 100644
index 0000000..1efca78
--- /dev/null
+++ b/WEB-INF/bruno/pizzeria/5_Commande/Commandes totalPrice.bru	
@@ -0,0 +1,11 @@
+meta {
+  name: Commandes totalPrice
+  type: http
+  seq: 6
+}
+
+get {
+  url: http://localhost:8080/pizzeria/commandes/1/prixfinal
+  body: none
+  auth: none
+}
diff --git a/WEB-INF/bruno/pizzeria/bruno.json b/WEB-INF/bruno/pizzeria/bruno.json
new file mode 100644
index 0000000..c1538f7
--- /dev/null
+++ b/WEB-INF/bruno/pizzeria/bruno.json
@@ -0,0 +1,9 @@
+{
+  "version": "1",
+  "name": "pizzeria",
+  "type": "collection",
+  "ignore": [
+    "node_modules",
+    ".git"
+  ]
+}
\ No newline at end of file
diff --git a/WEB-INF/classes/controleurs/CommandeRestAPI.class b/WEB-INF/classes/controleurs/CommandeRestAPI.class
new file mode 100644
index 0000000000000000000000000000000000000000..04276ec9131778ccc102a3960304d92762e5adc6
GIT binary patch
literal 3244
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
GVHyDKO%5ag

literal 0
HcmV?d00001

diff --git a/WEB-INF/classes/controleurs/IngredientRestAPI.class b/WEB-INF/classes/controleurs/IngredientRestAPI.class
new file mode 100644
index 0000000000000000000000000000000000000000..8f19fdae6e2690d550afc107a97dc4403156e46c
GIT binary patch
literal 4656
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
G*arX)^cwL1

literal 0
HcmV?d00001

diff --git a/WEB-INF/classes/controleurs/PizzasRestAPI.class b/WEB-INF/classes/controleurs/PizzasRestAPI.class
new file mode 100644
index 0000000000000000000000000000000000000000..4be926579fa3acd9f6aa791e484994c348ae879e
GIT binary patch
literal 3575
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
J7>gO^0RX{Va0UPX

literal 0
HcmV?d00001

diff --git a/WEB-INF/classes/dao/CommandeDAO.class b/WEB-INF/classes/dao/CommandeDAO.class
new file mode 100644
index 0000000000000000000000000000000000000000..63a4a0686cf2de0a30e4ab095ec70bf6c675117c
GIT binary patch
literal 5356
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
Kh8GO47$gDTkK+9R

literal 0
HcmV?d00001

diff --git a/WEB-INF/classes/dao/IngredientDAODatabase.class b/WEB-INF/classes/dao/IngredientDAODatabase.class
new file mode 100644
index 0000000000000000000000000000000000000000..a2ed957200e05d1bad87951fbb6f9ad621d8cd88
GIT binary patch
literal 4514
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
IoMw;&00vGgJ^%m!

literal 0
HcmV?d00001

diff --git a/WEB-INF/classes/dao/PizzasDAO.class b/WEB-INF/classes/dao/PizzasDAO.class
new file mode 100644
index 0000000000000000000000000000000000000000..91b0c032c9d8b5010e1c80e45ae4696067a276c3
GIT binary patch
literal 5884
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
P7(i+FE5mn&pA3=!HBEe8

literal 0
HcmV?d00001

diff --git a/WEB-INF/classes/dto/Commande.class b/WEB-INF/classes/dto/Commande.class
new file mode 100644
index 0000000000000000000000000000000000000000..cfcc9a6b601dd06e02f7629dd6209c528fb2cd9a
GIT binary patch
literal 800
zcmX^0Z`VEs1_oOOWp)N8Mh2dgl6-yV{M_8cyp&XS1{OvJfvm)`ME#t^ymWp4q^#8B
z5=I85%oIijMo&ft=Dhq|Mg}1tgp%NrqRhN>Yeoi^l*E!$Mg{?hTxm&Wj=oD`Nvbs?
z1Dj1|US^3MBLlOBW*8#_i*tTTDi;GY13wP~Hv<nN1HVsZUaDVdZc=JdNMce>D#(KT
z<iwn?#G*_PA1cUFl95@=$iU}=>|$$11~m;&h@D_3L)`-rLAXLQjFW+pL5zoim4OY!
zlHg%rXW#&_q<9!O8Mqi3SkqHWJX64q^kigUOHVEF1Nl`%Lla^avgwQr?CGf`An!3U
z2*DH}EMsKg3eGPrN=|jl1o?&+7QA|(U}I2ZU}RusU|?WoU;?>@fq{Vu<Q6c^$-u?H
zz`)AD2nrbnMh0F61_omWMg~TZsMdA{zKvjI0t^fcTntQLl7)erL6Cugfd`_9L5M+^
zfdOoQ2-JWa1||j;1_lNZkO5lKTNy;Pbha{xYw2!fkVKd##=y$Jz`)DE!obJC$-vLR
z#~{EU%peFhTMMEeYBmFd2-x8uM~Q%)4swYIC>R--85kL)8DyX~>%*PCg+X);-05s!
or;31$Mt8O>gB%vk;v3L3OJLP3&!B)svn0A^8LXNW!B!{%0HsKE&;S4c

literal 0
HcmV?d00001

diff --git a/WEB-INF/classes/dto/CommandeDetail.class b/WEB-INF/classes/dto/CommandeDetail.class
new file mode 100644
index 0000000000000000000000000000000000000000..d96f18c44e99303a239e20149f94a463faf551d3
GIT binary patch
literal 1393
zcmX^0Z`VEs1_oOOGj;|hMh2mjl6-yV{M_8cyp&Xz)RM%^9Cij4Mg|^aaYhEVg3PL_
z#9~GU0iUeIvPAvTlFS@^pUmPCYeojn;LP;A#FEmYR7M6RG-(?jkU0S$&CdC`1^L!?
z){G2nHko;uC3cJq%o>_uj0`N!`6;Pf49pC?JPe!+T#O9-KACx`ex<odsYM})Nja&E
z3_?En$%#2(iA9+pK2(sUBqOt!kwFA(1*#XU85ztpJRxq$Nz6;v4=yRn%uBb1h=3jM
zl30?8%m;f0<Qxw&G-C0lW*Epzq98AcF*2wTW2j~rCj%pc1P=o%0~;d)Q)UVy1EVJ+
z19M(}E+`1V0gvn(Mh2FY#FA9hNCEqckwFYK#3~C?!J)>^pvcG|3^oZI3XVlZiIpI)
zb1^6|@G>%RB&MW*V~deNSOXleU>+pyG{d+V)EG3_8PpjW_z-4*wDT}%GH5X}Fej#@
zFfxd0K*Aa9R{x}|)Z`Lt%_v3&R&XK$ITtNaFfwo#rRL_BrGhO3S)$LwU;r|Z4I<9S
zz?q&}0+uaiWDwHOgjfLf0?2x6Mg|oOK`fEN$iNkxUs{x$>Xr#gR>G*MMi1mC21N!&
z24)5Z21W)ZP(&~=GO#l+FfcK2Ft9N&f)XeLBLg=B1A{RGBLgD?0|Tqpb_Sk}U?qGE
z3=CWhObiSRJPa%hybSzc7FZF30D~adP)-IR1}3PH!eE1{7+4rs85kJ&w4`-(w=;-n
zNwREZ5C@sa%m6Zx59}NP26hHP23`gsu&E{x9Z*vl82A_@8Kl6@;bV|ykO8}ak3p6}
z4y>0C>=70QdANH(A{-1XU=N8wJ(SGA!ob47z#t5B$8H9N$n6YDP{%MKIYyL$ok5I2
zh(R3e7%hl4xMPIjjuD1CMi}ZCMh0aD6{v+S3`}5$@@Q>g5ZB(xpvuG$4)Qj{CP+X^
zGjKD=fNc?jsD<0Y!=TNe1C9e-oF?jFF;Sj@n?ZqqiG~bD@JKQSN0L6+CQxi|VG!Q{
ak8MzrU|>)N8^;3<e^#gi85vB#s!RcRsR)Yz

literal 0
HcmV?d00001

diff --git a/WEB-INF/classes/dto/Ingredient.class b/WEB-INF/classes/dto/Ingredient.class
new file mode 100644
index 0000000000000000000000000000000000000000..050f8be35caeb0088876032ebb37f7702de283ee
GIT binary patch
literal 1900
zcmX^0Z`VEs1_oOOXLbfAMh3o=l6-y7y!4{fl+4t;5_Sd_Mh1bb#Ii*FoW#6zegCAa
z)Z`LI2BypuMg~StMh2F=#N1Ry1|c7Wn&6V6%)E4KMh4b`qReD8NtgW6q?}Z1Mg}&U
z%)HDJJ4Oa(4b3n{1{UZ1lvFMTW(Iy925tr(Mh1SL%)C^;(%hufqL9R-9I!F@$%#2(
ziA9+pK2(sUBqOt!kwL%*)!o*N3>q4qn2tgcfx1L9jFW+pL5zoim4OY!lHg%rXW#&_
zq<9!O8Mqi3STsCAE@VwlE%8hNyVsMEfjvF7#1HIs5e-cwQxTpohA3w*hA9-)z*Gk^
zm?J&4BmfdpsAfT3$jHD^3|E0-2vh;skdl0e)m#jk4BG4rS}4&5k>X*{VbEn{U@uF|
zDNXfHV`NZ6b`d0Mt+9AUh=GAYpNGMK!H|(bJU1~r)j2;eIk6->vn0bgKd-nXF|VYU
zk-?HccthNP&3r}%uHgLAqU2P!Oi(=YBa)vUC{-~s2sq{EmlT&2B^LOmmSp6o6mv0{
zF<7uOm@_h{fK))zW@cVles-!p#2$zf-4c^a@{1}#ZntD)n1SqFsA`CT9*KD=IjO}e
zKKc3Cr3KcQ@q{FTqA{ehAQg-9Xe9Mm!WC+Sb7D?TaArxWH9s4JDF=fMBZCsc>k84C
zDYlF{3ZVQ2qQQB|mNAx*fyXm1FSW=yC$YFVwV0j3o{>QnBM`88i=DxdkwFf>Qbq<g
zNEk3EGB7eQGcYhPGcbX&1_J{F6DVVVX-)<%1_lN$21Za;Wng6BWnf@1W?*DsWME)m
z)!NR$w-KyN0IZ0Kfq{XCfrWvWK@iLWD`F605N2Qi8z2HTAcuj8frWvAK?G!gmh@Hz
zQ7xUV4B}e4TNxw~=7}+|GB7akGq5lSFmN&mGVp;-5(b;C1<?-{VE~x~b~wmB5wO!i
zE)fCcX$EGn&C*btBN&(%z;Xzi89_EPVzF72frUYgfs;X;fsa9gL6|`jY_k|dKZebW
z3^EL|P+Roj0knldbPYU!*ubGC12%>S%w~le!^j}VAdf|}_y#o13RpEOFu?q02lXEt
zI8+f~$pv<`3Ii*HD%b>wFW8{gGcd40!;g_ckwFRS5QJIUTN%XB&C+0CWzfW77CQq6
zI0Td#RG?-dhlnJ)r?kPwpofSmgBnybibIeR2*gwR46F<WU=uJs1xmf3w5kpdU3&%=
zaL9{lZD9amajh*3k~<hQb}{HNFrYik1Z*tCVWQBmVrDP`$B8k62?GPzpH>Wv4Au;`
Q;2glnV8`IV;KU#a0A#LW?f?J)

literal 0
HcmV?d00001

diff --git a/WEB-INF/classes/dto/Pizza.class b/WEB-INF/classes/dto/Pizza.class
new file mode 100644
index 0000000000000000000000000000000000000000..a1f5b011e24638075ca598a131ae182ea764859f
GIT binary patch
literal 1125
zcmX^0Z`VEs1_oOOHFgFjMh4E5l6?Ju%&MwHb_Nzk27#=^vPAuy#JqHU|D>$c<Pt^(
z=Dhq|Mg}1tgiLTrQD$DcH6sH{L1IZNBLhc4QD%ixVsR>}GMD_)q?}Z1Mg}&U%)HDJ
zJ4Oa(4b3n{1{UZ1lvFMTW(GbU1}+9}Mh1SL%)C^;(%hufqL9R-9I!F@$%#2(iA9+p
zK2(sUBqOt!k%8L>?qq9521^Z0hv5~0x=J&QlYx;zl!t+pfepkG=V4%nuq1gHI2bq?
z8Q9WOOZ-4y7tzqfG?9^kJw3G~0PKHm5DOjzsLG+%F*2|fLyZ%~;$l#+uouJ41F_)d
zp{R!%2U5=!oL^d$oa&Yd3NS8k6zYNEh(VEok%5_kfq|KU3FJEl1_maO-@r5n11AFm
z0|x^mDC8L!8F&~N7>pSh85kKD7+AHoGw^N%E8}NiVBlh4Vqjq4WME<7Vh~_pVBmo$
zVi05yVqgFpAPhAihk=QKg@J)V1Z04g_ErWFEuF0lVp_Ue86*(qi7~K(O<`f+W#DAs
zW8h=pXAou(0Gq7^(GNA7fk6c9aFC-!z)lCbL<AHq49pCS3{nizP@DDPPT#^HvH|XN
zHn3BLz(%7xTL!CUF?7vhST)Ns$YHTr0$sBdR?YGZ3Q)~<3{2p_WdjEmB8VVCF2}&i
zAP+V{45A7iENswVVPsImZk8CjSxOA749YmnVrKw_6C;BXgEBUEAw?a;U1|)h4C*+{
O0;MZZDpCQ*fhqtnC80C`

literal 0
HcmV?d00001

diff --git a/WEB-INF/classes/dto/PizzaCompo.class b/WEB-INF/classes/dto/PizzaCompo.class
new file mode 100644
index 0000000000000000000000000000000000000000..812d177e3fdbe0aba470dd63198d8ec2b5dd78a3
GIT binary patch
literal 2106
zcmX^0Z`VEs1_oP(Xm$oBMh3o=l6?Ju%&MwH=ltA)e0ByFMg~r}7$XCBW?p(xYD#8m
zUP&<{gMd#~Vp*boX-Q^|zE5Uxi8UhwXK-eEUSdgUQ7R*Y5}LG)56C1>xCz#F){G2n
zHko;uC3cJq%o>_uj0`N!`6;Pf49pC?JPe!+T<i?|j10mETO5mu5-UMgaWU{Q@NzOR
zG6?Z7urjbQGVuFk=B4_T<|d^Ug(N2Bq%txH`Q#@j=7c2{WrFxnL6(w?Ot8yAPC<Co
znvua%1LEAA#JqI<;F6-uymV{4A};x*Nja(3=$_IH136z3<a{Yc21_zc)ePfikYSKx
zXOLxN;6wNy<aHhfc?JbW2Ij<+6h;P7Wb^%#vQm>vtTm$;8JP3(b3s7>){5*UMh2FG
z#FA7-29AQF%nGN(VsJ<yltFz3id;|-A;lIW16N6YNn%bwQD$-~BZG*BCQ|S~wSl~@
z#lxV@puxz%ot|0}0JQ_;8C@O*JqCS729C^<)S|?a{31pMF_;<PB;*Mdx8`OrWH4rD
zFk)m70y_*vmWRQF!IY7KB`>w21l<+T0AOb@hbCo&^SKx-8LZhEtQZ*tz-EHO1mbEQ
z1{(%jMh5N_aD;{>=9H#_lcNh4gBgQ84}$~9HyjY(B&UK5a^hidW^iF-U@rqH_D=)F
zgA1160C~iXhryk}gOPzfBeB>I>}F;SPz<qx1Cx<~3z4N58F+(B5|gui6APfpl`lQD
z1mTBbMg}325CbI#YeohY3_+|}jjtHZFkxuo0f#TxEKn9yMHj_l7)YHMYW}J$NQF9@
zH!&pz;b=w%VGYbY!pI;{l$x7gmWogaN+aPs3=yEj%?6QVWZ(+UFD*(=b;|_hXnsV7
z)dNK$gCYYX12Y2y10w?ys1#seWMF4tU|?e4VBlb21eG5Qj11fi3=B>T%nXbS3=9HV
z+ZlMYb~ErrZf6kK${@HAtXi0Xfq@Tf4mSe}0|x^?0}q1;0|NsOL=S@~gBaKjP6lzP
zd9@5I46F<c4DwpqI=b5#B#?~M+QJ|x$+D9{nu#GCVZ0Cn3j+fKKLa}h2ZIoU0D~NZ
zAlM2Mh%rzr7#QRk6d9Dj*2*&|Gbk}Ifh=KAVNeA-Po9C5L5+b0>@_K<Q;HZ^z-G%~
zaSAq%LR=ySb%{8GEQ18tC0Y<u;4YDayF?D|5;>?#7#Y+VG@$m+huUwhwVgrJ2ju&m
z3_6Sqe#;qTb$2otFftrqF!R;k#$chdjlpgkgGKTV21g&=oeZvw472_}(B8nnz`)D^
ziUBcjP)ISbGDtJXFvu|IFi10)GRT1)rvUc8In;5i3`Pu|45|!_3^EJ?3|<Us3``8(
z3=9k+3{3wSgcw-Z85r3aEE(7t3>g?C85kLS7<?I+pee%-oF4QU7{P(e3UV*V2~1!o
zuz>{?!B#>dpA~8)BZEIf0Njv3upuBmD1O+qw4q4};t?)ztf_+I3Y3h*z<f5SNem2Z
z(4-m!PhubuP=aM-2xbU@hN}w$6IdS)$cftM=?P+oCIdHv7TC2AJ9yxB@PLB_<jGK+
XCWfJ;P>6}T4BQNQ1Wb$sXPPJg-WZ_V

literal 0
HcmV?d00001

diff --git a/WEB-INF/classes/utils/DS.class b/WEB-INF/classes/utils/DS.class
new file mode 100644
index 0000000000000000000000000000000000000000..b98c3d89fa93baa8f49acb9ee1b7a3e0a212ee05
GIT binary patch
literal 1287
zcmX^0Z`VEs1_oOOcXkFQMh1@3lFXc9eV1T%1{OvJfvm)`ME#t^ymWp4q^#8B5=I8*
z(xMzj1|c7WOmIn2W?s5ABLizretKpeBLhc4VsUYKeo+b|16xW_W?5<xBLkaFW?p8A
z9U}v?hGrNe1B-KhN-7rvGXozF0~Z4~2ZI13gM3y>QnFP+esM{9QEG8vj+MTCL2+SD
zacWVSeo|?P5hnv9gAfk`D+3z`g9syoP-0$5er8^3dSYg3US?`hYDp<bg%}S5J4l5D
zBLj18ekMpriid#%BqYPgAevv4u7|Kf&jsu}kRmxA22KVxE(Qe#C3XfyMh1R_2c2^g
zi;H;}lo?bQ8Q9bEi~JIEQyCdlH88_K6G;fH%bJTpjX{H*L7kC70nI?a{1UhP(!3Pc
zisaOSlFa-(9tKSYEk*{e^wbjH)Z*gA^i)O$5e;M`;UUfMlbM(5SDKrYS`?C)l#>dI
zko@GtoUp{AOb{O`$WoG#S<J}5<pYaUYeojfR7M6RbZ26?#hQ_UH@GA*Iomg}0BRU-
zdTNPteqLT`GRU!v4B{}S6&L2{BP6UD8MxqHDrRReV`LCU_#7_7#bCi;#m->K$RGxm
z1sMW~4By1O#Prl69tI-@YeoiNETN3#dT5AXia>)6WGsr?_>*(;i&GIoj0_S`8_<+$
zhH*34GdQv{IKVuBs(^>ViGiDuffZ~XBLj1CejX!(D8wPCDnTI<oL^d$oa&YdiYj)O
zU_FqZ859{98JHOu7+4sXK&hI6fq@B>cEL0U0~?s;1k=n6jG%17z{tSEz`(G8fr){M
zfq_9!YdZt4mJt6|20<+$;jIj!T0-Jm86>rYq_;B2YHeYV-N7IqzMO&6M|&HCYWPM5
zMg|!M6$W(%H3nt|Z3YGgH3m)w1_oXR76uLmE(T5p0R}DxF$Qi183uj^6$SwY4F*95
zT?SzW9R>ylF^G)}x(s>@3=A3!tPJ`L1`Lc0h71f00t`(58PpjV*%=r?gc>UYBZCox
zF#{8W3D|dx45narTQPwA!N4G(wS_@YYYT&@))ofI9Sr6hz&-`Jh>d{}Y!}Ez9xz(~
zY9k|q4TCL)iS`VPV0W==?_{uJWY`Edhzl$%#lXfOjpTfGs9_8Y><rEfE+FSJxPtY#
F0RRy?8an_0

literal 0
HcmV?d00001

diff --git a/WEB-INF/src/controleurs/CommandeRestAPI.java b/WEB-INF/src/controleurs/CommandeRestAPI.java
new file mode 100644
index 0000000..e4878b6
--- /dev/null
+++ b/WEB-INF/src/controleurs/CommandeRestAPI.java
@@ -0,0 +1,86 @@
+package controleurs;
+
+import java.io.PrintWriter;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+import dao.CommandeDAO;
+import dto.Commande;
+import dto.CommandeDetail;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.annotation.WebServlet;
+import jakarta.servlet.http.*;
+import java.io.IOException;
+
+
+@WebServlet("/commandes/*")
+public class CommandeRestAPI extends HttpServlet{
+
+    private CommandeDAO commandeDAO = new CommandeDAO();
+    
+    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+        response.setContentType("application/json; charset=UTF-8");
+        String pathInfo = request.getPathInfo();
+        PrintWriter out = response.getWriter();
+        
+        if (pathInfo != null) {
+            String[] pathParts = pathInfo.split("/");
+            // si /commandes/{id}/prixtotal alors on renvoie le prix total de la commande {id}
+            if (pathParts.length > 2 && pathParts[2].equals("prixfinal")) {
+                int id = Integer.parseInt(pathParts[1]);
+                Commande commande = commandeDAO.findById(id);
+                if (commande == null) {
+                    response.sendError(HttpServletResponse.SC_NOT_FOUND);
+                } else {
+                    out.print(commandeDAO.totalPrice(id));
+                }
+            }
+            // si /commandes/{id} alors on renvoie la commande {id} en JSON
+            else if (pathParts.length > 1) {
+                int id = Integer.parseInt(pathParts[1]);
+                Commande commande = commandeDAO.findById(id);
+                if (commande == null) {
+                    response.sendError(HttpServletResponse.SC_NOT_FOUND);
+                } else {
+                    ObjectMapper mapper = new ObjectMapper();
+                    out.print(mapper.writeValueAsString(commande));
+                }
+            }
+        }
+        // si /commandes alors on renvoie la liste des commandes en JSON 
+        else {
+            ObjectMapper mapper = new ObjectMapper();
+            out.println(mapper.writeValueAsString(commandeDAO.findAll()));
+        }
+    }
+
+    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+        response.setContentType("application/json; charset=UTF-8");
+        PrintWriter out = response.getWriter();
+        ObjectMapper mapper = new ObjectMapper();
+        CommandeDetail commande = mapper.readValue(request.getReader(), CommandeDetail.class);
+        commandeDAO.save(commande);
+        out.println(mapper.writeValueAsString(commande));
+    }
+
+    public void doDelete(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+        response.setContentType("application/json; charset=UTF-8");
+        String pathInfo = request.getPathInfo();
+        PrintWriter out = response.getWriter();
+
+        // si /commandes/{id}/{pizza} alors on supprime la pizza {pizza} de la commande {id}
+        if (pathInfo != null) {
+            String[] pathParts = pathInfo.split("/");
+            if (pathParts.length > 2) {
+                int id = Integer.parseInt(pathParts[1]);
+                String pizza = pathParts[2];
+                commandeDAO.deleteCommandeDetail(id, pizza);
+            }            
+            if (pathParts.length > 1) {
+                int id = Integer.parseInt(pathParts[1]);
+                commandeDAO.deleteCommande(id);
+            }
+        }        
+    }
+    
+}
diff --git a/WEB-INF/src/controleurs/IngredientRestAPI.java b/WEB-INF/src/controleurs/IngredientRestAPI.java
new file mode 100644
index 0000000..b86f8ad
--- /dev/null
+++ b/WEB-INF/src/controleurs/IngredientRestAPI.java
@@ -0,0 +1,175 @@
+package controleurs;
+
+import java.io.*;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+
+import dao.IngredientDAODatabase;
+import dto.Ingredient;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.annotation.WebServlet;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+
+
+/*Créez une servlet contrôleur IngredientRestAPI.java. Dotez cette classe d’un endpoint /ingrédients qui
+renvoie la collection d’ingrédients en JSON. */
+
+@WebServlet("/ingredients/*")
+public class IngredientRestAPI extends HttpServlet{
+
+    private IngredientDAODatabase ingredientDAOList = new IngredientDAODatabase();
+
+    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+        response.setContentType("application/json; charset=UTF-8");
+        String pathInfo = request.getPathInfo();
+        PrintWriter out = response.getWriter();
+        
+        if (pathInfo != null) {
+            String[] pathParts = pathInfo.split("/");
+            // si /ingrédients/{id}/name alors on renvoie le nom de l'ingrédient {id}
+            if (pathParts.length > 2 && pathParts[2].equals("name")) {
+                int id = Integer.parseInt(pathParts[1]);
+                Ingredient ingredient = ingredientDAOList.findById(id);
+                if (ingredient == null) {
+                    response.sendError(HttpServletResponse.SC_NOT_FOUND);
+                } else {
+                    out.print(ingredient.getName());
+                }
+            }
+            // si /ingrédients/{id} alors on renvoie l'ingrédient {id} en JSON
+            else if (pathParts.length > 1) {
+                int id = Integer.parseInt(pathParts[1]);
+                Ingredient ingredient = ingredientDAOList.findById(id);
+                if (ingredient == null) {
+                    response.sendError(HttpServletResponse.SC_NOT_FOUND);
+                } else {
+                    ObjectMapper mapper = new ObjectMapper();
+                    out.print(mapper.writeValueAsString(ingredient));
+
+                }
+            }
+        }
+        // si /ingrédients alors on renvoie la liste des ingrédients en JSON 
+        else {
+            ObjectMapper mapper = new ObjectMapper();
+            out.println(mapper.writeValueAsString(ingredientDAOList.findAll()));
+        }
+    }
+
+    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+        response.setContentType("application/json; charset=UTF-8");
+        PrintWriter out = response.getWriter();
+        //récupère le corps de la requête
+        BufferedReader reader = request.getReader();
+        String body = reader.readLine();
+        ObjectMapper mapper = new ObjectMapper();
+        Ingredient ingredient = mapper.readValue(body, Ingredient.class);
+        // si l'ingrédient existe déjà
+        if (ingredientDAOList.findById(ingredient.getId()) != null) {
+            //renvoie une erreur 409
+            response.sendError(HttpServletResponse.SC_CONFLICT);
+        } else {
+            //sinon on l'ajoute
+            ingredientDAOList.save(ingredient);
+            //et renvoi un message  is created
+            response.setStatus(HttpServletResponse.SC_CREATED);
+            out.println(mapper.writeValueAsString(ingredient));
+        }
+    }
+
+    public void doDelete(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+        response.setContentType("application/json; charset=UTF-8");
+        
+        PrintWriter out = response.getWriter();
+        // si /ingrédients/1 alors on supprime l'ingrédient 1
+        String pathInfo = request.getPathInfo();
+        if (pathInfo != null) {
+            String[] pathParts = pathInfo.split("/");
+            if (pathParts.length > 1) {
+                int id = Integer.parseInt(pathParts[1]);
+                // regarde si l'ingrédient existe
+                if (ingredientDAOList.findById(id) == null) {
+                    //renvoie une erreur 404
+                    response.sendError(HttpServletResponse.SC_NOT_FOUND);
+
+                    out.println("L'ingrédient n'existe pas");
+                    
+                } else {
+                    //sinon on le supprime
+                    ingredientDAOList.delete(id);
+                    //et renvoi un message  is le json de l'ingrédient supprimé
+                    
+                    out.println("L'ingrédient a bien été supprimé");
+                                      
+                }
+            }
+        }
+    }
+    
+    public void doPut(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+        response.setContentType("application/json; charset=UTF-8");
+        PrintWriter out = response.getWriter();
+        //récupère le corps de la requête
+        BufferedReader reader = request.getReader();
+        String body = reader.readLine();
+        ObjectMapper mapper = new ObjectMapper();
+        Ingredient ingredient = mapper.readValue(body, Ingredient.class);
+        // si l'ingrédient n'existe pas
+        if (ingredientDAOList.findById(ingredient.getId()) == null) {
+            //renvoie une erreur 404
+            response.sendError(HttpServletResponse.SC_NOT_FOUND);
+        } else {
+            //sinon on le met à jour
+            ingredientDAOList.update(ingredient);
+            //et renvoi un message  is updated
+            response.setStatus(HttpServletResponse.SC_OK);
+            out.println(mapper.writeValueAsString(ingredient));
+        }
+    }
+
+
+    // fait un update sur un ingrédient existant en modifiant la colonne fournie dans le body de la requête au format JSON
+    public void doPatch(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+        response.setContentType("application/json; charset=UTF-8");
+        //récupère le corps de la requête
+        BufferedReader reader = request.getReader();
+        String body = reader.readLine();
+        ObjectMapper mapper = new ObjectMapper();
+        Ingredient ingredient = mapper.readValue(body, Ingredient.class);
+        // récupère l'id de l'ingrédient à modifier
+        String pathInfo = request.getPathInfo();
+        String[] pathParts = pathInfo.split("/");
+        int id = Integer.parseInt(pathParts[1]);
+        // si l'ingrédient n'existe pas
+        if (ingredientDAOList.findById(id) == null){
+            //renvoie une erreur 404
+            response.sendError(HttpServletResponse.SC_NOT_FOUND);
+        } else {
+            //sinon on le met à jour
+            ingredientDAOList.patch(id,ingredient);
+            //et renvoi un message  is updated
+            response.setStatus(HttpServletResponse.SC_OK);
+            doGet(request, response);
+        }
+    }
+
+    // faire une méthode service qui redirige vers les bonnes méthodes en fonction de la méthode de la requête
+    public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+        if (request.getMethod().equals("GET")) {
+            doGet(request, response);
+        } else if (request.getMethod().equals("POST")) {
+            doPost(request, response);
+        } else if (request.getMethod().equals("DELETE")) {
+            doDelete(request, response);
+        } else if (request.getMethod().equals("UPDATE")) {
+            doPut(request, response);
+        } else if (request.getMethod().equals("PATCH")) {
+            doPatch(request, response);
+        }
+    }
+}
+
+
diff --git a/WEB-INF/src/controleurs/PizzasRestAPI.java b/WEB-INF/src/controleurs/PizzasRestAPI.java
new file mode 100644
index 0000000..96585b9
--- /dev/null
+++ b/WEB-INF/src/controleurs/PizzasRestAPI.java
@@ -0,0 +1,99 @@
+package controleurs;
+
+import jakarta.servlet.annotation.WebServlet;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.List;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+import dao.PizzasDAO;
+import dto.Pizza;
+import dto.PizzaCompo;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+
+@WebServlet("/pizzas/*")
+public class PizzasRestAPI extends HttpServlet{
+    private PizzasDAO pizzasDAO = new PizzasDAO();
+
+    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
+        response.setContentType("application/json; charset=UTF-8");
+        String pathInfo = request.getPathInfo();
+        PrintWriter out = response.getWriter();
+        ObjectMapper mapper = new ObjectMapper();
+        if (pathInfo != null) {
+            String[] pathParts = pathInfo.split("/");
+            if (pathParts.length > 2 && pathParts[2].equals("prixfinal")) {
+                String nom = pathParts[1];
+                if (pizzasDAO.findByName(nom) != null){
+                    PizzaCompo pizza = pizzasDAO.findByName(nom);
+                    out.print(pizzasDAO.totalPrice(nom));
+                    
+                } else {
+                    response.sendError(HttpServletResponse.SC_NOT_FOUND);
+                    out.println("La pizza n'existe pas");
+                }
+            }
+            else if (pathParts.length > 1) {
+                String nom = pathInfo.substring(1);
+                if (pizzasDAO.findByName(nom) != null){
+                    Pizza pizza = pizzasDAO.findByName(nom);
+                    out.println(mapper.writeValueAsString(pizza));
+                } else {
+                    response.sendError(HttpServletResponse.SC_NOT_FOUND);
+                }
+            }
+        } else {
+            List<Pizza> pizzas = pizzasDAO.findAll();
+            out.println(mapper.writeValueAsString(pizzas));
+        }            
+    }
+
+    // Ajoutez une nouvelle pizza et ses ingrédients à la base de données 
+    public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
+        response.setContentType("application/json; charset=UTF-8");
+        PrintWriter out = response.getWriter();
+        ObjectMapper mapper = new ObjectMapper();
+        PizzaCompo pizza = mapper.readValue(request.getReader(), PizzaCompo.class);
+        pizzasDAO.save(pizza);
+        out.println(mapper.writeValueAsString(pizza));
+
+    }
+
+
+    // Supprimez une pizza de la base de données
+    public void doDelete(HttpServletRequest request, HttpServletResponse response) throws IOException {
+        response.setContentType("application/json; charset=UTF-8");
+        String pathInfo = request.getPathInfo();
+        PrintWriter out = response.getWriter();
+       // si /pizza/chorizo/1 alors on supprime la relation entre la pizza et l'ingrédient 1 de la table pizzas_ingredient
+        if (pathInfo != null) {
+            String[] pathParts = pathInfo.split("/");
+            if (pathParts.length > 2) {
+                String nom = pathParts[1];
+                int id = Integer.parseInt(pathParts[2]);
+                if (pizzasDAO.findByName(nom) != null){
+                    pizzasDAO.deletePizzaIngredient(nom, id);
+                    out.println("La relation entre la pizza et l'ingrédient a été supprimée");
+                } else {
+                    response.sendError(HttpServletResponse.SC_NOT_FOUND);
+                }
+            }
+            // si /pizza/chorizo alors on supprime la pizza de la table pizzas
+            else {
+                String nom = pathInfo.substring(1);
+                if (pizzasDAO.findByName(nom) != null){
+                    pizzasDAO.delete(nom);
+                    out.println("La pizza a été supprimée");
+                } else {
+                    response.sendError(HttpServletResponse.SC_NOT_FOUND);
+                }
+            }
+        }
+       
+       
+    }
+}
diff --git a/WEB-INF/src/dao/CommandeDAO.java b/WEB-INF/src/dao/CommandeDAO.java
new file mode 100644
index 0000000..ecdbc2e
--- /dev/null
+++ b/WEB-INF/src/dao/CommandeDAO.java
@@ -0,0 +1,133 @@
+package dao;
+
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.util.ArrayList;
+import java.util.List;
+
+import dto.Commande;
+import dto.CommandeDetail;
+import dto.PizzaCompo;
+import utils.DS;
+
+public class CommandeDAO {
+
+    private DS ds;
+
+    public CommandeDAO() {
+        this.ds = new DS();
+    }
+
+
+    public Commande findById(int id) {
+        try {
+            Connection con = ds.getConnection();
+            String query = "select * from commandes where id = " + id + ";";
+            ResultSet rs = con.createStatement().executeQuery(query);
+            rs.next();
+            CommandeDetail commande = new CommandeDetail(rs.getInt("id"), rs.getString("nom"), rs.getDate("date"));
+
+            query = "select * from commande_detail where id = " + id + ";";
+            rs = con.createStatement().executeQuery(query);
+            while (rs.next()) {
+                String nom = rs.getString("pizza");
+                PizzaCompo pizza = new PizzasDAO().findByName(nom);
+                commande.addPizza(pizza);
+            }
+            con.close();        
+            return commande;
+        }catch (Exception e) {
+            System.out.println(e.getMessage());
+        }
+        return null;
+    }
+
+    public List<Commande> findAll() {
+        List<Commande> commandes = new ArrayList<Commande>();
+        try {
+            Connection con = ds.getConnection();
+            String query = "select * from commandes;";
+            ResultSet rs = con.createStatement().executeQuery(query);
+            while (rs.next()) {
+                Commande commande = new Commande(rs.getInt("id"), rs.getString("nom"), rs.getDate("date"));
+                commandes.add(commande);
+            }
+            con.close();
+        } catch (Exception e) {
+            System.out.println(e.getMessage());
+        }
+        return commandes;
+    }
+
+    public void save(CommandeDetail commande) {
+        try {
+            Connection con = ds.getConnection();
+            String query = "insert into commandes values (" + commande.getId() + ", '" + commande.getNom() + "', '" + commande.getDate() + "');";
+            con.createStatement().executeUpdate(query);
+            for (PizzaCompo pizza : commande.getPizzas()) {
+                query = "insert into commande_detail values (" + commande.getId() + ", '" + pizza.getNom() + "');";
+                con.createStatement().executeUpdate(query);
+            }
+            con.close();
+        } catch (Exception e) {
+            System.out.println(e.getMessage());
+        }
+    }
+
+    public void delete(int id) {
+        try {
+            Connection con = ds.getConnection();
+            String query = "delete from commandes where id = " + id + ";";
+            con.createStatement().executeUpdate(query);
+            query = "delete from commande_detail where id = " + id + ";";
+            con.createStatement().executeUpdate(query);
+            con.close();
+        } catch (Exception e) {
+            System.out.println(e.getMessage());
+        }
+    }
+
+    public double totalPrice(int id) {
+        double total = 0;
+        try {
+            Connection con = ds.getConnection();
+            String query = "select * from commande_detail where id = " + id + ";";
+            ResultSet rs = con.createStatement().executeQuery(query);
+            
+            while (rs.next()) {
+                String nom = rs.getString("pizza");
+                total += new PizzasDAO().totalPrice(nom);
+            }
+            con.close();
+            
+
+        } catch (Exception e) {
+            System.out.println(e.getMessage());
+        }
+        return total;
+    }
+
+    public void deleteCommandeDetail(int id, String pizza) {
+        try {
+            Connection con = ds.getConnection();
+            String query = "delete from commande_detail where id = " + id + " and pizza = '" + pizza + "';";
+            con.createStatement().executeUpdate(query);
+            con.close();
+        } catch (Exception e) {
+            System.out.println(e.getMessage());
+        }
+    }
+
+    public void deleteCommande(int id) {
+        try {
+            Connection con = ds.getConnection();
+            String query = "delete from commande_detail where id = " + id + ";";
+            con.createStatement().executeUpdate(query);
+            query = "delete from commandes where id = " + id + ";";
+            con.createStatement().executeUpdate(query);
+            con.close();
+        } catch (Exception e) {
+            System.out.println(e.getMessage());
+        }
+    }
+}
diff --git a/WEB-INF/src/dao/IngredientDAODatabase.java b/WEB-INF/src/dao/IngredientDAODatabase.java
new file mode 100644
index 0000000..053dc2b
--- /dev/null
+++ b/WEB-INF/src/dao/IngredientDAODatabase.java
@@ -0,0 +1,107 @@
+package dao;
+
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.util.ArrayList;
+import java.util.List;
+
+import dto.Ingredient;
+import utils.DS;
+
+
+public class IngredientDAODatabase {
+
+
+    private DS ds;
+    
+
+    public IngredientDAODatabase(){ 
+        this.ds = new DS();     
+    }
+    public Ingredient findById(int id) {
+        try {
+            Connection con = ds.getConnection();
+            String query = "select * from ingredients where id = " + id + ";";
+            ResultSet rs = con.createStatement().executeQuery(query);
+            rs.next();
+            Ingredient ingredient = new Ingredient(rs.getInt("id"), rs.getString("name"), rs.getDouble("price"));
+            con.close();
+            return ingredient;
+        }
+        catch (Exception e) {
+            System.out.println(e.getMessage());
+        }
+        return null;
+
+    }
+    public List<Ingredient> findAll() {
+        List<Ingredient> ingredients = new ArrayList<Ingredient>();
+        try {
+            Connection con = ds.getConnection();
+            String query = "select * from ingredients;";
+            ResultSet rs = con.createStatement().executeQuery(query);
+            while (rs.next()) {
+                Ingredient ingredient = new Ingredient(rs.getInt("id"), rs.getString("name"), rs.getDouble("price"));
+                ingredients.add(ingredient);
+            }
+            con.close();
+        }
+        catch (Exception e) {
+            System.out.println(e.getMessage());
+        }
+        return ingredients;
+    }
+
+    public void save(Ingredient ingredient)  {
+        try {
+           
+            Connection con = ds.getConnection();           
+            String query = "insert into ingredients values (" + ingredient.getId() + ", '" + ingredient.getName() + "', " + ingredient.getPrice() + ");";        
+            con.createStatement().executeUpdate(query);
+            con.close();
+        } catch (Exception e) {System.out.println("l'ingrédient existe déjà");}
+
+    }
+
+    public void delete(int id) {
+        try {
+            Connection con = ds.getConnection();            
+            String query = "delete from ingredients where id = " + id + ";";        
+            con.createStatement().executeUpdate(query);
+            con.close();
+        } catch (Exception e) {System.out.println(e.getMessage());}
+    }
+
+    public void update(Ingredient ingredient) {
+        try {
+            Connection con = ds.getConnection();            
+            String query = "update ingredients set name = '" + ingredient.getName() + "', price = " + ingredient.getPrice() + " where id = " + ingredient.getId() + " where id=" + ingredient.getId() + ";";        
+            con.createStatement().executeUpdate(query);
+            con.close();
+        } catch (Exception e) {System.out.println(e.getMessage());}
+    }
+
+    public void patch(int id ,Ingredient ingredient) {
+        // le champ à modifier est la seule valeur non nulle de l'ingrédient
+        String champ = "";
+        String valeur = "";
+        if (ingredient.getName() != null) {
+            champ = "name";
+            valeur = "'" + ingredient.getName() + "'";
+        }
+        if (ingredient.getPrice() != null) {
+            champ = "price";
+            valeur = "" + ingredient.getPrice();
+        }       
+        try {
+            Connection con = ds.getConnection();
+           
+
+            String query = "update ingredients set " + champ + " = " + valeur + " where id = " + id + ";";        
+            con.createStatement().executeUpdate(query);
+            con.close();
+        } catch (Exception e) {System.out.println(e.getMessage());}
+    }
+}
+
+
diff --git a/WEB-INF/src/dao/PizzasDAO.java b/WEB-INF/src/dao/PizzasDAO.java
new file mode 100644
index 0000000..27cf9d0
--- /dev/null
+++ b/WEB-INF/src/dao/PizzasDAO.java
@@ -0,0 +1,141 @@
+package dao;
+
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.util.ArrayList;
+import java.util.List;
+import dto.Ingredient;
+import dto.Pizza;
+import dto.PizzaCompo;
+import utils.DS;
+
+public class PizzasDAO {
+    private DS ds;
+
+    public PizzasDAO() {
+        this.ds = new DS();
+    }
+
+    public PizzaCompo findByName(String name) {
+        try {
+            Connection con = ds.getConnection();
+            String query = "select * from pizzas where nom = '" + name + "';";
+            ResultSet rs = con.createStatement().executeQuery(query);
+            rs.next();
+
+            PizzaCompo pizza = new PizzaCompo(rs.getString("nom"), rs.getString("pate"), rs.getDouble("prixBase"));
+            query = "select * from pizzas_ingredient where nom = '" + pizza.getNom() + "';";
+            ResultSet rs2 = con.createStatement().executeQuery(query);
+            while (rs2.next()) {
+                int id = rs2.getInt("id");
+                Ingredient ingredient = new IngredientDAODatabase().findById(id);
+                pizza.addIngredient(ingredient);
+            }        
+            con.close();
+            return pizza;
+        } catch (Exception e) {
+            System.out.println(e.getMessage());
+        }
+        return null;
+    }
+
+    public List<Pizza> findAll() {
+        List<Pizza> pizzas = new ArrayList<Pizza>();
+        try {
+            Connection con = ds.getConnection();
+            String query = "select * from pizzas;";
+            ResultSet rs = con.createStatement().executeQuery(query);
+            while (rs.next()) {
+                Pizza pizza = new Pizza(rs.getString("nom"), rs.getString("pate"), rs.getDouble("prixbase"));
+                pizzas.add(pizza);
+            }
+            con.close();
+            return pizzas;
+        } catch (Exception e) {
+            System.out.println(e.getMessage());
+        }
+        return null;
+    }
+
+    public double totalPrice(String name) {
+        try {
+            Connection con = ds.getConnection();
+            String query = "select * from pizzas where nom = '" + name + "';";
+            ResultSet rs = con.createStatement().executeQuery(query);
+            rs.next();
+            double total = rs.getDouble("prixbase");
+            query = "select sum(price) as price from ingredients, pizzas_ingredient as pi where pi.id = ingredients.id and pi.nom = '" + name + "';";
+            ResultSet rs2 = con.createStatement().executeQuery(query);
+            rs2.next();
+            total += rs2.getDouble("price");
+            con.close();
+            return total;
+        } catch (Exception e) {
+            System.out.println(e.getMessage());
+        }
+        return 0;
+    }
+
+    public void save(PizzaCompo pizzas) {
+        try {
+            Connection con = ds.getConnection();
+            String query = "insert into pizzas (nom, pate, prixbase) values ('" + pizzas.getNom() + "', '" + pizzas.getPate() + "', " + pizzas.getPrixBase() + ");";
+            con.createStatement().executeUpdate(query);
+
+            for (Ingredient ingredient : pizzas.getIngredients()) {
+                query = "insert into pizzas_ingredient values ('" + pizzas.getNom() + "', " + ingredient.getId() + ");";
+                con.createStatement().executeUpdate(query);
+            }
+            con.close();
+        } catch (Exception e) {
+            System.out.println(e.getMessage());
+        }
+    }
+
+    public void delete(String name) {
+        try {
+            Connection con = ds.getConnection();
+            String query = "delete from pizzas_ingredient where nom = '" + name + "';";
+            con.createStatement().executeUpdate(query);
+            query = "delete from pizzas where nom = '" + name + "';";
+            con.createStatement().executeUpdate(query);
+            con.close();
+        } catch (Exception e) {
+            System.out.println(e.getMessage());
+        }
+    }
+
+    public void deletePizzaIngredient(String name, int id) {
+        try {
+            Connection con = ds.getConnection();
+            String query = "delete from pizzas_ingredient where nom = '" + name + "' and id = " + id + ";";
+            con.createStatement().executeUpdate(query);
+            con.close();
+        } catch (Exception e) {
+            System.out.println(e.getMessage());
+        }
+    }
+
+    public void addPizzaIngredient(String name, int id) {
+        try {
+            Connection con = ds.getConnection();
+            String query = "insert into pizzas_ingredient values ('" + name + "', " + id + ");";
+            con.createStatement().executeUpdate(query);
+            con.close();
+        } catch (Exception e) {
+            System.out.println(e.getMessage());
+        }
+    }
+
+    public void update(PizzaCompo pizza) {
+        try {
+            Connection con = ds.getConnection();
+            String query = "update pizzas set pate = '" + pizza.getPate() + "', prixbase = " + pizza.getPrixBase() + " where nom = '" + pizza.getNom() + "';";
+            con.createStatement().executeUpdate(query);
+            con.close();
+        } catch (Exception e) {
+            System.out.println(e.getMessage());
+        }
+    }
+
+}
diff --git a/WEB-INF/src/dto/Commande.java b/WEB-INF/src/dto/Commande.java
new file mode 100644
index 0000000..229f84c
--- /dev/null
+++ b/WEB-INF/src/dto/Commande.java
@@ -0,0 +1,32 @@
+package dto;
+
+import java.util.Date;
+public class Commande {
+
+    private int id;
+    private String nom;
+    private Date date;
+
+    public Commande() {
+    }
+
+    public Commande(int id, String nom, Date date) {
+        this.id = id;
+        this.nom = nom;
+        this.date = date;
+    }
+
+    public int getId() {
+        return id;
+    }
+
+    public String getNom() {
+        return nom;
+    }
+
+    public Date getDate() {
+        return date;
+    }
+    
+
+}
diff --git a/WEB-INF/src/dto/CommandeDetail.java b/WEB-INF/src/dto/CommandeDetail.java
new file mode 100644
index 0000000..8361f71
--- /dev/null
+++ b/WEB-INF/src/dto/CommandeDetail.java
@@ -0,0 +1,38 @@
+package dto;
+
+import java.util.Date;
+import java.util.List;
+import java.util.ArrayList;
+
+public class CommandeDetail extends Commande{
+       
+    private List<PizzaCompo> pizzas;
+
+    public CommandeDetail() {
+        super();
+    }
+
+    public CommandeDetail(int id, String nom, Date date, List<PizzaCompo> pizzas) {
+        super(id, nom, date);
+        this.pizzas = pizzas;
+    }
+
+    public CommandeDetail(int id,String nom, Date date) {
+        super(id, nom, date);
+        this.pizzas = new ArrayList<PizzaCompo>();  
+    }
+    
+
+    public void addPizza(PizzaCompo pizza) {
+        this.pizzas.add(pizza);
+    }
+
+    public void removePizza(PizzaCompo pizza) {
+        this.pizzas.remove(pizza);
+    }
+
+    public List<PizzaCompo> getPizzas() {
+        return pizzas;
+    }
+}
+
diff --git a/WEB-INF/src/dto/Ingredient.java b/WEB-INF/src/dto/Ingredient.java
new file mode 100644
index 0000000..590dcc2
--- /dev/null
+++ b/WEB-INF/src/dto/Ingredient.java
@@ -0,0 +1,56 @@
+package dto;
+
+/*Un ingrédient est caractérisé par 
+- un identifiant id de type int 
+- un name de stype String et  */
+
+public class Ingredient {
+    private int id;
+    private String name;
+    private Double price;
+
+    public Ingredient() {
+    }
+
+    public Ingredient(int id, String name, Double price) {
+        this.id = id;
+        this.name = name;
+        this.price = price;       
+    }
+
+    public Ingredient(int id) {
+        this.id = id;
+        this.name = null;
+        this.price = null;
+    }
+
+    public int getId() {
+        return id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+    public Double getPrice() {
+        return price;
+    }
+
+    public void setPrice(Double price) {
+        this.price = price;
+    }
+
+    @Override
+    public String toString() {
+        return "Ingredient [id=" + id + ", name=" + name + ", price=" + price + "]";
+    }
+    
+    
+}
diff --git a/WEB-INF/src/dto/Pizza.java b/WEB-INF/src/dto/Pizza.java
new file mode 100644
index 0000000..daac470
--- /dev/null
+++ b/WEB-INF/src/dto/Pizza.java
@@ -0,0 +1,41 @@
+package dto;
+
+
+public class Pizza {
+    private String nom;
+    private String pate;
+    private Double prixBase;
+
+    public Pizza() {
+    }
+
+    public Pizza(String nom, String pate, Double prixBase) {
+        this.nom = nom;
+        this.pate = pate;
+        this.prixBase = prixBase;
+    }
+    public String getNom() {
+        return nom;
+    }
+
+    public String getPate() {
+        return pate;
+    }
+
+    public Double getPrixBase() {
+        return prixBase;
+    }
+
+    public void setNom(String nom) {
+        this.nom = nom;
+    }
+
+    public void setPate(String pate) {
+        this.pate = pate;
+    }
+
+    public void setPrixBase(Double prixBase) {
+        this.prixBase = prixBase;
+    }
+    
+}
diff --git a/WEB-INF/src/dto/PizzaCompo.java b/WEB-INF/src/dto/PizzaCompo.java
new file mode 100644
index 0000000..d97db67
--- /dev/null
+++ b/WEB-INF/src/dto/PizzaCompo.java
@@ -0,0 +1,48 @@
+package dto;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class PizzaCompo extends Pizza {
+
+    private List<Ingredient> ingredients = new ArrayList<Ingredient>();
+
+    public PizzaCompo() {
+        super();
+    }
+
+    public PizzaCompo(String nom, String pate, Double prixBase, Ingredient ingredients) {
+        super(nom, pate, prixBase);
+        this.ingredients.add(ingredients);
+    }
+
+    
+
+    public PizzaCompo(String nom, String pate, Double prixBase) {
+        super(nom, pate, prixBase);
+        this.ingredients = new ArrayList<Ingredient>();
+    }
+    public Double totalPrice() {
+        Double total = super.getPrixBase() ;
+        for (Ingredient ingredient : ingredients) {
+            total += ingredient.getPrice();
+        }
+        return total;
+    }
+    public List<Ingredient> getIngredients() {
+        return ingredients;
+    }
+
+    public void setIngredients(List<Ingredient> ingredients) {
+        this.ingredients = ingredients;
+    }
+
+    public void addIngredient(Ingredient ingredient) {
+        this.ingredients.add(ingredient);
+    }
+
+    public void removeIngredient(Ingredient ingredient) {
+        this.ingredients.remove(ingredient);
+    }
+    
+}
diff --git a/WEB-INF/src/utils/DS.java b/WEB-INF/src/utils/DS.java
new file mode 100644
index 0000000..0364d1b
--- /dev/null
+++ b/WEB-INF/src/utils/DS.java
@@ -0,0 +1,29 @@
+package utils;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+
+public class DS {
+
+    private String url ="jdbc:postgresql://psqlserv/but2";
+    private String login ="antoinegaienieretu";
+    private String password ="moi";
+    private String driver = "org.postgresql.Driver";
+
+    public DS() {
+        try {
+            Class.forName(driver);
+        } catch (ClassNotFoundException e) {
+            e.getMessage();
+        }
+    }
+
+    public Connection getConnection() throws Exception {
+        return DriverManager.getConnection(url, login, password);
+    }
+
+    public void closeConnection(Connection con) throws Exception {
+        con.close();
+    }
+
+}
\ No newline at end of file
-- 
GitLab