From 818daa887657432bbaa94e543f8634236ca27d13 Mon Sep 17 00:00:00 2001 From: Gwendal MARGELY <gwendal.margely.etu@frene16.iut-infobio.priv.univ-lille1.fr> Date: Tue, 12 Mar 2024 14:25:16 +0100 Subject: [PATCH] add Ingredients + Price + init DAO --- .gitignore | 1 + Documentation/sujet.md | 41 +++++++++++++------------ WEB-INF/src/DAO/DAOIngredients.java | 4 +++ WEB-INF/src/POJO/Ingredient.java | 43 +++++++++++++++++++++++++++ WEB-INF/src/POJO/Price.java | 46 +++++++++++++++++++++++++++++ 5 files changed, 114 insertions(+), 21 deletions(-) create mode 100644 WEB-INF/src/DAO/DAOIngredients.java create mode 100644 WEB-INF/src/POJO/Ingredient.java create mode 100644 WEB-INF/src/POJO/Price.java diff --git a/.gitignore b/.gitignore index 85e7c1d..4a9771d 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ /.idea/ +/.gitignore \ No newline at end of file diff --git a/Documentation/sujet.md b/Documentation/sujet.md index 7bff773..6bf5bed 100644 --- a/Documentation/sujet.md +++ b/Documentation/sujet.md @@ -1,18 +1,18 @@  -## SAé S4.A02.1 : Web Backend +# SAé S4.A02.1 : Web Backend -``` -R2.06 - BDD +``` shell +R2.06 – BDD DUT Info – N Philippe Mathieu -2023– +2023 ``` ## Objectif Savoir réaliser et mettre en place une architecture REST -Cette SAÉ ne met en oeuvre que les compétences REST et ne s’occupe pas des aspects “Vue†+Cette SAÉ ne met en œuvre que les compétences REST et ne s’occupe pas des aspects “Vue†## Travail à réaliser @@ -20,20 +20,20 @@ L’entreprise Pizzaland souhaite mettre à disposition des entreprises tierces, ingrédients ainsi que les commandes qui sont effectuées par les clients. Elle envisage pour cela de mettre en place une API REST. -Pour simplifier le travail, Pizzaland a décidé de ne communiquer qu’en JSON. Bien évidemment ce travail nécessite -une base de données. Pour faciliter la maintenance future de l’application on souhaite isoler les requêtes SQL dans des +Pour simplifier le travail, Pizzaland a décidé de ne communiquer qu’en JSON. Bien évidemment, ce travail nécessite +une base de données. Pour faciliter la maintenance future de l’application, on souhaite isoler les requêtes SQL dans des DAO, et la connexion à la base de données à un seul endroit. -``` +``` markdown Ce travail peut être réalisé en binôme. -Un test de chaque endpoint doit figurer dans une collectionBRUNO +Un test de chaque endpoint doit figurer dans une collection BRUNO Un fichier Markdown explicatif (tables, requetes) doit être fourni Une réunion de rendu de projet sera organisée pour discuter avec chaque binôme des étapes réalisées. ``` - +--- # Partie 1 : Les ingrédients -On s’interesse tout d’abord aux ingrédients. Les ingrédients sont caractérisés par leur id, leur nom et leur prix. Il +On s’intéresse tout d’abord aux ingrédients. Les ingrédients sont caractérisés par leur id, leur nom et leur prix. Il faut bien sûr une table du SGBD pour les stocker, un DTO pour le mapping objet/relationnel et un DAOIngrédient pour assurer les requêtes. @@ -44,24 +44,23 @@ Au minimum, les endpoints suivants doivent être assurés : **GET /ingredients/{id}** *pour obtenir un ingrédient particulier* - **GET /ingredients/{id}/name** *pour obtenir uniquement le nom d’un ingrédient spécifique* **POST /ingredients** *pour ajouter un nouvel ingrédient* **DELETE /ingredients/{id}** *pour supprimer un ingrédient existant* - -``` +``` markdown Les cas d’erreurs doivent bien évidemment être traités. ``` + # Partie 2 : Les pizzas -On s’interesse maintenant aux pizzas. Bien évidemment les pizzas ont un nom, un type de pâte, un prix de base et -la liste des ingrédients qui la composent. Un même ingrédient pouvant être utilisé dans plusieurs types de pizzas. le prix +On s’intéresse maintenant aux pizzas. Bien évidemment, les pizzas ont un nom, un type de pâte, un prix de base et +la liste des ingrédients qui la composent. Un même ingrédient pouvant être utilisé dans plusieurs types de pizzas. Le prix final d’une pizza est calculé par l’addition du prix de base et la somme des ingrédients qui la composent. - +--- Au minimum, les endpoints suivants doivent être assurés : **GET /pizzas** *pour obtenir la collection de toutes les pizzas* @@ -85,9 +84,9 @@ Au minimum, les endpoints suivants doivent être assurés : # Partie 3 : les commandes On s’occupe maintenant de la partie utilisateurs. Un utilisateur peut bien évidemment commander plusieurs pizzas -dans sa commande. Chaque commande doit contenir unid, lenomde l’utilisateur, ladatede commande, et laliste -des pizzas commandées. le prix final d’une pizza est calculé par l’addition du prix de chaune des pizza commandées. -On ne s’occupera pas de la gestion des utilisateurs. Ceux ci peuvent être mis “en dur†dans la base de données. +dans sa commande. Chaque commande doit contenir un id, le nom de l’utilisateur, la date de commande, et la liste +des pizzas commandées. Le prix final d’une pizza est calculé par l’addition du prix de chacune des pizzas commandées. +On ne s’occupera pas de la gestion des utilisateurs. Ceux-cis peuvent être mis “en dur†dans la base de données. --- Au minimum, les endpoints suivants doivent être assurés : @@ -100,7 +99,7 @@ Au minimum, les endpoints suivants doivent être assurés : **GET /commandes/{id}/prixfinal** *fournit le prix final de la commande* -**GET** *sur une commande doit renvoyer la commande avec toutes ses pizzas, elles mêmes contenant tous leurs +**GET** *sur une commande doit renvoyer la commande avec toutes ses pizzas, elles-mêmes contenant tous leurs ingrédients* # Partie 4 : restrictions d’Accès diff --git a/WEB-INF/src/DAO/DAOIngredients.java b/WEB-INF/src/DAO/DAOIngredients.java new file mode 100644 index 0000000..78e7da1 --- /dev/null +++ b/WEB-INF/src/DAO/DAOIngredients.java @@ -0,0 +1,4 @@ +package DAO; + +public class DAOIngredients { +} diff --git a/WEB-INF/src/POJO/Ingredient.java b/WEB-INF/src/POJO/Ingredient.java new file mode 100644 index 0000000..ecfa59c --- /dev/null +++ b/WEB-INF/src/POJO/Ingredient.java @@ -0,0 +1,43 @@ +package POJO; + +public class Ingredient { + public int id; + private String name; + private Price price; + + public Ingredient(int id, String name, Price price) { + this.id = id; + this.name = name; + this.price = price; + } + + public Ingredient(int id, String name) { + this.id = id; + this.name = name; + this.price = new Price(); + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Price getPrice() { + return price; + } + + public void setPrice(Price price) { + this.price = price; + } +} diff --git a/WEB-INF/src/POJO/Price.java b/WEB-INF/src/POJO/Price.java new file mode 100644 index 0000000..1432472 --- /dev/null +++ b/WEB-INF/src/POJO/Price.java @@ -0,0 +1,46 @@ +package POJO; + +public class Price { + private double price; + private String unit; + + //Constructors + public Price(double price, String unit) { + this.price = price; + this.unit = unit; + } + + public Price(double price) { + this(price, "€"); + } + + public Price(int price) { + this((double) price, "€"); + } + + public Price() { + this(0, "€"); + } + + //Getters and Setters + public double getPrice() { + return price; + } + + public void setPrice(float price) { + this.price = price; + } + + public String getUnit() { + return unit; + } + + public void setUnit(String unit) { + this.unit = unit; + } + + //Round Methods + public void roundCents() { + this.price = (double) this.price - (this.price % 0.01); + } +} -- GitLab