Skip to content
Snippets Groups Projects
Commit 818daa88 authored by Gwendal MARGELY's avatar Gwendal MARGELY
Browse files

add Ingredients + Price + init DAO

parent 7a2b9191
No related branches found
No related tags found
No related merge requests found
/.idea/
/.gitignore
\ No newline at end of file
![](logo-univ.png)
## 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
......
package DAO;
public class DAOIngredients {
}
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;
}
}
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);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment