134 lines
4.8 KiB
Java
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();
|
|
|
|
}
|
|
}
|