From 74b13cc7f49c8405cf10147a03c9c913894a29f5 Mon Sep 17 00:00:00 2001 From: trochas Date: Fri, 24 Oct 2025 23:13:02 +0200 Subject: [PATCH] correction Question --- README.md | 2 ++ .../fr/istic/taa/jaxrs/DTO/QuestionDTO.java | 4 +-- .../fr/istic/taa/jaxrs/DTO/ReponseDTO.java | 11 ++++++++ .../taa/jaxrs/Mapper/QuestionMapper.java | 1 - .../fr/istic/taa/jaxrs/metier/Reponse.java | 3 ++- .../istic/taa/jaxrs/metier/Utilisateur.java | 4 +-- .../taa/jaxrs/rest/QuestionResource.java | 2 +- .../istic/taa/jaxrs/rest/QuizzResource.java | 17 ++++++++++++ .../istic/taa/jaxrs/rest/SessionResource.java | 27 +++++++++++++++++-- 9 files changed, 61 insertions(+), 10 deletions(-) create mode 100644 src/main/java/fr/istic/taa/jaxrs/DTO/ReponseDTO.java diff --git a/README.md b/README.md index f3d928e..ff3e752 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,8 @@ Dans ce TP REST, nous avons implémenté les éléments suivants: - Swagger UI pour documenter et tester facilement toutes les méthodes de l’API. - DTO (Data Transfer Objects) afin d’éviter les problèmes de boucle infinie liés aux relations bidirectionnelles entre entités. + + #### Execution du projet Recharger les dépendances Maven : `mvn clean install` diff --git a/src/main/java/fr/istic/taa/jaxrs/DTO/QuestionDTO.java b/src/main/java/fr/istic/taa/jaxrs/DTO/QuestionDTO.java index 60211d7..2230256 100644 --- a/src/main/java/fr/istic/taa/jaxrs/DTO/QuestionDTO.java +++ b/src/main/java/fr/istic/taa/jaxrs/DTO/QuestionDTO.java @@ -9,7 +9,5 @@ import java.util.List; @XmlRootElement public class QuestionDTO { private int id; - private String question; - private List reponses_string; - + private String enonce; } diff --git a/src/main/java/fr/istic/taa/jaxrs/DTO/ReponseDTO.java b/src/main/java/fr/istic/taa/jaxrs/DTO/ReponseDTO.java new file mode 100644 index 0000000..7c700ec --- /dev/null +++ b/src/main/java/fr/istic/taa/jaxrs/DTO/ReponseDTO.java @@ -0,0 +1,11 @@ +package fr.istic.taa.jaxrs.DTO; + +import jakarta.xml.bind.annotation.XmlRootElement; +import lombok.Data; +import java.util.List; + +@Data +@XmlRootElement +public class ReponseDTO { + public List reponses; +} diff --git a/src/main/java/fr/istic/taa/jaxrs/Mapper/QuestionMapper.java b/src/main/java/fr/istic/taa/jaxrs/Mapper/QuestionMapper.java index 02c715c..835b6b4 100644 --- a/src/main/java/fr/istic/taa/jaxrs/Mapper/QuestionMapper.java +++ b/src/main/java/fr/istic/taa/jaxrs/Mapper/QuestionMapper.java @@ -14,7 +14,6 @@ public interface QuestionMapper { QuestionMapper INSTANCE = Mappers.getMapper( QuestionMapper.class ); - @Mapping(target = "reponses_string", expression = "java(question_ReponseString(question.getReponse()))") QuestionDTO toDTO(Question question); Question toEntity(QuestionDTO questionDTO); diff --git a/src/main/java/fr/istic/taa/jaxrs/metier/Reponse.java b/src/main/java/fr/istic/taa/jaxrs/metier/Reponse.java index 8a8f122..8bdab0a 100644 --- a/src/main/java/fr/istic/taa/jaxrs/metier/Reponse.java +++ b/src/main/java/fr/istic/taa/jaxrs/metier/Reponse.java @@ -1,6 +1,7 @@ package fr.istic.taa.jaxrs.metier; import java.io.Serializable; +import java.util.ArrayList; import java.util.List; import jakarta.persistence.*; @@ -22,7 +23,7 @@ public abstract class Reponse implements Serializable { @OneToOne private Question question; - public List reponses; + public List reponses = new ArrayList(); public String valHTML(){ return ""; diff --git a/src/main/java/fr/istic/taa/jaxrs/metier/Utilisateur.java b/src/main/java/fr/istic/taa/jaxrs/metier/Utilisateur.java index 6b0e3e8..e4d1822 100644 --- a/src/main/java/fr/istic/taa/jaxrs/metier/Utilisateur.java +++ b/src/main/java/fr/istic/taa/jaxrs/metier/Utilisateur.java @@ -28,8 +28,8 @@ public class Utilisateur implements Serializable { joinColumns = @JoinColumn(name="utilisateur_id"), inverseJoinColumns = @JoinColumn(name = "session_id") ) - private List sessions= new ArrayList<>();; + private List sessions= new ArrayList(); @OneToMany(mappedBy = "createur") - private List quizzs; + private List quizzs = new ArrayList();; } \ No newline at end of file diff --git a/src/main/java/fr/istic/taa/jaxrs/rest/QuestionResource.java b/src/main/java/fr/istic/taa/jaxrs/rest/QuestionResource.java index 15c28a5..9ac87cf 100644 --- a/src/main/java/fr/istic/taa/jaxrs/rest/QuestionResource.java +++ b/src/main/java/fr/istic/taa/jaxrs/rest/QuestionResource.java @@ -57,7 +57,7 @@ public class QuestionResource { @Parameter(description = "The question details to be added", required = true) QuestionDTO dto) { Question question = mapper.toEntity(dto); questionDAO.create(question); - return Response.status(Response.Status.CREATED).entity("Question ajouté avec Succès : \"" + dto.getQuestion() + "\"").build(); + return Response.status(Response.Status.CREATED).entity("Question ajouté avec Succès : \"" + dto.getEnonce() + "\"").build(); } @PUT diff --git a/src/main/java/fr/istic/taa/jaxrs/rest/QuizzResource.java b/src/main/java/fr/istic/taa/jaxrs/rest/QuizzResource.java index 56ba0da..5e6acd5 100644 --- a/src/main/java/fr/istic/taa/jaxrs/rest/QuizzResource.java +++ b/src/main/java/fr/istic/taa/jaxrs/rest/QuizzResource.java @@ -19,6 +19,7 @@ import io.swagger.v3.oas.annotations.responses.ApiResponse; import jakarta.ws.rs.Consumes; import jakarta.ws.rs.DELETE; import jakarta.ws.rs.GET; +import jakarta.ws.rs.POST; import jakarta.ws.rs.PUT; import jakarta.ws.rs.Path; import jakarta.ws.rs.PathParam; @@ -34,6 +35,22 @@ public class QuizzResource { public final QuestionDAO questionDAO = new QuestionDAO(); + + @POST + @Path("/addQuizz") + @Operation(summary = "Create a new quizz", + tags = {"Quizz"}, + description = "Create a new quizz", + responses = {@ApiResponse(responseCode = "201", description = "Quizz added.")} + ) + public Response addQuizz( + @Parameter(description = "The quizz details to be added", required = true) QuizzDTO dto) { + Quizz quizz = mapper.toEntity(dto); + quizzDAO.create(quizz); + return Response.status(Response.Status.CREATED).entity("Quizz ajouté avec Succès : \"" + dto.getId() + "\"").build(); + } + + @GET @Operation(summary = "List all quizz", tags = {"Quizz"}, diff --git a/src/main/java/fr/istic/taa/jaxrs/rest/SessionResource.java b/src/main/java/fr/istic/taa/jaxrs/rest/SessionResource.java index 4ed3380..b1c5813 100644 --- a/src/main/java/fr/istic/taa/jaxrs/rest/SessionResource.java +++ b/src/main/java/fr/istic/taa/jaxrs/rest/SessionResource.java @@ -1,6 +1,8 @@ package fr.istic.taa.jaxrs.rest; +import java.util.List; + import fr.istic.taa.jaxrs.DAO.SessionDAO; import fr.istic.taa.jaxrs.DTO.QuizzDTO; import fr.istic.taa.jaxrs.DTO.SessionDTO; @@ -8,6 +10,7 @@ import fr.istic.taa.jaxrs.DTO.UtilisateurDTO; import fr.istic.taa.jaxrs.Mapper.QuizzMapper; import fr.istic.taa.jaxrs.Mapper.SessionMapper; import fr.istic.taa.jaxrs.Mapper.UtilisateurMapper; +import fr.istic.taa.jaxrs.metier.Quizz; import fr.istic.taa.jaxrs.metier.Session; import fr.istic.taa.jaxrs.metier.Utilisateur; import io.swagger.v3.oas.annotations.Operation; @@ -16,10 +19,15 @@ import io.swagger.v3.oas.annotations.media.ArraySchema; import io.swagger.v3.oas.annotations.media.Content; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; -import jakarta.ws.rs.*; +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.core.Response; -import java.util.List; @Path("session") @Consumes({"application/json", "application/xml"}) @@ -28,6 +36,21 @@ public class SessionResource { private final SessionDAO sessionDAO = new SessionDAO(); private final SessionMapper mapper = SessionMapper.INSTANCE; + + @POST + @Path("/addSession") + @Operation(summary = "Create a new session", + tags = {"Session"}, + description = "Create a new session", + responses = {@ApiResponse(responseCode = "201", description = "Session added.")} + ) + public Response addQuizz( + @Parameter(description = "The session details to be added", required = true) SessionDTO dto) { + Session session = mapper.toEntity(dto); + sessionDAO.create(session); + return Response.status(Response.Status.CREATED).entity("Session ajouté avec Succès : \"" + dto.getTheme() + "\"").build(); + } + @GET @Operation(summary = "List all session", tags = {"Sessions"}, description = "Get a list of all sessions in BDD",