Question Resource

This commit is contained in:
trochas
2025-10-02 15:47:51 +02:00
parent d79f4f4b8f
commit 23363c5070
4 changed files with 192 additions and 2 deletions

View File

@@ -1,10 +1,82 @@
package fr.istic.taa.jaxrs.DAO;
import java.util.ArrayList;
import java.util.List;
import fr.istic.taa.jaxrs.metier.Choix;
import fr.istic.taa.jaxrs.metier.Question;
import fr.istic.taa.jaxrs.metier.Reponse;
import fr.istic.taa.jaxrs.metier.ReponseCourte;
import fr.istic.taa.jaxrs.metier.Session;
import fr.istic.taa.jaxrs.metier.Utilisateur;
import jakarta.persistence.EntityTransaction;
public class QuestionDAO extends AbstractJpaDao<Integer, Question> {
public QuestionDAO(){
super();
this.setClass(Question.class);
}
public void addReponse(String reponse, int questionId){
EntityTransaction t = em.getTransaction();
t.begin();
Question q = em.find(Question.class,questionId);
q.getReponse().getReponses().add(reponse);
em.merge(q);
t.commit();
}
public void deleteReponse( int questionId) {
EntityTransaction t = em.getTransaction();
t.begin();
Question q = em.find(Question.class,questionId);
q.getReponse().setReponses(new ArrayList<>());
em.merge(q);
t.commit();
}
public void setReponse(Reponse rep, Integer id) {
EntityTransaction t = em.getTransaction();
t.begin();
Question q = em.find(Question.class,id);
q.setReponse(rep);
em.merge(q);
t.commit();
}
public void setChoix(Integer id) {
setReponse(new Choix(),id);
}
public void setReponseCourte(Integer id) {
setReponse(new ReponseCourte(),id);
}
public void addChoix(Integer id, String choix) {
EntityTransaction t = em.getTransaction();
t.begin();
Question q = em.find(Question.class,id);
((Choix)q.getReponse()).getChoix().add(choix);
em.merge(q);
t.commit();
}
public void changeQuestion(String newQuestion, Integer id) {
EntityTransaction t = em.getTransaction();
t.begin();
Question q = em.find(Question.class,id);
q.setQuestion(newQuestion);
em.merge(q);
t.commit();
}
}

View File

@@ -33,7 +33,7 @@ public class UtilisateurDAO extends AbstractJpaDao<Integer, Utilisateur> {
//FAUT AJOUTER OWNING SIDE ( Ici u --> s)
u.getSession().add(s);
//Jsp il faut birectionnelle ou pas?
s.getUtilisateurs().add(u);
//s.getUtilisateurs().add(u);
em.merge(u);
t.commit();
}

View File

@@ -1,11 +1,129 @@
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 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();
}
QuestionDTO result = mapper.toDTO(question);
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}/deletReponse/")
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();
}
}

View File

@@ -24,6 +24,6 @@ public class QuizzResource {
QuizzDTO dto = mapper.toDTO(quizz);
return Response.status(Response.Status.OK).entity(dto).build();
}
@
}