From bac4d4f0ff01cfaeebd2ce32f3a8d2c8c6b576d0 Mon Sep 17 00:00:00 2001 From: Sacha LEPAGE <lepages@ayou16.iut-infobio.priv.univ-lille1.fr> Date: Tue, 9 Mar 2021 11:58:10 +0100 Subject: [PATCH] commandes --- Commande.md | 38 + Pizza.md | 29 + Pizza.md~ | 29 + bin/.gitignore | 212 ++++ bin/.project | 23 + .../org.eclipse.core.resources.prefs | 2 + bin/README.md | 984 ++++++++++++++++++ bin/architecture.svg | 409 ++++++++ bin/pom.xml | 163 +++ .../java/fr/ulille/iut/pizzaland/ApiV1.class | Bin 0 -> 1384 bytes .../fr/ulille/iut/pizzaland/BDDFactory.class | Bin 0 -> 5050 bytes .../java/fr/ulille/iut/pizzaland/Main.class | Bin 0 -> 2663 bytes .../fr/ulille/iut/pizzaland/beans/.gitkeep | 0 .../java/fr/ulille/iut/pizzaland/dao/.gitkeep | 0 .../iut/pizzaland/dao/UUIDArgument.class | Bin 0 -> 1839 bytes .../pizzaland/dao/UUIDArgumentFactory.class | Bin 0 -> 1797 bytes .../iut/pizzaland/dto/IngredientDto.class | Bin 0 -> 664 bytes .../resources/BDDClearRessource.class | Bin 0 -> 1375 bytes .../resources/IngredientResource.class | Bin 0 -> 2250 bytes bin/src/main/resources/ingredients.json | 14 + bin/src/main/resources/logging.properties | 4 + .../pizzaland/IngredientResourceTest.class | Bin 0 -> 3410 bytes bin/src/test/resources/logging.properties | 4 + bin/target/classes/META-INF/MANIFEST.MF | 5 + .../ulille/iut/pizzaland/beans/Commande.java | 120 +++ .../ulille/iut/pizzaland/dao/CommandeDao.java | 99 ++ .../iut/pizzaland/dto/CommandeCreateDto.java | 24 + .../ulille/iut/pizzaland/dto/CommandeDto.java | 38 + .../iut/pizzaland/dto/PizzaCreateDto.java | 2 - .../resources/CommandeRessource.java | 108 ++ .../pizzaland/resources/PizzaRessource.java | 13 +- .../iut/pizzaland/CommandeRessourceTest.java | 193 ++++ .../iut/pizzaland/IngredientResourceTest.java | 18 +- .../iut/pizzaland/PizzaRessourceTest.java | 22 +- target/classes/META-INF/MANIFEST.MF | 5 + .../pizzaland_jdbi/pom.properties | 7 + .../pizzaland_jdbi/pom.xml | 163 +++ .../fr/ulille/iut/pizzaland/ApiV1$1.class | Bin 0 -> 609 bytes .../fr/ulille/iut/pizzaland/ApiV1.class | Bin 0 -> 3039 bytes .../fr/ulille/iut/pizzaland/BDDFactory.class | Bin 0 -> 4503 bytes .../fr/ulille/iut/pizzaland/Main.class | Bin 0 -> 2368 bytes .../fr/ulille/iut/pizzaland/beans/.gitkeep | 0 .../ulille/iut/pizzaland/beans/Commande.class | Bin 0 -> 4384 bytes .../iut/pizzaland/beans/Ingredient.class | Bin 0 -> 3482 bytes .../fr/ulille/iut/pizzaland/beans/Pizza.class | Bin 0 -> 4171 bytes .../fr/ulille/iut/pizzaland/dao/.gitkeep | 0 .../iut/pizzaland/dao/CommandeDao.class | Bin 0 -> 4937 bytes .../iut/pizzaland/dao/IngredientDao.class | Bin 0 -> 1504 bytes .../ulille/iut/pizzaland/dao/PizzaDao.class | Bin 0 -> 4816 bytes .../iut/pizzaland/dao/UUIDArgument.class | Bin 0 -> 947 bytes .../pizzaland/dao/UUIDArgumentFactory.class | Bin 0 -> 2057 bytes .../iut/pizzaland/dto/CommandeCreateDto.class | Bin 0 -> 774 bytes .../iut/pizzaland/dto/CommandeDto.class | Bin 0 -> 1540 bytes .../pizzaland/dto/IngredientCreateDto.class | Bin 0 -> 588 bytes .../iut/pizzaland/dto/IngredientDto.class | Bin 0 -> 812 bytes .../iut/pizzaland/dto/PizzaCreateDto.class | Bin 0 -> 573 bytes .../ulille/iut/pizzaland/dto/PizzaDto.class | Bin 0 -> 1380 bytes .../resources/BDDClearRessource.class | Bin 0 -> 647 bytes .../resources/CommandeRessource.class | Bin 0 -> 6342 bytes .../resources/IngredientResource.class | Bin 0 -> 6739 bytes .../pizzaland/resources/PizzaRessource.class | Bin 0 -> 6238 bytes target/classes/ingredients.json | 14 + target/classes/logging.properties | 4 + .../compile/default-compile/createdFiles.lst | 0 .../compile/default-compile/inputFiles.lst | 20 + .../default-testCompile/createdFiles.lst | 0 .../default-testCompile/inputFiles.lst | 2 + ...le.iut.pizzaland.CommandeRessourceTest.xml | 75 ++ ...e.iut.pizzaland.IngredientResourceTest.xml | 75 ++ ...lille.iut.pizzaland.PizzaRessourceTest.xml | 75 ++ ...le.iut.pizzaland.CommandeRessourceTest.txt | 4 + ...e.iut.pizzaland.IngredientResourceTest.txt | 4 + ...lille.iut.pizzaland.PizzaRessourceTest.txt | 4 + .../pizzaland/CommandeRessourceTest$1.class | Bin 0 -> 768 bytes .../iut/pizzaland/CommandeRessourceTest.class | Bin 0 -> 8040 bytes .../pizzaland/IngredientResourceTest$1.class | Bin 0 -> 776 bytes .../pizzaland/IngredientResourceTest.class | Bin 0 -> 7582 bytes .../iut/pizzaland/PizzaRessourceTest$1.class | Bin 0 -> 752 bytes .../iut/pizzaland/PizzaRessourceTest.class | Bin 0 -> 7282 bytes target/test-classes/logging.properties | 4 + 80 files changed, 2978 insertions(+), 31 deletions(-) create mode 100644 Commande.md create mode 100644 Pizza.md create mode 100644 Pizza.md~ create mode 100644 bin/.gitignore create mode 100644 bin/.project create mode 100644 bin/.settings/org.eclipse.core.resources.prefs create mode 100644 bin/README.md create mode 100644 bin/architecture.svg create mode 100644 bin/pom.xml create mode 100644 bin/src/main/java/fr/ulille/iut/pizzaland/ApiV1.class create mode 100644 bin/src/main/java/fr/ulille/iut/pizzaland/BDDFactory.class create mode 100644 bin/src/main/java/fr/ulille/iut/pizzaland/Main.class create mode 100644 bin/src/main/java/fr/ulille/iut/pizzaland/beans/.gitkeep create mode 100644 bin/src/main/java/fr/ulille/iut/pizzaland/dao/.gitkeep create mode 100644 bin/src/main/java/fr/ulille/iut/pizzaland/dao/UUIDArgument.class create mode 100644 bin/src/main/java/fr/ulille/iut/pizzaland/dao/UUIDArgumentFactory.class create mode 100644 bin/src/main/java/fr/ulille/iut/pizzaland/dto/IngredientDto.class create mode 100644 bin/src/main/java/fr/ulille/iut/pizzaland/resources/BDDClearRessource.class create mode 100644 bin/src/main/java/fr/ulille/iut/pizzaland/resources/IngredientResource.class create mode 100644 bin/src/main/resources/ingredients.json create mode 100644 bin/src/main/resources/logging.properties create mode 100644 bin/src/test/java/fr/ulille/iut/pizzaland/IngredientResourceTest.class create mode 100644 bin/src/test/resources/logging.properties create mode 100644 bin/target/classes/META-INF/MANIFEST.MF create mode 100644 src/main/java/fr/ulille/iut/pizzaland/beans/Commande.java create mode 100644 src/main/java/fr/ulille/iut/pizzaland/dao/CommandeDao.java create mode 100644 src/main/java/fr/ulille/iut/pizzaland/dto/CommandeCreateDto.java create mode 100644 src/main/java/fr/ulille/iut/pizzaland/dto/CommandeDto.java create mode 100644 src/main/java/fr/ulille/iut/pizzaland/resources/CommandeRessource.java create mode 100644 src/test/java/fr/ulille/iut/pizzaland/CommandeRessourceTest.java create mode 100644 target/classes/META-INF/MANIFEST.MF create mode 100644 target/classes/META-INF/maven/fr.ulille.iut.pizzaland/pizzaland_jdbi/pom.properties create mode 100644 target/classes/META-INF/maven/fr.ulille.iut.pizzaland/pizzaland_jdbi/pom.xml create mode 100644 target/classes/fr/ulille/iut/pizzaland/ApiV1$1.class create mode 100644 target/classes/fr/ulille/iut/pizzaland/ApiV1.class create mode 100644 target/classes/fr/ulille/iut/pizzaland/BDDFactory.class create mode 100644 target/classes/fr/ulille/iut/pizzaland/Main.class create mode 100644 target/classes/fr/ulille/iut/pizzaland/beans/.gitkeep create mode 100644 target/classes/fr/ulille/iut/pizzaland/beans/Commande.class create mode 100644 target/classes/fr/ulille/iut/pizzaland/beans/Ingredient.class create mode 100644 target/classes/fr/ulille/iut/pizzaland/beans/Pizza.class create mode 100644 target/classes/fr/ulille/iut/pizzaland/dao/.gitkeep create mode 100644 target/classes/fr/ulille/iut/pizzaland/dao/CommandeDao.class create mode 100644 target/classes/fr/ulille/iut/pizzaland/dao/IngredientDao.class create mode 100644 target/classes/fr/ulille/iut/pizzaland/dao/PizzaDao.class create mode 100644 target/classes/fr/ulille/iut/pizzaland/dao/UUIDArgument.class create mode 100644 target/classes/fr/ulille/iut/pizzaland/dao/UUIDArgumentFactory.class create mode 100644 target/classes/fr/ulille/iut/pizzaland/dto/CommandeCreateDto.class create mode 100644 target/classes/fr/ulille/iut/pizzaland/dto/CommandeDto.class create mode 100644 target/classes/fr/ulille/iut/pizzaland/dto/IngredientCreateDto.class create mode 100644 target/classes/fr/ulille/iut/pizzaland/dto/IngredientDto.class create mode 100644 target/classes/fr/ulille/iut/pizzaland/dto/PizzaCreateDto.class create mode 100644 target/classes/fr/ulille/iut/pizzaland/dto/PizzaDto.class create mode 100644 target/classes/fr/ulille/iut/pizzaland/resources/BDDClearRessource.class create mode 100644 target/classes/fr/ulille/iut/pizzaland/resources/CommandeRessource.class create mode 100644 target/classes/fr/ulille/iut/pizzaland/resources/IngredientResource.class create mode 100644 target/classes/fr/ulille/iut/pizzaland/resources/PizzaRessource.class create mode 100644 target/classes/ingredients.json create mode 100644 target/classes/logging.properties create mode 100644 target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst create mode 100644 target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst create mode 100644 target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst create mode 100644 target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst create mode 100644 target/surefire-reports/TEST-fr.ulille.iut.pizzaland.CommandeRessourceTest.xml create mode 100644 target/surefire-reports/TEST-fr.ulille.iut.pizzaland.IngredientResourceTest.xml create mode 100644 target/surefire-reports/TEST-fr.ulille.iut.pizzaland.PizzaRessourceTest.xml create mode 100644 target/surefire-reports/fr.ulille.iut.pizzaland.CommandeRessourceTest.txt create mode 100644 target/surefire-reports/fr.ulille.iut.pizzaland.IngredientResourceTest.txt create mode 100644 target/surefire-reports/fr.ulille.iut.pizzaland.PizzaRessourceTest.txt create mode 100644 target/test-classes/fr/ulille/iut/pizzaland/CommandeRessourceTest$1.class create mode 100644 target/test-classes/fr/ulille/iut/pizzaland/CommandeRessourceTest.class create mode 100644 target/test-classes/fr/ulille/iut/pizzaland/IngredientResourceTest$1.class create mode 100644 target/test-classes/fr/ulille/iut/pizzaland/IngredientResourceTest.class create mode 100644 target/test-classes/fr/ulille/iut/pizzaland/PizzaRessourceTest$1.class create mode 100644 target/test-classes/fr/ulille/iut/pizzaland/PizzaRessourceTest.class create mode 100644 target/test-classes/logging.properties diff --git a/Commande.md b/Commande.md new file mode 100644 index 0000000..2ec1d58 --- /dev/null +++ b/Commande.md @@ -0,0 +1,38 @@ +## Développement d'une ressource *pizza* + +### API et représentation des données + +| URI | Opération | MIME | Requête | Réponse | +| :-------------- | :---------- | :--------------------------------------------- | :-- | :---------------------------- | +| /commande | GET | <-application/json<br><-application/xml | | liste des commandes (C2) | +| /commande/{id} | GET | <-application/json<br><-application/xml | | une commande ou 404 | +| /commande/{id}/name | GET | <-text/plain | | le nom de l'acheteur ou 404 | +| /commande/{id}/pizzas| GET | <-text/plain | | la liste des pizas ou 404 | +| /commande | POST | <-/->application/json<br>->application/x-www-form-urlencoded | Commande(C2) | Nouvelle commande(C2)<br>409 si la commande existe déjà (même nom) | +| /commande/{id} | DELETE | | | | + + +Une commande comporte uniquement une liste des pizzas, un identifiant, un nom et un prénom. Sa +représentation JSON (C2) prendra donc la forme suivante : + + { + "id": "f38806a8-7c85-49ef-980c-149dcd81d450", + "nom": "Jean", + "prénom":"Paul" + [{[{"id":"f38806a8-7c85-49ef-980c-149dcd81d200", "nom":"Saumon"}], + "id": "f38806a8-7c85-49ef-980c-149dcd81d306", + "name": "Norvegienne"}], + } + +Lors de la création, l'identifiant n'est pas connu car il sera fourni +par le JavaBean qui représente une commande. Aussi on aura une +représentation JSON (C1) qui comporte uniquement le nom et le prénom et la liste des pizzas : + + { + "nom": "Jean", + "prénom":"Paul" + [{[{"id":"f38806a8-7c85-49ef-980c-149dcd81d200", "nom":"Saumon"}], + "id": "f38806a8-7c85-49ef-980c-149dcd81d306", + "name": "Norvegienne"}], + } + diff --git a/Pizza.md b/Pizza.md new file mode 100644 index 0000000..937c190 --- /dev/null +++ b/Pizza.md @@ -0,0 +1,29 @@ + | Réponse | +| :--------------| :---------- | :--------------------------------------------- | :-- | :---------------------------- | +| /pizza | GET | <-application/json<br><-application/xml | | liste des pizzas (P2) | +| /pizza/{id} | GET | <-application/json<br><-application/xml | | une pizza (P2) ou 404 | +| /pizz/{id}/name| GET | <-text/plain | | le nom de le pizza ou 404 | +| /pizz/{id}/name| GET | <-text/plain | | la liste d'ingrédients ou 404 | +| /pizza | POST | <-/->application/json<br>->application/x-www-form-urlencoded | Pizza(P1) | Nouvelle pizza(P2)<br>409 si la pizza existe déjà (même nom) | +| /pizza/{id} | DELETE | | | | + + +Une pizza comporte uniquement une liste d'ingrédients, un identifiant et un nom. Sa +représentation JSON (P2) prendra donc la forme suivante : + + { + "[{"id": "f38806a8-7c85-49ef-980c-149dcd81d306", + "name": "Saumon"}], + "id": "f38806a8-7c85-49ef-980c-149dcd81d450", + "name": "Norvegienne" + } + +Lors de la création, l'identifiant n'est pas connu car il sera fourni +par le JavaBean qui représente un ingrédient. Aussi on aura une +représentation JSON (I1) qui comporte uniquement le nom et la liste des ingrédients : + + { + "[{"id": "f38806a8-7c85-49ef-980c-149dcd81d306", + "name": "Saumon"}], + "name": "Norveginne" + } diff --git a/Pizza.md~ b/Pizza.md~ new file mode 100644 index 0000000..05f5960 --- /dev/null +++ b/Pizza.md~ @@ -0,0 +1,29 @@ + | Réponse | +| :--------------| :---------- | :--------------------------------------------- | :-- | :---------------------------- | +| /pizza | GET | <-application/json<br><-application/xml | | liste des pizzas (P2) | +| /pizza/{id} | GET | <-application/json<br><-application/xml | | une pizza (P2) ou 404 | +| /pizz/{id}/name| GET | <-text/plain | | le nom de le pizza ou 404 | +| /pizz/{id}/name| GET | <-text/plain | | la liste d'ingrédients ou 404 | +| /pizza | POST | <-/->application/json<br>->application/x-www-form-urlencoded | Pizza(P1) | Nouvelle pizza(P2)<br>409 si la pizza existe déjà (même nom) | +| /pizza/{id} | DELETE | | | | + + +Une pizza comporte uniquement une liste d'ingrédients, un identifiant et un nom. Sa +représentation JSON (P2) prendra donc la forme suivante : + + { + "[{"id": "f38806a8-7c85-49ef-980c-149dcd81d306", + "name": "mozzarella"}], + "id": "f38806a8-7c85-49ef-980c-149dcd81d450", + "name": "Reine" + } + +Lors de la création, l'identifiant n'est pas connu car il sera fourni +par le JavaBean qui représente un ingrédient. Aussi on aura une +représentation JSON (I1) qui comporte uniquement le nom et la liste des ingrédients : + + { + "[{"id": "f38806a8-7c85-49ef-980c-149dcd81d306", + "name": "mozzarella"}], + "name": "Reine" + } diff --git a/bin/.gitignore b/bin/.gitignore new file mode 100644 index 0000000..67516d3 --- /dev/null +++ b/bin/.gitignore @@ -0,0 +1,212 @@ + +# Created by https://www.gitignore.io/api/git,java,emacs,maven,java-web,visualstudiocode +# Edit at https://www.gitignore.io/?templates=git,java,emacs,maven,java-web,visualstudiocode + +### Emacs ### +# -*- mode: gitignore; -*- +*~ +\#*\# +/.emacs.desktop +/.emacs.desktop.lock +*.elc +auto-save-list +tramp +.\#* + +# Org-mode +.org-id-locations +*_archive + +# flymake-mode +*_flymake.* + +# eshell files +/eshell/history +/eshell/lastdir + +# elpa packages +/elpa/ + +# reftex files +*.rel + +# AUCTeX auto folder +/auto/ + +# cask packages +.cask/ +dist/ + +# Flycheck +flycheck_*.el + +# server auth directory +/server/ + +# projectiles files +.projectile + +# directory configuration +.dir-locals.el + +# network security +/network-security.data + + +### Git ### +# Created by git for backups. To disable backups in Git: +# $ git config --global mergetool.keepBackup false +*.orig + +# Created by git when using merge tools for conflicts +*.BACKUP.* +*.BASE.* +*.LOCAL.* +*.REMOTE.* +*_BACKUP_*.txt +*_BASE_*.txt +*_LOCAL_*.txt +*_REMOTE_*.txt + +### Java ### +# Compiled class file +*.class + +# Log file +*.log + +# BlueJ files +*.ctxt + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.jar +*.war +*.nar +*.ear +*.zip +*.tar.gz +*.rar + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + +### Java-Web ### +## ignoring target file +target/ + +### Maven ### +pom.xml.tag +pom.xml.releaseBackup +pom.xml.versionsBackup +pom.xml.next +release.properties +dependency-reduced-pom.xml +buildNumber.properties +.mvn/timing.properties +.mvn/wrapper/maven-wrapper.jar +.flattened-pom.xml + +### VisualStudioCode ### +.vscode/ +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +.classpath + +### VisualStudioCode Patch ### +# Ignore all local history of files +.history + +# End of https://www.gitignore.io/api/git,java,emacs,maven,java-web,visualstudiocode + + +# Created by https://www.gitignore.io/api/eclipse,visualstudiocode +# Edit at https://www.gitignore.io/?templates=eclipse,visualstudiocode + +### Eclipse ### +.metadata +bin/ +tmp/ +*.tmp +*.bak +*.swp +*~.nib +local.properties +.settings/ +.loadpath +.recommenders + +# External tool builders +.externalToolBuilders/ + +# Locally stored "Eclipse launch configurations" +*.launch + +# PyDev specific (Python IDE for Eclipse) +*.pydevproject + +# CDT-specific (C/C++ Development Tooling) +.cproject + +# CDT- autotools +.autotools + +# Java annotation processor (APT) +.factorypath + +# PDT-specific (PHP Development Tools) +.buildpath + +# sbteclipse plugin +.target + +# Tern plugin +.tern-project + +# TeXlipse plugin +.texlipse + +# STS (Spring Tool Suite) +.springBeans + +# Code Recommenders +.recommenders/ + +# Annotation Processing +.apt_generated/ + +# Scala IDE specific (Scala & Java development for Eclipse) +.cache-main +.scala_dependencies +.worksheet + +### Eclipse Patch ### +# Eclipse Core +.project + +# JDT-specific (Eclipse Java Development Tools) +.classpath + +# Annotation Processing +.apt_generated + +.sts4-cache/ + +### VisualStudioCode ### +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json + +### VisualStudioCode Patch ### +# Ignore all local history of files +.history +.project +.settings +.classpath +# End of https://www.gitignore.io/api/eclipse,visualstudiocode diff --git a/bin/.project b/bin/.project new file mode 100644 index 0000000..62cd996 --- /dev/null +++ b/bin/.project @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>m4102_tp3</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.m2e.core.maven2Builder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.jdt.core.javanature</nature> + <nature>org.eclipse.m2e.core.maven2Nature</nature> + </natures> +</projectDescription> diff --git a/bin/.settings/org.eclipse.core.resources.prefs b/bin/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..99f26c0 --- /dev/null +++ b/bin/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/<project>=UTF-8 diff --git a/bin/README.md b/bin/README.md new file mode 100644 index 0000000..0c7fa50 --- /dev/null +++ b/bin/README.md @@ -0,0 +1,984 @@ +# Projet REST avec Jersey + +## Récupération du projet initial +Pour récupérer le projet vous pouvez utiliser la commande `git clone +https://gitlab.univ-lille.fr/yvan.peter/m4102_tp3.git` + +L'arborescence ci-dessous vous montre le contenu du projet qui vous +servira de point de départ. Maven est configuré grâce au fichier +`pom.xml` qui permet entre autre de spécifier les dépendances du +projet. + +La classe `ApiV1` sera le point d'entrée de notre application REST qui +permet de configurer le chemin de l'URI (`@ApplicationPath`) ainsi que +les paquetages Java qui contiennent les ressources. + +~~~ +. +├── architecture.svg +├── pom.xml +├── README.md +└── src + ├── main + │ ├── java + │ │ └── fr + │ │ └── ulille + │ │ └── iut + │ │ └── pizzaland + │ │ ├── ApiV1.java + │ │ ├── BDDFactory.java + │ │ ├── beans + │ │ ├── dao + │ │ │ ├── UUIDArgumentFactory.java + │ │ │ └── UUIDArgument.java + │ │ ├── dto + │ │ │ └── IngredientDto.java + │ │ ├── Main.java + │ │ └── resources + │ │ ├── BDDClearRessource.java + │ │ └── IngredientResource.java + │ └── resources + │ ├── ingredients.json + │ └── logging.properties + └── test + ├── java + │ └── fr + │ └── ulille + │ └── iut + │ └── pizzaland + │ └── IngredientResourceTest.java + └── resources + └── logging.properties +~~~ + +## Développement d'une ressource *ingredients* + +### API et représentation des données + +Nous pouvons tout d'abord réfléchir à l'API REST que nous allons offrir pour la ressource *ingredients*. Celle-ci devrait répondre aux URI suivantes : + +| URI | Opération | MIME | Requête | Réponse | +| :----------------------- | :---------- | :--------------------------------------------- | :-- | :---------------------------------------------------- | +| /ingredients | GET | <-application/json<br><-application/xml | | liste des ingrédients (I2) | +| /ingredients/{id} | GET | <-application/json<br><-application/xml | | un ingrédient (I2) ou 404 | +| /ingredients/{id}/name | GET | <-text/plain | | le nom de l'ingrédient ou 404 | +| /ingredients | POST | <-/->application/json<br>->application/x-www-form-urlencoded | Ingrédient (I1) | Nouvel ingrédient (I2)<br>409 si l'ingrédient existe déjà (même nom) | +| /ingredients/{id} | DELETE | | | | + + +Un ingrédient comporte uniquement un identifiant et un nom. Sa +représentation JSON (I2) prendra donc la forme suivante : + + { + "id": "f38806a8-7c85-49ef-980c-149dcd81d306", + "name": "mozzarella" + } + +Lors de la création, l'identifiant n'est pas connu car il sera fourni +par le JavaBean qui représente un ingrédient. Aussi on aura une +représentation JSON (I1) qui comporte uniquement le nom : + + { "name": "mozzarella" } + +### Architecture logicielle de la solution + +La figure ci-dessous présente l'architecture globale qui devra être +mise en place pour notre développement : + + + +#### JavaBeans +JavaBean est un standard pour les objets Java permettant de les créer +et de les initialiser et de les manipuler facilement. Pour cela ces +objets doivent respecter un ensemble de conventions : + + - la classe est sérialisable + - elle fournit au moins un constructeur vide + - les attributs privés de la classe sont manipulables via des + méthodes publiques **get**_Attribut_ et **set**_Attribut_ + +Les DTO et la classe `Ingredient`décrits dans la suite sont des +JavaBeans. + +#### Data Transfer Object (DTO) +Les DTO correspondent à la représentation des données qui sera +transportée par HTTP. Ce sont des Javabeans qui possèdent les même +propriétés que la représentation (avec les getter/setter +correspondants). + +Jersey utilisera les *setter* pour initialiser l'objet à partir +de la représentation JSON ou XML et les *getter* pour créer la +représentation correspondante. + +#### Data Access Object (DAO) +Le DAO permet de faire le lien entre la représentation objet et le +contenu de la base de données. + +Nous utiliserons la [librairie JDBI](http://jdbi.org/) qui permet +d'associer une interface à des requêtes SQL. +La classe `BDDFactory` qui vous est fournie permet un accès facilité +aux fonctionnalités de JDBI. + +#### La représentation des données manipulées par la ressource +La classe `Ingredient` est un JavaBean qui représente ce qu'est un +ingrédient. Elle porte des méthodes pour passer de cette +représentation aux DTO. + +Cela permet de découpler l'implémentation de la ressource qui traite +les requêtes HTTP et la donnée manipulée. + +Cette classe pourrait +porter des comportements liés à cette donnée (par ex. calcul de TVA). + +## Mise en œuvre + +### Une première implémentation : récupérer les ingrédients existants +Nous allons réaliser un développement dirigé par les tests. Dans un +premier temps, nous allons commencer par un test qui récupère une +liste d'ingrédients vide qui sera matérialisée par un tableau JSON +vide `[]`. + +Le code suivant qui se trouve dans la classe `IngredientResourceTest` +montre la mise en place de l'environnement (`configure()`) et l'amorce +d'un premier test. + +~~~java +public class IngredientResourceTest extends JerseyTest { + + @Override + protected Application configure() { + return new ApiV1(); + } + + @Test + public void testGetEmptyList() { + Response response = target("/ingredients").request().get(); + + // Vérification de la valeur de retour (200) + assertEquals(Response.Status.OK.getStatusCode(), response.getStatus()); + + // Vérification de la valeur retournée (liste vide) + List<IngredientDto> ingredients; + ingredients = response.readEntity(new GenericType<List<IngredientDto>>(){}); + + assertEquals(0, ingredients.size()); + } +~~~ + +En héritant de JerseyTest, votre classe de test se comporte comme un +[`Client` +JAX-RS](https://docs.oracle.com/javaee/7/api/jakarta/ws/rs/client/Client.html). La +méthode `target()` notamment permet de préparer une requête sur une +URI particulière. + + +Vous pouvez compiler votre code ainsi que les tests au moyen +des commandes `mvn compile` et `mvn test-compile`. La compilation du +code et des tests se fera automatiquement si nécessaire quand vous +faites un `mvn test`. + +Pour pouvoir compiler ce premier test, il faut au minimum fournir le +DTO `IngredientDto`. +Pour commencer, on se contentera de l'implémentation minimale +suivante : + +~~~java +package fr.ulille.iut.pizzaland.dto; + + public class IngredientDto { + + public IngredientDto() { + } +} +~~~ + +Pour réussir, ce premier test, nous allons mettre en place la +ressource `IngredientResource`. + +Une première implémentation de la ressource pourra avoir la forme +suivante : + +~~~java +@Path("/ingredients") +public class IngredientResource { + + @Context + public UriInfo uriInfo; + + public IngredientResource() { + } + + @GET + public List<IngredientDto> getAll() { + + return new ArrayList<IngredientDto>(); + } +} +~~~ + +Avec cette première implémentation, on va pouvoir tester notre +ressource : + +~~~ +$ mvn test + +Results : + +Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 +~~~ + +### Récupérer un ingrédient existant +Nous allons continuer en ajoutant la possibilité de récupérer un +ingrédient particulier à partir de son identifiant. +Pour cela voici un premier test qui permettra de vérifier cela : + +~~~java +import fr.ulille.iut.pizzaland.beans.Ingredient; + + @Test + public void testGetExistingIngredient() { + + Ingredient ingredient = new Ingredient(); + ingredient.setName("Chorizo"); + + Response response = target("/ingredients").path(ingredient.getId().toString()).request(MediaType.APPLICATION_JSON).get(); + + assertEquals(Response.Status.OK.getStatusCode(), response.getStatus()); + + Ingredient result = Ingredient.fromDto(response.readEntity(IngredientDto.class)); + assertEquals(ingredient, result); + } + } +~~~ + +Vous pourrez vérifier que le test échoue au moyen de la commande `mvn test` + +Afin de réussir ce test, nous devons compléter la classe IngredientDto +avec les getter/setter correspondant aux propriétés de l'object JSON. + +~~~java +public class IngredientDto { + private UUID id; + private String name; + + public IngredientDto() { + } + + public void setId(UUID id) { + this.id = id; + } + + public UUID getId() { + return id; + } + + public void setName(String name) { + this.name = name; + } + + public String getName() { + return name; + } +~~~ + +Du côté de la ressource, on peut fournir une première implémentation : + +~~~java +import jakarta.ws.rs.PathParam; +import fr.ulille.iut.pizzaland.beans.Ingredient; + + @GET + @Path("{id}") + public IngredientDto getOneIngredient(@PathParam("id") UUID id) { + Ingredient ingredient = new Ingredient(); + ingredient.setId(id); // juste pour avoir le même id pour le test + ingredient.setName("Chorizo"); + + return Ingredient.toDto(ingredient); + } +~~~ + +Pour cette méthode, nous avons introduit la classe `Ingredient`. Ce +JavaBean représente un ingrédient manipulé par la ressource. +Voici une implémentation pour cette classe : + +~~~java +package fr.ulille.iut.pizzaland.beans; + +import java.util.UUID; + +import fr.ulille.iut.pizzaland.dto.IngredientDto; + +public class Ingredient { + private UUID id = UUID.randomUUID(); + private String name; + + public Ingredient() { + } + + public Ingredient(String name) { + this.name = name; + } + + public Ingredient(UUID id, String name) { + this.id = id; + this.name = name; + } + + public void setId(UUID id) { + this.id = id; + } + + public UUID getId() { + return id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public static IngredientDto toDto(Ingredient i) { + IngredientDto dto = new IngredientDto(); + dto.setId(i.getId()); + dto.setName(i.getName()); + + return dto; + } + + public static Ingredient fromDto(IngredientDto dto) { + Ingredient ingredient = new Ingredient(); + ingredient.setId(dto.getId()); + ingredient.setName(dto.getName()); + + return ingredient; + } + + @Override + public String toString() { + return "Ingredient [id=" + id + ", name=" + name + "]"; + } +} +~~~ + +Les méthodes `toDto()` et `fromDto()` permettrons de faire la conversion entre le Bean `Ingredient` et le DTO qui représente ce qui sera transféré dans la requête/réponse HTTP. + +Pour les différents beans que nous allons écrire générez également les méthodes `hashCode()` et `equals()` et `toString()`. + +Le test devrait maintenant réussir : + +~~~ +$ mvn test +~~~ + +## Introduction de la persistence +Pour aller plus loin et mettre en place la création des ingrédients il +va falloir introduire la persistence. Pour cela, nous allons utiliser +la librairie JDBI qui permet d'associer un modèle objet aux tables de +base de données. + +Pour cela nous allons devoir implémenter le DAO (Data Access Object) `IngredientDao` : + +~~~java +package fr.ulille.iut.pizzaland.dao; + +import java.util.List; +import java.util.UUID; + +import org.jdbi.v3.sqlobject.config.RegisterBeanMapper; +import org.jdbi.v3.sqlobject.customizer.Bind; +import org.jdbi.v3.sqlobject.customizer.BindBean; +import org.jdbi.v3.sqlobject.statement.SqlQuery; +import org.jdbi.v3.sqlobject.statement.SqlUpdate; + +import fr.ulille.iut.pizzaland.beans.Ingredient; + +public interface IngredientDao { + + @SqlUpdate("CREATE TABLE IF NOT EXISTS ingredients (id VARCHAR(128) PRIMARY KEY, name VARCHAR UNIQUE NOT NULL)") + void createTable(); + + @SqlUpdate("DROP TABLE IF EXISTS ingredients") + void dropTable(); + + @SqlUpdate("INSERT INTO ingredients (id, name) VALUES (:id, :name)") + void insert(@BindBean Ingredient ingredient); + + @SqlUpdate("DELETE FROM ingredients WHERE id = :id") + void remove(@Bind("id") UUID id); + + @SqlQuery("SELECT * FROM ingredients WHERE name = :name") + @RegisterBeanMapper(Ingredient.class) + Ingredient findByName(@Bind("name") String name); + + @SqlQuery("SELECT * FROM ingredients") + @RegisterBeanMapper(Ingredient.class) + List<Ingredient> getAll(); + + @SqlQuery("SELECT * FROM ingredients WHERE id = :id") + @RegisterBeanMapper(Ingredient.class) + Ingredient findById(@Bind("id") UUID id); +} +~~~ + +JDBI fonctionne par annotations : + - Les annotations `sqlUpdate` et `SqlQuery` correspondent à des + requêtes SQL en modification ou non. + - `@RegisterBeanMapper` permet d'associer une classe à un résultat + (les champs de la table sont associés aux propriétés du bean). + - `@Bind` permet d'associer un paramètre de méthode à un paramètre nommé dans la requête SQL. + +Reprenons maintenant le code déjà écrit pour aller chercher les +ingrédients dans une base de données (nous utiliserons `Sqlite`). + +### Les tests avec la base de données +Nous allons utiliser le DAO pour insérer des données dans la table +afin de réaliser nos tests. Nous utiliserons une base de données de +tests qui est définie via la classe `BDDFactory`. + +Dans la classe `IngredientResourceTest`Les méthodes `setEnvUp` et `tearEnvDown` permettent de créer et +détruire la base de données entre chaque test. + +~~~java +import fr.ulille.iut.pizzaland.dao.IngredientDao; + +public class IngredientResourceTest extends JerseyTest { + private IngredientDao dao; + + @Override + protected Application configure() { + BDDFactory.setJdbiForTests(); + + return new ApiV1(); + } + + @Before + public void setEnvUp() { + dao = BDDFactory.buildDao(IngredientDao.class); + dao.createTable(); + } + + @After + public void tearEnvDown() throws Exception { + dao.dropTable(); + } + + @Test + public void testGetExistingIngredient() { + Ingredient ingredient = new Ingredient(); + ingredient.setName("Chorizo"); + dao.insert(ingredient); + + Response response = target("/ingredients").path(ingredient.getId().toString()).request(MediaType.APPLICATION_JSON).get(); + + assertEquals(Response.Status.OK.getStatusCode(), response.getStatus()); + + Ingredient result = Ingredient.fromDto(response.readEntity(IngredientDto.class)); + assertEquals(ingredient, result); +} +~~~ + +### La ressource avec la base de données + +~~~java +@Produces("application/json") +@Path("/ingredients") +public class IngredientResource { + private static final Logger LOGGER = Logger.getLogger(IngredientResource.class.getName()); + + private IngredientDao ingredients; + + @Context + public UriInfo uriInfo; + + public IngredientResource() { + ingredients = BDDFactory.buildDao(IngredientDao.class); + ingredients.createTable(); + } + + @GET + public List<IngredientDto> getAll() { + LOGGER.info("IngredientResource:getAll"); + + List<IngredientDto> l = ingredients.getAll().stream().map(Ingredient::toDto).collect(Collectors.toList()); + LOGGER.info(l.toString()); + return l; + } + + @GET + @Path("{id}") + @Produces({ "application/json", "application/xml" }) + public IngredientDto getOneIngredient(@PathParam("id") UUID id) { + LOGGER.info("getOneIngredient(" + id + ")"); + try { + Ingredient ingredient = ingredients.findById(id); + LOGGER.info(ingredient.toString()); + return Ingredient.toDto(ingredient); + } catch (Exception e) { + throw new WebApplicationException(Response.Status.NOT_FOUND); + } + } +} +~~~ + +### Les tests fonctionnent avec la base de données +Nous pouvons maintenant vérifier que la base fonctionne avec la base +de données : + +~~~ +$ mvn test + +Results : + +Tests run: 2, Failures: 0, Errors: 0, Skipped: 0 +~~~ + +## Complétons maintenant les différents tests +L'implémentation de la classe devrait fonctionner avec le test suivant +: + +~~~java + @Test + public void testGetNotExistingIngredient() { + Response response = target("/ingredients").path(UUID.randomUUID().toString()).request().get(); + assertEquals(Response.Status.NOT_FOUND.getStatusCode(),response.getStatus()); + } + +~~~ + +~~~ +$ mvn test + +Results : + +Tests run: 3, Failures: 0, Errors: 0, Skipped: 0 +~~~ + +### Implementation de la méthode POST +Il va falloir implémenter la méthode POST pour la création des +ingrédients. Commençons par les différents tests : création, création +de deux ingrédients identiques et création d'ingrédient sans nom. + +~~~java +import fr.ulille.iut.pizzaland.dto.IngredientCreateDto; + + @Test + public void testCreateIngredient() { + IngredientCreateDto ingredientCreateDto = new IngredientCreateDto(); + ingredientCreateDto.setName("Chorizo"); + + Response response = target("/ingredients").request().post(Entity.json(ingredientCreateDto)); + + assertEquals(Response.Status.CREATED.getStatusCode(), response.getStatus()); + + IngredientDto returnedEntity = response.readEntity(IngredientDto.class); + + assertEquals(target("/ingredients/" + returnedEntity.getId()).getUri(), response.getLocation()); + assertEquals(returnedEntity.getName(), ingredientCreateDto.getName()); + } + + @Test + public void testCreateSameIngredient() { + Ingredient ingredient = new Ingredient(); + ingredient.setName("Chorizo"); + dao.insert(ingredient); + + IngredientCreateDto ingredientCreateDto = Ingredient.toCreateDto(ingredient); + Response response = target("/ingredients").request().post(Entity.json(ingredientCreateDto)); + + assertEquals(Response.Status.CONFLICT.getStatusCode(), response.getStatus()); + } + + @Test + public void testCreateIngredientWithoutName() { + IngredientCreateDto ingredientCreateDto = new IngredientCreateDto(); + + Response response = target("/ingredients").request().post(Entity.json(ingredientCreateDto)); + + assertEquals(Response.Status.NOT_ACCEPTABLE.getStatusCode(), response.getStatus()); + } + +~~~ + +Nous utiliserons un DTO spécifique `IngredientCreateDto` dans la +mesure où nous n'aurons que le nom de l'ingrédient pour la création. + +La classe [`jakarta.ws.rs.client.Entity<T>`](https://docs.oracle.com/javaee/7/api/jakarta/ws/rs/client/Entity.html) permet de définir le corps de +la requête POST et le type de données associée (ici `application/json`). + +Nous devons également fournir une implémentation de +`IngredientCreateDto` pour pouvoir compiler notre code : + +~~~java +package fr.ulille.iut.pizzaland.dto; + +public class IngredientCreateDto { + private String name; + + public IngredientCreateDto() {} + + public void setName(String name) { + this.name = name; + } + + public String getName() { + return name; + } +} +~~~ + +Nous pouvons maintenant compiler notre code de test et constater que +ceux-ci échouent. + +~~~ +$ mvn test + +Results : + +Failed tests: testCreateSameIngredient(fr.ulille.iut.pizzaland.IngredientResourceTest): expected:<409> but was:<405> + testCreateIngredientWithoutName(fr.ulille.iut.pizzaland.IngredientResourceTest): expected:<406> but was:<405> + testCreateIngredient(fr.ulille.iut.pizzaland.IngredientResourceTest): expected:<201> but was:<405> + +Tests run: 6, Failures: 3, Errors: 0, Skipped: 0 +~~~ + +Nous pouvons maintenant implémenter notre méthode POST dans la + ressource : + +~~~java +import jakarta.ws.rs.POST; +import fr.ulille.iut.pizzaland.dto.IngredientCreateDto; + + @POST + public Response createIngredient(IngredientCreateDto ingredientCreateDto) { + Ingredient existing = ingredients.findByName(ingredientCreateDto.getName()); + if (existing != null) { + throw new WebApplicationException(Response.Status.CONFLICT); + } + + try { + Ingredient ingredient = Ingredient.fromIngredientCreateDto(ingredientCreateDto); + ingredients.insert(ingredient); + IngredientDto ingredientDto = Ingredient.toDto(ingredient); + + URI uri = uriInfo.getAbsolutePathBuilder().path(ingredient.getId().toString()).build(); + + return Response.created(uri).entity(ingredientDto).build(); + } catch (Exception e) { + e.printStackTrace(); + throw new WebApplicationException(Response.Status.NOT_ACCEPTABLE); + } + + } +~~~ + +Comme nous vérifions qu'il n'y a pas déjà un ingrédient avec le nom +fourni, nous devont ajouter une méthode `findbyName` à notre DAO + +~~~java + @SqlQuery("SELECT * FROM ingredients WHERE name = :name") + @RegisterBeanMapper(Ingredient.class) + Ingredient findByName(@Bind("name") String name); +~~~ + +Nous avons également besoin de rajouter les méthodes de conversion + pour ce DTO à notre bean `Ingredient` : + +~~~java +import fr.ulille.iut.pizzaland.dto.IngredientCreateDto; + + public static IngredientCreateDto toCreateDto(Ingredient ingredient) { + IngredientCreateDto dto = new IngredientCreateDto(); + dto.setName(ingredient.getName()); + + return dto; + } + + public static Ingredient fromIngredientCreateDto(IngredientCreateDto dto) { + Ingredient ingredient = new Ingredient(); + ingredient.setName(dto.getName()); + + return ingredient; + } +~~~ + +Nous pouvons maintenant vérifier nos tests : + +~~~ +$ mvn test + +Results : + +Tests run: 6, Failures: 0, Errors: 0, Skipped: 0 +~~~ + +Vous aurez peut-être un affichage d'exception liée au test de création +de doublon, toutefois le test est réussi puisqu'il a levé une +exception qui a été traduite par un code d'erreur HTTP 406. + +### Implémentation de la méthode DELETE +Les tests liés à la méthode DELETE sont les suivants : + +~~~java + @Test + public void testDeleteExistingIngredient() { + Ingredient ingredient = new Ingredient(); + ingredient.setName("Chorizo"); + dao.insert(ingredient); + + Response response = target("/ingredients/").path(ingredient.getId().toString()).request().delete(); + + assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatus()); + + Ingredient result = dao.findById(ingredient.getId()); + assertEquals(result, null); + } + + @Test + public void testDeleteNotExistingIngredient() { + Response response = target("/ingredients").path(UUID.randomUUID().toString()).request().delete(); + assertEquals(Response.Status.NOT_FOUND.getStatusCode(), response.getStatus()); + } +~~~ + +Après avoir constaté que ces tests échouent, nous pouvons fournir une +implémentation pour la méthode DELETE : + +~~~java +import jakarta.ws.rs.DELETE; + + @DELETE + @Path("{id}") + public Response deleteIngredient(@PathParam("id") UUID id) { + if ( ingredients.findById(id) == null ) { + throw new WebApplicationException(Response.Status.NOT_FOUND); + } + + ingredients.remove(id); + + return Response.status(Response.Status.ACCEPTED).build(); + } +~~~ + +Nous devons également implémenter la méthode remove dans +`IngredientDao` : + +~~~java + @SqlUpdate("DELETE FROM ingredients WHERE id = :id") + void remove(@Bind("id") UUID id); +~~~ + +Avec cette implémentation, nos tests réussissent. + +### Implémentation de la méthode GET pour récupérer le nom de l'ingrédient +Commençons par les tests correspondant à cette URI (GET +/ingredients/{id}/name) + +~~~java + @Test + public void testGetIngredientName() { + Ingredient ingredient = new Ingredient(); + ingredient.setName("Chorizo"); + dao.insert(ingredient); + + Response response = target("ingredients").path(ingredient.getId().toString()).path("name").request().get(); + + assertEquals(Response.Status.OK.getStatusCode(), response.getStatus()); + + assertEquals("Chorizo", response.readEntity(String.class)); + } + + @Test + public void testGetNotExistingIngredientName() { + Response response = target("ingredients").path(UUID.randomUUID().toString()).path("name").request().get(); + + assertEquals(Response.Status.NOT_FOUND.getStatusCode(), response.getStatus()); + } +~~~ + +L'implémentation correspondant à ce test est simple : + +~~~java + @GET + @Path("{id}/name") + public String getIngredientName(@PathParam("id") UUID id) { + Ingredient ingredient = ingredients.findById(id); + + if (ingredient == null) { + throw new WebApplicationException(Response.Status.NOT_FOUND); + } + + return ingredient.getName(); + } +~~~ + +### Implémentation d'une méthode de création avec des données de formulaire +La création d'un ingrédient pourrait également se faire via un +formulaire Web. Dans ce cas, le type de représentation sera +`application/x-www-form-urlencoded`. + +On peut déjà préparer un test pour cette méthode de création : + +~~~java + @Test + public void testCreateWithForm() { + Form form = new Form(); + form.param("name", "chorizo"); + + Entity<Form> formEntity = Entity.entity(form, MediaType.APPLICATION_FORM_URLENCODED_TYPE); + Response response = target("ingredients").request().post(formEntity); + + assertEquals(Response.Status.CREATED.getStatusCode(), response.getStatus()); + String location = response.getHeaderString("Location"); + String id = location.substring(location.lastIndexOf('/') + 1); + Ingredient result = dao.findById(UUID.fromString(id)); + + assertNotNull(result); + } +~~~ + +On peut maintenant fournir une implémentation pour cette méthode : + +~~~java + @POST + @Consumes("application/x-www-form-urlencoded") + public Response createIngredient(@FormParam("name") String name) { + Ingredient existing = ingredients.findByName(name); + if (existing != null) { + throw new WebApplicationException(Response.Status.CONFLICT); + } + + try { + Ingredient ingredient = new Ingredient(); + ingredient.setName(name); + + ingredients.insert(ingredient); + + IngredientDto ingredientDto = Ingredient.toDto(ingredient); + + URI uri = uriInfo.getAbsolutePathBuilder().path("" + ingredient.getId()).build(); + + return Response.created(uri).entity(ingredientDto).build(); + } catch (Exception e) { + e.printStackTrace(); + throw new WebApplicationException(Response.Status.NOT_ACCEPTABLE); + } + } +~~~ + +# Créer une base de données de test +Nous avons maintenant implémenté et testé toutes les méthodes prévues +par notre API. Si nous voulons tester avec des clients, il serait bien +d'avoir quelques ingrédients dans la base de données. Pour cela, nous +allons donner la possibilité de créer des ingrédients au démarrage sur la base +d'une variable d'environnement : `PIZZAENV`. + +Quand cette variable aura la valeur `withdb`, nous allons remplir la +base au démarrage avec le code suivant : + +~~~java +package fr.ulille.iut.pizzaland; + +import org.glassfish.jersey.server.ResourceConfig; + +import fr.ulille.iut.pizzaland.beans.Ingredient; +import fr.ulille.iut.pizzaland.beans.Pizza; +import fr.ulille.iut.pizzaland.dao.IngredientDao; +import fr.ulille.iut.pizzaland.dao.PizzaDao; +import fr.ulille.iut.pizzaland.dto.PizzaCreateDto; + +import java.io.FileReader; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; +import java.util.logging.Logger; + +import jakarta.json.bind.JsonbBuilder; +import jakarta.ws.rs.ApplicationPath; + +@ApplicationPath("api/v1/") +public class ApiV1 extends ResourceConfig { + private static final Logger LOGGER = Logger.getLogger(ApiV1.class.getName()); + + public ApiV1() { + packages("fr.ulille.iut.pizzaland"); + String environment = System.getenv("PIZZAENV"); + + if ( environment != null && environment.equals("withdb") ) { + LOGGER.info("Loading with database"); + try { + FileReader reader = new FileReader( getClass().getClassLoader().getResource("ingredients.json").getFile() ); + List<Ingredient> ingredients = JsonbBuilder.create().fromJson(reader, new ArrayList<Ingredient>(){}.getClass().getGenericSuperclass()); + + IngredientDao ingredientDao = BDDFactory.buildDao(IngredientDao.class); + ingredientDao.dropTable(); + ingredientDao.createTable(); + for ( Ingredient ingredient: ingredients) { + ingredientDao.insert(ingredient); + } + } catch ( Exception ex ) { + throw new IllegalStateException(ex); + } + } + } +} +~~~ + +Dans un terminal, nous pouvons maintenant fixer la variable +d'environnemnet et démarrer notre serveur REST au moyen de la +commande `mvn exec:java` : + +~~~ +$ export PIZZAENV=withdb +$ mvn exec:java +~~~ +Dans un autre terminal, nous pouvons utiliser `curl` pour tester nos +différentes méthodes : + +~~~ +$ curl -i localhost:8080/api/v1/ingredients + +HTTP/1.1 200 OK +Content-Type: application/json +Content-Length: 760 + +[{"id":"f38806a8-7c85-49ef-980c-149dcd81d306","name":"mozzarella"},{"id":"d36903e1-0cc0-4bd6-a0ed-e0e9bf7b4037","name":"jambon"},{"id":"bc5b315f-442f-4ee4-96de-486d48f20c2f","name":"champignons"},{"id":"6a04320c-3a4f-4570-96d3-61faf3f898b0","name":"olives"},{"id":"c77deeee-d50d-49d5-9695-c98ec811f762","name":"tomate"},{"id":"c9375542-8142-43f6-b54d-0d63597cf614","name":"merguez"},{"id":"dee27dd6-f9b6-4d03-ac4b-216b5c9c8bd7","name":"lardons"},{"id":"657f8dd4-6bc1-4622-9af7-37d248846a23","name":"fromage"},{"id":"070d8077-a713-49a0-af37-3936b63d5ff2","name":"oeuf"},{"id":"5d9ca5c4-517f-40fd-aac3-5a823d680c1d","name":"poivrons"},{"id":"52f68024-24ec-46c0-8e77-c499dba1e27e","name":"ananas"},{"id":"dfdf6fae-f1b2-45fa-8c39-54e522c1933f","name":"reblochon"}] +~~~ + +# Implémentation de la ressource Pizza +Maintenant que vous avez une ressource `ingrédients` fonctionnelle, vous pouvez passer à l'implémentation de la ressource `Pizzas`. Pour cette ressource, vous devrez d'abord définir l'API dans le fichier `pizzas.md` (URI, méthodes, représentations). Ensuite, vous pourrez développer la ressource avec les tests associés. + +Il est fortement recommandé d'adopter la même approche que pour `Ingredient` en développement progressivement les tests puis les fonctionnalitées associées. + +## Note sur la base de données +Une pizza comprend des ingrédients. Pour développer cette ressource, +vous aurez donc besoin d'un table d'association au niveau de la base +de données. Cela pourra être géré au niveau du DAO grâce à +[JDBI](https://jdbi.org/#_default_methods). Cet extrait de code montre +comment faire : + +~~~java +import org.jdbi.v3.sqlobject.transaction.Transaction; + + public interface PizzaDao { + + @SqlUpdate("CREATE TABLE IF NOT EXISTS Pizzas ....") + void createPizzaTable(); + + @SqlUpdate("CREATE TABLE IF NOT EXISTS PizzaIngredientsAssociation .....") + void createAssociationTable(); + + @Transaction + default void createTableAndIngredientAssociation() { + createAssociationTable(); + createPizzaTable(); + } +~~~ + +Vous écrivez les différentes méthodes annotées avec `@SqlUpdate` ou +`@SqlQuery`. Vous utilisez ensuite ces méthodes au sein d'une méthode +ayant le mot clé `default`. C'est cette méthode que vous utiliserez +dans votre ressource. diff --git a/bin/architecture.svg b/bin/architecture.svg new file mode 100644 index 0000000..61b135b --- /dev/null +++ b/bin/architecture.svg @@ -0,0 +1,409 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="297mm" + height="210mm" + viewBox="0 0 297 210" + version="1.1" + id="svg8" + inkscape:version="0.92.4 (5da689c313, 2019-01-14)" + sodipodi:docname="architecture.svg"> + <defs + id="defs2"> + <marker + inkscape:stockid="Arrow2Mstart" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow2Mstart" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path877" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + transform="scale(0.6) translate(0,0)" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible;" + id="marker1309" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Mend"> + <path + transform="scale(0.4) rotate(180) translate(10,0)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path1307" /> + </marker> + <marker + inkscape:stockid="Arrow1Mend" + orient="auto" + refY="0.0" + refX="0.0" + id="marker1133" + style="overflow:visible;" + inkscape:isstock="true"> + <path + id="path1131" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + transform="scale(0.4) rotate(180) translate(10,0)" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker1309-9" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Mend"> + <path + inkscape:connector-curvature="0" + transform="matrix(-0.4,0,0,-0.4,-4,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1307-2" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1.0180159" + inkscape:cx="482.67561" + inkscape:cy="436.14251" + inkscape:document-units="mm" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1920" + inkscape:window-height="1015" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" /> + <metadata + id="metadata5"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Calque 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-87)"> + <rect + style="opacity:1;fill:none;fill-opacity:0.92941176;stroke:#1a1a1a;stroke-width:0.46499997;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect815" + width="166.28093" + height="115.33292" + x="74.191422" + y="125.01431" + ry="9.5569305" /> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:Courier;-inkscape-font-specification:Courier;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" + x="0.68180948" + y="205.90202" + id="text819"><tspan + sodipodi:role="line" + id="tspan817" + x="0.68180948" + y="205.90202" + style="stroke-width:0.26458332">{ "name": "mozzarella" }</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:Courier;-inkscape-font-specification:Courier;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" + x="1.9142494" + y="145.94934" + id="text819-3"><tspan + sodipodi:role="line" + id="tspan817-6" + x="1.9142494" + y="145.94934" + style="stroke-width:0.26458332">{</tspan><tspan + sodipodi:role="line" + x="1.9142494" + y="152.12296" + style="stroke-width:0.26458332" + id="tspan843"> "id": 1,</tspan><tspan + sodipodi:role="line" + x="1.9142494" + y="158.29657" + style="stroke-width:0.26458332" + id="tspan839"> "name": "mozzarella"</tspan><tspan + sodipodi:role="line" + x="1.9142494" + y="164.47017" + style="stroke-width:0.26458332" + id="tspan841">}</tspan></text> + <g + id="g912" + transform="translate(-137.34242,94.920052)"> + <ellipse + ry="7.6670794" + rx="28.84901" + cy="127.93441" + cx="244.04703" + id="path845" + style="opacity:1;fill:none;fill-opacity:0.92941176;stroke:#1a1a1a;stroke-width:0.46499997;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <text + id="text853" + y="129.16666" + x="215.79419" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:Courier;-inkscape-font-specification:Courier;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" + xml:space="preserve"><tspan + style="stroke-width:0.26458332" + y="129.16666" + x="215.79419" + id="tspan851" + sodipodi:role="line">IngredientCreateDto</tspan></text> + </g> + <g + id="g917" + transform="translate(-106.72563,21.571782)"> + <g + id="g13293" + transform="translate(0,1.596614)"> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:Courier;-inkscape-font-specification:Courier;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" + x="220.45509" + y="160.74463" + id="text857"><tspan + sodipodi:role="line" + id="tspan855" + x="220.45509" + y="160.74463" + style="stroke-width:0.26458332">IngredientResource</tspan></text> + <ellipse + cx="247.25438" + cy="159.51237" + rx="28.84901" + ry="30.538366" + style="opacity:1;fill:none;fill-opacity:0.92941176;stroke:#1a1a1a;stroke-width:0.46499997;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="path845-7" /> + </g> + </g> + <g + id="g922" + transform="translate(-23.037538,0.55700684)"> + <text + id="text861" + y="183.35602" + x="220.51999" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:Courier;-inkscape-font-specification:Courier;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" + xml:space="preserve"><tspan + id="tspan863" + style="stroke-width:0.26458332" + y="183.35602" + x="220.51999" + sodipodi:role="line">IngredientDao</tspan></text> + <ellipse + cx="239.88861" + cy="182.12376" + rx="22.611387" + ry="7.6670794" + id="path845-5" + style="opacity:1;fill:none;fill-opacity:0.92941176;stroke:#1a1a1a;stroke-width:0.46499997;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + </g> + <g + id="g927" + transform="translate(-43.829617,-56.398515)"> + <text + id="text869" + y="206.7471" + x="217.68291" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:Courier;-inkscape-font-specification:Courier;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" + xml:space="preserve"><tspan + style="stroke-width:0.26458332" + y="206.7471" + x="217.68291" + id="tspan867" + sodipodi:role="line">Ingredient</tspan></text> + <ellipse + ry="7.6670794" + rx="16.373762" + cy="205.51485" + cx="232.58473" + id="path845-3" + style="opacity:1;fill:none;fill-opacity:0.92941176;stroke:#1a1a1a;stroke-width:0.46499997;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + </g> + <g + id="g907" + transform="translate(-106.44231,37.666913)"> + <text + id="text849" + y="109.80403" + x="192.19078" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:Courier;-inkscape-font-specification:Courier;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" + xml:space="preserve"><tspan + style="stroke-width:0.26458332" + y="109.80403" + x="192.19078" + id="tspan847" + sodipodi:role="line">IngredientDto</tspan></text> + <ellipse + ry="7.6670794" + rx="22.871288" + cy="108.57178" + cx="211.5594" + id="path845-56" + style="opacity:1;fill:none;fill-opacity:0.92941176;stroke:#1a1a1a;stroke-width:0.46499997;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + </g> + <g + transform="matrix(0.26458333,0,0,0.26458333,231.86606,-9.438136)" + inkscape:label="Calque 1" + id="layer1-9"> + <path + d="m 174.72,639.58 c -29.2,0 -52.91,13.35 -52.91,29.79 v 119.12 c 0,16.44 23.71,29.78 52.91,29.78 29.2,0 52.91,-13.34 52.91,-29.78 V 669.37 h -0.04 c 0,-16.44 -23.67,-29.79 -52.87,-29.79 z" + style="fill:#ffffff;stroke:#000000;stroke-width:10;stroke-linecap:round;stroke-linejoin:round" + id="rect3196" + inkscape:connector-curvature="0" /> + <ellipse + transform="matrix(1.6639,0,0,1.6225,-131.61,-463.2)" + style="fill:#ffffff;stroke:#000000;stroke-width:2.9375;stroke-linecap:round;stroke-linejoin:round" + id="path2527" + cx="184.11563" + cy="698.03149" + rx="30.68594" + ry="17.716536" /> + </g> + <path + style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1309)" + d="M 2.339109,199.8064 117.47524,199.2866" + id="path1129" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1309-9)" + d="M 2.0517682,166.28965 117.18794,165.76985" + id="path1129-8" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:" + d="m 30.928217,152.75495 c 17.153463,-16.11386 50.940591,-9.09653 50.940591,-9.09653" + id="path14291" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 46.290469,208.6524 c 6.757426,13.25495 30.148513,13.77475 30.148513,13.77475" + id="path14337" + inkscape:connector-curvature="0" /> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:Courier;-inkscape-font-specification:Courier;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" + x="4.938118" + y="198.4975" + id="text14341"><tspan + sodipodi:role="line" + id="tspan14339" + x="4.938118" + y="198.4975" + style="stroke-width:0.26458332">POST</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:Courier;-inkscape-font-specification:Courier;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" + x="6.4756169" + y="170.42822" + id="text14345"><tspan + sodipodi:role="line" + id="tspan14343" + x="6.4756169" + y="170.42822" + style="stroke-width:0.26458332">GET</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:Courier;-inkscape-font-specification:Courier;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" + x="122.41336" + y="162.8911" + id="text14349"><tspan + sodipodi:role="line" + id="tspan14347" + x="122.41336" + y="162.8911" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:Courier;-inkscape-font-specification:'Courier Bold';stroke-width:0.26458332">/ingredients</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:Courier;-inkscape-font-specification:Courier;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" + x="146.99071" + y="130.25659" + id="text14349-9"><tspan + sodipodi:role="line" + id="tspan14347-1" + x="146.99071" + y="130.25659" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:Courier;-inkscape-font-specification:'Courier Bold';stroke-width:0.26458332">/api/v1</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 234.43068,177.44555 c 10.39604,-8.31683 35.14282,3.63861 35.14282,3.63861" + id="path14369" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <g + id="g14406" + transform="translate(66.702408,-73.292076)"> + <rect + ry="0" + y="254.37624" + x="202.87109" + height="13.774752" + width="15.594059" + id="rect14375" + style="opacity:1;fill:none;fill-opacity:0.92941176;stroke:#1a1a1a;stroke-width:0.46499997;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <path + inkscape:connector-curvature="0" + id="path14379" + d="m 203.131,258.79215 h 15.07425" + style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <path + inkscape:connector-curvature="0" + id="path14379-5" + d="m 203.131,263.55468 h 15.07425" + style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <path + sodipodi:nodetypes="cc" + inkscape:connector-curvature="0" + id="path14379-4" + d="m 210.66813,254.54246 v 12.99505" + style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + </g> + <path + style="fill:none;stroke:#000000;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:1.05833327,2.11666654;stroke-dashoffset:0" + d="m 124.75247,142.09901 c 20.53218,-8.31683 54.31931,-0.2599 54.31931,-0.2599" + id="path14408" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:1.5874999,1.5874999;stroke-dashoffset:0" + d="m 190.50742,157.43317 c 0.5198,37.16584 -8.83664,49.12128 -17.93317,54.5792 -9.09654,5.45792 -37.94554,10.65595 -37.94554,10.65595" + id="path14410" + inkscape:connector-curvature="0" + sodipodi:nodetypes="csc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:1.05833327,1.05833327;stroke-dashoffset:0" + d="m 198.82425,155.35396 c 12.47525,7.01733 14.81436,18.97278 14.81436,18.97278" + id="path14412" + inkscape:connector-curvature="0" /> + </g> +</svg> diff --git a/bin/pom.xml b/bin/pom.xml new file mode 100644 index 0000000..727e9e2 --- /dev/null +++ b/bin/pom.xml @@ -0,0 +1,163 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + + <modelVersion>4.0.0</modelVersion> + + <groupId>fr.ulille.iut.pizzaland</groupId> + <artifactId>pizzaland_jdbi</artifactId> + <packaging>jar</packaging> + <version>1.0-SNAPSHOT</version> + <name>pizzaland_jdbi</name> + + <dependencyManagement> + <dependencies> + <dependency> + <groupId>org.glassfish.jersey</groupId> + <artifactId>jersey-bom</artifactId> + <version>${jersey.version}</version> + <type>pom</type> + <scope>import</scope> + </dependency> + <dependency> + <groupId>org.jdbi</groupId> + <artifactId>jdbi3-bom</artifactId> + <type>pom</type> + <version>${jdbi.version}</version> + <scope>import</scope> + </dependency> + </dependencies> + </dependencyManagement> + + <dependencies> + <dependency> + <groupId>org.glassfish.jersey.containers</groupId> + <artifactId>jersey-container-grizzly2-http</artifactId> + </dependency> + <dependency> + <groupId>org.glassfish.jersey.inject</groupId> + <artifactId>jersey-hk2</artifactId> + </dependency> + + <!-- uncomment this to get JSON support: --> + <dependency> + <groupId>org.glassfish.jersey.media</groupId> + <artifactId>jersey-media-json-binding</artifactId> + </dependency> + <!-- --> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>4.12</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.glassfish.jersey.test-framework.providers</groupId> + <artifactId>jersey-test-framework-provider-grizzly2</artifactId> + <version>${jersey.version}</version> + </dependency> + <!-- https://mvnrepository.com/artifact/org.xerial/sqlite-jdbc --> + <dependency> + <groupId>org.xerial</groupId> + <artifactId>sqlite-jdbc</artifactId> + <version>${sqlite-jdbc.version}</version> + </dependency> + <!-- https://mvnrepository.com/artifact/org.jdbi/jdbi3-core --> + <dependency> + <groupId>org.jdbi</groupId> + <artifactId>jdbi3-core</artifactId> + </dependency> + <dependency> + <groupId>org.jdbi</groupId> + <artifactId>jdbi3-sqlobject</artifactId> + </dependency> + <dependency> + <groupId>org.jdbi</groupId> + <artifactId>jdbi3-sqlite</artifactId> + </dependency> + <dependency> + <groupId>org.jdbi</groupId> + <artifactId>jdbi3-testing</artifactId> + <version>3.12.0</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>jakarta.xml.bind</groupId> + <artifactId>jakarta.xml.bind-api</artifactId> + <version>3.0.0</version> + </dependency> + <dependency> + <groupId>com.sun.xml.bind</groupId> + <artifactId>jaxb-impl</artifactId> + <version>3.0.0</version> + <scope>runtime</scope> + </dependency> + <!-- dependency> + <groupId></groupId> + <artifactId></artifactId> + <version></version> + </dependency--> + </dependencies> + + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + <version>3.8.1</version> + <inherited>true</inherited> + <configuration> + <release>11</release> + </configuration> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>exec-maven-plugin</artifactId> + <version>1.2.1</version> + <executions> + <execution> + <goals> + <goal>java</goal> + </goals> + </execution> + </executions> + <configuration> + <mainClass>fr.ulille.iut.pizzaland.Main</mainClass> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-shade-plugin</artifactId> + <version>${shade.version}</version> + <executions> + <execution> + <phase>package</phase> + <goals> + <goal>shade</goal> + </goals> + <configuration> + <transformers> + <transformer + implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> + <mainClass>fr.ulille.iut.pizzaland.Main</mainClass> + </transformer> + <transformer + implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" /> + </transformers> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> + + <properties> + <jersey.version>3.0.0</jersey.version> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + <shade.version>3.2.4</shade.version> + <lombok.version>1.18.16</lombok.version> + <jdbi.version>3.16.0</jdbi.version> + <sqlite-jdbc.version>3.34.0</sqlite-jdbc.version> + <jaxb.version>2.4.0-b180830.0359</jaxb.version> + </properties> +</project> diff --git a/bin/src/main/java/fr/ulille/iut/pizzaland/ApiV1.class b/bin/src/main/java/fr/ulille/iut/pizzaland/ApiV1.class new file mode 100644 index 0000000000000000000000000000000000000000..8b65d451c34a08c3efd82cf634c55d77b62900a1 GIT binary patch literal 1384 zcmX^0Z`VEs1_pBm1$G7|Mh5NTqGbKt#LPVXti-ZJ{j?(e(wxkkoK*eH(h~iG%&Mxy zoW#5oeaC{#Fhh0*7DfgEu)3VYymWp4q^#8B5=I6#AAfgu*C0j)4j-TV^z_ssYeoh( zo6Nk-5<5l)W)00SMg|t={FGF725v?MeuRG4qN4mF4hCLEX4lZXqSWI2oU+suh2;F) zg3O%6lFa-(g@U5|q@2{;Vk-qM&X9~$g_6pGR0WU$dLRerK^&lvoS2uFU!stdssJ-Y zPr<W9A+uN^GcP5xC^fkxr&6IPH7&I$H7_|eMIo&yKUbkBwXig^C^bbvFF7Z%xL6@A zGbgnet1ZDLMVWc&w6?_=><VgoB_%aEClTb!g2d$P#Pn1JrL-bFNDS*`mX_$jV^~Qc zB|o)T0Thn8i6zMy3MCn-3aJ$ZsmUd&DGG4i#YM?_pwyxVjs#q0L4q+ew;;c$L?OQj zTiBr}0UK6Yl9_`gkkJ%oCl-|?VpZl?P>_?E3{E!zi6t3W)F_nXD<p!`5Eo}qYH@yP zQF5wteqLH8HU}arhNNl&CgN1Y#R-mE8*m=7BVY<BmFK3GWaPsGy;uX105w4gx->5( zH7zp_l!)_-z;Oi55@4gbxEQz?_<0!E83Y&^L^XUsp{ftcC;AWrtU(!(-zPIK)vq)+ zDYYmhF)1gNkwM5OKRGccEU_pP#D@y9lw@QUGcxG<kWf5WGcs@mg9Ftq6J#(K*j3<^ z!pI;URGL?knVagFSC(0vnUs_22+FhI*eYgZ5cENdJ!?h=*0RK$(o{wUQO~^O{Ji4K z;*!+75|7N(qQs))j7oL}8BoCkE^gQv<QN(FP-B#lfyXzqxHvN}J*2WAwU|MXfsuik zfq{XML5hKufep-JWMF6DU|?k6WME)0VPIxpWME+6+ReZfDa5m#fp0$p0|OI-AOiyf q8(4;sL5P8Yfd|ayVi0B!VPIfjW)KCd5@V2J00DWhY9<D023Y{_2eC~6 literal 0 HcmV?d00001 diff --git a/bin/src/main/java/fr/ulille/iut/pizzaland/BDDFactory.class b/bin/src/main/java/fr/ulille/iut/pizzaland/BDDFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..acbca89019108638305794281d98599235d0aff6 GIT binary patch literal 5050 zcmX^0Z`VEs1_pBmb9M$MMh1i8qGbKt#LPVXti-ZJ{j?(e(wxkkoK*eH(h~iG%&Mxy zoW#5oeJ2+ex5VU<{Gv*B1{OvJ0kGnn#JqHU|D>$c<Pt^(maLSdOhyJaAFq_8Olw94 zwv?oR#F7j~1|c7W;^2~^%)E4vtW9QKW{Djm1G9!^7$XCVbAC!HI|DBx13yBsYf({t z5eEZ5Bgfm&yrR_N{G77X6ousc+=9%U#FEVXJcWXy{G^=J++r&QF3ymQRE3n(<ebE! z)D(q+#N_P6^i&0<v?4u-fAlg-OZ4FWQBp|BPc2r+%P&#LO)N>yP$<brRY<KUNKGz5 z)?HkbtOp7kJ&>dHaG3?MJ2ST+zo<k3tg^T;M<F>e4`h5&sshaEv{zSJl1ZG!#3;-! zN+;wAx+zI3!s-;y+=86U<jfL<;?jcDB8BAqyyB9gQcyBgfFw%|O@+*2h0?r~)U?dJ z)D(rZ{33;v)U?FXoDyW!dJ4X!#U&t_%)C^E#5_<^fEbKqBo`+rWn*!NLP@?tqC!b! zK`Iv~B!LrBR9Re-nu|pd7iTb8Qbah62qghU`30#(C7G$kSe%CJNum`JVJQwJ#D-*` zPi9GKKu&3TW*z}Y2N&i*(gabeLqk1X9E;LRb5rw5pamZR^Kp0tIoya)LUhm)t&j*y zaVQz+I3O-B1^T#FB&QaD>jTU(7diM{5=#=35{pxPQ%e#-YyuGqs!(!MOEU6P6w*^m zKw+ezsgPEbp9`)mK-paZQ7bAGrKY786@#n;RVBHZ#l@L<>EJ>^0i>0SGbpvVG^Zpu zwS<7R!NhyWBQY-}CzXJCRQ3ia;7ABWVtwscRFqihlUYnKbifS=0$!%7Va_>;#e@n( z>V`2F0}q2B4+AHI5F>-A24?FC)L`QG$;?ajE6q(xEec6Y%1H$^v+|P@bHWmfGC_Q( zAWKO`W-%j!kq@b@JZnY<c4(?+WZ=-ygtY277^D~(PZH4>10{I^kwk<NqRTj<6%t`7 z4kZI!7}BCbVr1YihLmh>`9&eA#U;fY46=-jfz*j$q9cW9g*c)HROrImUpSNuaO^QM zaFu{^rE5iIaS4u09mUAN1+U49*%_1=8F-NE0uBZhMn(xDqGm)^n~V%xDMk4O;9{?s zgF&5<aT75?HCorA^-+=Y5>W|>nsqHB14mM6W=@JrVm>2-Dss&Su7s^Mk?KN7Ti%+H zfipNWJuk7Ov?!I4!O$ke3R8_8hDkOdA=Y-*njs<991OaQ3{#0nDqt5V;BR13w;905 zz!jWdT9lmXmI<og`4Npx@Nfh>gCQdW3#hzfXD~(?Hvv19oxv1km<AG=j0`-!kfv!! zWkG5&gCYYX12Y2y0}}%m11kd?0|NsW13Lo;0|Nsa10w?`0~Z4$12+Q$g9!sO10zUw zHv><k5Z`tNf&E}z!cdhA42%pS3=9lB5LFDK3}Orn44e$&3=&Wiw7~W-FmQoQki=qw z1lR;7us&(H&8Yfhu;^1o(kI6t&%nf>z`(%3!obL&2zEQj1ccj_v6!HbWP&OK7giG( z;J#PGVuCr62^tKV3``7K;PBDL;sPBk`kmnVnHcoII`tXMz~RZtV8EcrV8p=8U;+S* CBT#Pu literal 0 HcmV?d00001 diff --git a/bin/src/main/java/fr/ulille/iut/pizzaland/Main.class b/bin/src/main/java/fr/ulille/iut/pizzaland/Main.class new file mode 100644 index 0000000000000000000000000000000000000000..743131675fb3658bdedb5007bfd51ab44355aed7 GIT binary patch literal 2663 zcmX^0Z`VEs1_pBmJ$42rMh30oqGbKt#LPVXti-ZJ{j?(e(wxkkoK*eH(h~iG%&Mxy zoW#5oec!~)Jaz^aMg{?}vYf=cbbbG%tkmQZMg|Ti$6(j^&>&An1|c7WbZ|*gW?s5A zBLlB<eqM1&VqQsDVoqr)2LmS~gKS1gNr9EVeolUJVopYWafy|MfrWv7VnL>UnV~)- z16NLdx^H4$VtQ&3BLk0*51ePs$iQZknU`5&$H>5}p&7==z~Y>rlFH5?z{tRlu-mn$ zD8Gn<L5Pu6J~Xc=wKzYgEHy<TIX|}`GbgbmGe1wEpeR2nCpEX&N`Z?rBqLQJB{exG zu_!e~p&&6iJ25>~K`E_B4-yo5nWZIq@SspqNXbtvR>;dQQOHd!NzPCx$w*a5ttd!M zE<x5^T$HQ_3RXRkqx5i@1+hCbw;;c$L;<WaGhZP&F%M*VQmO*X<(SIyQcH+ZS6Y&p zLw|+&Md^errL7Xr+=86U<jfL<;?jcDB86m70xT*`F3B%afTUUtO@+*2h0?r~)U?dJ z)D(rZ{33;v)U?FXoDyW!dJ4X!#U&t_%)C^E#5_<$LkvbTl8Y0P)UkM3p(I}+QK6)= zAeD;~k%%c#NP;=eIf=!^HlUnqN5DqcisaM+aJIlqd&pk!C@CojPAw_}1t~@%MONru zlv!1kQ;AUTmIw;`N-XZ+;tUP)#41iys1l{f)1T@-1eF=NsU;ctDGJ3UiA5!lVA0T2 zNGr<E1(yk+SXTgrzCuxIT53@-D11O=MQ&zsab{jRI8`VhLWqkqxU#q;HJ7xYATsUY zHkylppFxC&frmkqkwH`gv-k!TvHU)nd8vM-xk;%-A&E&jsi1NmRB(qS7G;9?P(hZG zjLc$21|1*bs}yTS25zL_V`Sjd(DXrsi8Tj<EF;5KB8qT?9xUMp3VB#Aq+7~lWMBc6 z|BMV`8qwH;l?$FIi`f~J7#X;ck|_s+3L|4O5gs2+|KMf@fmp|#{uvp#g7Zs@l2hF> zK?$1^lwrYjHamj`BLf#AU9mH0F*0x=3UPJ@9hBA(BqA6YczhxGJEXE8wU|MXfsuik zfq{XEL6U)$fsKKYfgQ}_V31<qV&G<AU|?ooWZ+@oWng6BV_;w~0rMFcxOOw}M+ymU zXAs^GRxifD0M^aGz{nuZz`(%6z{tSBz{McJAj!bMz{w!RAPqG^3v3_E1Q{$QsDe#k z0_&4wkY`|GP+(wSU}0cnPz1XHWCGZ9up5-Im|zb#fr&vC>^?OHU9fvt7}OaQ88jKR E0Zh(D$N&HU literal 0 HcmV?d00001 diff --git a/bin/src/main/java/fr/ulille/iut/pizzaland/beans/.gitkeep b/bin/src/main/java/fr/ulille/iut/pizzaland/beans/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/bin/src/main/java/fr/ulille/iut/pizzaland/dao/.gitkeep b/bin/src/main/java/fr/ulille/iut/pizzaland/dao/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/bin/src/main/java/fr/ulille/iut/pizzaland/dao/UUIDArgument.class b/bin/src/main/java/fr/ulille/iut/pizzaland/dao/UUIDArgument.class new file mode 100644 index 0000000000000000000000000000000000000000..39cd3c891628f90bcf7e933b05694dc3b479cb56 GIT binary patch literal 1839 zcmX^0Z`VEs1_pBmEp`SbMh3IuqGbKt#LPVXti-ZJ{j?(e(wxkkoK*eH(h~iG%&Mxy zoW#5o{glLf{m@WP7ssOX(%jU%5_Sd_Mg{?}mYl@AbbbG%tkmQZMh4ch#GKMpMg}$? zkZNm21~!|_yv!0iMg~p|h>&I&BLj<beo87k12-cBKf(ytqN4mF4hCLEX7$j#qSWI2 zoU+suh2;F)g3O%6lFa-(g@U5|q@2{;Vk-qM&X9~$g_P9foW!Ek6orDs<m|-sR0XB9 zB0Y%n^)gFK^x)3dOG(UEQb@^9Emp|OFHy)%EJ@B#D9K1wNUbPHO)fz;p|~hn4-_1F zAcyJUGY{g1%-n+fq7ntL>f*v2h2+FMkQGU(3NSB_udcKtlc0h5Md^g>#H9olmss>G zl;kTUDwI?fq;heBB9ed-&)kBX%;d}xh2qkJ)FOrC{Ji3lqSEA&{2~QN!qCuE$ShVU z%}Ys5%gjqn(Npj(EiM6tK3H2$r9x(2S$=k^LSkNiNd~G3L^*&6H~N>Q78PZtq!RE- zKv8M|C`|>IB$lLtQaS<kaCOf4c_pb8C4`g*`nXmkrxt+IGiF*LE!?>nxET0(7}yyE z7#T!0d_ZYXADkP5ONuh{(yc*Rjo&9TFV(L!Hz~C!Brz!`m61WnCqFqcCoHij6U2uK zvXo?G7Bezf_>fl|STi!PCKeRrR5CJXYIyo!1fsPMdN_d{#|00IVs-{eMh2c>q~Kv> zkPa%%E6L1F^~@{FEY3{INp%F}EpS;-%*epy1B+5?4hC69hHpfa8ZaFMVhO|j1k|H@ zj*xOBUlLGCIAJp~a0Ta=7A2>;WrAW?5TpZ^v%!TJBZH`C9w<v@7MG;vm3U;P79|!X zXH>E?C^0f{z?8Bxs4y}JVtAaLL5-0?0NsD=3>u6KEFha08F+j%i;FY!(nBf>Qi~ZB z85kLu85kHC8H5;E8Q2&Y7?>Cs8Q2*(7#JBi85kH$7?>HD7#JA1b~A8A3h``b;M)&Y zBgnwOz{bD`)ycrX17>qE2s4O)#Y7pz7?>Hv85kH?7#JBO7^I-;r5PCD=CZ)emBC`J oAcGJCy1C2@a$wu#859^mK$C%ifscWWL6Je3L4rY*L7jma0FaU}KmY&$ literal 0 HcmV?d00001 diff --git a/bin/src/main/java/fr/ulille/iut/pizzaland/dao/UUIDArgumentFactory.class b/bin/src/main/java/fr/ulille/iut/pizzaland/dao/UUIDArgumentFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..c66b961477d717fea45b820759f110c3dea40826 GIT binary patch literal 1797 zcmX^0Z`VEs1_pBm4R!`5Mh4sBqGbKt#LPVXti-ZJ{j?(e(wxkkoK*eH(h~iG%&Mxy zoW#5o{glLf{m@WP7ssOX(%jU%61T+UlKi4db_Nzk1_7|noW#6zegCAa)Z`LI1~!|_ zyv!0iMh0dL%`ip=7U%qwRCWeVMh1R_TGyhY{2~qpZbqg<p?O8A#rZj9sVNG{`MCv| zIf*5i`FRQjMfpiNsky~g3S68a8L0{>smVEsMX4zY1&PVoiRq~dN@+!U5a;S;mX_$j zovW9Un6IRelAl_vke6SgkegVNoS{&Xk*bhdQIMKkf^0%@QL-M$`+6XU>ESaE;)cxJ zg8ZTq1+ePk!W@O<#5|A{NvR4jFJP)GEy*OPFuy3BkXaNcaZD;MDN0N(L5n^tHY$|l zD<mqER2HOiae^Y8fRd2Pg4AN1YRVFeG82<>Qn@(&%TkMqGE-7<Duvhxa~}a^L^#Yj zKQApaJt#Fjv$&+Fl7M-j#8r}5l%84w_PIiSnnFoNW-%za6r~mygVJJdX>o}{QmR6t zLRx8FGAMZ_<|t(5m82G>B_^kGaWQZ(@bWOQGVn1nh-&zNl7~JxM+BD?W#*+@gK`1C zPi9`KUukYqYEcL%R2UhAeDaeMbHbpZ1QlcfS<T2`??X|}v}R;rO)AaINnvDA((nNV zn6(dTm{@E2z=GSFkwH4BG_NExH`Oz*EVDQ>DJRttl&-<~u$Ym7%Lf*L)*K8HjEu}g z<XD&v0$~qx0|8|q9}rN2>OBIADUWhS26^-_1LX$Pa0|{aElN&x%gjk-WRL*)0p?w3 z0SYd57#TQ&Gt=`DOG=AU85tCPaO74SNHp46Gct&J<|XIn6=xQgq~?`)WTqA+7A0p? zvNI?!GKk~Q&Ca02$iM-!o}EF3k%132#Ml|s7#UbVj$~xu@y#qQ&df^(`KXvdk%5tc znE?ct7#JB?8Q2&Y8Q2*Z7)%(L85kKD7`S#ba6}4mZD-)w&%nUI#K6zM09M1mz{nuL zz`(!*QN<w0AjH7Hz``KRAi}`RAPQ9_#=rnK4P*<%G;u7Z@nbPfl7WGNgMm?mfdOO= h3xgEc1=0*MU|N<z4&-bGb&x9=SQz9P6d9BmQ~}mpC3gS- literal 0 HcmV?d00001 diff --git a/bin/src/main/java/fr/ulille/iut/pizzaland/dto/IngredientDto.class b/bin/src/main/java/fr/ulille/iut/pizzaland/dto/IngredientDto.class new file mode 100644 index 0000000000000000000000000000000000000000..e90678ab722be42c4381a388213dc2040bf677c6 GIT binary patch literal 664 zcmX^0Z`VEs1_pBmQFaC<Mh5fZqGbKt#LPVXti-ZJ{j?(e(wxkkoK*eH(h~iG%&Mxy zoW#5o{gje?eb2n~qSTbk)Vvaxl6-as7DfgEu%4X6ymWp4q^#8B5=I6#o6Nk-5<5l) zW)00SMg|t={FGF722Mr>euP@rqN4mF4hC*UMwZaLqSWI2oU+suh2;F)g3O%6lFa-( zg@U5|q@2{;Vk-qM&X9~$g_P9foW!Ek6orDs<m|-sR0XB9B0Y#h^)gFK^xzKFODV}$ zQb@^9Emp|OFHy)%EJ@B#D9K1wNUbPHO)fz;p|~hn59Dz@ki+!wna9QHnOl&PnVeao zP+VG&TBMMipI2N`RGM6pU!(x>xQ3=eX0bwPUP@|OW?pKFo`P>_aS6y$u(q5^h0MIN z{OnYP#Jv2H3{(@ixEMGXczGCD8Tc3(L^XUs&d~>lX>dtVW?s5AC>;5HGV@aXN^_G^ zi$W5Ua#9%?gnaUo6LZ26i!wocs31#8MrJW1gQX9dv1-l8z!jWdT9lmXmI<~5CC<Si z#h}Q*$iU110*nld46F=n42%ry3=9k=49pCS3=9lhyBRnlg}Ame@a$(`U|?e4XJ7!U bVPIfn5MW?n;DM-O5M&Ty0Er2MRfzxqNC(4T literal 0 HcmV?d00001 diff --git a/bin/src/main/java/fr/ulille/iut/pizzaland/resources/BDDClearRessource.class b/bin/src/main/java/fr/ulille/iut/pizzaland/resources/BDDClearRessource.class new file mode 100644 index 0000000000000000000000000000000000000000..93b051485a9723be1de298597e5f660167e799dc GIT binary patch literal 1375 zcmX^0Z`VEs1_pBm1$G7|Mh3^?qGbKt#LPVXti-ZJ{j?(e(wxkkoK*eH(h~iG%&Mxy zoW#5o{i4+3{L-T2)M9-n7Z>N8)Wo8o)MAJbI|B<Ng8*1}PGVlVzJF3yYH|r91Dj1| zUS^3MBLlOBW*8#_i*tTTDmw!wBLhD|t!q(Heh~))HzSirXdcLpoU+suh2;F)g3O%6 zlFa-(g@U5|q@2{;Vk-qM&X9~$g_P9foW!Ek6orDs<m|-sR0XB9B0Y$c^)gFK^x#g` z0~rT)vXVkdermBoUVe!}ZemGthC)e3szPc-L27advN^>?$$FrG&;vP7kFco__hjZ4 z<QJ7Ffb|p?<|rg5=7B6qN>u>a5AqI*y0jufDzXx@6N^d`DNz=XSdxK7zd}jALZU)R zWkD(zr)O?KPG)jui9&H{L28jga(-TMNl|HXNq&(6B>prs6*7wzO7l`u(=zi?Qxwwj zixg5)(-KQ_N|06SDfpHamw;q4^HLQO^FZMWF&N26E>3sX5CRSg4)k%YNKP#PM>=L8 zBD>wm#l<ZV<kU(mW^!>ca4_)lFt9T4F*1m1_<$ltADk|OONuh{(yc*hk>4jXFV(L! zHz~C!Brz!`m61WnCqFqcCoHij6U2uKvXo?G7Bez9`%s)mtQi@2lR>%0C9xziDX}<} zk%0^D-C}kIF-8U+<PczFkPa%%E6L1F^~@{FEY3{INp%FJD{!7DW@KRXad!=|=3tOw zWauLz<Ipkq85y{O!6k)TCMaCRFp3Ls_F`mU^8uw&Yeojvvc#OyR7M6K-^}9T%)IoF z%7WBl21N!&24)5jU}9ioU}a!qU}RutU|=v|U}j)sU|`_d&A<^U#I>D)XFmf20}}&3 z0|QtM0|O(200RR94@4D%AcGJCNKBZ4je(g#gn@y9g@KVlltCP-UV?!Ei@B0m%;m>o PE)#<^*mfBPd6>xngP5AA literal 0 HcmV?d00001 diff --git a/bin/src/main/java/fr/ulille/iut/pizzaland/resources/IngredientResource.class b/bin/src/main/java/fr/ulille/iut/pizzaland/resources/IngredientResource.class new file mode 100644 index 0000000000000000000000000000000000000000..8fd0e2c4137569a7a7195610bf2bbe1309a232b9 GIT binary patch literal 2250 zcmX^0Z`VEs1_pBmJ$42rMh2(iqGbKt#LPVXti-ZJ{j?(e(wxkkoK*eH(h~iG%&Mxy zoW#5o{i4+3{L-T2)M9<ly!4{fl+4t;k|3xUI|B<Ng8*22PGVlVzJF3yYH|r91DlV( zySr-;BLjzzPkwrOYLPV~1AA#vre|JSJ|hFCPbh?G&B!1fRGL?knVagFSC(0vnUs_2 zn3tDdl30?NpH~c0>71Wel3Gz>&B(xJlbM%UV#mn9tf3jk$iU*9pOVVXz|Y9QkFejh zs3^aPgF%pyB{MV+<nWxb)D(r}{M>@f9I%-R1x5KuIjOnDRtj94AsML(DXGahiAAX? z3I&PD*@@|?3QB23dXR9?%PcL?gNK72$T)B~C@G}mrxq*Z<(DYrCYB^;D3oNRDx_8v zq$Zajn^RnrtOp8RJ&^PC2%8FVPiAgGeo=`6SWjMRi9&KBC_EIBQWZe<gS>;OuCydG zXCM@2Cl-|?61I5oDoZQE>iU4hk_;>o3MKgpi3%l^1*u$|kW@{sA}&tnoW$Z{8_W!4 zN5DvEb|9b%n!O09^2{yB$xO~HQ7A4gNG(!G&d)0@DJo4a$uClX<YNs@h0J1w(!7+^ zw9LHJ6g>ss(&7?ON(XDpsZ_|!E6dMLRY=UsFUdePfs51KHH3iuKAFYX(l>H2BLc{! zB%hFR;DUyLBFCbl#7gQ~%*DXRAk4$S%^<?aAgbX5%DMXB!Z5g`C^IkJ8dO;E`();& z`jzG;r51%GCgr3uG6?zPCnx5FB^G6Z_)tNXl8nq^Mg|uj%1dTYftj9K;+T`e$iShY z=>zh!H6sIOaAta5Vo7OHDkFm=RM^G`C77-4tQi?tecW9`tT`Cu85wzqC`m_5WHU0z zqgPlVl?AAk7FRI1zI4k3#j`jfY=fYcCb&WX)sdib1{Bt1i8-aI><ns*47>={E+zTw z3>u6KETEWUXV3y^0H<(v1|3EQc4!u7WZ?15EH2K>O9wflm_d<&k%5_kfq{uZih-4Z zje&uIk%66ogMpEOlYxPOje(JY3oOgXz|FwJz{tSMz`$U_z|6qNz`($@n}IJ<NMJjI z(0;HQQK$}(8Db0!VD$_PTnyq25@2&B8Kf9k7^J~!W#Hz^GB98<RSt`(QVf`;DljmB fTr0xB05XS(K@n`a5`!+teGDuNstoE3nhe?i-t)NV literal 0 HcmV?d00001 diff --git a/bin/src/main/resources/ingredients.json b/bin/src/main/resources/ingredients.json new file mode 100644 index 0000000..1dcc13b --- /dev/null +++ b/bin/src/main/resources/ingredients.json @@ -0,0 +1,14 @@ +[ +{ "id": "f38806a8-7c85-49ef-980c-149dcd81d306", "name": "mozzarella"}, +{ "id": "d36903e1-0cc0-4bd6-a0ed-e0e9bf7b4037", "name": "jambon"}, +{ "id": "bc5b315f-442f-4ee4-96de-486d48f20c2f", "name": "champignons"}, +{ "id": "6a04320c-3a4f-4570-96d3-61faf3f898b0", "name": "olives"}, +{ "id": "c77deeee-d50d-49d5-9695-c98ec811f762", "name": "tomate"}, +{ "id": "c9375542-8142-43f6-b54d-0d63597cf614", "name": "merguez"}, +{ "id": "dee27dd6-f9b6-4d03-ac4b-216b5c9c8bd7", "name": "lardons"}, +{ "id": "657f8dd4-6bc1-4622-9af7-37d248846a23", "name": "fromage"}, +{ "id": "070d8077-a713-49a0-af37-3936b63d5ff2", "name": "oeuf"}, +{ "id": "5d9ca5c4-517f-40fd-aac3-5a823d680c1d", "name": "poivrons"}, +{ "id": "52f68024-24ec-46c0-8e77-c499dba1e27e", "name": "ananas"}, +{ "id": "dfdf6fae-f1b2-45fa-8c39-54e522c1933f", "name": "reblochon"} +] diff --git a/bin/src/main/resources/logging.properties b/bin/src/main/resources/logging.properties new file mode 100644 index 0000000..db98114 --- /dev/null +++ b/bin/src/main/resources/logging.properties @@ -0,0 +1,4 @@ +handlers= java.util.logging.ConsoleHandler +.level= INFO +java.util.logging.ConsoleHandler.level = INFO +java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter \ No newline at end of file diff --git a/bin/src/test/java/fr/ulille/iut/pizzaland/IngredientResourceTest.class b/bin/src/test/java/fr/ulille/iut/pizzaland/IngredientResourceTest.class new file mode 100644 index 0000000000000000000000000000000000000000..ebef1ae878ad3d33970b8588ea9aa2f3b0e8c960 GIT binary patch literal 3410 zcmX^0Z`VEs1_pBm3w8!3Mh2VWqGbJ&)Z!BTti-ZJ{j?(e(wxkkoK*eH(h~iG%&Mxy zoW#5oeb2n~qSTbk)Vz|Q)Z+ZoqU6+&)Z!9$1{OvJ0kFoL#JqHU|D>$c<Pt^(HXna? zch?|B1`Z#e{PgtHB5OtlHk-`6%o00B24)S-Fh&Lz=lqmZb_Q-n27ZKo*P^2QA`S*# zM%ERfc}1zk`8j2&DGJH?xdoXyi6xo&c?tzZ`AIpcxy4orT$~{psR}8n$vKHdsVNEt ziOJcC>8T1zX+?SvALwP4mgvEKprnwJpIWStmtUfgn^=;Zp-_^Ms*qYykeXbAth=}< zSq~H%dLT#X;W7(icV=!ueo=`+T9HC>Vjjrgq*Mi%qe)beUzASBkin!RD=|B<s3eh) zlLtf@5#a=m+tQNE9Ks$bOVq=u&?~j5IJFX#53rb{P?E2Zs8CW_kjljg$phpn;^K79 zNh~h5!JY-}2pH>MmReMlnUYFCnPWjgPG&MBk71@}WY0JjWQG|MFwH47Ex(AMm1!lZ z*s>0?Wv&&;sRiJSkKa*5L_$z%aY24wF(Frh3YFZ{l8pQmg_6Xg^wbiK;F6-uymU>4 z%wmPoyp+_m%)HbTg|z%4a0vp6U<K?k!^MfmN-j>H%;FLP!H6)|r6iw#TKCkv)S}Gf zkjer=KBTV2Tnt<c{5%Zo3<8V{q8dJ+tfddG3n0N}4JzyTeKPY>{YrC_Qj0<olX6lS z8H9ZDlM{2o5{oiHe5fExNk(QdBZHj}B~_9&BLio0eqLH;dTCKABLlyNrVmouwq|6I z4l2zn$;?gl%qz<*&P>Wlbp(~&;FMp?$iU?T%P`g)3{s2?(}}2uU^)oI5Rx+psw9}j z7#ZZz{Q-)46u)p3r<S<pm4z07>S0KhwB}%tXJl~0?<r8-3Q>;Vos10JC8>!;u6boH z`Q>?x3|#QsTFlO%%*enA=QA>}`#6HKyEO-c8Y4p<e*3|dJ6Jh>`w`~jSI5X80IJg6 zQ%hWP3rZ?M=^xZY0hJln91L2FjB|-_4@fnBYw%@v<T7ovgh}P%B%x?yWZ()0w>aH0 zK}Cl<eCGQxx1_V`LEZ%uCMCE6yw~NzE(q$V@FtEK1I(WM|N4WZ*{1fb0y0j0{|e z3Y?w67?dQyZB<4F9^cI3;>^5sP>w2QWZ?EoEiUm*1r=Y#><s3N40e<hP%4HDiVTbl z%nS?+j0{o?tPE@n3=FIcj124y91M&MoD2*MCJf9Bj0_A6T)P>#B87OiGw|(aU|?Wk z5M*FrU<1oAG6*p+Fz|rcTnxetA`A=+EDWLyVhqd-;!sr*3=CLIlf+`092V2085ltB z5n*5enZw8+!@$A71UFk2tJ!i`%+|nSHY0-q0|x^$gCf|~j0{R}b5*dKtBS>3U99G+ vqqtH7t7)28Of$k_8ViFqIMj6*bQwUv1Qa6-EDU-KN(=@JMhvD<*P8(VELaX# literal 0 HcmV?d00001 diff --git a/bin/src/test/resources/logging.properties b/bin/src/test/resources/logging.properties new file mode 100644 index 0000000..db98114 --- /dev/null +++ b/bin/src/test/resources/logging.properties @@ -0,0 +1,4 @@ +handlers= java.util.logging.ConsoleHandler +.level= INFO +java.util.logging.ConsoleHandler.level = INFO +java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter \ No newline at end of file diff --git a/bin/target/classes/META-INF/MANIFEST.MF b/bin/target/classes/META-INF/MANIFEST.MF new file mode 100644 index 0000000..a9dd036 --- /dev/null +++ b/bin/target/classes/META-INF/MANIFEST.MF @@ -0,0 +1,5 @@ +Manifest-Version: 1.0 +Built-By: lepages +Build-Jdk: 11.0.9.1 +Created-By: Maven Integration for Eclipse + diff --git a/src/main/java/fr/ulille/iut/pizzaland/beans/Commande.java b/src/main/java/fr/ulille/iut/pizzaland/beans/Commande.java new file mode 100644 index 0000000..ff52863 --- /dev/null +++ b/src/main/java/fr/ulille/iut/pizzaland/beans/Commande.java @@ -0,0 +1,120 @@ +package fr.ulille.iut.pizzaland.beans; + +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +import fr.ulille.iut.pizzaland.dto.CommandeCreateDto; +import fr.ulille.iut.pizzaland.dto.CommandeDto; + +public class Commande { + private UUID id = UUID.randomUUID(); + private String nom; + private String prenom; + private List<Pizza> pizzas=new ArrayList<>(); + public UUID getId() { + return id; + } + public void setId(UUID id) { + this.id = id; + } + public String getNom() { + return nom; + } + public void setNom(String nom) { + this.nom = nom; + } + public String getPrenom() { + return prenom; + } + public void setPrenom(String prenom) { + this.prenom = prenom; + } + public List<Pizza> getPizzas() { + return pizzas; + } + public void setPizzas(List<Pizza> pizzas) { + this.pizzas = pizzas; + } + @Override + public String toString() { + return "Commande [id=" + id + ", nom=" + nom + ", prenom=" + prenom + ", pizzas=" + pizzas + "]"; + } + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((id == null) ? 0 : id.hashCode()); + result = prime * result + ((nom == null) ? 0 : nom.hashCode()); + result = prime * result + ((pizzas == null) ? 0 : pizzas.hashCode()); + result = prime * result + ((prenom == null) ? 0 : prenom.hashCode()); + return result; + } + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + Commande other = (Commande) obj; + if (id == null) { + if (other.id != null) + return false; + } else if (!id.equals(other.id)) + return false; + if (nom == null) { + if (other.nom != null) + return false; + } else if (!nom.equals(other.nom)) + return false; + if (pizzas == null) { + if (other.pizzas != null) + return false; + } else if (!pizzas.equals(other.pizzas)) + return false; + if (prenom == null) { + if (other.prenom != null) + return false; + } else if (!prenom.equals(other.prenom)) + return false; + return true; + } + + public static Commande fromDto(CommandeDto dto) { + Commande commande = new Commande(); + commande.setId(dto.getId()); + commande.setNom(dto.getNom()); + commande.setPrenom(dto.getPrenom()); + commande.setPizzas(dto.getPizzas()); + + return commande; + } + + public static CommandeDto toDto(Commande c) { + CommandeDto dto = new CommandeDto(); + dto.setId(c.getId()); + dto.setNom(c.getNom()); + dto.setPrenom(c.getPrenom()); + dto.setPizzas(c.getPizzas()); + return dto; + } + + public static Commande fromCommandeCreateDto(CommandeCreateDto commandeCreateDto) { + Commande commande = new Commande(); + commande.setNom(commandeCreateDto.getNom()); + commande.setPrenom(commandeCreateDto.getPrenom()); + + return commande; + } + public static CommandeCreateDto toCreateDto(Commande commande) { + CommandeCreateDto dto = new CommandeCreateDto(); + dto.setNom(commande.getNom()); + dto.setPrenom(commande.getPrenom()); + + + return dto; + } + +} \ No newline at end of file diff --git a/src/main/java/fr/ulille/iut/pizzaland/dao/CommandeDao.java b/src/main/java/fr/ulille/iut/pizzaland/dao/CommandeDao.java new file mode 100644 index 0000000..29d8077 --- /dev/null +++ b/src/main/java/fr/ulille/iut/pizzaland/dao/CommandeDao.java @@ -0,0 +1,99 @@ +package fr.ulille.iut.pizzaland.dao; + +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +import org.jdbi.v3.sqlobject.config.RegisterBeanMapper; +import org.jdbi.v3.sqlobject.customizer.Bind; +import org.jdbi.v3.sqlobject.customizer.BindBean; +import org.jdbi.v3.sqlobject.statement.SqlQuery; +import org.jdbi.v3.sqlobject.statement.SqlUpdate; +import org.jdbi.v3.sqlobject.transaction.Transaction; + +import fr.ulille.iut.pizzaland.BDDFactory; +import fr.ulille.iut.pizzaland.beans.Commande; +import fr.ulille.iut.pizzaland.beans.Pizza; + +public interface CommandeDao { + + @SqlUpdate("CREATE TABLE IF NOT EXISTS Commande (id Varchar PRIMARY KEY, nom Varchar UNIQUE NOT NULL,prenom Varchar UNIQUE NOT NULL)") + void createCommandeTable(); + + @SqlUpdate("CREATE TABLE IF NOT EXISTS PizzaCommandeAssociation (pizzaID VARCHAR(128), commandeID VARCHAR(128), PRIMARY KEY(pizzaID, commandeID))") + void createTablePizzaAssociation(); + + @SqlUpdate("DROP TABLE IF EXISTS PizzaCommandeAssociation") + void dropTable(); + + @SqlUpdate("DROP TABLE IF EXISTS Commande") + void dropCommandeTable(); + + @SqlUpdate("INSERT INTO Commande (id, nom, prenom) VALUES (:id, :nom, :prenom)") + void insert(@BindBean Commande commande); + + @SqlUpdate("INSERT INTO PizzaCommandeAssociation (pizzaID,commandeID) VALUES( :pizza.id, :commande.id)") + void insertPizzaAssociation(@BindBean("pizza") Pizza pizza ,@BindBean("commande") Commande commande); + + @Transaction + default void createCommandeAndPizzaAssociation() { + createTablePizzaAssociation(); + createCommandeTable(); + } + @Transaction + default void dropCommandeAndPizzaAssociation() { + dropCommandeTable(); + dropTable(); + } + + @SqlQuery("SELECT * FROM Commande") + @RegisterBeanMapper(Commande.class) + List<Commande> getAll(); + + @SqlQuery("SELECT * FROM Commande WHERE id = :id") + @RegisterBeanMapper(Commande.class) + Commande findById(@Bind("id") UUID id); + + @SqlQuery("SELECT * FROM Commande WHERE nom = :nom") + @RegisterBeanMapper(Commande.class) + Commande findByName(@Bind("nom")String nom); + + @SqlUpdate("DELETE FROM Commande WHERE id = :id") + void remove(@Bind("id") UUID id); + + @SqlQuery("Select * from Pizza where id in(SELECT pizzaID FROM PizzaCommandeAssociation WHERE commandeID = :id)") + @RegisterBeanMapper(Pizza.class) + List<Pizza> findPizzaById(@Bind("id") UUID id); + + default void insertTablePizzaAndCommandeAssociation(Commande commande) { + this.insert(commande); + for(Pizza pizza : commande.getPizzas()) { + this.insertPizzaAssociation(pizza,commande); + } + } + @SqlQuery("SELECT pizzaId FROM PizzaCommandeAssociation where commandeID=:idCommande") + @RegisterBeanMapper(Commande.class) + List<UUID> getAllPizzaID(@Bind("idCommande") UUID idCommande); + + @Transaction + default List<Pizza> getAllPizza(List<UUID> idPizzas){ + PizzaDao pizzas = BDDFactory.buildDao(PizzaDao.class); + List<Pizza> pizza=new ArrayList<>(); + for(UUID id: idPizzas) { + pizza.add(pizzas.getTableAndIngredientAssociation(id)); + } + return pizza; + } + + @Transaction + default Commande getCommandeAndPizzaAssociation(UUID id) { + Commande commande=findById(id); + try{ + List<UUID> pizzaID=getAllPizzaID(id); + commande.setPizzas(getAllPizza(pizzaID)); + }catch(Exception e) {e.printStackTrace();} + return commande; + } + + +} \ No newline at end of file diff --git a/src/main/java/fr/ulille/iut/pizzaland/dto/CommandeCreateDto.java b/src/main/java/fr/ulille/iut/pizzaland/dto/CommandeCreateDto.java new file mode 100644 index 0000000..76471af --- /dev/null +++ b/src/main/java/fr/ulille/iut/pizzaland/dto/CommandeCreateDto.java @@ -0,0 +1,24 @@ +package fr.ulille.iut.pizzaland.dto; + +public class CommandeCreateDto { + private String nom; + private String prenom; + + public String getPrenom() { + return prenom; + } + + public void setPrenom(String prenom) { + this.prenom = prenom; + } + + public CommandeCreateDto() {} + + public void setNom(String name) { + this.nom = name; + } + + public String getNom() { + return nom; + } +} \ No newline at end of file diff --git a/src/main/java/fr/ulille/iut/pizzaland/dto/CommandeDto.java b/src/main/java/fr/ulille/iut/pizzaland/dto/CommandeDto.java new file mode 100644 index 0000000..daf48be --- /dev/null +++ b/src/main/java/fr/ulille/iut/pizzaland/dto/CommandeDto.java @@ -0,0 +1,38 @@ +package fr.ulille.iut.pizzaland.dto; + +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +import fr.ulille.iut.pizzaland.beans.Pizza; + +public class CommandeDto { + private UUID id; + private String nom; + private String prenom; + private List<Pizza> pizzas=new ArrayList<>(); + public UUID getId() { + return id; + } + public void setId(UUID id) { + this.id = id; + } + public String getNom() { + return nom; + } + public void setNom(String nom) { + this.nom = nom; + } + public String getPrenom() { + return prenom; + } + public void setPrenom(String prenom) { + this.prenom = prenom; + } + public List<Pizza> getPizzas() { + return pizzas; + } + public void setPizzas(List<Pizza> pizzas) { + this.pizzas = pizzas; + } +} \ No newline at end of file diff --git a/src/main/java/fr/ulille/iut/pizzaland/dto/PizzaCreateDto.java b/src/main/java/fr/ulille/iut/pizzaland/dto/PizzaCreateDto.java index 8a7273a..87495ba 100644 --- a/src/main/java/fr/ulille/iut/pizzaland/dto/PizzaCreateDto.java +++ b/src/main/java/fr/ulille/iut/pizzaland/dto/PizzaCreateDto.java @@ -1,7 +1,5 @@ package fr.ulille.iut.pizzaland.dto; -import java.util.UUID; - public class PizzaCreateDto { private String name; diff --git a/src/main/java/fr/ulille/iut/pizzaland/resources/CommandeRessource.java b/src/main/java/fr/ulille/iut/pizzaland/resources/CommandeRessource.java new file mode 100644 index 0000000..571c486 --- /dev/null +++ b/src/main/java/fr/ulille/iut/pizzaland/resources/CommandeRessource.java @@ -0,0 +1,108 @@ +package fr.ulille.iut.pizzaland.resources; + +import java.net.URI; +import java.util.List; +import java.util.UUID; +import java.util.logging.Logger; +import java.util.stream.Collectors; + +import fr.ulille.iut.pizzaland.BDDFactory; +import fr.ulille.iut.pizzaland.beans.Commande; +import fr.ulille.iut.pizzaland.dao.CommandeDao; +import fr.ulille.iut.pizzaland.dto.CommandeCreateDto; +import fr.ulille.iut.pizzaland.dto.CommandeDto; +import jakarta.ws.rs.Consumes; +import jakarta.ws.rs.DELETE; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.POST; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.PathParam; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.WebApplicationException; +import jakarta.ws.rs.core.Context; +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.core.UriInfo; + +@Consumes("application/json") +@Path("/commandes") +public class CommandeRessource { + private static final Logger LOGGER = Logger.getLogger(CommandeRessource.class.getName()); + + private CommandeDao commandes; + + @Context + public UriInfo uriInfo; + + public CommandeRessource() { + commandes = BDDFactory.buildDao(CommandeDao.class); + commandes.createTablePizzaAssociation(); + } + + @GET + public List<CommandeDto> getAll() { + LOGGER.info("CommandeRessource:getAll"); + + List<CommandeDto> l = commandes.getAll().stream().map(Commande::toDto).collect(Collectors.toList()); + LOGGER.info(l.toString()); + return l; + } + + @GET + @Path("{id}") + @Produces({ "application/json", "application/xml" }) + public CommandeDto getOneCommande(@PathParam("id") UUID id) { + LOGGER.info("getOneCommande(" + id + ")"); + try { + Commande commande = commandes.getCommandeAndPizzaAssociation(id); + LOGGER.info(commande.toString()); + return Commande.toDto(commande); + } catch (Exception e) { + throw new WebApplicationException(Response.Status.NOT_FOUND); + } + } + + @POST + public Response createCommande(CommandeCreateDto commandeCreateDto) { + Commande existing = commandes.findByName(commandeCreateDto.getNom()); + if (existing != null) { + throw new WebApplicationException(Response.Status.CONFLICT); + } + + try { + Commande commande = Commande.fromCommandeCreateDto(commandeCreateDto); + commandes.insert(commande); + CommandeDto commandeDto = Commande.toDto(commande); + System.out.println(commande.getId().toString()); + URI uri = uriInfo.getAbsolutePathBuilder().path(commande.getId().toString()).build(); + + return Response.created(uri).entity(commandeDto).build(); + } catch (Exception e) { + e.printStackTrace(); + throw new WebApplicationException(Response.Status.NOT_ACCEPTABLE); + } + + } + @DELETE + @Path("{id}") + public Response deleteCommande(@PathParam("id") UUID id) { + if ( commandes.findById(id) == null ) { + throw new WebApplicationException(Response.Status.NOT_FOUND); + } + + commandes.remove(id); + + return Response.status(Response.Status.ACCEPTED).build(); + } + @GET + @Path("{id}/nom") + public String getCommandeNom(@PathParam("id") UUID id) { + Commande commande = commandes.findById(id); + + if (commande == null) { + throw new WebApplicationException(Response.Status.NOT_FOUND); + } + + return commande.getNom(); + } + +} \ No newline at end of file diff --git a/src/main/java/fr/ulille/iut/pizzaland/resources/PizzaRessource.java b/src/main/java/fr/ulille/iut/pizzaland/resources/PizzaRessource.java index 5ac24ca..d8f98ec 100644 --- a/src/main/java/fr/ulille/iut/pizzaland/resources/PizzaRessource.java +++ b/src/main/java/fr/ulille/iut/pizzaland/resources/PizzaRessource.java @@ -7,11 +7,8 @@ import java.util.logging.Logger; import java.util.stream.Collectors; import fr.ulille.iut.pizzaland.BDDFactory; -import fr.ulille.iut.pizzaland.beans.Ingredient; import fr.ulille.iut.pizzaland.beans.Pizza; import fr.ulille.iut.pizzaland.dao.PizzaDao; -import fr.ulille.iut.pizzaland.dto.IngredientCreateDto; -import fr.ulille.iut.pizzaland.dto.IngredientDto; import fr.ulille.iut.pizzaland.dto.PizzaCreateDto; import fr.ulille.iut.pizzaland.dto.PizzaDto; import jakarta.ws.rs.Consumes; @@ -29,7 +26,7 @@ import jakarta.ws.rs.core.UriInfo; @Consumes("application/json") @Path("/pizzas") public class PizzaRessource { - private static final Logger LOGGER = Logger.getLogger(PizzaRessource.class.getName()); + private static final Logger LOG = Logger.getLogger(PizzaRessource.class.getName()); private PizzaDao pizzas; @@ -43,20 +40,20 @@ public class PizzaRessource { @GET public List<PizzaDto> getAll() { - LOGGER.info("PizzaRessource:getAll"); + LOG.info("PizzaRessource:getAll"); List<PizzaDto> l = pizzas.getAll().stream().map(Pizza::toDto).collect(Collectors.toList()); - LOGGER.info(l.toString()); + LOG.info(l.toString()); return l; } @GET @Path("{id}") @Produces({ "application/json", "application/xml" }) public PizzaDto getOnePizza(@PathParam("id") UUID id) { - LOGGER.info("getOnePizza(" + id + ")"); + LOG.info("getOnePizza(" + id + ")"); try { Pizza pizza = pizzas.getTableAndIngredientAssociation(id); - LOGGER.info(pizza.toString()); + LOG.info(pizza.toString()); return Pizza.toDto(pizza); } catch (Exception e) { throw new WebApplicationException(Response.Status.NOT_FOUND); diff --git a/src/test/java/fr/ulille/iut/pizzaland/CommandeRessourceTest.java b/src/test/java/fr/ulille/iut/pizzaland/CommandeRessourceTest.java new file mode 100644 index 0000000..bb0933b --- /dev/null +++ b/src/test/java/fr/ulille/iut/pizzaland/CommandeRessourceTest.java @@ -0,0 +1,193 @@ +package fr.ulille.iut.pizzaland; + +import static org.junit.Assert.assertEquals; + +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +import org.glassfish.jersey.test.JerseyTest; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +import fr.ulille.iut.pizzaland.beans.Commande; +import fr.ulille.iut.pizzaland.beans.Ingredient; +import fr.ulille.iut.pizzaland.beans.Pizza; +import fr.ulille.iut.pizzaland.dao.CommandeDao; +import fr.ulille.iut.pizzaland.dao.IngredientDao; +import fr.ulille.iut.pizzaland.dao.PizzaDao; +import fr.ulille.iut.pizzaland.dto.CommandeCreateDto; +import fr.ulille.iut.pizzaland.dto.CommandeDto; +import jakarta.ws.rs.client.Entity; +import jakarta.ws.rs.core.Application; +import jakarta.ws.rs.core.GenericType; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; + +public class CommandeRessourceTest extends JerseyTest { + private CommandeDao dao; + private PizzaDao pizzadao; + private IngredientDao ingredientdao; + + @Override + protected Application configure() { + return new ApiV1(); + } + + @Before + public void setEnvUp() { + dao = BDDFactory.buildDao(CommandeDao.class); + pizzadao=BDDFactory.buildDao(PizzaDao.class); + ingredientdao =BDDFactory.buildDao(IngredientDao.class); + ingredientdao.createTable(); + dao.createCommandeAndPizzaAssociation(); + pizzadao.createTableAndIngredientAssociation(); + } + + @After + public void tearEnvDown() throws Exception { + dao.dropCommandeAndPizzaAssociation(); + ingredientdao.dropTable(); + pizzadao.dropTableAndIngredientAssociation(); + } + + + @Test + public void testGetEmptyList() { + Response response = target("/commandes").request().get(); + + // Vérification de la valeur de retour (200) + assertEquals(Response.Status.OK.getStatusCode(), response.getStatus()); + + // Vérification de la valeur retournée (liste vide) + List<CommandeDto> commande; + commande = response.readEntity(new GenericType<List<CommandeDto>>(){}); + + assertEquals(0, commande.size()); + } + + @Test + public void testGetExistingCommande() { + Commande commande=new Commande(); + commande.setNom("Paul"); + commande.setPrenom("Jean"); + dao.insert(commande); + + Response response = target("/commandes").path(commande.getId().toString()).request(MediaType.APPLICATION_JSON).get(); + + assertEquals(Response.Status.OK.getStatusCode(), response.getStatus()); + + Commande result = Commande.fromDto(response.readEntity(CommandeDto.class)); + assertEquals(commande, result); + } + + @Test + public void testGetNotExistingCommande() { + Response response = target("/commandes").path(UUID.randomUUID().toString()).request().get(); + assertEquals(Response.Status.NOT_FOUND.getStatusCode(),response.getStatus()); + } + + @Test + public void testCreateCommande() { + CommandeCreateDto commandeCreateDto = new CommandeCreateDto(); + commandeCreateDto.setNom("Paul"); + commandeCreateDto.setPrenom("Jean"); + + Response response = target("/commandes").request().post(Entity.json(commandeCreateDto)); + + assertEquals(Response.Status.CREATED.getStatusCode(), response.getStatus()); + + CommandeDto returnedEntity = response.readEntity(CommandeDto.class); + + assertEquals(target("/commandes/" + returnedEntity.getId()).getUri(), response.getLocation()); + assertEquals(returnedEntity.getNom(), commandeCreateDto.getNom()); + assertEquals(returnedEntity.getPrenom(), commandeCreateDto.getPrenom()); + + } + @Test + public void testCreateSameCommande() { + Commande commande = new Commande(); + commande.setNom("Paul"); + commande.setPrenom("Jean"); + dao.insert(commande); + + CommandeCreateDto commandeCreateDto = Commande.toCreateDto(commande); + Response response = target("/commandes").request().post(Entity.json(commandeCreateDto)); + + assertEquals(Response.Status.CONFLICT.getStatusCode(), response.getStatus()); + } + @Test + public void testCreateCommandeWithoutName() { + CommandeCreateDto commandeCreateDto = new CommandeCreateDto(); + + Response response = target("/commandes").request().post(Entity.json(commandeCreateDto)); + + assertEquals(Response.Status.NOT_ACCEPTABLE.getStatusCode(), response.getStatus()); + } + @Test + public void testDeleteExistingCommande() { + Commande commande = new Commande(); + commande.setNom("Paul"); + commande.setPrenom("Jean"); + dao.insert(commande); + + Response response = target("/commandes/").path(commande.getId().toString()).request().delete(); + + assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatus()); + + Commande result = dao.findById(commande.getId()); + assertEquals(result, null); + } + @Test + public void testDeleteNotExistingCommande() { + Response response = target("/commandes").path(UUID.randomUUID().toString()).request().delete(); + assertEquals(Response.Status.NOT_FOUND.getStatusCode(), response.getStatus()); + } + @Test + public void testGetCommandeNomAndPrenom() { + Commande commande = new Commande(); + commande.setNom("Paul"); + commande.setPrenom("Jean"); + dao.insert(commande); + + Response response = target("commandes").path(commande.getId().toString()).path("nom").request().get(); + + assertEquals(Response.Status.OK.getStatusCode(), response.getStatus()); + + assertEquals("Paul", response.readEntity(String.class)); + } + @Test + public void testGetNotExistingCommandeNom() { + Response response = target("commandes").path(UUID.randomUUID().toString()).path("nom").request().get(); + + assertEquals(Response.Status.NOT_FOUND.getStatusCode(), response.getStatus()); + } + @Test + public void testGetExistingCommandeWithPizza() { + Commande commande = new Commande(); + commande.setNom("Paul"); + commande.setPrenom("Jean"); + Pizza p=new Pizza(); + p.setName("Norvegienne"); + Ingredient Saumon=new Ingredient(); + Saumon.setName("Saumon"); + ingredientdao.insert(Saumon); + List<Ingredient> ingredient=new ArrayList<>(); + ingredient.add(Saumon); + p.setIngredients(ingredient); + pizzadao.insertTablePizzaAndIngredientAssociation(p); + List<Pizza> pizzas=new ArrayList<>(); + pizzas.add(p); + commande.setPizzas(pizzas); + dao.insertTablePizzaAndCommandeAssociation(commande); + + Response response = target("/commandes").path(commande.getId().toString()).request(MediaType.APPLICATION_JSON).get(); + + assertEquals(Response.Status.OK.getStatusCode(), response.getStatus()); + + Commande result = Commande.fromDto(response.readEntity(CommandeDto.class)); + assertEquals(commande, result); + } + +} diff --git a/src/test/java/fr/ulille/iut/pizzaland/IngredientResourceTest.java b/src/test/java/fr/ulille/iut/pizzaland/IngredientResourceTest.java index e8153f1..23aa21c 100644 --- a/src/test/java/fr/ulille/iut/pizzaland/IngredientResourceTest.java +++ b/src/test/java/fr/ulille/iut/pizzaland/IngredientResourceTest.java @@ -1,11 +1,9 @@ package fr.ulille.iut.pizzaland; -import fr.ulille.iut.pizzaland.ApiV1; import fr.ulille.iut.pizzaland.dto.IngredientCreateDto; import fr.ulille.iut.pizzaland.dto.IngredientDto; import org.glassfish.jersey.test.JerseyTest; -import org.glassfish.jersey.test.TestProperties; import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -32,7 +30,7 @@ import fr.ulille.iut.pizzaland.dao.IngredientDao; * la méthode configure() permet de démarrer la ressource à tester */ public class IngredientResourceTest extends JerseyTest { - private static final Logger LOGGER = Logger.getLogger(IngredientResourceTest.class.getName()); + private static final Logger LOG = Logger.getLogger(IngredientResourceTest.class.getName()); private IngredientDao dao; @Override @@ -85,7 +83,7 @@ public class IngredientResourceTest extends JerseyTest { @Test public void testGetExistingIngredient() { Ingredient ingredient = new Ingredient(); - ingredient.setName("Chorizo"); + ingredient.setName("Saumon"); dao.insert(ingredient); Response response = target("/ingredients").path(ingredient.getId().toString()).request(MediaType.APPLICATION_JSON).get(); @@ -105,7 +103,7 @@ public class IngredientResourceTest extends JerseyTest { @Test public void testCreateIngredient() { IngredientCreateDto ingredientCreateDto = new IngredientCreateDto(); - ingredientCreateDto.setName("Chorizo"); + ingredientCreateDto.setName("Saumon"); Response response = target("/ingredients").request().post(Entity.json(ingredientCreateDto)); @@ -120,7 +118,7 @@ public class IngredientResourceTest extends JerseyTest { @Test public void testCreateSameIngredient() { Ingredient ingredient = new Ingredient(); - ingredient.setName("Chorizo"); + ingredient.setName("Saumon"); dao.insert(ingredient); IngredientCreateDto ingredientCreateDto = Ingredient.toCreateDto(ingredient); @@ -141,7 +139,7 @@ public class IngredientResourceTest extends JerseyTest { @Test public void testDeleteExistingIngredient() { Ingredient ingredient = new Ingredient(); - ingredient.setName("Chorizo"); + ingredient.setName("Saumon"); dao.insert(ingredient); Response response = target("/ingredients/").path(ingredient.getId().toString()).request().delete(); @@ -161,14 +159,14 @@ public class IngredientResourceTest extends JerseyTest { @Test public void testGetIngredientName() { Ingredient ingredient = new Ingredient(); - ingredient.setName("Chorizo"); + ingredient.setName("Saumon"); dao.insert(ingredient); Response response = target("ingredients").path(ingredient.getId().toString()).path("name").request().get(); assertEquals(Response.Status.OK.getStatusCode(), response.getStatus()); - assertEquals("Chorizo", response.readEntity(String.class)); + assertEquals("Saumon", response.readEntity(String.class)); } @Test @@ -181,7 +179,7 @@ public class IngredientResourceTest extends JerseyTest { @Test public void testCreateWithForm() { Form form = new Form(); - form.param("name", "chorizo"); + form.param("name", "Saumon"); Entity<Form> formEntity = Entity.entity(form, MediaType.APPLICATION_FORM_URLENCODED_TYPE); Response response = target("ingredients").request().post(formEntity); diff --git a/src/test/java/fr/ulille/iut/pizzaland/PizzaRessourceTest.java b/src/test/java/fr/ulille/iut/pizzaland/PizzaRessourceTest.java index 9684458..a9dfe92 100644 --- a/src/test/java/fr/ulille/iut/pizzaland/PizzaRessourceTest.java +++ b/src/test/java/fr/ulille/iut/pizzaland/PizzaRessourceTest.java @@ -64,7 +64,7 @@ public class PizzaRessourceTest extends JerseyTest{ @Test public void testGetExistingPizza() { Pizza p=new Pizza(); - p.setName("Espagnole"); + p.setName("Norvegienne"); dao.insert(p); Response response = target("/pizzas").path(p.getId().toString()).request(MediaType.APPLICATION_JSON).get(); @@ -82,7 +82,7 @@ public class PizzaRessourceTest extends JerseyTest{ @Test public void testCreatePizza() { PizzaCreateDto pizzaCreateDto = new PizzaCreateDto(); - pizzaCreateDto.setName("Chorizo"); + pizzaCreateDto.setName("Saumon"); Response response = target("/pizzas").request().post(Entity.json(pizzaCreateDto)); @@ -96,7 +96,7 @@ public class PizzaRessourceTest extends JerseyTest{ @Test public void testCreateSamePizza() { Pizza pizza = new Pizza(); - pizza.setName("Chorizo"); + pizza.setName("Saumon"); dao.insert(pizza); PizzaCreateDto pizzaCreateDto = Pizza.toCreateDto(pizza); @@ -115,7 +115,7 @@ public class PizzaRessourceTest extends JerseyTest{ @Test public void testDeleteExistingPizza() { Pizza pizza = new Pizza(); - pizza.setName("Chorizo"); + pizza.setName("Saumon"); dao.insert(pizza); Response response = target("/pizzas/").path(pizza.getId().toString()).request().delete(); @@ -133,14 +133,14 @@ public class PizzaRessourceTest extends JerseyTest{ @Test public void testGetPizzaName() { Pizza pizza = new Pizza(); - pizza.setName("Chorizo"); + pizza.setName("Saumon"); dao.insert(pizza); Response response = target("pizzas").path(pizza.getId().toString()).path("name").request().get(); assertEquals(Response.Status.OK.getStatusCode(), response.getStatus()); - assertEquals("Chorizo", response.readEntity(String.class)); + assertEquals("Saumon", response.readEntity(String.class)); } @Test public void testGetNotExistingPizzaName() { @@ -151,12 +151,12 @@ public class PizzaRessourceTest extends JerseyTest{ @Test public void testGetExistingPizzaWithIngredients() { Pizza p=new Pizza(); - p.setName("Espagnole"); - Ingredient chorizo=new Ingredient(); - chorizo.setName("Chorizo"); - idao.insert(chorizo); + p.setName("Norvegienne"); + Ingredient Saumon=new Ingredient(); + Saumon.setName("Saumon"); + idao.insert(Saumon); List<Ingredient> ingredient=new ArrayList<>(); - ingredient.add(chorizo); + ingredient.add(Saumon); p.setIngredients(ingredient); dao.insertTablePizzaAndIngredientAssociation(p); diff --git a/target/classes/META-INF/MANIFEST.MF b/target/classes/META-INF/MANIFEST.MF new file mode 100644 index 0000000..a9dd036 --- /dev/null +++ b/target/classes/META-INF/MANIFEST.MF @@ -0,0 +1,5 @@ +Manifest-Version: 1.0 +Built-By: lepages +Build-Jdk: 11.0.9.1 +Created-By: Maven Integration for Eclipse + diff --git a/target/classes/META-INF/maven/fr.ulille.iut.pizzaland/pizzaland_jdbi/pom.properties b/target/classes/META-INF/maven/fr.ulille.iut.pizzaland/pizzaland_jdbi/pom.properties new file mode 100644 index 0000000..c564727 --- /dev/null +++ b/target/classes/META-INF/maven/fr.ulille.iut.pizzaland/pizzaland_jdbi/pom.properties @@ -0,0 +1,7 @@ +#Generated by Maven Integration for Eclipse +#Tue Mar 09 09:15:51 CET 2021 +m2e.projectLocation=/home/infoetu/lepages/Prog_rep/m4102_tp3 +m2e.projectName=m4102_tp3 +groupId=fr.ulille.iut.pizzaland +artifactId=pizzaland_jdbi +version=1.0-SNAPSHOT diff --git a/target/classes/META-INF/maven/fr.ulille.iut.pizzaland/pizzaland_jdbi/pom.xml b/target/classes/META-INF/maven/fr.ulille.iut.pizzaland/pizzaland_jdbi/pom.xml new file mode 100644 index 0000000..727e9e2 --- /dev/null +++ b/target/classes/META-INF/maven/fr.ulille.iut.pizzaland/pizzaland_jdbi/pom.xml @@ -0,0 +1,163 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + + <modelVersion>4.0.0</modelVersion> + + <groupId>fr.ulille.iut.pizzaland</groupId> + <artifactId>pizzaland_jdbi</artifactId> + <packaging>jar</packaging> + <version>1.0-SNAPSHOT</version> + <name>pizzaland_jdbi</name> + + <dependencyManagement> + <dependencies> + <dependency> + <groupId>org.glassfish.jersey</groupId> + <artifactId>jersey-bom</artifactId> + <version>${jersey.version}</version> + <type>pom</type> + <scope>import</scope> + </dependency> + <dependency> + <groupId>org.jdbi</groupId> + <artifactId>jdbi3-bom</artifactId> + <type>pom</type> + <version>${jdbi.version}</version> + <scope>import</scope> + </dependency> + </dependencies> + </dependencyManagement> + + <dependencies> + <dependency> + <groupId>org.glassfish.jersey.containers</groupId> + <artifactId>jersey-container-grizzly2-http</artifactId> + </dependency> + <dependency> + <groupId>org.glassfish.jersey.inject</groupId> + <artifactId>jersey-hk2</artifactId> + </dependency> + + <!-- uncomment this to get JSON support: --> + <dependency> + <groupId>org.glassfish.jersey.media</groupId> + <artifactId>jersey-media-json-binding</artifactId> + </dependency> + <!-- --> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>4.12</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.glassfish.jersey.test-framework.providers</groupId> + <artifactId>jersey-test-framework-provider-grizzly2</artifactId> + <version>${jersey.version}</version> + </dependency> + <!-- https://mvnrepository.com/artifact/org.xerial/sqlite-jdbc --> + <dependency> + <groupId>org.xerial</groupId> + <artifactId>sqlite-jdbc</artifactId> + <version>${sqlite-jdbc.version}</version> + </dependency> + <!-- https://mvnrepository.com/artifact/org.jdbi/jdbi3-core --> + <dependency> + <groupId>org.jdbi</groupId> + <artifactId>jdbi3-core</artifactId> + </dependency> + <dependency> + <groupId>org.jdbi</groupId> + <artifactId>jdbi3-sqlobject</artifactId> + </dependency> + <dependency> + <groupId>org.jdbi</groupId> + <artifactId>jdbi3-sqlite</artifactId> + </dependency> + <dependency> + <groupId>org.jdbi</groupId> + <artifactId>jdbi3-testing</artifactId> + <version>3.12.0</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>jakarta.xml.bind</groupId> + <artifactId>jakarta.xml.bind-api</artifactId> + <version>3.0.0</version> + </dependency> + <dependency> + <groupId>com.sun.xml.bind</groupId> + <artifactId>jaxb-impl</artifactId> + <version>3.0.0</version> + <scope>runtime</scope> + </dependency> + <!-- dependency> + <groupId></groupId> + <artifactId></artifactId> + <version></version> + </dependency--> + </dependencies> + + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + <version>3.8.1</version> + <inherited>true</inherited> + <configuration> + <release>11</release> + </configuration> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>exec-maven-plugin</artifactId> + <version>1.2.1</version> + <executions> + <execution> + <goals> + <goal>java</goal> + </goals> + </execution> + </executions> + <configuration> + <mainClass>fr.ulille.iut.pizzaland.Main</mainClass> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-shade-plugin</artifactId> + <version>${shade.version}</version> + <executions> + <execution> + <phase>package</phase> + <goals> + <goal>shade</goal> + </goals> + <configuration> + <transformers> + <transformer + implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> + <mainClass>fr.ulille.iut.pizzaland.Main</mainClass> + </transformer> + <transformer + implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" /> + </transformers> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> + + <properties> + <jersey.version>3.0.0</jersey.version> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + <shade.version>3.2.4</shade.version> + <lombok.version>1.18.16</lombok.version> + <jdbi.version>3.16.0</jdbi.version> + <sqlite-jdbc.version>3.34.0</sqlite-jdbc.version> + <jaxb.version>2.4.0-b180830.0359</jaxb.version> + </properties> +</project> diff --git a/target/classes/fr/ulille/iut/pizzaland/ApiV1$1.class b/target/classes/fr/ulille/iut/pizzaland/ApiV1$1.class new file mode 100644 index 0000000000000000000000000000000000000000..24bf15125a480e7981e5439782d609cbf54858c4 GIT binary patch literal 609 zcmX^0Z`VEs1_pBm8BPXf25~M176wsv1_^csNk#^?l8nq^6$3^Fd7rc*{nDJwoSans z%+eD5g3PL_#GJ&u6n)2n%rHZ1Mg}&U%)HDJJ4Oa24FYO4!x$M@obyvs85#I}GV@aX zN^_G^i$W5Ua#9%?gnaUo6LZ26i!wocs2~f-8H@}(o_TqxMb0^i#l@+`j0}qS?NI@_ ziZeJfJuk7Ov?!I4!O<rxu`E%)v?Mb}-?6ADvC=2AxWophAxWu;dByskdFe%|DVeEx zCDwM<j0{}C`K3k4scxAdw{n5~t_L!ek%8YeFF7Z_I5RKZH?<@qKZTt^iid%nL7I_) z!!NbC#3R4BgolBZfsK(t9&b>p7&0;lgN#ITC?kU`UVV%V%o>_u3<?a)3@i)`42%K- zAlpDJ1_lOp1`Y;B22KVB20I2O1||ju1}-h_tqhD>+ZmWPGB7YOF>o<3Ft9N&GB7YG zFmN+4Fo;1^G4L?(F@OLU*fd54RtA2sdI1JOFfGI&%)r3F!XUyR${+?75n<p3na{w; KzzovJzyJV2LXnsN literal 0 HcmV?d00001 diff --git a/target/classes/fr/ulille/iut/pizzaland/ApiV1.class b/target/classes/fr/ulille/iut/pizzaland/ApiV1.class new file mode 100644 index 0000000000000000000000000000000000000000..6f39718d330c615943b7193e602cbafa80b8f914 GIT binary patch literal 3039 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 literal 0 HcmV?d00001 diff --git a/target/classes/fr/ulille/iut/pizzaland/BDDFactory.class b/target/classes/fr/ulille/iut/pizzaland/BDDFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..cdcbd60121fbfbdf1502ffc86ff6d9f055c53ac3 GIT binary patch literal 4503 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 literal 0 HcmV?d00001 diff --git a/target/classes/fr/ulille/iut/pizzaland/Main.class b/target/classes/fr/ulille/iut/pizzaland/Main.class new file mode 100644 index 0000000000000000000000000000000000000000..2644378f8590d5a2ef9f74fa63104155282edc01 GIT binary patch literal 2368 zcmX^0Z`VEs1_pD6N-hR&22*whGY$rGE(Qw*OLhh;E(TTxQ!WN;1{*F0CI(wh20I3O z4h9Ey21hOiCkAIO1{Vfbkf0kEgFAx<7lS8*7Z-y!gAXSI6N4`ogCB!G2SWfCLm)#C zNI00CA%u%ToFSBvfy2o$*fl;h$di#l$R{hYEKxrvF)v*|xTGjEFWs7vf!8@duec;J zuOuunr!<w3fh#9J-8V5WF+H`2kwFfkqqHP5M?WV&Jv}ooUEc>TZ_UWSW|NthSz^b? zz^tJe#>l|poS%})$iVNDnV0HUnwykb6q1;flM1prKRGccEU_pP#D@y9lw@QUgDgoa z(l5=)%*jdB&nzv`FUYK_O3X>jOVRgD%*?Z9WZ*6?Nh~S}PAw_}xye97(<i?uT|Yf1 zvA8%bvp7RPy(qJ)DyLFEqokxjzZk4c-=n0Y0HVX1k%1*QF*A>mK};hW;veJ?06ROe zD7~1GK^TiPBLf@6L`DWZQmy53tw>HSD9OyvD`sa1V`Sj4NzQ==7gK5lBZDZCYv4*j zQ4(B|n4ImKSO5(tuHgLAqU2P!Oi)O2f&xVk6p=g(at!i}3^MpakC8zZ6e?Ew`Z=Ho z$jC1)v9d6*Fwjpd$kZ=0)MsZ1=V6Foh-74t#bu0RL1vgCJ3|x?Lo`DS4}&U$8aqQQ z4?`S7JR`$#uhgRA)JlcKf&v9_B&DV(lxLP?D1<w@_$VZnC1&P;;#(oHL_xJUv7jI) zGdU3y9(v`8DLGuJ6$SZ4B?><N?(x2^!NHF1uEDk?MWv|<1^J~#3T643MG85o#R^5K zg{6mAm82Fcq?RZY9bQ?GpI4k(4Abr6>J;i8@97uf8sz8bgH3;GQBi7XQL%!lfdQ9C zW{E;-UP)?^LP@?taY=rGLS~7co*pBE04PKuS;IdmD>b=<ogsmTA(0`8ogtZrA%!88 zhart2ot+_rhar<8i=82xharbSo}D3=harz4pNBz)L6)7NfQO-wp@@+|2%1;)3X1Xz zQj1D5Q;XRdig_4H7)p5<${5NS8H5qmxxx|&4?_hgJ|R+>`TCyza4ALx9<YYI)DnGg zR%S~sN=+<DWn@s&KuSc=OsxqKf-1IVWN<{yFInJ7gJl~daK3>ga(#D5Rzl<+x5VU< z{Gv)m1_6kT2pL9(EU4Wui_r21)EcPCL8-;yRP3CemzJ4sO>!PailE@i;*!){Mh52m z(h_(s%FNdfD9X$$2`(v0P0Y1MiBU+nFfy>E<rn29mM}6{LS2qr5FlrMND{Dy1|+g7 zSk$3f$H>550J1zMkC8zXi`k$;h6z*zL9;w4cJm5K5spPfIzpI{fu$%lF$G+<dNMNT zphhD8LXVMw1(doO8Dzle21fzT$iSPPT7oFh85tBbpnk@o!<vzSA8aBxOq@YQFe3wB zdTI%n>64$B0xF^<VWuEdL8Po18AQ>vLnIg(gws<?U}?m$7!r$&44T*i6Oz0!!cY(t zT9D*bS_Cd;7#Sp>`q31F;)5R?W8k7Tq$n{tl|hk#iGiDefq{uZl0lL|ih+?q8q8y6 zkOF0I1_lNe21Zbs%fQH>z`($u&%nsQ$iTqBs<oYgaU)o%A_D^h8(2_?L5YEZfd|ZH zWl&~NVPIh31Qni8%^D2M3?LvN#Jq!nWj6zB<aP$O9SrOn7#J8B84%`}F>o@dGiWd{ zfvwD7U}IonU|>+$!NB3OiGfpyi)AkZcO<hAbMOuZo^1@gn;7`EG4O|LZ(|TZxJZnF zm4Si5fq{j=kwJpNg+ZRdl|h-o4eUZOh<OZ}3|e3hDllj>=rAxc=z@8S40;S44EhZ6 zP*)c*FoS(0zk@+=GlS431|cD)Z4AOfBHI{5w=sw<XW;PG+QuNUk%5tcjX{h-l0lq- z8SEJ;1~vu;22ln!21y1n23ZD425E4p$}z}+odF6cDFzk>0|r9|1_mPr1_pKprbu=M MaZr#OgTvMY0Qii6jsO4v literal 0 HcmV?d00001 diff --git a/target/classes/fr/ulille/iut/pizzaland/beans/.gitkeep b/target/classes/fr/ulille/iut/pizzaland/beans/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/target/classes/fr/ulille/iut/pizzaland/beans/Commande.class b/target/classes/fr/ulille/iut/pizzaland/beans/Commande.class new file mode 100644 index 0000000000000000000000000000000000000000..66e626a051ea03a7e2f0fac720abab31e6b2de9a GIT binary patch literal 4384 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 literal 0 HcmV?d00001 diff --git a/target/classes/fr/ulille/iut/pizzaland/beans/Ingredient.class b/target/classes/fr/ulille/iut/pizzaland/beans/Ingredient.class new file mode 100644 index 0000000000000000000000000000000000000000..4df2414151b5fe27b80d647674923b6197b55126 GIT binary patch literal 3482 zcmX^0Z`VEs1_pD6VlD=025&9~9|m7e25tsF5aG|x5WvO23KHgK2n4Z$xEQz@f<deh zc7{+8#~Z{61hIlZtY8o;1Y}GY7ehEh7|7HJ5H}LUjTB;FV2EXBh~r`q2bn6)5CUQa zvopjqGB9PPFfs`EWF?j*>X(*e=IDopdb(IMGO*+&=B6?-2tj0W67$magG-7s^U|#u z8Q5$x^D;~97#Wx~G{YDfSe)}yQW+WeeKPY>{YrC_Qj0<olXAeC^OF;E!V-%zL42qn zOG!p%F(ZSPPg;?FX-;NNPO5%pX^DP8W>r;UPGVk)eo|^;Ua`JsUV2e#N@i+ai8UjG zs0OApKsKvF#Ssq2u8y@hwZt=pkwF+kJ;)T+bcn2wh9*Qi!Z=0-_Vm;eKX6cpz@$+F zgS{B0fVCvwr6iw`AzXuaziHxBno^RF6bLRQ`PPgKjG2rK%qbu{v`Ny(o>r8fOUP}Q z7UFgsmN??dgvS^o14l+;aRww=Fl%UfGBU6h6lH?a6Qd_116xsQacNEoBLi=6Nn&!g zZ(;#7X|SahmL}#Dqs6y>QdVkmiM3`FBLj1OQWk2Ogi10pu;!O!q!uwUaFpaj(kUYY zcS*i;QEFmID%j_-G>8?r@z#tChD62)vL10zydY9KT#Atak84rm39iSQwAc#HFD*(= zb;|_hQ+|XK^gsmx4}$`OB0EC@4?`k@4iAG2gDek&9D_U~gC?##i|Qtql6)QpZID(? z1}z>2T?RcK27Lx~Mg|RB`q9%94}%4RB|AeB4?{9T3J-%FgFPdIfKz^cNpVS0Vu5dJ zNk)E3F+UqaDhERv4?{Xb1|x$$F0)bH1`jVr1_6*?^})Frl8hJ`_`pK&{Lje1Rg{>Q zlAjAI6j3z5(ilg2YKe1BVsSC3aDf&dU=zWD)?5sk3|Wi}l869Sh|Wy0Wz<ms6|c68 zv5XAjxry1S&iQ%Ci6!BgB^l27dBr7(c_qb+3}zUm6{L6qn-6h-HL{gZA$EprP>|#^ zGN^!k16H1ySC*fh3N6ARwz(xHm*f{!vNIGiGO+pN=VzA|Ff#CX=H;apfgPV(%*ZeU z>I7snAffM(n3s~1TC4)mXpQMIBoV0P5RD;~1*uq+M<c0+#0HArphh?+=HvutmZVy< zGZZm0sABjJVg;((7#Za7t7A}P;AW6!U|?WkU;-s}FiVa>o`HdZkAV@C7Z?~Blo%Ko z>=>9B7#SECc(k@NFly~!VA{&Syb-Kg8LXBWB*(zQ0IJ1#8C1YLuzChn1~mo-uvzL* zvjV}kF)#=snWd$@m4O9epb!HK0|Ns;)Ib3S0R};^p<)b73=9l{P(wj1kYgFa#%n;0 zPhntU069kt&3I-l9TYpn7+4t?7=)pAh%g8+h%$&Wh=J`<fS3TcM+_V|AP<RwiUV+9 zXfkL)Z3G1l$X#q8Umyhw7udCu46F=NU{fKkXM>x{1~rutRANBQ(q{nqhJk@qYYPMO z26zawfkR&wYzz;W%?dS!5md-v(aeIbSrMydeFj*xp!fnQE+D>8Wng7c1Dk;93rHMr zG8ixzLLCwXjbf?Y46Kpc8Q6TZwYD*^Z)4y9(VW{DxU><jgT%Ea0|$c^g8+jzg9L*v zl08xkM&Ja*!63w7%wWR6$iT^9%3y|R4|n8t1|G0IyxSP~K=$x&V-Ucw$B==8!H7YC z!I(jU!4$<Fkm(EzAbZRi)WES|!C(osX9qM*nG49<u-FR7%VdC}=Qsm9^Ku3*5OW)Y zU;<2>1tHF|jX@~ER%Q(Y0|PSyD5pRYoizh9gAD^KgDrzBgB^n@gFV<GkVIz=jaOy{ z69y{=YX(LJRt6&m8wP6zCI(vu1_oUQmj4VQ49x5d+>DG2jEw&o*kBwcM#ca%J_94D z27&tGJJc76TH4DPSXtI+A7@}?UZb^*L0EemgYZ%iNBaN+w=c*;#~FBZwlFXsV-RIt z1LA`?+ZaS<ffQ+NVPJvCv%ut8bha?CY-11w%d;T->%{<Sfx9rUGPp9ZGq^EuGq^MG zGI%gZFnBUZF?cb^Gk7zoG59d(GWas+Gx#ysGWavtGXyZWF$6OBG6XUBGXyilGK4V1 zGlU|AQ6e;q7#I>692guK7#ZXloEV%K)SzL+$H30c%JYXogq?w#pP!$Bk-?ck4;ly- z;LOXwzz6ab$S1oP#26S5$q|y%qQJI6avC4hHckc?23M#le$WIiw3|UZayx?rIN@<_ zV~|8jaD3oGB#wcDA)Y~iArWjMB=ZO{fRY#}v2igNGq`~hwL60crrC%@ErptxA!esC za4@7X2ry)zm<=)!Vm8PYMh0dEPjETn#gNCqz`(`8$dJQOz>v!z$q>Z=Qpd;;&A`YI F0{~oY<T(HU literal 0 HcmV?d00001 diff --git a/target/classes/fr/ulille/iut/pizzaland/beans/Pizza.class b/target/classes/fr/ulille/iut/pizzaland/beans/Pizza.class new file mode 100644 index 0000000000000000000000000000000000000000..6fa772e07d764c37940d366e4d8ca8a024a6b517 GIT binary patch literal 4171 zcmX^0Z`VEs1_pD6DO?Py3@Ka;sSIhH415gf><k%P3@i*OAWkMXLl#3eh?OJ6z`#%d zQdI~NE97D*VkiXZEM{jY0ST9agiArfrCbbrAOj^C%0R4gE(S@43J|Lj#Hs?Zs@WN8 zK%5j1rwqg@2eB$ZtV$583dE}BVo+kJU}vZW(J3IJlAWQBk%1{Qg^@wPCo8cmQNOe# zGe<u()YHY9k%1*IF*lWwK?ov~lbDyTA6!zDnU`+O$iSVMmtK^bl9`%UQjDtEC$qT3 znvsDsI5Ryjv81#pm65>)VglG~khG0YT9JNfPG(L{s(xl^iGD$5RaIh6VqS`VQfgve zvA!qVY->AfMg}&U%)HDJJ4Oa(4b3n{1{UZ1lvG9rexJ;|RKL>Pq|~C2#H1XsL-Ugp zbHWmfGC_Q(AWKO`W-%j!Dgi44Ku)k`WZ+9rEkRgc%*Y_5p^4^tYeoh;3_%jT#G9Cs zg0O~>L05x-`w)t)L1Dm{$;hBZycR|VzG5_g32UHx3uLaC4@wYL7NkOh(H>nnNgf6n z%?b+H6!ZXvCN)-&^HLZYP+SF;18HSXPc88Sr$rH1z@w%{_F|X<QK&nS<v~Vpl;lIw zE+Yd+Mq+UWBn>fZXnHa-uoe_$f)YBTCnEz}QEG8%P6;CeZ*WOsa<*?`0W<*EQVUBH zbBY-mP;Br|%1TWxvDS=YWMIxu%0kU7P)SAx*8Gx;)FMU(_Ozn>T$hr3Mh0Kp@tsnV zuMbX*E+zTangrq)tk9Z~fjI?asv1t!D29T33`*{d46G&jgq#D(kq~=uy9UjC#sWqL zA&_Um`kaeW6H8LT76lXGZ@6-zea{CjK;Zfq8FUB-1Y9+!Fe}N2a~T=%xRJ!bfE#Mf z$iNkxUs{x$>Xr#Askp%5q6aE*c^LE<^w}Bec^DcP9C;Yj7}OaVgh3LJqS&#hD6tY$ zX7Vs-F=(?hH1aSsF$C~1XfS9pG6*>3=a&?h6eSk;rj}&nrxf$EF*I{9wD2&rGPLn9 zcrtjgGqm$CbTD)>GAQFOa={MbVeki;?ErF!6N57kgA0Qz4}%+nI}d{?gBcHl4TCKs zg9<K#kkbGogBC$$@X%po5CD4^oM$1KhLM2}ECjAHK;-}<16NUEUP^v0go7jt3LHiT z=ERf~E`~0KZbk-WuwN9Sk!mPgMjeIB6c7oj(rg)H85zWL6SGsD^YfAuOTsftGMw}C zic1o~m6;o~2m#v-GTj=fqy$+H<%69IDO9YXbp)~yimxEb7#TRyQ%jt45{rvLMIEvx zu%I<NLk}qKCNMInfV~ekFEg(!KRXp#^+H_imY7_UUsTD?Fo}_Y%_l!UyR?9jfyXm1 zFSQ74P--zF!wjf5kj;Q36OY8al$_LJ6^KSGzJd4`Q)5VFK`IvI(Makc(T5TqQ1?40 z=HvutmZVy<GfZY=P{r^cHn%Y{$l+JVpvb_-pvu6&z|6n|$~z1U3{0TB0j9MWv>6x~ zbiiy~27U%cP*!7LWH4Z0VDMyMW?*DsU=Y{Z&cLX(gMn!)1GCm{2A0U}46Iuj*fxSS z88R?1@G&qmFff2xaNG>s47?0R3=9lB5UmWx3?>W=42+=6!N3GIR-b_pEXS&~g@J7Y z+z>Xfpa7C)R;Xr(>&zJ#87vqqp>A_wU}9hbSpzaednW@s6GJ${L0n)tVFqpn5wLk; zU_KAjJdoq87_7n0uwk%;Ix7HbBAb>r)N{-XAkRU}5@TRx5JxhL4Q>`2sL)|xWUvFd z2J8orh%P)-?HL#u92gv-?nd@JGrH#`!4^P54(54A1}6q*sAfB4Co-dZSB8O=K^ANR z#Jk8&RAW#Fd)I}*6>1i;LpabKA`dnO-63ua?oiDr4&gv|h!O)UgEH6zOowPNXo4N$ z0e6TEG?fW~Vp3}h1GCl^298|}oD2-;u2KV=32~JWH2fJsB{<Yo&ls4%2{BMW-iF0i zKwc&TWZZEEcIM>_Tp;E)2Cf8{I2%Nq2W0C`25v?MxC{qG2Bd>y8v{>*t;`y5<^d%J zDF!wM1_mt#W(I8rRt6mgSq5DOa|S&Ie+GT9;}jqcfI5zu!H>b4!H0p7ftA6B!I!~@ zfr-J7fq}u6f$cwo2m>=a10N$J10&;q1~wRniIFjY@jn9x8XsAnfe};%LHx|95A}1i zmi96RR+cr|#~E0e*Jy2H;MLy7z`GR0(LTVy=L_=waRwfpEey=Z7(|)ZfcPNJHU|D# zAVr{HfXK5QV-N?+v*~PMVB5(cz{CJk!2wah0W*O^XA1+zHU>ekJPRU};uypk7#NHh zSQ$(h*cnV2xEahCcp1zYBp56hq!=t2<Qc3O)EKN8bQx?I^cid!Y#Hnr>>2DC+!!1f zd>I@W{281W;u)M75*b_=G8kML@)_J13K`rP>KQy38W}v1Lb@3m(hLmE41o+m42%r& z3@Hr33?|T!7GU6HXXW|BAi~bT$Imaw&(FZg5W)}&2|R{0Xns=K&A=DAok7S)TWcGG z@HPe!5G}fmK@3ETZ)1?qMkGa0LBPP^!@$Ad%OJqu#~{Jr&!E5%2zC=BxhpY*F@!TP zFmNzPF+?z!FfcN3GDI>&VcIDfxt&1@Y^U@#1{siDvfCKsK(zce1_cZ|Lm4<2!WaY? z!WkqOA{Z1HB2ny&2A8uSJ3+RC?2KWEh1%%{^`{WBKNUg#L--3)hQ~5+FvKwkFeD(E zEyNJV5D)eb7u-Jy42hU#D@AT+PzL))b{m5VlKUZMCo^y`q%a6Dq@kD%3L#KfaWRB3 o#4|85Ff$~9tAu2ResG<_$k59$k)e-4k|7uD21bTF21bT_0F<Sqw*UYD literal 0 HcmV?d00001 diff --git a/target/classes/fr/ulille/iut/pizzaland/dao/.gitkeep b/target/classes/fr/ulille/iut/pizzaland/dao/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/target/classes/fr/ulille/iut/pizzaland/dao/CommandeDao.class b/target/classes/fr/ulille/iut/pizzaland/dao/CommandeDao.class new file mode 100644 index 0000000000000000000000000000000000000000..1747c3ce9ad01f15a075e7678356e34099f7a6f5 GIT binary patch literal 4937 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 M3!1mGz!@|f04-zrp#T5? literal 0 HcmV?d00001 diff --git a/target/classes/fr/ulille/iut/pizzaland/dao/IngredientDao.class b/target/classes/fr/ulille/iut/pizzaland/dao/IngredientDao.class new file mode 100644 index 0000000000000000000000000000000000000000..e8d1e36b85adad7a03913a072ccda587c8eb7444 GIT binary patch literal 1504 zcmX^0Z`VEs1_pBm4R!`Kb_R7u2JYmd)Wnk1ki?{%R7M774b3n{2Fak(ypqh^)UeFr z%%q%D$Gp7!lEjkC{JdgD25q1GqICVNl%!1kGGqPX!kql1tkmQZ{o<0ulGNPPyb}H3 z!ko~8l*E!$Yeojvvc#OyR7Qp*=O9<d5Lbl|M<*Xw1y45xKmQN~*9gzxkYI((y!4{f zl+4t;l41po%oK$%#~^19#~=+uBMVK1fFMs_$Dl|BZ`Vj2g}lVvRG73vsGnzGs4LhY zzfd0^O-2UJl%o6ss7DlBg8Tyz)?r%3$iSAFSDac@!pNYj;geRRUz(Gdlas2SSz4lB zkXcogn3I^7qMwwSm{+Xt33s72D0s{~{eoSCLKHmxLj2KP4{@ZXLYSjZsB5r-hE-;Y zj)E1);hKyLN~qx)kXV$Mn_7}uL{tDLmll`g=Vn%=7U?@>=A}5LCgxc)GO!h;=H{2B zGBOBj_+%xPCF+-!Waj9HhI+byovP;I>f;*Xs^Avn?~CHpa1YlYSB1<J1zQEH%oIij zbsW)(W~((L0~1I&R~pC(m41o2sf-MEP^)ti^V0Q$ONuh{(ycX#4^l=3EgY7kq^ZEt z)S^mjMh2Z=S07jB5Ctt<o&p6n$Xg(qk--p$*~$5NX_@KzL8<AP#U-glpy2dPEGS4V zvIe<_==8wIzyh&{Ej_iwF(-$SK}bUrDJFa}i%YB-890M8)AJHbN{hh3g|5Jc_`tHW zW@M1W83K$99FU0dOkrfOfkq2biXh$|Mg|R>wkV({9<Jd0(xT*4w@gqGB812-E{XYi zphU^YpouF$Qxfx$vX@I@J|lwwNQ*u=G5Leb7B)r(Mg}GZ5MXCvWMF1sVPIrnWnf_7 zW?*DsV_;-pFJ|CiVPxRMCc(wR$iU6O!@z{DgO`Difq{V?WHvto0}CUA0D~Z=Dj~2c z9*`<wh)p6aj0~a-Vo;?b3``8-5D5teNf0BMK?*~UGz%kx41+8K6N4NB0|OI-JlHWv edKKV$Sr{1<8I&+hSB9&=FkOU!kwFD)t||bY5s?`H literal 0 HcmV?d00001 diff --git a/target/classes/fr/ulille/iut/pizzaland/dao/PizzaDao.class b/target/classes/fr/ulille/iut/pizzaland/dao/PizzaDao.class new file mode 100644 index 0000000000000000000000000000000000000000..889259dd50dd7c39c63779e5e51e7144fb5556ae GIT binary patch literal 4816 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 literal 0 HcmV?d00001 diff --git a/target/classes/fr/ulille/iut/pizzaland/dao/UUIDArgument.class b/target/classes/fr/ulille/iut/pizzaland/dao/UUIDArgument.class new file mode 100644 index 0000000000000000000000000000000000000000..8ab0259d8479d2c392ee7866f83cefa28d1f494a GIT binary patch literal 947 zcmX^0Z`VEs1_pBmJuU_|23bx9Rt7mP26+YrZU#jLC3Xg7b_Nx8231A|*0RK$(o{wU z0iUeIvPAvTlFS_a&`?hoYeoh(o6Nk-5<5l)VGVRi%`ip=7U%qwR7M7VpUk{eztY^K z)S{5Yq?}Yn1|gsP<iwn?#G*_PA1cUFl95@=$e`tuR-|8=lbMr~s-Ia}qF<0%Rh5{N zn3tlTl9&&+*s&<RG&eP`#F~+THL;)|r;?GuSHlzHfa1a&{eYs>g2bZKl;D!Yl2oul zpZub9{j8LvO#L!r{p9?jRQ+O@oIYHYbADb)YDI}P$mJXb`Nf$fnfZB)42+(P44iP~ zj0`gPEMjC}PA;inWY8taMn(oM*NWuS0+5Bp><ns*3|ztarA5i9ZkeFa5(I@d%+q?H zNZ?`MVo>K{;9%fnXVBnb&}7hJXVB(h&|%PJWY8cs_!t=kKxXOZB<7{-`zK|kCYLZW zC}D(DA~dx1VJ=`~5C!W41$A(s58UO949ps!u;T;E!jlOj14l`Ia7j^SUOFR#h=wL4 z_`sGzM6DSaq`+E024ch=DDYEDASxLd#9;A^tY0&XL6L!#fsKKYft`VoK?oEs3=9lR z42%q14BQNi3_J`B3~mfe3``6R3|v~<85p&+w=yto1gqg?U|`^5U}j)o;ALQ8;A7xq z;Ah}tU|<k~sAk}25MTfSF0iSL42%qd3_=V{U^Al`m>F0Y7#R3<q_ws%Fl}RC-pRni z%z!YM3v7rm10RD3*ibEqa=4-V48jZ|42&Qn7(}5~@-v7tNH8!nNHQ=murM$(NHH)n JNQ0d!0|1B+<In&A literal 0 HcmV?d00001 diff --git a/target/classes/fr/ulille/iut/pizzaland/dao/UUIDArgumentFactory.class b/target/classes/fr/ulille/iut/pizzaland/dao/UUIDArgumentFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..8122dffbc0315bb1fdeec8164c1ccd3aa2cb7530 GIT binary patch literal 2057 zcmX^0Z`VEs1_pBmA9e;cE(T5pbs+`@1|4<=T`mR=20bnY76yH81_K5|b_OGM24hAB zHk-`6%o00B24)S-Fh&Lz=lqmZMh1SL%)C^;(%hufqL9R-oK!{zA)ox@#GJ6iqD&AU zD#%ijky*^hVCa)pq+gnonUj;MpIKU>UyxZ<m6(&5m!hANn6Doi>gnQGlwO*fnpfhM zm|T)yRB6q~z?xK=nUliE5U1gjl~|UjUs{rx16FG7lV6mspOuo7sb6NSpPXNms-K*n zmzJ5X?+m7bQqwbwONuJ3H8B+?Laot<*$1+yEHS4vm61UJ-5y2;Hi*HD3>uh5L8Q>_ zWMoKyx;G~=FJ0e1DJwO(gxW6V%Sp^lN=Z}!hmeW^BSS3IPDB`aLOfGkn4=$1lv<Ej zl$sJ;l30=o3S%tJDTc}E!&N!w=ar;ZlvslzoueSXII|=(KaY`t(UXyZ6Rw<*K?a{i zj10`lB^8Vex|qQSHv-c}Mg}g|isaM+kcGwU3?_^WoWYstd5I;ZMX8Jou9#*aVl}C_ zq$n}D1Qxr{)MNv3BO-L{tQi@&g7Zs@l2hF>L5WuaOB&PzB|An2J`kl33doSkg4ALj z1}+9uMg{?={QMG-Wd**eB^miC#r$jxW&#Z6{A>&sJPei$RxpilOL-Us8H9KktQl<B z8EknN>=^7B8T3ia7K{vr7-^r7=NTD9;XVis^nr&gBLj<ur)C%zg9C#jBZIF7HB$_z zC~;zBU`;G2$f;yxFvCcmL}pEnlKkM3qRhN>Mg|cLO-L+)^A$wYnvp>Y?l+8N4oat~ zB@mU23}P@3BJ0--V`p&YVQ^va;9-zpkYr>~0viWbl9^YQpPj1j1I}u`sU?YNkfMo^ zfjbw$V`uPUWMK2j&(AI`U}WI&%*#tHa?VLCE>10GWH<x$H?nz<<l>Q-my(lOtOC(! zjp;Ka5vW5T8bN6gSvm2N5G(QPMGj)9$<B#6Il-AFsn+Za-i!>Y7~unP7Q}Fve;66$ z@T+4`WZ+=nWB>sc21W)h25tsM1|9|m22%zm21W)326in0p6v`w8yOfFm>75&7#O%1 zm>3usco^6icp3P>EU+>Leg**s1_l;T-hvw8%D~9L3^GD{7l_^fH-ZgpvLINy0!WI1 z9jcvyft^8^K?E$%&LGMl#=s=t!XU^X4mHw*ff=lxOH2Cz1B=c!23B-axxl9KfKA|n zm@2>pN>U6=V1I=$Ff*`#oUJ3RwT*#oCj&b(1HyC2F4Kaj1G@(lK0FLk4ANk8c^G6E zWTC+z#~{zZ%%A}FIwON30}F!^*q_P_Dqvcb!5tiEj0~;}o(ygbk_;Lk+Zh-cG#Qu~ Jv>3D*v;gv)F$n+w literal 0 HcmV?d00001 diff --git a/target/classes/fr/ulille/iut/pizzaland/dto/CommandeCreateDto.class b/target/classes/fr/ulille/iut/pizzaland/dto/CommandeCreateDto.class new file mode 100644 index 0000000000000000000000000000000000000000..faeff370c78e9295738fa796f1ed33748b284bc3 GIT binary patch literal 774 zcmX^0Z`VEs1_pBmIZg%^21zakRt6~$OPZZQhMhr{k%2icKbMg~$R{hYEKxrvF)v*| zxTGjEFWs7vfvun@6)ek{o>~$BWs7KNVpGfFoS%})$iVNDnV0HUnwykb6q1;flL|69 zKRGccEU_pP#D@y9lw@QUGcxG=q!sCx=49sNr0QpumgpB`R#heDB<7{)r<CODJLl)- zCg!E2Iv1rTmZZ9r<XbZ`a26w6BC3Ju5X~?~1~!|_yv!0iMh0dLFt<3h#1G_0mb}E= zR7M82bSR%IIKQ+gIn^x_<V-OP+w?#o!o$G9z|O-U#30PWz{bGN$e>G-iy0XNK&C*# z)jugKHMxXAk%5JQm4ShQiGc}ZB$&m)z|O$Hz{<eLz{$YHz{tSOz`&r-z{tP|64lzm zz_<adjE8}NfekFk!NAMFz`z4$voi28@G~$lFfs@*2tqa6fsJQiVAImx%D}i0uA7U2 z39OHmffsCo7?{rnH34Kg$SEL;g&2gPW+5E1oq-8q6vQF?U}Ml7B7)r^%n02OhX^sS hG6;iBz;uWx13Neb#IS}4GkS=KfsH|Th&b5i5&+&Nf)fA$ literal 0 HcmV?d00001 diff --git a/target/classes/fr/ulille/iut/pizzaland/dto/CommandeDto.class b/target/classes/fr/ulille/iut/pizzaland/dto/CommandeDto.class new file mode 100644 index 0000000000000000000000000000000000000000..5601622517bcc0665292903b01d4c3024a49098e GIT binary patch literal 1540 zcmX^0Z`VEs1_pBmQ!WNh23>XrJuU_&23<}D4hDS?VE`fwL4*-IgE2dU2_pkjW(p&N zfKOIpS)zVvNoJ0IXsD-)H6sIaUVbhkgAha_CowNwKe(hQGcVnmk%6tCC>1QrR*+d$ zl~|0b-zT%U#F~+TGdMFnFR`SwD3y`H9AXOCc#yP>Pg;?FX-;NNPO5%pX^B4An4HAC z6#b;s#Jpnt0FbfPb|9;4GV?M^>=+rCH8jH*8Cab2Q&Jfj_<b_-QvFJElTwR95|eUL zLGH{?PRt2QEXoA&p@J+W8JWe544OD?ODW0Mch1kvP0UM4bt%cWW@KPZPc89GVPp`} z&_r@GG)P#BA(Fxx=yD*pv8AV$_<_Pq1f~}))QX|<qEPL~(jWsk(^E?VpdrgyjKl_s zgF>Vj-Cdxtv}R<mgjq;N0D~=p8jj*Gu-PDIiTR)eZDm0!G<dC`{vg>_kf~h3`K3k4 zscxB|*b_jC1U*nn<Y5qI5Mg8x2C*Tj(y^#0u@dAa9tM5}0Uib}25ue(9tK_>20jK} zMh10U2?{NW85sn?W`e`sKPf9Uxr9NHfrEjQfq{XAfeB<R0|NsS$Ye0h$G{7w`56Ql z7#Re?Y#|0t21bwr85kKv85kJs7?>Ft85kG@w6-%aYVBrVirmh?yp@4vBUrT<0|Nsn z6EZMxGO#f4GKe!UFz`UsGe|H<GB7YOGDtB<L(S4>U<AvtYHeX)-2gX$4J^oyq?r}2 zS%yIts@aZ#iGhiMfq_j+dn*Ggy7fW~tPH|n6T~2@pe8Uduz|e|vRIBm9%>e{L)g$A zA__JJ;tPaB6c`ktno%6WhVBpv237`1unCwB;bGtfhkz1Rhp?kNL>g=ix<iz)JA@tG zA#x0?4Dw(TFdYJlcu<I_FsL#xfuk8YL|D)rq6jty)gh47qQ=0;pw6HHH6#Eziohv^ onE{bPR2WzpRKX@;ItY>iHQ}j;je(y*2%aXj7#JC}!O2Aj0GEps(f|Me literal 0 HcmV?d00001 diff --git a/target/classes/fr/ulille/iut/pizzaland/dto/IngredientCreateDto.class b/target/classes/fr/ulille/iut/pizzaland/dto/IngredientCreateDto.class new file mode 100644 index 0000000000000000000000000000000000000000..72f808355b3aea86906d0e983ebb7aee408358e3 GIT binary patch literal 588 zcmX^0Z`VEs1_pBm2`&Z}1`$pMW(HAq1~GO9aYhD~yu{p8Mg}3Dti-ZJ{hY+Sbp7Cx zqRhN>Yeoh(o6Nk-5<5l)W)00SMg|t={FGEi27aH+yi~u^+@#c^ki?`Mu;%>a#GJ6i zqD&AUD#%ijky*^hVCa)pq+gnonUj;MpIKU>UyxZ<m6(&5m!h9ilCSTXmtK^bl9`%U z;#`!PSd!{el5fq(z+RkM;s<t?s0OCHKu%##hp7<J(8N^2$iNkxUs{x$>Xr#|p9B_b z^g#aQVPI$A;9+28U}I#^C()gZ3<4k{AVKDzl$DxX!l1~&%)r9Hz`)4B1TvI?fq|KU z5o8AgBLgP`1A{&TBLgD?0|Tqpb_T|c3=9lR3|tHh3~XRQb_Q++1_mB5o0WlwffsBL z9|J#BvmFBy0~1KKmiAT#CWLM-uqYP;D+4#!1Tiq54Qc|&bXKqpj0^${f>5&%4%x!M Sv;oZ_d|+eH9U=r)B@6)ergQ)R literal 0 HcmV?d00001 diff --git a/target/classes/fr/ulille/iut/pizzaland/dto/IngredientDto.class b/target/classes/fr/ulille/iut/pizzaland/dto/IngredientDto.class new file mode 100644 index 0000000000000000000000000000000000000000..423b863bc37924e99050c20ee9cd5c81f033a817 GIT binary patch literal 812 zcmX^0Z`VEs1_pBm1uh0w25C+P76us*A<NDn$Ic+n$iS4D!pI=tla*MOs9#!=nWG;X z>gi(5$iR}9n48MTAOw-gNz6;v4=yRn%uBasWMH$&%*!mXV`N~~&<tZ_U~$e*No8c< z_sPsl^()OyN-YXWOv(Xk&QDIv2}>->1o5GQEF~G4#f%KvK50ezr8${7IjQ=Yr6u|W znN?MZIf;2G`Y9#(`kr~|MX4#7sd*(XCHdBj46MbeC7vma48j@^_aIyfasX>OL{>;c z6J45-fxS4j#1HHjQK)8Q&w#YEr^8f;zzjfE!pOiCoL^d$oa&Yd_7sZS^gsc}!@$MB z&BMUPz|O<K!NAGLph>jf7#RdWCg_7L^iRr4O)g<jWME-nWnf@nVqgN931)FHa56A3 zure@$tYTnf;9+23FlJz6U<8S3ZD(NI2v)|+z`(%8z{J47z|FwIz{|kLz`(!*QN+N{ zAi%)Dz{nuTAOtnQ4r~Pj1DlriRt6??69gDo83e&5h=EOHgPOp=zy@{}$Z}x@5vW=E zaK~(6VA=q83>(;T5wJ1n4iRM#gK9=`2s64vBp6s3B*7+NIs_ChAcu%ENI=a(b_g@N PLuA0lpgTko>|7}TFN=xL literal 0 HcmV?d00001 diff --git a/target/classes/fr/ulille/iut/pizzaland/dto/PizzaCreateDto.class b/target/classes/fr/ulille/iut/pizzaland/dto/PizzaCreateDto.class new file mode 100644 index 0000000000000000000000000000000000000000..df3ccff89cd1129f2b21094807d7a8567aec5efd GIT binary patch literal 573 zcmX^0Z`VEs1_pBm2`&Z}1`$pMW(HAq1~GO9aYhD~yu{p8Mg}3Dti-ZJ{hY+Sbp7Cx zqRhN>Yeoh(o6Nk-5<5l)W)00SMg|t={FGEi27aH+yi~u^+@#c^ki?`Mu;%>a#GJ6i zqD&AUD#%ijky*^hpyQKPq+gnonUj;MpIKU>UyxZ<m6(&5m!h9ilCK{C;yD+kCYGeS zl;m48GO!n?miU2PB&vbwB#<lE(_tz^G&C`lFfwoj=a&{Gr@Cc=oF<HFgC5A2JPhm% z96SuH3~Y=HTEx4KkwE~Y8xltTNm;4MB@BuT%nU3H3=E76Od#_Z7#Nrt7(vD}Ffwp5 zFfiydFfuSQFfg!cZD(NI$iTqB#K6VCz`zC;WMklFU|`?@vsoE<7<j=3@iFj2HQO;T zF))EtYiVy~U_$8T0*i7ourhFgO%Ma~*`OwXOlJk#z{nuLAP6-J;gBs1OdHS~!V5MA K-629?Rl)%5FKzq) literal 0 HcmV?d00001 diff --git a/target/classes/fr/ulille/iut/pizzaland/dto/PizzaDto.class b/target/classes/fr/ulille/iut/pizzaland/dto/PizzaDto.class new file mode 100644 index 0000000000000000000000000000000000000000..8a48bb38b57cf09dbc79df03d03a130916da0091 GIT binary patch literal 1380 zcmX^0Z`VEs1_pBm15O5Z22Cyo4hAiD25l||W(F;ghz^L*WoOW1XV7P4V9HEkWDxMl zN-Rs%FD=Q;(GLyvbg^b+V986&O=V;dg2?0~=B4WgmlS2@rCT#HaA)SF7p10TrskCt zqiXiaEH1HTWZ(?WOwUU!DJ@E6WUzsl05%&WZR3+xq+gnonUj;MpIKU>UyxZ<m6(&5 zm!hAPnwVFt?+G{C+RmDhfiFF^1R+$+$RMPliDn|mwa)n|sf-N#KACx`ex<odsYM}) zNjYHm=O-uTge4Ybg7{EDmXeIjVnzlvoGwWz$=446xyz*_-<pxZ4#P@PJyDG231JO% zKWK(AGKl%0IJUAN73yGnbmb)34>Fp~CNnRy#Ey}HSp&pn1vw~%kpaaW;Ft%?g2Frn zJ*dIbj126>sU?2kv>^(06>{PLX=hJ|sStq$9I_Hd2Cm@z(xT*4w@gqB@xlUH50nOZ z7<d`@co<|E<QN%*K?0CO=~z^hSP4o!JPe!+Ts#ci3_OesD!397a`Z7W2!M?NyTCsw zD>b=<L6L!-frEj8fti5`WE=wn0~5$ZFwM)r$H2(I4`vH6urn|+2r>vUFfj--Ffiyd zFfuSQFfg!cZDC;C09GQxz`(!;7UX9TWnf_70kc^d#2CaG7@)>TFfcMmGDtxU31DDi zU;^pV(%#CzxDo6OkSSbXQ6UCa24S#CVqiWS)FhBC5T{AQZDC{JWe|WnR)&EQ6l@HP zV5d4UFoRtpptYTWNozL)bL4gg7N~tp3?TdX7?>Ft7(^IY7<d@?8N|SLLR>EZwUd!S zo<RX>o*lBQSwXIbm;!ON1OqFBB-jK@S93COfrCwvK?!OWaxk)@2crzw7>Gk)!N|y< y%%B3*jN%YBbcZM~ureruO~7;rH#l+_8B`h6pk^UEgbm#xDqv&K9ik47bqxS;-3(j+ literal 0 HcmV?d00001 diff --git a/target/classes/fr/ulille/iut/pizzaland/resources/BDDClearRessource.class b/target/classes/fr/ulille/iut/pizzaland/resources/BDDClearRessource.class new file mode 100644 index 0000000000000000000000000000000000000000..f614aa06861336d4e26735139598130a476c4d08 GIT binary patch literal 647 zcmX^0Z`VEs1_pBmSuO?^22m~sF$QsV1_^csNk#@Xo6Nk-5<5l)W)00SMg|t={FGEi z27aH+yi~u^+@#c^ki?{%R7M6NpZw&+oUp{AOb{O`$WoG#S<J{_>XTNaUz(Gdlas2S zSz4lBkXcogn3I^7qF<C+oL^d$oLa2!<l^F-lbTo*lv)fCvSwu9O$Ld$B$gy5B^IYL zGH|(8B&QaXWaj4;volCBGDrrM=9OgTriNt}XC~#OI_Bl&mn4Fv85x9qvJ$fsi%Jsp z%Zv4kiuK)HL#!DYxPrmfxn+W!EQVpHURGjRA|rzcn%;oKk_>A`2G+8~oYGVt237_( zb_Qu41{nr6Mh0UtyvE2N0J2CwCowNw-#;lUHMxY5K@==hT$rOD9Owi0C?kUsE(@Go zT-*|qOY(~<85y`zit-D<fnLm@$iU3N!T<tH42&ShGB7f*GcYjdGcYnRGB7Z(YHep= z+{nPdz{J48z`(!;7UX5%WME+60kc^dxEQz@7#J8Cco^6in8BKjz<dS<mK_XC2)$ek zObiSRf(*<ILP+{qp!#_k7#LU>7#a8&_@VX)fNd27lR{uoZU#mMVFpG9kzxiO0QaPo AD*ylh literal 0 HcmV?d00001 diff --git a/target/classes/fr/ulille/iut/pizzaland/resources/CommandeRessource.class b/target/classes/fr/ulille/iut/pizzaland/resources/CommandeRessource.class new file mode 100644 index 0000000000000000000000000000000000000000..78914e4cabb082bee560f10148e0442293f83d17 GIT binary patch literal 6342 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 literal 0 HcmV?d00001 diff --git a/target/classes/fr/ulille/iut/pizzaland/resources/IngredientResource.class b/target/classes/fr/ulille/iut/pizzaland/resources/IngredientResource.class new file mode 100644 index 0000000000000000000000000000000000000000..c382aaeafcaea73c236d9f73fda5b0d89dcaddda GIT binary patch literal 6739 zcmX^0Z`VEs1_pCR5iSO0h6;9uN-l;fhH6d*BZeAo1}27D5UY-Zp`MGOfuRv3(!|Zc z&(JKyz`)SS&Ctcr&Bf5e&<kSqu`~3844ELrz{oHeq;v`wgC4^K5HXdVVH!KbbWVmD z3^TbH#299AG0bL|15z^=BsLGEW<H3!0A$}nZiYn+i$P*bxEPj#OjyRSoSk6>7sE1! zm0S#~7*=yJtYKISBGz#+h%&4PnXv(+eItmq38Z8*Nc$XihAkkv0z_;TVqjvJ%+9c# zi(v=D9FTu@GBU9F_`AEi1~D>7`D7)QCF+-!WajAS<fo@+=B4ZV<fo^n7FjbgaA)SF z7p10TrskCtGcsuVq!sCx=49sNr0QpumgpB`R#heDB<7{)rzGa<d%~5vB<5Q)GO(8x zWqRhN<ufwK_+%w!Cl-|?>X#Sm7ZvL#=NF~wheBkn85tylO7luGb5p}Ii!+mQQXTX1 z@=Fp+GV}9_acFhU&nro-D6wW_V6(~0%Pg^DWMJ0N3}a+qan4UkWn|#@$;?ajE6q(x zEec6Y%1LEp5c0`SPRt2QEXoA&p@J+W8JWe53}!feRg_wsUs{x$T8!kkAgCC~^7Paa z$DABS1|bbiq(Jn^ECxA^F^7>s08>~D)g_e$sZiJ0qN%mP>8z9zl)x^@x3;rpWZ(?W zOwUU!DJ@E6WU$9@5UHjKqeYp!Ylt-?gFt#}iGN-yBBmJ`Y&DSF9UAKCVy#Jn!x<U4 z5Gjn2K?|qWq}0Sb<Y=&FWME8XWDtc|o|BlDuJ2lroLT@%Hr9*`OqnUDp$~Q$BLi=6 zNn&!gZ(;#7&_&R^8IV|#Va>?ET9%kon##z)Qk|Jn%g7*suBs?Mr8GIU7!)Fj1qC^o z$>8LwpH-Zn$H>5sEL4%3!^oh7n!p1RixP8FOHzwaQo1C%C5a^&V3i<Sl8aIkOHjf+ zKm%u3p{5UKuvV9nd}~l5#mI(1sl^5PdBv&Lj10VpsBkIC$D7?TQXnG(b7@f~BLg2K zLh@2e^h1L@tr;1F5r)ED!pLAqvf~*UI8rMzi%T-|(is^rqRl@ToIF!fb5c=*Ngqq{ z#8Ma`g@PDbJh-^}xQ4h|GcpLKr<Nd6zF%T)DkFmmR^!VO^}#7JxTGjEFCCOOLFq_8 z53I!yss&jEp_pNTXcdA4F0xL{#Oa)$S6rG4PMnG;DN(n)yj(XezbIF?v?wPvFF8LY zHHDD@J=wYC7v;i|9fwVF4zzsb3I>;iZkeFcR2&fuu;Ne;REaP$@aQ9=yO@W;mcfpZ zL6hi8gPma)55sPTJv<EN3>G{Ldl~F_7)%+=7#SonEwq9ZzU&P9co_CG9N=MaVQ}SP zILL5_kwL&IKfk27q$sh#H?<@qKc$$Tjp48W!x4Tq1`z><qdW}97>=_uoZw+N$#9CD z;WQ7!8HTew4CffmGcxdjyaA~TLB%)^!v%(m{A>)DI2bPTFkE5C;bFMSaE*uII>S*$ z24S$;9F(GmkwFzTb%m!UIU-63coD_UaD#{8Hp3lI5Zz^GxW~hApWz}8!vltgJPeOO z!jBoA@Gv}Oc*etE$za9K@SKO?1;a}ohF1))*%{ujGrZ+tc*pRbkwF0A2LGh2)Z`K# zh7SxM*%?0ZFnnhC%FghOhv7TJ50Kzb9)@3_@ca!j{SU)m9)^D))_+C@Mg|RBF@#>~ z@-Q+o9N=JNVq`GEr3GJ|$<D~k!^pzO%E+LEOS_Yci(6uHNq$i!BLhcLX=YA}OJY7F zgDP^San4CBE(Vuou#5)rJE*+^DJY?(y979Nu(WI#8CWvGEfY~>bD`N4)R15+E-6Y) z%w=SdMyW|5qWZyLNoy`fHb!<v1~p_epe_MrXbi`N<1Vt%1DeE2logcGD;XK&QCyo= znwJc!5B1%k3~NRPaYT@yc!rUIIXAI@k--A$8E~Ls8UXbdSQbUUH6w#GhSARXIXS7I z$Sh`LU@OT7<tRo5ITSZS4S}l!wHuQm+87xOkR5}e66zLk280GXBLhcCJ|r3$8AM<f zfmJ|6t+^OE7&#dkgwxR)G8&AUj11zriP@>n`FY8SCE=MR8K9E1BoW;5<w(oSOL407 zOkrfOL3R|lS%JI3gAuKa46G&j;L24AwVVJqiD9*nN^nVHNhv7MU<@A5yu8#RaKcY5 zW@O;>^ACx4^AGiNVPsH2tFN$`WX;H+4stfm+8=78H7M=t<I0;j+7*lp?CGf`kou4d z5>60~9mq;pE`WwVNnyp|?C<C1<LMm2$RM6pl%I>J1(2E&vAA;;4hQ4OTv#HEEi<n; zwWx%VK^M107}`MLD1{}4p`9K^1~E|el~kOcQ(BS=YIHh*in`PyMg~Q2s>O(?(4tJJ z5>WFL)DlTS?{|RHB1#no5@BSJ#qJKMaf}Qs1&JjYj10zDV+*fdkW;{AG$VtuMl@36 z1ezV8ITX<tl*VElEYUMEutN&(6h;Pqm>}Gdux<v-ERfL{fdtc~0%Jh6TQf3f<FOfC zIU@sGYF<fZNhKqLBXXc1`HB>)A%!wd9oCEt`~^jsc_rYkNk~y*aw;POA1H%6Iy<`t zgg83+xH2-Z6{Y6pm!&c?2t!>2E`mW349>G05Vfu@j0|kW(841aq!OpK@Enh~_`nQE z_F`CGXJlk#;0Kra-~tw0I59GCrl*!bh7TAS^gu4aC;-4(z|Kb-ZeVBR;$h@w<YQ;# z=V7?QD8R^|1Xc?+J~OW@KRZ?5CowlECDAvvBry%vOyJH%@YorJKtmh(`Profj0|Ux z?S~owX%c!Q=B4DM7OVJxRazq@U1&LlB!Z$bq_Q9tSvm2N5G(QP1*K|OctK5ePRz*( z&MX1-&r~o%1L9anjRkKu&7i%nA@*A1&hp4n2KNCwqcFIAjOIgZF~Z0ohv8WibqtCO zMhwaf3=GT+QlLHp0|NsSsMo;2z`zJ<GBYqTSTis%urV+)*f20Ka4;}}IwK5>4E78R z3;_&G42%p63{qO#85p&Mn07EQA7EhG%D|$vg@I)!11lrLMzDDf3=9lH3@i)`3|b5< z4B89=3_1*w47v=C3=9lB5EB@j7@Wa&x-hshFoR9+VqjumVqjpf*u=ml#J-Jz17a#C zBg0MxE=Go34BQM1I~jPG7<Mr5?quL&VmQFS@3V=4O?w-Iz%~XB?G0dGA?!9};9xLj z&|xrPFk>(U+bsq$A8NM_0}q26gF6Ewg9p@I5D`xXMg}jiKfK{#;RAN7FM}V{t&13# z8JHOu7>q#n?_v;SV1T+;dnbbs6NB$21~#2-48q$OICOR}h-~oP%^()Ji9vijgT#IY zMg|@RRR%Q%Q3hrPkZYwF*cccXY#4YL>=?uu>=_gp92nFX92wLZoWQOIg`qeDKZ8Fw z{M8w_83GxCz&<g8`h<bOh#{CEgn^ME6cTr7><pq{x63gwGl1M4#=yuBUd#}|5D8*L zGcXl1L=`hcGsJ*=4(iIpg2am%f*BYY;uzu?m_RYYD8j%Dc3Tc8CbYLPNbY2iVq);s zImW;T@sKpgL)tqSWc)xXbayhyGBN1xU=Xnar3ks54DyT&y4x5OwlOGfV^Ct=%b>iC zLB)zyl641zswB%c2DNPr>KpuYw=rlyjMD@e$H2%S3w9YSeDpvO&)~tp$Kc5z#Nfps z%izbL#Nf}M!w|q=#1O>b#}L90!w||4%Miwp$Pf+=GY<xK1|<e7aF{VO7%^xuBrqg0 zurT;B@G&GYBr~uw#4_-M!x0pVIq-1IVMt*}Wng6BV~Ar&1BW*#M0psP{xHb0Gw9X9 z!j+AIks%$NCNdZ@p=qL&ff*btI-szCq=VzIfC9%nR9uURVH1P)4h9{N@6pn1JOeL7 z0)qrYGJ_IBD%dBGG^+!5p$<|^GczzsfTNk8fr%lDfq?-Y&Di2Kn;{44(sF3(m4~_r zlwx&I-Kw*VK^HwkWixOy<TCIx<S|Gw6oMV60L}#RaL36*9mmZe0uFj6aDwDuVEn@% z#m=AycPmno%*Bxg^B`_zRD`C%VyIiOB*5JadXd{1^!;?Tw=o!il;KQ>yBG{XIhBN@ zC<RU~u%u|jz{9}6P|m>3P{F{@P{|<0P|KjiP{*Lo(7<5G(8OTQ(83VP(8iF=(9V#; z(7}+w&<PGFNOE)phY2%-IfD)~IflZMV+vAoEQW_?F+)B>0RtlgH$w(ea^wRgM^Jcv zXYha}NYGRTC_xs2@^Lf+V=+S!B4CR_f*`Xv7)luIpoO^#xFBX=;1M#~#$ddI!DKT7 z8>skZ1Q$x61kS*q%)r7>3N8xEz;P$ezyvEn7>gOAVCk)#;TEV?U|?pL!LW+qrh_EI u8irL2UsyO9c^Cy5c^M=bS{N7@Bp8?(S{axb+8EjyIv6H0FfvR6liL6irdzQ9 literal 0 HcmV?d00001 diff --git a/target/classes/fr/ulille/iut/pizzaland/resources/PizzaRessource.class b/target/classes/fr/ulille/iut/pizzaland/resources/PizzaRessource.class new file mode 100644 index 0000000000000000000000000000000000000000..f8882dd44e9e1078bdb61c5b9c48e3c6381c7f79 GIT binary patch literal 6238 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 RW`;(FCWdB)9tK8+UI2n$<?#Rj literal 0 HcmV?d00001 diff --git a/target/classes/ingredients.json b/target/classes/ingredients.json new file mode 100644 index 0000000..1dcc13b --- /dev/null +++ b/target/classes/ingredients.json @@ -0,0 +1,14 @@ +[ +{ "id": "f38806a8-7c85-49ef-980c-149dcd81d306", "name": "mozzarella"}, +{ "id": "d36903e1-0cc0-4bd6-a0ed-e0e9bf7b4037", "name": "jambon"}, +{ "id": "bc5b315f-442f-4ee4-96de-486d48f20c2f", "name": "champignons"}, +{ "id": "6a04320c-3a4f-4570-96d3-61faf3f898b0", "name": "olives"}, +{ "id": "c77deeee-d50d-49d5-9695-c98ec811f762", "name": "tomate"}, +{ "id": "c9375542-8142-43f6-b54d-0d63597cf614", "name": "merguez"}, +{ "id": "dee27dd6-f9b6-4d03-ac4b-216b5c9c8bd7", "name": "lardons"}, +{ "id": "657f8dd4-6bc1-4622-9af7-37d248846a23", "name": "fromage"}, +{ "id": "070d8077-a713-49a0-af37-3936b63d5ff2", "name": "oeuf"}, +{ "id": "5d9ca5c4-517f-40fd-aac3-5a823d680c1d", "name": "poivrons"}, +{ "id": "52f68024-24ec-46c0-8e77-c499dba1e27e", "name": "ananas"}, +{ "id": "dfdf6fae-f1b2-45fa-8c39-54e522c1933f", "name": "reblochon"} +] diff --git a/target/classes/logging.properties b/target/classes/logging.properties new file mode 100644 index 0000000..db98114 --- /dev/null +++ b/target/classes/logging.properties @@ -0,0 +1,4 @@ +handlers= java.util.logging.ConsoleHandler +.level= INFO +java.util.logging.ConsoleHandler.level = INFO +java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter \ No newline at end of file diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000..e69de29 diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..66d815d --- /dev/null +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,20 @@ +/home/infoetu/lepages/Prog_rep/m4102_tp3/src/main/java/fr/ulille/iut/pizzaland/resources/CommandeRessource.java +/home/infoetu/lepages/Prog_rep/m4102_tp3/src/main/java/fr/ulille/iut/pizzaland/resources/PizzaRessource.java +/home/infoetu/lepages/Prog_rep/m4102_tp3/src/main/java/fr/ulille/iut/pizzaland/resources/IngredientResource.java +/home/infoetu/lepages/Prog_rep/m4102_tp3/src/main/java/fr/ulille/iut/pizzaland/dao/UUIDArgument.java +/home/infoetu/lepages/Prog_rep/m4102_tp3/src/main/java/fr/ulille/iut/pizzaland/beans/Pizza.java +/home/infoetu/lepages/Prog_rep/m4102_tp3/src/main/java/fr/ulille/iut/pizzaland/dao/CommandeDao.java +/home/infoetu/lepages/Prog_rep/m4102_tp3/src/main/java/fr/ulille/iut/pizzaland/dao/IngredientDao.java +/home/infoetu/lepages/Prog_rep/m4102_tp3/src/main/java/fr/ulille/iut/pizzaland/resources/BDDClearRessource.java +/home/infoetu/lepages/Prog_rep/m4102_tp3/src/main/java/fr/ulille/iut/pizzaland/BDDFactory.java +/home/infoetu/lepages/Prog_rep/m4102_tp3/src/main/java/fr/ulille/iut/pizzaland/dto/PizzaCreateDto.java +/home/infoetu/lepages/Prog_rep/m4102_tp3/src/main/java/fr/ulille/iut/pizzaland/dto/CommandeDto.java +/home/infoetu/lepages/Prog_rep/m4102_tp3/src/main/java/fr/ulille/iut/pizzaland/dao/PizzaDao.java +/home/infoetu/lepages/Prog_rep/m4102_tp3/src/main/java/fr/ulille/iut/pizzaland/dao/UUIDArgumentFactory.java +/home/infoetu/lepages/Prog_rep/m4102_tp3/src/main/java/fr/ulille/iut/pizzaland/beans/Commande.java +/home/infoetu/lepages/Prog_rep/m4102_tp3/src/main/java/fr/ulille/iut/pizzaland/beans/Ingredient.java +/home/infoetu/lepages/Prog_rep/m4102_tp3/src/main/java/fr/ulille/iut/pizzaland/dto/PizzaDto.java +/home/infoetu/lepages/Prog_rep/m4102_tp3/src/main/java/fr/ulille/iut/pizzaland/ApiV1.java +/home/infoetu/lepages/Prog_rep/m4102_tp3/src/main/java/fr/ulille/iut/pizzaland/dto/IngredientCreateDto.java +/home/infoetu/lepages/Prog_rep/m4102_tp3/src/main/java/fr/ulille/iut/pizzaland/Main.java +/home/infoetu/lepages/Prog_rep/m4102_tp3/src/main/java/fr/ulille/iut/pizzaland/dto/IngredientDto.java diff --git a/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst new file mode 100644 index 0000000..e69de29 diff --git a/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst new file mode 100644 index 0000000..83c2836 --- /dev/null +++ b/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst @@ -0,0 +1,2 @@ +/home/infoetu/lepages/Prog_rep/m4102_tp3/src/test/java/fr/ulille/iut/pizzaland/IngredientResourceTest.java +/home/infoetu/lepages/Prog_rep/m4102_tp3/src/test/java/fr/ulille/iut/pizzaland/PizzaRessourceTest.java diff --git a/target/surefire-reports/TEST-fr.ulille.iut.pizzaland.CommandeRessourceTest.xml b/target/surefire-reports/TEST-fr.ulille.iut.pizzaland.CommandeRessourceTest.xml new file mode 100644 index 0000000..49d77b6 --- /dev/null +++ b/target/surefire-reports/TEST-fr.ulille.iut.pizzaland.CommandeRessourceTest.xml @@ -0,0 +1,75 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<testsuite tests="11" failures="0" name="fr.ulille.iut.pizzaland.CommandeRessourceTest" time="2.79" errors="0" skipped="0"> + <properties> + <property name="java.runtime.name" value="OpenJDK Runtime Environment"/> + <property name="java.vm.version" value="11.0.9.1+1-post-Debian-1deb10u2"/> + <property name="sun.boot.library.path" value="/usr/lib/jvm/java-11-openjdk-amd64/lib"/> + <property name="user.country.format" value="FR"/> + <property name="maven.multiModuleProjectDirectory" value="/home/infoetu/lepages/Prog_rep/m4102_tp3"/> + <property name="java.vm.vendor" value="Debian"/> + <property name="java.vendor.url" value="https://tracker.debian.org/openjdk-11"/> + <property name="guice.disable.misplaced.annotation.check" value="true"/> + <property name="path.separator" value=":"/> + <property name="java.vm.name" value="OpenJDK 64-Bit Server VM"/> + <property name="sun.os.patch.level" value="unknown"/> + <property name="sun.java.launcher" value="SUN_STANDARD"/> + <property name="java.vm.specification.name" value="Java Virtual Machine Specification"/> + <property name="user.dir" value="/home/infoetu/lepages/Prog_rep/m4102_tp3"/> + <property name="java.vm.compressedOopsMode" value="Zero based"/> + <property name="java.runtime.version" value="11.0.9.1+1-post-Debian-1deb10u2"/> + <property name="java.awt.graphicsenv" value="sun.awt.X11GraphicsEnvironment"/> + <property name="os.arch" value="amd64"/> + <property name="java.io.tmpdir" value="/tmp"/> + <property name="line.separator" value=" +"/> + <property name="java.vm.specification.vendor" value="Oracle Corporation"/> + <property name="os.name" value="Linux"/> + <property name="classworlds.conf" value="/usr/share/maven/bin/m2.conf"/> + <property name="sun.jnu.encoding" value="UTF-8"/> + <property name="java.library.path" value="/usr/java/packages/lib:/usr/lib/x86_64-linux-gnu/jni:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/usr/lib/jni:/lib:/usr/lib"/> + <property name="maven.conf" value="/usr/share/maven/conf"/> + <property name="jdk.debug" value="release"/> + <property name="java.class.version" value="55.0"/> + <property name="java.specification.name" value="Java Platform API Specification"/> + <property name="sun.management.compiler" value="HotSpot 64-Bit Tiered Compilers"/> + <property name="os.version" value="4.19.0-14-amd64"/> + <property name="library.jansi.path" value="/usr/share/maven/lib/jansi-native"/> + <property name="user.home" value="/home/infoetu/lepages"/> + <property name="user.timezone" value="Europe/Paris"/> + <property name="java.awt.printerjob" value="sun.print.PSPrinterJob"/> + <property name="file.encoding" value="UTF-8"/> + <property name="java.specification.version" value="11"/> + <property name="user.name" value="lepages"/> + <property name="java.class.path" value="/usr/share/maven/boot/plexus-classworlds-2.x.jar"/> + <property name="java.vm.specification.version" value="11"/> + <property name="sun.arch.data.model" value="64"/> + <property name="sun.java.command" value="org.codehaus.plexus.classworlds.launcher.Launcher test"/> + <property name="java.home" value="/usr/lib/jvm/java-11-openjdk-amd64"/> + <property name="user.language" value="en"/> + <property name="java.specification.vendor" value="Oracle Corporation"/> + <property name="user.language.format" value="fr"/> + <property name="awt.toolkit" value="sun.awt.X11.XToolkit"/> + <property name="java.vm.info" value="mixed mode, sharing"/> + <property name="java.version" value="11.0.9.1"/> + <property name="securerandom.source" value="file:/dev/./urandom"/> + <property name="java.vendor" value="Debian"/> + <property name="maven.home" value="/usr/share/maven"/> + <property name="file.separator" value="/"/> + <property name="java.version.date" value="2020-11-04"/> + <property name="java.vendor.url.bug" value="https://bugs.debian.org/openjdk-11"/> + <property name="sun.io.unicode.encoding" value="UnicodeLittle"/> + <property name="sun.cpu.endian" value="little"/> + <property name="sun.cpu.isalist" value=""/> + </properties> + <testcase classname="fr.ulille.iut.pizzaland.CommandeRessourceTest" name="testDeleteNotExistingCommande" time="1.122"/> + <testcase classname="fr.ulille.iut.pizzaland.CommandeRessourceTest" name="testCreateCommande" time="0.247"/> + <testcase classname="fr.ulille.iut.pizzaland.CommandeRessourceTest" name="testGetEmptyList" time="0.154"/> + <testcase classname="fr.ulille.iut.pizzaland.CommandeRessourceTest" name="testDeleteExistingCommande" time="0.163"/> + <testcase classname="fr.ulille.iut.pizzaland.CommandeRessourceTest" name="testCreateCommandeWithoutName" time="0.16"/> + <testcase classname="fr.ulille.iut.pizzaland.CommandeRessourceTest" name="testGetExistingCommande" time="0.169"/> + <testcase classname="fr.ulille.iut.pizzaland.CommandeRessourceTest" name="testGetNotExistingCommande" time="0.2"/> + <testcase classname="fr.ulille.iut.pizzaland.CommandeRessourceTest" name="testGetExistingCommandeWithPizza" time="0.158"/> + <testcase classname="fr.ulille.iut.pizzaland.CommandeRessourceTest" name="testGetCommandeNomAndPrenom" time="0.182"/> + <testcase classname="fr.ulille.iut.pizzaland.CommandeRessourceTest" name="testCreateSameCommande" time="0.125"/> + <testcase classname="fr.ulille.iut.pizzaland.CommandeRessourceTest" name="testGetNotExistingCommandeNom" time="0.11"/> +</testsuite> \ No newline at end of file diff --git a/target/surefire-reports/TEST-fr.ulille.iut.pizzaland.IngredientResourceTest.xml b/target/surefire-reports/TEST-fr.ulille.iut.pizzaland.IngredientResourceTest.xml new file mode 100644 index 0000000..c7f0df3 --- /dev/null +++ b/target/surefire-reports/TEST-fr.ulille.iut.pizzaland.IngredientResourceTest.xml @@ -0,0 +1,75 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<testsuite tests="11" failures="0" name="fr.ulille.iut.pizzaland.IngredientResourceTest" time="0.668" errors="0" skipped="0"> + <properties> + <property name="java.runtime.name" value="OpenJDK Runtime Environment"/> + <property name="java.vm.version" value="11.0.9.1+1-post-Debian-1deb10u2"/> + <property name="sun.boot.library.path" value="/usr/lib/jvm/java-11-openjdk-amd64/lib"/> + <property name="user.country.format" value="FR"/> + <property name="maven.multiModuleProjectDirectory" value="/home/infoetu/lepages/Prog_rep/m4102_tp3"/> + <property name="java.vm.vendor" value="Debian"/> + <property name="java.vendor.url" value="https://tracker.debian.org/openjdk-11"/> + <property name="guice.disable.misplaced.annotation.check" value="true"/> + <property name="path.separator" value=":"/> + <property name="java.vm.name" value="OpenJDK 64-Bit Server VM"/> + <property name="sun.os.patch.level" value="unknown"/> + <property name="sun.java.launcher" value="SUN_STANDARD"/> + <property name="java.vm.specification.name" value="Java Virtual Machine Specification"/> + <property name="user.dir" value="/home/infoetu/lepages/Prog_rep/m4102_tp3"/> + <property name="java.vm.compressedOopsMode" value="Zero based"/> + <property name="java.runtime.version" value="11.0.9.1+1-post-Debian-1deb10u2"/> + <property name="java.awt.graphicsenv" value="sun.awt.X11GraphicsEnvironment"/> + <property name="os.arch" value="amd64"/> + <property name="java.io.tmpdir" value="/tmp"/> + <property name="line.separator" value=" +"/> + <property name="java.vm.specification.vendor" value="Oracle Corporation"/> + <property name="os.name" value="Linux"/> + <property name="classworlds.conf" value="/usr/share/maven/bin/m2.conf"/> + <property name="sun.jnu.encoding" value="UTF-8"/> + <property name="java.library.path" value="/usr/java/packages/lib:/usr/lib/x86_64-linux-gnu/jni:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/usr/lib/jni:/lib:/usr/lib"/> + <property name="maven.conf" value="/usr/share/maven/conf"/> + <property name="jdk.debug" value="release"/> + <property name="java.class.version" value="55.0"/> + <property name="java.specification.name" value="Java Platform API Specification"/> + <property name="sun.management.compiler" value="HotSpot 64-Bit Tiered Compilers"/> + <property name="os.version" value="4.19.0-14-amd64"/> + <property name="library.jansi.path" value="/usr/share/maven/lib/jansi-native"/> + <property name="user.home" value="/home/infoetu/lepages"/> + <property name="user.timezone" value="Europe/Paris"/> + <property name="java.awt.printerjob" value="sun.print.PSPrinterJob"/> + <property name="file.encoding" value="UTF-8"/> + <property name="java.specification.version" value="11"/> + <property name="user.name" value="lepages"/> + <property name="java.class.path" value="/usr/share/maven/boot/plexus-classworlds-2.x.jar"/> + <property name="java.vm.specification.version" value="11"/> + <property name="sun.arch.data.model" value="64"/> + <property name="sun.java.command" value="org.codehaus.plexus.classworlds.launcher.Launcher test"/> + <property name="java.home" value="/usr/lib/jvm/java-11-openjdk-amd64"/> + <property name="user.language" value="en"/> + <property name="java.specification.vendor" value="Oracle Corporation"/> + <property name="user.language.format" value="fr"/> + <property name="awt.toolkit" value="sun.awt.X11.XToolkit"/> + <property name="java.vm.info" value="mixed mode, sharing"/> + <property name="java.version" value="11.0.9.1"/> + <property name="securerandom.source" value="file:/dev/./urandom"/> + <property name="java.vendor" value="Debian"/> + <property name="maven.home" value="/usr/share/maven"/> + <property name="file.separator" value="/"/> + <property name="java.version.date" value="2020-11-04"/> + <property name="java.vendor.url.bug" value="https://bugs.debian.org/openjdk-11"/> + <property name="sun.io.unicode.encoding" value="UnicodeLittle"/> + <property name="sun.cpu.endian" value="little"/> + <property name="sun.cpu.isalist" value=""/> + </properties> + <testcase classname="fr.ulille.iut.pizzaland.IngredientResourceTest" name="testGetNotExistingIngredient" time="0.061"/> + <testcase classname="fr.ulille.iut.pizzaland.IngredientResourceTest" name="testCreateSameIngredient" time="0.065"/> + <testcase classname="fr.ulille.iut.pizzaland.IngredientResourceTest" name="testCreateWithForm" time="0.083"/> + <testcase classname="fr.ulille.iut.pizzaland.IngredientResourceTest" name="testCreateIngredientWithoutName" time="0.067"/> + <testcase classname="fr.ulille.iut.pizzaland.IngredientResourceTest" name="testGetEmptyList" time="0.059"/> + <testcase classname="fr.ulille.iut.pizzaland.IngredientResourceTest" name="testDeleteExistingIngredient" time="0.061"/> + <testcase classname="fr.ulille.iut.pizzaland.IngredientResourceTest" name="testGetNotExistingIngredientName" time="0.048"/> + <testcase classname="fr.ulille.iut.pizzaland.IngredientResourceTest" name="testCreateIngredient" time="0.059"/> + <testcase classname="fr.ulille.iut.pizzaland.IngredientResourceTest" name="testGetExistingIngredient" time="0.058"/> + <testcase classname="fr.ulille.iut.pizzaland.IngredientResourceTest" name="testDeleteNotExistingIngredient" time="0.05"/> + <testcase classname="fr.ulille.iut.pizzaland.IngredientResourceTest" name="testGetIngredientName" time="0.057"/> +</testsuite> \ No newline at end of file diff --git a/target/surefire-reports/TEST-fr.ulille.iut.pizzaland.PizzaRessourceTest.xml b/target/surefire-reports/TEST-fr.ulille.iut.pizzaland.PizzaRessourceTest.xml new file mode 100644 index 0000000..53be68f --- /dev/null +++ b/target/surefire-reports/TEST-fr.ulille.iut.pizzaland.PizzaRessourceTest.xml @@ -0,0 +1,75 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<testsuite tests="11" failures="0" name="fr.ulille.iut.pizzaland.PizzaRessourceTest" time="1.055" errors="0" skipped="0"> + <properties> + <property name="java.runtime.name" value="OpenJDK Runtime Environment"/> + <property name="java.vm.version" value="11.0.9.1+1-post-Debian-1deb10u2"/> + <property name="sun.boot.library.path" value="/usr/lib/jvm/java-11-openjdk-amd64/lib"/> + <property name="user.country.format" value="FR"/> + <property name="maven.multiModuleProjectDirectory" value="/home/infoetu/lepages/Prog_rep/m4102_tp3"/> + <property name="java.vm.vendor" value="Debian"/> + <property name="java.vendor.url" value="https://tracker.debian.org/openjdk-11"/> + <property name="guice.disable.misplaced.annotation.check" value="true"/> + <property name="path.separator" value=":"/> + <property name="java.vm.name" value="OpenJDK 64-Bit Server VM"/> + <property name="sun.os.patch.level" value="unknown"/> + <property name="sun.java.launcher" value="SUN_STANDARD"/> + <property name="java.vm.specification.name" value="Java Virtual Machine Specification"/> + <property name="user.dir" value="/home/infoetu/lepages/Prog_rep/m4102_tp3"/> + <property name="java.vm.compressedOopsMode" value="Zero based"/> + <property name="java.runtime.version" value="11.0.9.1+1-post-Debian-1deb10u2"/> + <property name="java.awt.graphicsenv" value="sun.awt.X11GraphicsEnvironment"/> + <property name="os.arch" value="amd64"/> + <property name="java.io.tmpdir" value="/tmp"/> + <property name="line.separator" value=" +"/> + <property name="java.vm.specification.vendor" value="Oracle Corporation"/> + <property name="os.name" value="Linux"/> + <property name="classworlds.conf" value="/usr/share/maven/bin/m2.conf"/> + <property name="sun.jnu.encoding" value="UTF-8"/> + <property name="java.library.path" value="/usr/java/packages/lib:/usr/lib/x86_64-linux-gnu/jni:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/usr/lib/jni:/lib:/usr/lib"/> + <property name="maven.conf" value="/usr/share/maven/conf"/> + <property name="jdk.debug" value="release"/> + <property name="java.class.version" value="55.0"/> + <property name="java.specification.name" value="Java Platform API Specification"/> + <property name="sun.management.compiler" value="HotSpot 64-Bit Tiered Compilers"/> + <property name="os.version" value="4.19.0-14-amd64"/> + <property name="library.jansi.path" value="/usr/share/maven/lib/jansi-native"/> + <property name="user.home" value="/home/infoetu/lepages"/> + <property name="user.timezone" value="Europe/Paris"/> + <property name="java.awt.printerjob" value="sun.print.PSPrinterJob"/> + <property name="file.encoding" value="UTF-8"/> + <property name="java.specification.version" value="11"/> + <property name="user.name" value="lepages"/> + <property name="java.class.path" value="/usr/share/maven/boot/plexus-classworlds-2.x.jar"/> + <property name="java.vm.specification.version" value="11"/> + <property name="sun.arch.data.model" value="64"/> + <property name="sun.java.command" value="org.codehaus.plexus.classworlds.launcher.Launcher test"/> + <property name="java.home" value="/usr/lib/jvm/java-11-openjdk-amd64"/> + <property name="user.language" value="en"/> + <property name="java.specification.vendor" value="Oracle Corporation"/> + <property name="user.language.format" value="fr"/> + <property name="awt.toolkit" value="sun.awt.X11.XToolkit"/> + <property name="java.vm.info" value="mixed mode, sharing"/> + <property name="java.version" value="11.0.9.1"/> + <property name="securerandom.source" value="file:/dev/./urandom"/> + <property name="java.vendor" value="Debian"/> + <property name="maven.home" value="/usr/share/maven"/> + <property name="file.separator" value="/"/> + <property name="java.version.date" value="2020-11-04"/> + <property name="java.vendor.url.bug" value="https://bugs.debian.org/openjdk-11"/> + <property name="sun.io.unicode.encoding" value="UnicodeLittle"/> + <property name="sun.cpu.endian" value="little"/> + <property name="sun.cpu.isalist" value=""/> + </properties> + <testcase classname="fr.ulille.iut.pizzaland.PizzaRessourceTest" name="testGetEmptyListPizza" time="0.137"/> + <testcase classname="fr.ulille.iut.pizzaland.PizzaRessourceTest" name="testCreatePizza" time="0.099"/> + <testcase classname="fr.ulille.iut.pizzaland.PizzaRessourceTest" name="testGetNotExistingPizzaName" time="0.079"/> + <testcase classname="fr.ulille.iut.pizzaland.PizzaRessourceTest" name="testGetPizzaName" time="0.103"/> + <testcase classname="fr.ulille.iut.pizzaland.PizzaRessourceTest" name="testGetExistingPizzaWithIngredients" time="0.111"/> + <testcase classname="fr.ulille.iut.pizzaland.PizzaRessourceTest" name="testCreateSamePizza" time="0.095"/> + <testcase classname="fr.ulille.iut.pizzaland.PizzaRessourceTest" name="testDeleteNotExistingPizza" time="0.084"/> + <testcase classname="fr.ulille.iut.pizzaland.PizzaRessourceTest" name="testGetExistingPizza" time="0.099"/> + <testcase classname="fr.ulille.iut.pizzaland.PizzaRessourceTest" name="testDeleteExistingPizza" time="0.087"/> + <testcase classname="fr.ulille.iut.pizzaland.PizzaRessourceTest" name="testCreatePizzaWithoutName" time="0.079"/> + <testcase classname="fr.ulille.iut.pizzaland.PizzaRessourceTest" name="testGetNotExistingPizza" time="0.082"/> +</testsuite> \ No newline at end of file diff --git a/target/surefire-reports/fr.ulille.iut.pizzaland.CommandeRessourceTest.txt b/target/surefire-reports/fr.ulille.iut.pizzaland.CommandeRessourceTest.txt new file mode 100644 index 0000000..d81ee11 --- /dev/null +++ b/target/surefire-reports/fr.ulille.iut.pizzaland.CommandeRessourceTest.txt @@ -0,0 +1,4 @@ +------------------------------------------------------------------------------- +Test set: fr.ulille.iut.pizzaland.CommandeRessourceTest +------------------------------------------------------------------------------- +Tests run: 11, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.869 sec diff --git a/target/surefire-reports/fr.ulille.iut.pizzaland.IngredientResourceTest.txt b/target/surefire-reports/fr.ulille.iut.pizzaland.IngredientResourceTest.txt new file mode 100644 index 0000000..9182016 --- /dev/null +++ b/target/surefire-reports/fr.ulille.iut.pizzaland.IngredientResourceTest.txt @@ -0,0 +1,4 @@ +------------------------------------------------------------------------------- +Test set: fr.ulille.iut.pizzaland.IngredientResourceTest +------------------------------------------------------------------------------- +Tests run: 11, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.677 sec diff --git a/target/surefire-reports/fr.ulille.iut.pizzaland.PizzaRessourceTest.txt b/target/surefire-reports/fr.ulille.iut.pizzaland.PizzaRessourceTest.txt new file mode 100644 index 0000000..631b550 --- /dev/null +++ b/target/surefire-reports/fr.ulille.iut.pizzaland.PizzaRessourceTest.txt @@ -0,0 +1,4 @@ +------------------------------------------------------------------------------- +Test set: fr.ulille.iut.pizzaland.PizzaRessourceTest +------------------------------------------------------------------------------- +Tests run: 11, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.063 sec diff --git a/target/test-classes/fr/ulille/iut/pizzaland/CommandeRessourceTest$1.class b/target/test-classes/fr/ulille/iut/pizzaland/CommandeRessourceTest$1.class new file mode 100644 index 0000000000000000000000000000000000000000..78157a5e878c0a350e725f83af1184f248d528ae GIT binary patch literal 768 zcmX^0Z`VEs1_pBmIZg&<25~M176u7+21#}XDMkjil8nq^6$3^FeV?=<{nDJwoSans z%+eD5g3PL_#GJ&u6n*FX+}y;xl+>Wq;^O?$qU6+&)Z!9rMg}&U%)HDJJ4Oa04HETg zhA}d*IOnINGBWV{Wag#%mF6a;7KJ1x<)kt)2>IkEC+37D7G;9?P(c=uGZ`6pJoEBW zi=1;3i;Gi>85s;ovscB?nvsDsI5Ryjv81#pm60LVCo3^Kv8W_bzr0w#s8~NazbIAT zJvA@2C^I>vvLMyQCo8cmQNOe#Ge_Siv$(_tr+q0U`S5UZDap6Cv$nHlWZ()0hnHI> z$X`-e!%+`p10w^!YhH3resN}Ax^HSpMt%xAgES9=41+8q1BYK~afwHMaS0CtD+3!3 z13O4ipQN}_F=S+r!|zi@23?YjWMmL1Ni8mMPc3oHEhwo31r8$vvxa6Eg8~CH0}BHK z1EYWd$iW~M0|Ns)0|x^m11AFmgB=4C0}}%S1DBTeRt83`?F>vC85kIt7`PZ17}yvX z85kHG8Mql37{nl|7<d@?7(jpvY#Jj2D+51Ry#RwCm=<CXW?*1oVGv;uWe@|4h%oSi O%x7R^U<PSqU;qGLLeOde literal 0 HcmV?d00001 diff --git a/target/test-classes/fr/ulille/iut/pizzaland/CommandeRessourceTest.class b/target/test-classes/fr/ulille/iut/pizzaland/CommandeRessourceTest.class new file mode 100644 index 0000000000000000000000000000000000000000..469ac61461efa4359e697fa8309fbc44777e510e GIT binary patch literal 8040 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 literal 0 HcmV?d00001 diff --git a/target/test-classes/fr/ulille/iut/pizzaland/IngredientResourceTest$1.class b/target/test-classes/fr/ulille/iut/pizzaland/IngredientResourceTest$1.class new file mode 100644 index 0000000000000000000000000000000000000000..9ddeff5fa817b7e7e5ed2913cf146e4066cd2eb8 GIT binary patch literal 776 zcmX^0Z`VEs1_pBmIZg&<25~M176u7+21#}XDMkjil8nq^6$3^F1D~`a{nDJwoSans z%+eD5g3PL_#GJ&u6n)RU^rF<1%+$P+pw#00(xT+lkksN5Yeoh(o6Nk-5<5l)V+~R@ zYlbm0usG+Zq%tz_`();&`jzG;r51%GCgr3uG6?zPCnx5FB^G6Z_)tL>kV6?6cs%p+ zQj45(5{rvdiy0Y=NVHhR(3+8fGdMFnFR`SwD3y^R-X|+DJF%!FQNO%czo=M0Ilm}X z-#s-iwJ0+=q_QB@#wRPWEK$F-Br`|fC$qT32B(E7CHY7}<x-MwZD(y~&B(wN3=T85 zOpw>4u?MCe$Pz{de%HL@oc!X<yma5xl8pQmb_Qu41{nrfMg|VQ)Z!A4{NfTG237_( z9tL)hpaE$yrees*Acx<#j0}3DnaRi?P?B0);+|UKnp;p(2?`-b24)S-Fa`w%W(F1p z1_nj}0g#hHECvP!b_NaxMg~p>1_nC@CI%)31_mxI?X3)qTH6_zHZm|UFfnj3Ffgz& zFfuSO_%LuYFffQgR59={@G*b@7uYmL237`suzCRoK`<@EAk4tPz``KHAj%*H77=0K P1)0yl$iNKJ$iM&q^Z(Qi literal 0 HcmV?d00001 diff --git a/target/test-classes/fr/ulille/iut/pizzaland/IngredientResourceTest.class b/target/test-classes/fr/ulille/iut/pizzaland/IngredientResourceTest.class new file mode 100644 index 0000000000000000000000000000000000000000..a0439577ba0cac3f20f4a9f45c5a1bd3cd842c5b GIT binary patch literal 7582 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 literal 0 HcmV?d00001 diff --git a/target/test-classes/fr/ulille/iut/pizzaland/PizzaRessourceTest$1.class b/target/test-classes/fr/ulille/iut/pizzaland/PizzaRessourceTest$1.class new file mode 100644 index 0000000000000000000000000000000000000000..fe0cf3663f70123a18f5b1dbec5430e76edef6b8 GIT binary patch literal 752 zcmX^0Z`VEs1_pBmIZg&<25~M176u7+21#}XDMkjil8nq^6$3^F9iOx!{nDJwoSans z%+eD5g3PL_#GJ&u6#W1YD=4+NIKQ+gIW;7;xWt-~fz2i}FSEpskwIUB6pfl;j0`N! z`6;Q44E#Qsd8vM-xk;%-A&E&jsf-LlKKaRsIbn%KnIJw?kOkyGMg|_wyu8#R=bXgi z;?!bB20aoiRWY<?WZ(?WOwUU!DJ@E6WQg*~O3Y3yDoNBYFV-(A)=$naO4WBy%}XuH zOb)3mNVW0FN-Rs%FD=Q;(f7$LF0sLBSxQMhBzRm(@~!Qx?W`FYxPrmK<dzBYkvL}9 z>4D5<WZ-wrOU}tJ&df{qO)bgDPhn?}=3$UwkY!}x@JlT&@yIVO;bCB9VB=w62MOvB zA2}+9j0|%4J;=zQMZ9^845B5e#U<{kC9b&zC6%B60sD%PfmuT{j6s2cnSq6Yfq_v# z0OVc}i-CcGoq>aak%5zefx(V}iGhiMfq_d)dn*H@)^-M_jSLJ7OblEM3=C`xj0_A6 zHVoVh3=CorRSY}~d<-DK1vZV5ft7(DtX_aY5KId(2s1D+urP=)h%$(QMMM~QLFO|s LGBATQGB5xD*Lcdw literal 0 HcmV?d00001 diff --git a/target/test-classes/fr/ulille/iut/pizzaland/PizzaRessourceTest.class b/target/test-classes/fr/ulille/iut/pizzaland/PizzaRessourceTest.class new file mode 100644 index 0000000000000000000000000000000000000000..9ac6d6f83e83a3b75755abc5857a82c40e677b50 GIT binary patch literal 7282 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 literal 0 HcmV?d00001 diff --git a/target/test-classes/logging.properties b/target/test-classes/logging.properties new file mode 100644 index 0000000..db98114 --- /dev/null +++ b/target/test-classes/logging.properties @@ -0,0 +1,4 @@ +handlers= java.util.logging.ConsoleHandler +.level= INFO +java.util.logging.ConsoleHandler.level = INFO +java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter \ No newline at end of file -- GitLab