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