corrections
This commit is contained in:
@@ -50,7 +50,7 @@ classDiagram
|
||||
class Quizz{
|
||||
-session: Session
|
||||
-id : int
|
||||
-utilisateur: Utilisateur
|
||||
-createur: Utilisateur
|
||||
}
|
||||
class Reponse{
|
||||
-id : int
|
||||
@@ -61,10 +61,10 @@ classDiagram
|
||||
-choix : ArrayList<String>
|
||||
}
|
||||
class ReponseCourte{
|
||||
-value : String
|
||||
}
|
||||
class Question{
|
||||
-id : int
|
||||
-enonce : String
|
||||
-reponse: Reponse
|
||||
}
|
||||
```
|
||||
@@ -93,7 +93,7 @@ classDiagram
|
||||
| Methode | URL | Description |
|
||||
|---------|------------------------------------------------|-----------------------------------------|
|
||||
| GET | `/quizz` | Retourne toute la liste du quizz |
|
||||
| GET | `/quizz/{quizz_id}/questions | Retourne toutes questions du quizz |
|
||||
| GET | `/quizz/{quizz_id}/questions` | Retourne toutes questions du quizz |
|
||||
| GET | `/quizz/{quizz_id}/add_question/{question_id}` | Ajoute une nouvuelle question au quizz |
|
||||
| DELETE | `/quizz/{quizz_id}/delete` | Suprrime le quizz |
|
||||
| PUT | `/quizz/{quizz_id}/deleteQ` | Supprime toute les questions de quizz |
|
||||
|
||||
5
pom.xml
5
pom.xml
@@ -45,6 +45,11 @@
|
||||
<artifactId>mysql-connector-j</artifactId>
|
||||
<version>8.1.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>jakarta.xml.bind</groupId>
|
||||
<artifactId>jakarta.xml.bind-api</artifactId>
|
||||
<version>4.0.2</version>
|
||||
</dependency>
|
||||
<!-- ==== REST API ==== -->
|
||||
<!--https://mvnrepository.com/artifact/org.jboss.resteasy/resteasy-undertow -->
|
||||
<dependency>
|
||||
|
||||
@@ -6,12 +6,19 @@ import jakarta.persistence.Persistence;
|
||||
|
||||
public class EntityManagerHelper {
|
||||
|
||||
private static final EntityManagerFactory emf;
|
||||
private static EntityManagerFactory emf;
|
||||
private static final ThreadLocal<EntityManager> threadLocal;
|
||||
|
||||
static {
|
||||
emf = Persistence.createEntityManagerFactory("dev");
|
||||
try {
|
||||
emf = Persistence.createEntityManagerFactory("dev");
|
||||
} catch (Exception e) {
|
||||
emf = null;
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
threadLocal = new ThreadLocal<EntityManager>();
|
||||
|
||||
}
|
||||
|
||||
public static EntityManager getEntityManager() {
|
||||
|
||||
@@ -70,11 +70,11 @@ public class QuestionDAO extends AbstractJpaDao<Integer, Question> {
|
||||
}
|
||||
|
||||
|
||||
public void changeQuestion(String newQuestion, Integer id) {
|
||||
public void changeEnonce(String newEnonce, Integer id) {
|
||||
EntityTransaction t = em.getTransaction();
|
||||
t.begin();
|
||||
Question q = em.find(Question.class,id);
|
||||
q.setQuestion(newQuestion);
|
||||
q.setEnonce(newEnonce);
|
||||
em.merge(q);
|
||||
t.commit();
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ public class UtilisateurDAO extends AbstractJpaDao<Integer, Utilisateur> {
|
||||
Utilisateur u = em.find(Utilisateur.class, userId);
|
||||
|
||||
//FAUT AJOUTER OWNING SIDE ( Ici u --> s)
|
||||
u.getSession().add(s);
|
||||
u.getSessions().add(s);
|
||||
//Jsp il faut birectionnelle ou pas?
|
||||
//s.getUtilisateurs().add(u);
|
||||
em.merge(u);
|
||||
|
||||
@@ -8,7 +8,7 @@ import java.util.List;
|
||||
@XmlRootElement
|
||||
public class QuizzDTO {
|
||||
private int id;
|
||||
private Integer sessionId;
|
||||
private List<Integer> sessionsId;
|
||||
private Integer utilisateurId;
|
||||
private List<Integer> questionsId;
|
||||
}
|
||||
|
||||
@@ -7,7 +7,6 @@ import org.mapstruct.Mapper;
|
||||
import org.mapstruct.Mapping;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Mapper
|
||||
|
||||
@@ -2,6 +2,7 @@ package fr.istic.taa.jaxrs.Mapper;
|
||||
|
||||
import fr.istic.taa.jaxrs.DTO.QuizzDTO;
|
||||
import fr.istic.taa.jaxrs.metier.Question;
|
||||
import fr.istic.taa.jaxrs.metier.Session;
|
||||
import fr.istic.taa.jaxrs.metier.Quizz;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.Mapping;
|
||||
@@ -16,8 +17,8 @@ public interface QuizzMapper {
|
||||
|
||||
//https://www.baeldung.com/mapstruct-map-source-object-target-list
|
||||
//https://mapstruct.org/
|
||||
@Mapping(target="sessionId", source="session.id")
|
||||
@Mapping(target="utilisateurId", source = "utilisateur.id")
|
||||
@Mapping(target="sessionsId", expression="java(function_mapS(quizz.getSessions()))")
|
||||
@Mapping(target="utilisateurId", source = "createur.id")
|
||||
@Mapping(target="questionsId",expression="java(function_mapQ(quizz.getQuestions()))")
|
||||
QuizzDTO toDTO(Quizz quizz);
|
||||
Quizz toEntity(QuizzDTO quizzDTO);
|
||||
@@ -31,4 +32,12 @@ public interface QuizzMapper {
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
default List<Integer> function_mapS(List<Session> sessionList){
|
||||
List<Integer> list=new ArrayList<Integer>();
|
||||
for(Session session : sessionList){
|
||||
list.add(session.getId());
|
||||
}
|
||||
return list;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@ public class Question implements Serializable {
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private int id;
|
||||
private String question;
|
||||
private String enonce;
|
||||
|
||||
@OneToOne(cascade = CascadeType.ALL)
|
||||
@JoinColumn(name ="bonne_reponse", referencedColumnName = "id")
|
||||
|
||||
@@ -20,12 +20,12 @@ public class Quizz implements Serializable {
|
||||
@GeneratedValue
|
||||
private int id;
|
||||
|
||||
@ManyToOne
|
||||
private Session session;
|
||||
@ManyToMany
|
||||
private List<Session> sessions;
|
||||
|
||||
@ManyToOne
|
||||
@JoinColumn(name="id_utilisateur")
|
||||
private Utilisateur utilisateur;
|
||||
private Utilisateur createur;
|
||||
|
||||
@OneToMany(mappedBy = "quizz")
|
||||
private List<Question> questions=new ArrayList<Question>();
|
||||
|
||||
@@ -23,10 +23,10 @@ public class Session implements Serializable {
|
||||
@Column(unique=true)
|
||||
private int codePIN;
|
||||
|
||||
@OneToMany(mappedBy="session", fetch = FetchType.EAGER)
|
||||
@ManyToMany(mappedBy="sessions", fetch = FetchType.EAGER)
|
||||
private List<Quizz> quizzs = new ArrayList<>();
|
||||
|
||||
@ManyToMany(mappedBy = "session", fetch = FetchType.EAGER)
|
||||
@ManyToMany(mappedBy = "sessions", fetch = FetchType.EAGER)
|
||||
private List<Utilisateur> utilisateurs = new ArrayList<>();
|
||||
private String theme;
|
||||
}
|
||||
@@ -28,8 +28,8 @@ public class Utilisateur implements Serializable {
|
||||
joinColumns = @JoinColumn(name="utilisateur_id"),
|
||||
inverseJoinColumns = @JoinColumn(name = "session_id")
|
||||
)
|
||||
private List<Session> session= new ArrayList<>();;
|
||||
private List<Session> sessions= new ArrayList<>();;
|
||||
|
||||
@OneToMany(mappedBy = "utilisateur")
|
||||
@OneToMany(mappedBy = "createur")
|
||||
private List<Quizz> quizzs;
|
||||
}
|
||||
@@ -77,8 +77,8 @@ public class QuestionResource {
|
||||
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();
|
||||
questionDAO.changeEnonce(newQuestion, id);
|
||||
return Response.status(Response.Status.CREATED).entity("Enonce de la question mis à jour : " + newQuestion).build();
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package fr.istic.taa.jaxrs.rest;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import fr.istic.taa.jaxrs.DAO.QuestionDAO;
|
||||
import fr.istic.taa.jaxrs.DAO.QuizzDAO;
|
||||
import fr.istic.taa.jaxrs.DTO.QuestionDTO;
|
||||
@@ -14,11 +16,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.PUT;
|
||||
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("quizz")
|
||||
@Consumes({"application/json", "application/xml"})
|
||||
@Produces({"application/json", "application/xml"})
|
||||
@@ -27,6 +33,21 @@ public class QuizzResource {
|
||||
public final QuizzDAO quizzDAO = new QuizzDAO();
|
||||
public final QuestionDAO questionDAO = new QuestionDAO();
|
||||
|
||||
|
||||
@GET
|
||||
@Operation(summary = "List all quizz",
|
||||
tags = {"Quizz"},
|
||||
description = "List all quizz.",
|
||||
responses = {
|
||||
@ApiResponse(description = "List of all quizz", content = @Content(
|
||||
array = @ArraySchema(schema = @Schema(implementation = Question.class))))
|
||||
}
|
||||
)
|
||||
public List<QuizzDTO> listQuizz() {
|
||||
List<Quizz> quizz = quizzDAO.findAll();
|
||||
return mapper.toDTOs(quizz);
|
||||
}
|
||||
|
||||
@GET
|
||||
@Path("/{quizz_id}")
|
||||
@Operation(summary = "Get a quizz by ID",
|
||||
|
||||
@@ -147,7 +147,7 @@ public class UtilisateurResource {
|
||||
return Response.status(Response.Status.NOT_FOUND).build();
|
||||
}
|
||||
//If user already joined
|
||||
if (utilisateur.getSession().contains(existingSession)) {
|
||||
if (utilisateur.getSessions().contains(existingSession)) {
|
||||
return Response.status(Response.Status.CONFLICT).build();
|
||||
}
|
||||
utilisateurDAO.addToSession(user_id, session_id);
|
||||
@@ -178,7 +178,7 @@ public class UtilisateurResource {
|
||||
if (utilisateur == null) {
|
||||
return Response.status(Response.Status.NOT_FOUND).build();
|
||||
}
|
||||
List<Session> sess = utilisateur.getSession();
|
||||
List<Session> sess = utilisateur.getSessions();
|
||||
List<SessionDTO> dtos = SessionMapper.INSTANCE.toDTOs(sess);
|
||||
return Response.status(Response.Status.OK).entity(dtos).build();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user