correction Question

This commit is contained in:
trochas
2025-10-24 23:13:02 +02:00
parent 50c9f5a61e
commit 74b13cc7f4
9 changed files with 61 additions and 10 deletions

View File

@@ -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 lAPI.
- 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`

View File

@@ -9,7 +9,5 @@ import java.util.List;
@XmlRootElement
public class QuestionDTO {
private int id;
private String question;
private List<String> reponses_string;
private String enonce;
}

View File

@@ -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<String> reponses;
}

View File

@@ -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);

View File

@@ -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<String> reponses;
public List<String> reponses = new ArrayList<String>();
public String valHTML(){
return "";

View File

@@ -28,8 +28,8 @@ public class Utilisateur implements Serializable {
joinColumns = @JoinColumn(name="utilisateur_id"),
inverseJoinColumns = @JoinColumn(name = "session_id")
)
private List<Session> sessions= new ArrayList<>();;
private List<Session> sessions= new ArrayList<Session>();
@OneToMany(mappedBy = "createur")
private List<Quizz> quizzs;
private List<Quizz> quizzs = new ArrayList<Quizz>();;
}

View File

@@ -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

View File

@@ -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"},

View File

@@ -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",