From b9d8925f1aa31e2254f15ff8eb23626152872440 Mon Sep 17 00:00:00 2001 From: Vu Tuan Minh Date: Fri, 26 Sep 2025 01:25:55 +0200 Subject: [PATCH] Add Session.html and lombok, change property access into field access to lombok. Tested add Session to user, add method UtilisateurDAO.addToSession Please rerun mvn clean install --- pom.xml | 18 +++++-- src/main/java/DAO/SessionDAO.java | 3 -- src/main/java/DAO/UtilisateurDAO.java | 24 +++++++++ src/main/java/metier/Choix.java | 18 +++---- src/main/java/metier/Question.java | 44 ++++------------- src/main/java/metier/Quizz.java | 51 +++++-------------- src/main/java/metier/Reponse.java | 37 ++++---------- src/main/java/metier/ReponseCourte.java | 17 +++---- src/main/java/metier/Session.java | 52 ++++---------------- src/main/java/metier/Utilisateur.java | 65 +++++-------------------- src/main/java/servlet/SessionInfo.java | 18 ++++++- src/main/java/servlet/UserInfo.java | 32 +++++++----- src/main/webapp/Session.html | 17 ++++--- src/main/webapp/UserInfo.html | 12 ++++- src/main/webapp/index.html | 2 +- 15 files changed, 161 insertions(+), 249 deletions(-) diff --git a/pom.xml b/pom.xml index 16a204c..8c3d555 100644 --- a/pom.xml +++ b/pom.xml @@ -49,7 +49,7 @@ org.projectlombok lombok - 1.18.20 + 1.18.42 provided @@ -70,19 +70,29 @@ + + org.apache.maven.plugins + maven-war-plugin + 3.4.0 + org.apache.maven.plugins maven-compiler-plugin - 3.8.1 + 3.11.0 - 1.8 - 1.8 + 11 + 11 org.mapstruct mapstruct-processor ${org.mapstruct.version} + + org.projectlombok + lombok + 1.18.42 + diff --git a/src/main/java/DAO/SessionDAO.java b/src/main/java/DAO/SessionDAO.java index 8440b6c..ce5f89b 100644 --- a/src/main/java/DAO/SessionDAO.java +++ b/src/main/java/DAO/SessionDAO.java @@ -14,9 +14,6 @@ public class SessionDAO extends GenericDAOImpl { this.setClass(Session.class); } - - - public List findByTheme(String theme){ EntityTransaction t=em.getTransaction(); t.begin(); diff --git a/src/main/java/DAO/UtilisateurDAO.java b/src/main/java/DAO/UtilisateurDAO.java index 60eba12..e1cc355 100644 --- a/src/main/java/DAO/UtilisateurDAO.java +++ b/src/main/java/DAO/UtilisateurDAO.java @@ -2,8 +2,11 @@ package DAO; import jakarta.persistence.EntityTransaction; import jakarta.persistence.Query; +import metier.Session; import metier.Utilisateur; +import java.util.ArrayList; + public class UtilisateurDAO extends GenericDAOImpl{ public UtilisateurDAO() { super(); @@ -29,4 +32,25 @@ public class UtilisateurDAO extends GenericDAOImpl{ t.commit(); return u; } + + public void addToSession(int sessionId, int userId) { + EntityTransaction t = em.getTransaction(); + t.begin(); + Session s = em.find(Session.class, sessionId); + Utilisateur u = em.find(Utilisateur.class, userId); + + //ERROR NULLPOINTEREXCEPTION + if (u.getSession() == null) { + u.setSession(new ArrayList<>()); + } + if (s.getUtilisateurs() == null) { + s.setUtilisateurs(new ArrayList<>()); + } + + //FAUT AJOUTER OWNING SIDE ( Ici u --> s) + u.getSession().add(s); + s.getUtilisateurs().add(u); + em.merge(u); + t.commit(); + } } diff --git a/src/main/java/metier/Choix.java b/src/main/java/metier/Choix.java index 7b00d01..62c7912 100644 --- a/src/main/java/metier/Choix.java +++ b/src/main/java/metier/Choix.java @@ -4,24 +4,18 @@ import java.util.ArrayList; import jakarta.persistence.Entity; import jakarta.persistence.PrimaryKeyJoinColumn; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; @Entity +@Getter +@Setter +@NoArgsConstructor @PrimaryKeyJoinColumn(name = "Choix_Id") public class Choix extends Reponse{ ArrayList choix; - public Choix() { - super(); - } - - public ArrayList getChoix() { - return this.choix; - } - - public void setChoix(ArrayList choix) { - this.choix = choix; - } - @Override public String valHTML(){ String res = ""; diff --git a/src/main/java/metier/Question.java b/src/main/java/metier/Question.java index d3a085f..c57c269 100644 --- a/src/main/java/metier/Question.java +++ b/src/main/java/metier/Question.java @@ -1,51 +1,27 @@ package metier; import jakarta.persistence.*; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; import java.io.Serializable; @Entity +@Getter +@Setter +@NoArgsConstructor public class Question implements Serializable { - private int id; - private String question; - private Reponse reponse; - private Quizz quizz; - @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - public int getId() { - return id; - } - public void setId(int id) { - this.id = id; - } + private int id; + private String question; @OneToOne(cascade = CascadeType.ALL) @JoinColumn(name ="bonne_reponse", referencedColumnName = "id") - public Reponse getReponse() { - return reponse; - } - - public void setReponse(Reponse reponse) { - this.reponse = reponse; - } + private Reponse reponse; @ManyToOne @JoinColumn(name="id_quizz") - public Quizz getQuizz(){ - return this.quizz; - } - - public void setQuizz(Quizz quizz){ - this.quizz = quizz; - } - - public String getQuestion(){ - return this.question; - } - - public void setQuestion(String question){ - this.question = question; - } - + private Quizz quizz; } diff --git a/src/main/java/metier/Quizz.java b/src/main/java/metier/Quizz.java index f3cbc45..c0e8e68 100644 --- a/src/main/java/metier/Quizz.java +++ b/src/main/java/metier/Quizz.java @@ -1,57 +1,30 @@ package metier; import jakarta.persistence.*; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + import java.io.Serializable; +import java.util.ArrayList; import java.util.List; @Entity +@Getter +@Setter +@NoArgsConstructor public class Quizz implements Serializable { - private Session session; - private int id; - private Utilisateur utilisateur; - private List questions; - - public Quizz(){ - super(); - } - @Id @GeneratedValue - public int getId(){ - return id; - } - - public void setId(Integer id){ - this.id=id; - } + private int id; @ManyToOne - public Session getSession(){ - return session; - } - - public void setSession(Session session){ - this.session=session; - } + private Session session; @ManyToOne @JoinColumn(name="id_utilisateur") - public Utilisateur getUtilisateur(){ - return utilisateur; - } - - public void setUtilisateur(Utilisateur u){ - this.utilisateur=u; - } + private Utilisateur utilisateur; @OneToMany(mappedBy = "quizz") - public List getQuestions(){ - return this.questions; - } - - - public void setQuestions(List questions){ - this.questions = questions; - } - + private List questions=new ArrayList(); } \ No newline at end of file diff --git a/src/main/java/metier/Reponse.java b/src/main/java/metier/Reponse.java index b802b69..048c998 100644 --- a/src/main/java/metier/Reponse.java +++ b/src/main/java/metier/Reponse.java @@ -4,44 +4,25 @@ import java.io.Serializable; import java.util.List; import jakarta.persistence.*; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; @Entity +@Getter +@Setter +@NoArgsConstructor @Inheritance(strategy=InheritanceType.JOINED) @DiscriminatorColumn(name="Type_reponse") @DiscriminatorValue("Reponse") public abstract class Reponse implements Serializable { - private int id; - private Question question; - public List reponses; - - public Reponse(){} - @Id @GeneratedValue(strategy = GenerationType.AUTO) - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } + private int id; @OneToOne - public Question getQuestion(){ - return this.question; - } - - public void setQuestion(Question question){ - this.question=question; - } - - public List getReponses(){ - return this.reponses; - } - - public void setReponses(List reponses){ - this.reponses=reponses; - } + private Question question; + public List reponses; public String valHTML(){ return ""; diff --git a/src/main/java/metier/ReponseCourte.java b/src/main/java/metier/ReponseCourte.java index 5f3fa95..8f89772 100644 --- a/src/main/java/metier/ReponseCourte.java +++ b/src/main/java/metier/ReponseCourte.java @@ -2,23 +2,18 @@ package metier; import jakarta.persistence.Entity; import jakarta.persistence.PrimaryKeyJoinColumn; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; @Entity +@Getter +@Setter +@NoArgsConstructor @PrimaryKeyJoinColumn(name = "RC_Id") public class ReponseCourte extends Reponse{ String value; - public ReponseCourte(){ - super(); - } - - public void setValue(String value){ - this.value = value; - } - public String getValue(){ - return this.value; - } - @Override public String valHTML(){ return "INPUT"; diff --git a/src/main/java/metier/Session.java b/src/main/java/metier/Session.java index 97d7a68..52b1ff1 100644 --- a/src/main/java/metier/Session.java +++ b/src/main/java/metier/Session.java @@ -5,54 +5,22 @@ import java.util.ArrayList; import java.util.List; import jakarta.persistence.*; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; @Entity +@Getter +@Setter +@NoArgsConstructor public class Session implements Serializable { - private int codePIN; - private List quizzs; - private List utilisateurs; - private String theme; - - public Session(){ - } - - public void setCodePIN(int codePIN){ - this.codePIN = codePIN; - } - @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - public int getCodePIN(){ - return this.codePIN; - } - - public void setQuizzs(List quizzs){ - this.quizzs = quizzs; - } + private int codePIN; @OneToMany(mappedBy="session") - public List getQuizzs(){ - return this.quizzs; - } + private List quizzs = new ArrayList<>(); + private List utilisateurs = new ArrayList<>(); + private String theme; - public void setUtilisateurs(List utilisateurs){ - this.utilisateurs = utilisateurs; - } - - @ManyToMany(mappedBy = "session") - public List getUtilisateurs() { - return this.utilisateurs; - } - - public String getTheme(){ - return this.theme; - } - - public void setTheme(String theme){ - this.theme = theme; - } - - public void addUser(Utilisateur user){ - this.utilisateurs.add(user); - } } \ No newline at end of file diff --git a/src/main/java/metier/Utilisateur.java b/src/main/java/metier/Utilisateur.java index aaf3bd5..92fb57d 100644 --- a/src/main/java/metier/Utilisateur.java +++ b/src/main/java/metier/Utilisateur.java @@ -1,48 +1,24 @@ package metier; import jakarta.persistence.*; - +import lombok.*; import java.io.Serializable; +import java.util.ArrayList; import java.util.List; @Entity +@Getter +@Setter +@NoArgsConstructor public class Utilisateur implements Serializable { - - private int id; - private String name; - private List session; - private String email; - private String password; - private List quizzs; - - public Utilisateur() {} - @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } + private int id; + private String name; @Column(unique=true) - public String getEmail() { - return email; - } - - public void setEmail(String email) { - this.email = email; - } + private String email; + private String password; @ManyToMany @JoinTable( @@ -50,28 +26,9 @@ public class Utilisateur implements Serializable { joinColumns = @JoinColumn(name="utilisateur_id"), inverseJoinColumns = @JoinColumn(name = "session_pin") ) - public List getSession() { - return session; - } - - public void setSession(List session){ - this.session = session; - } - - public String getPassword() { - return this.password; - } - - public void setPassword(String password) { - this.password = password; - } + private List session= new ArrayList<>();; @OneToMany(mappedBy = "utilisateur") - public List getQuizzs() { - return quizzs; - } + private List quizzs; - public void setQuizzs(List quizzs) { - this.quizzs = quizzs; - } } \ No newline at end of file diff --git a/src/main/java/servlet/SessionInfo.java b/src/main/java/servlet/SessionInfo.java index 73129a7..84af8fc 100644 --- a/src/main/java/servlet/SessionInfo.java +++ b/src/main/java/servlet/SessionInfo.java @@ -10,14 +10,28 @@ import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; +import metier.Session; import metier.Utilisateur; -@WebServlet(name="session", urlPatterns={"/SessionInfo"}) -public class SessionInfo extends HttpServlet { +@WebServlet(name = "session", urlPatterns = {"/SessionInfo"}) +public class SessionInfo extends HttpServlet { SessionDAO sessionDAO = new SessionDAO(); + UtilisateurDAO uDAO = new UtilisateurDAO(); @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.getRequestDispatcher("/Session.html").forward(req, resp); } + + @Override + protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + // Créer une nouvelle session + String theme = req.getParameter("theme"); + Session s = new Session(); + s.setTheme(theme); + sessionDAO.create(s); + + resp.getWriter().println("

Session creee avec code PIN: " + + s.getCodePIN() + "

"); + } } diff --git a/src/main/java/servlet/UserInfo.java b/src/main/java/servlet/UserInfo.java index 1cda26d..79fc5ee 100644 --- a/src/main/java/servlet/UserInfo.java +++ b/src/main/java/servlet/UserInfo.java @@ -1,4 +1,5 @@ package servlet; + import java.io.IOException; import java.io.PrintWriter; @@ -10,7 +11,7 @@ import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import metier.Utilisateur; -@WebServlet(name="userinfo", urlPatterns={"/UserInfo"}) +@WebServlet(name = "userinfo", urlPatterns = {"/UserInfo"}) public class UserInfo extends HttpServlet { UtilisateurDAO utilisateurDAO = new UtilisateurDAO(); @@ -21,18 +22,27 @@ public class UserInfo extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); + String action = request.getParameter("action"); - Utilisateur u = new Utilisateur(); - u.setName(request.getParameter("name")); - u.setEmail(request.getParameter("email")); + if ("addUser".equals(action)) { + Utilisateur u = new Utilisateur(); + u.setName(request.getParameter("name")); + u.setEmail(request.getParameter("email")); - utilisateurDAO.create(u); - PrintWriter out = response.getWriter(); - out.println("\n\n" + - "

Recapitulatif des informations de Tibo

\n" + - "
    \n" + "
  • Nom: " + request.getParameter("name") + - "\n" + "
  • Email: " + request.getParameter("email") + "\n" + - ""); + utilisateurDAO.create(u); + PrintWriter out = response.getWriter(); + out.println("\n\n" + + "

    Recapitulatif des informations de Tibo

    \n" + + "
      \n" + "
    • Nom: " + request.getParameter("name") + + "\n" + "
    • Email: " + request.getParameter("email") + "\n" + + ""); + } else if ("addSession".equals(action)) { + int sessionId = Integer.parseInt(request.getParameter("sessionId")); + int userId = Integer.parseInt(request.getParameter("userId")); + utilisateurDAO.addToSession(sessionId, userId); + response.getWriter().println("

      Reussi d'ajouter utilisateur " + + userId + " au session " + sessionId + "

      "); + } } } diff --git a/src/main/webapp/Session.html b/src/main/webapp/Session.html index 2397b34..310e94d 100644 --- a/src/main/webapp/Session.html +++ b/src/main/webapp/Session.html @@ -1,10 +1,13 @@ - -
      -

      Creer session

      - Theme Session :
      - -
      - + +

      Creer une session

      +
      + + Theme: + +
      + + + \ No newline at end of file diff --git a/src/main/webapp/UserInfo.html b/src/main/webapp/UserInfo.html index ebbe719..9be81af 100644 --- a/src/main/webapp/UserInfo.html +++ b/src/main/webapp/UserInfo.html @@ -1,10 +1,20 @@ -
      +

      Creer l'utilisateur

      + + Name :
      Email :
      + +

      Ajouter utilisateur dans une session

      +
      + + ID Session:
      + ID Utilisateur:
      + +
      diff --git a/src/main/webapp/index.html b/src/main/webapp/index.html index 5947d6e..4bd5ff8 100644 --- a/src/main/webapp/index.html +++ b/src/main/webapp/index.html @@ -6,7 +6,7 @@

      Hello World!

      -myform +myform Quizz show