Finished and tested

This commit is contained in:
Vu Tuan Minh
2025-10-13 00:17:51 +02:00
parent b446b16027
commit 9b6b8d6c80
15 changed files with 535 additions and 173 deletions

View File

@@ -1,11 +1,75 @@
# TP TAA
## TP1 - TP2
### Compte rendu
Dans ce TP REST, nous avons implémenté les éléments suivants:
- Mapper pour convertir les entités vers les DTO et inversement
- Lombok afin de simplifier le code et éviter le code boilerplate (getters, setters, constructeurs, etc.)
- API REST pour exposer les différentes ressources
- Swagger UI pour documenter et tester facilement toutes les méthodes de lAPI.
- DTO (Data Transfer Objects) afin déviter les problèmes de boucle infinie liés aux relations bidirectionnelles entre entités.
#### Utilisateur Resource
#### Execution du projet
Recharger les dépendances Maven :
`mvn clean install`
Lancer la base de données (Linux) : `./run-hsqldb-server.sh`
Lancer le serveur par fichier `src/main/java/fr.istic.taa.jaxrs/RestServer.java`
Après le serveur est lacné, on a testé des appels API avec Insomnia et interface Swagger est accessible via:
`http://localhost:8080/api`
#### Diagramme de classe
```mermaid
classDiagram
Utilisateur "*" -- "*" Session
Session "*" -- "*" Quizz
Quizz "1" -- "1..*" Question
Utilisateur "1" -- "*" Quizz
Question "1" -- "1" Reponse
Reponse <|-- ReponseCourte
Reponse <|-- Choix
class Utilisateur {
-id : int
-name : String
-session : List&lt;Session&gt;
-email : String
-password : String
-quizzs : String
}
class Session{
-id : int
-codePIN : int
-quizzs : List&lt;Quizz&gt;
-utilisateurs : List&lt;Utilisateur&gt;
-theme : String
}
class Quizz{
-session: Session
-id : int
-utilisateur: Utilisateur
}
class Reponse{
-id : int
-question: Question
-reponses : ArrayList&lt;String&gt;
}
class Choix{
-choix : ArrayList&lt;String&gt;
}
class ReponseCourte{
-value : String
}
class Question{
-id : int
-reponse: Reponse
}
```
##### Utilisateur Resource
| Methode | URL | Description |
|---------|---------------------------------------------------|-------------------------------------------------------|
| GET | `/utilisateur` | Retourne toute la liste de l'utilisateur |
@@ -16,7 +80,7 @@
| PUT | `/utilisateur/{user_id}/add_session/{session_id}` | Ajoute un nouveau session à la liste de l'utilisateur |
| DELETE | `/utilisteur/{user_id}/delete` | Supprime l'utilisateur |
#### Session Resource
##### Session Resource
| Methode | URL | Description |
|---------|--------------------------------------|------------------------------------|
| GET | `/session` | Retourne toute la liste du session |
@@ -25,29 +89,28 @@
| GET | `/session/{session_id}/utilisateurs` | Retourne la liste de l'utilisateur |
| DELETE | `/session/{session_id}/delete` | Supprime la session |
#### Quizz Resource
| Methode | URL | Description |
|---------|------------------------------------------------|----------------------------------------|
| GET | `/quizz` | Retourne toute la liste du quizz |
| GET | `/quizz/{quizz_id}/add_question/{question_id}` | Ajoute une nouvuelle question au quizz |
| DELETE | `/quizz/{quizz_id}/delete` | Suprrime le quizz |
| PUT | `/quizz/{quizz_id}/deleteQ` | Supprime toute les questions de quizz |
##### Quizz Resource
| Methode | URL | Description |
|---------|------------------------------------------------|-----------------------------------------|
| GET | `/quizz` | Retourne toute la liste du quizz |
| GET | `/quizz/{quizz_id}/questions | Retourne toutes questions du quizz |
| GET | `/quizz/{quizz_id}/add_question/{question_id}` | Ajoute une nouvuelle question au quizz |
| DELETE | `/quizz/{quizz_id}/delete` | Suprrime le quizz |
| PUT | `/quizz/{quizz_id}/deleteQ` | Supprime toute les questions de quizz |
#### Question Resource
##### Question Resource
| Methode | URL | Description |
|----------|----------------------------------------------------|-----------------------------------------------------------------------|
| GET | `/question` | Retourne toute la liste du question |
| POST | `/question/addQuestion` | Créer une question |
| PUT | `/question/{question_id}/changeQuestion` | Change l'énoncé de la question |
| GET | `/question/{question_id}/getReponse` | retourne l'objet Reponse |
| PUT | `/question/{question_id}/addReponse` | Ajoute une réponse à Reponse |
| DELETE | `/question/{question_id}/deletReponses` | supprime toute les réponse correct |
| PUT | `/question/{question_id}/addReponse` | Ajoute une réponse à Reponse |
| PUT | `/question/{question_id}/setReponse/choix` | créer un nouvel objet Reponse de type Choix pour la question |
| PUT | `/question/{question_id}/setReponse/reponseCourte` | créer un nouvel objet Reponse de type reponse courte pour la question |
| PUT | `/question/{question_id}/addChoix` | rajoute un choix si Reponse est de type Choix |
## Auteurs
- Tuan Minh VU