Files
tpjpa/src/main/java/fr/istic/taa/jaxrs/rest/QuestionResource.java
2025-10-06 09:56:36 +02:00

134 lines
4.8 KiB
Java

package fr.istic.taa.jaxrs.rest;
import java.util.List;
import fr.istic.taa.jaxrs.DAO.QuestionDAO;
import fr.istic.taa.jaxrs.DTO.QuestionDTO;
import fr.istic.taa.jaxrs.Mapper.QuestionMapper;
import fr.istic.taa.jaxrs.metier.Choix;
import fr.istic.taa.jaxrs.metier.Question;
import fr.istic.taa.jaxrs.metier.Reponse;
import io.swagger.v3.oas.annotations.Operation;
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.Consumes;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.PATCH;
import jakarta.ws.rs.PUT;
import jakarta.ws.rs.POST;
import jakarta.ws.rs.DELETE;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.PathParam;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.Response;
@Path("question")
@Consumes({"application/json", "application/xml"})
@Produces({"application/json", "application/xml"})
public class QuestionResource {
private final QuestionDAO questionDAO = new QuestionDAO();
private final QuestionMapper mapper = QuestionMapper.INSTANCE;
@GET
public List<Question> listQuestion(){
List<Question> questions = questionDAO.findAll();
return questions;
}
@POST
@Path("/addQuestion")
public Response addQuestion(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();
}
@PUT
@Path("/{question_id}/changeQuestion/")
public Response changeQuestion(@PathParam("question_id") Integer id, String newQuestion){
Question question = questionDAO.findById(id);
if(question == null){
return Response.status(Response.Status.NOT_FOUND).build();
}
questionDAO.changeQuestion(newQuestion,id);
return Response.status(Response.Status.CREATED).entity("Question mis à jour : " + newQuestion).build();
}
@GET
@Path("/{question_id}/getReponse/")
public Response getReponse(@PathParam("question_id") Integer id){
Question question = questionDAO.findById(id);
if(question == null){
return Response.status(Response.Status.NOT_FOUND).build();
}
Reponse result = question.getReponse();
return Response.ok(result).build();
}
@PUT
@Path("/{question_id}/addReponse/")
public Response addReponse(@PathParam("question_id") Integer id, String reponse){
Question question = questionDAO.findById(id);
if(question == null){
return Response.status(Response.Status.NOT_FOUND).build();
}
questionDAO.addReponse(reponse,id);
return Response.status(Response.Status.CREATED).entity("Reponse correct \""+reponse+"\" ajouté à la question " + id).build();
}
@DELETE
@Path("/{question_id}/deletReponses/")
public Response addReponse(@PathParam("question_id") Integer id){
Question question = questionDAO.findById(id);
if(question == null){
return Response.status(Response.Status.NOT_FOUND).build();
}
questionDAO.deleteReponse(id);
return Response.status(Response.Status.CREATED).entity("Reponses supprimé de la question " + id).build();
}
@PUT
@Path("/{question_id}/setReponse/choix")
public Response setChoix(@PathParam("question_id") Integer id){
Question question = questionDAO.findById(id);
if(question == null){
return Response.status(Response.Status.NOT_FOUND).build();
}
questionDAO.setChoix(id);
return Response.status(Response.Status.CREATED).entity("Reponses à choix multiple mise sur la question " + id).build();
}
@PUT
@Path("/{question_id}/setReponse/reponseCourte")
public Response setReponseCourte(@PathParam("question_id") Integer id){
Question question = questionDAO.findById(id);
if(question == null){
return Response.status(Response.Status.NOT_FOUND).build();
}
questionDAO.setReponseCourte(id);
return Response.status(Response.Status.CREATED).entity("Reponses courte mise sur la question " + id).build();
}
@PUT
@Path("/{question_id}/AddChoix")
public Response addChoix(@PathParam("question_id") Integer id, String choix){
Question question = questionDAO.findById(id);
if(question == null){
return Response.status(Response.Status.NOT_FOUND).build();
}
if(question.getReponse() instanceof Choix){
return Response.status(Response.Status.EXPECTATION_FAILED).build();
}
questionDAO.addChoix(id, choix);
return Response.status(Response.Status.CREATED).entity("Reponses courte mise sur la question " + id).build();
}
}