From c5eef2c6245d989a42660019be7c90553d10db5e Mon Sep 17 00:00:00 2001 From: trochas Date: Tue, 30 Sep 2025 18:21:42 +0200 Subject: [PATCH] show fini ! --- README.md | 2 +- src/main/java/DAO/QuizzDAO.java | 18 +++++++ src/main/java/DAO/ReponseDAO.java | 22 +++++--- src/main/java/DAO/SessionDAO.java | 16 ++++++ src/main/java/metier/Choix.java | 2 +- src/main/java/metier/Quizz.java | 2 +- src/main/java/metier/ReponseCourte.java | 2 +- src/main/java/metier/Session.java | 1 + src/main/java/servlet/QuestionInfo.java | 69 ++++++++++++++++--------- src/main/java/servlet/QuizzInfo.java | 17 +----- src/main/java/servlet/SessionInfo.java | 44 +++++++++++----- src/main/java/servlet/Show.java | 34 ++++++++---- src/main/webapp/Quizz.html | 1 - src/main/webapp/Session.html | 7 +++ src/main/webapp/css/style.css | 21 +++++++- 15 files changed, 184 insertions(+), 74 deletions(-) diff --git a/README.md b/README.md index d9a903e..33b88fa 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ ```mermaid classDiagram Utilisateur "*" -- "*" Session - Session "*" -- "1" Quizz + Session "*" -- "*" Quizz Quizz "1" -- "1..*" Question Utilisateur "1" -- "*" Quizz Question "1" -- "1" Reponse diff --git a/src/main/java/DAO/QuizzDAO.java b/src/main/java/DAO/QuizzDAO.java index d852696..3295014 100644 --- a/src/main/java/DAO/QuizzDAO.java +++ b/src/main/java/DAO/QuizzDAO.java @@ -1,7 +1,10 @@ package DAO; import jakarta.persistence.EntityTransaction; +import metier.Question; import metier.Quizz; +import metier.Session; +import metier.Utilisateur; public class QuizzDAO extends AbstractJpaDao { public QuizzDAO(){ @@ -15,4 +18,19 @@ public class QuizzDAO extends AbstractJpaDao { em.createQuery("delete from Quizz").executeUpdate(); et.commit(); } + + public void addQuestion(Quizz quizz, Question question) { + System.out.println("ajout de question dans le quizz"); + EntityTransaction t = em.getTransaction(); + t.begin(); + question.setQuizz(quizz); + quizz.getQuestions().add(question); + em.merge(quizz); + t.commit(); + em.refresh(quizz); + } + + public void refresh(Quizz quizz) { + em.refresh(quizz); + } } diff --git a/src/main/java/DAO/ReponseDAO.java b/src/main/java/DAO/ReponseDAO.java index 731c264..83df8a9 100644 --- a/src/main/java/DAO/ReponseDAO.java +++ b/src/main/java/DAO/ReponseDAO.java @@ -1,6 +1,11 @@ package DAO; +import jakarta.persistence.EntityTransaction; +import metier.Choix; +import metier.Question; import metier.Reponse; +import metier.Session; +import metier.Utilisateur; public class ReponseDAO extends AbstractJpaDao { public ReponseDAO(){ @@ -8,12 +13,17 @@ public class ReponseDAO extends AbstractJpaDao { this.setClass(Reponse.class); } - /*public List getGoodResponses(){ - EntityTransaction t=em.getTransaction(); + + public void addToQuestion(Reponse r, Question q) { + EntityTransaction t = em.getTransaction(); t.begin(); - Query query=em.createQuery("select r from Reponse r where r.reponses"); - List lString=query.getResultList(); + + q.setReponse(r); + r.setQuestion(q); + em.merge(r); t.commit(); - return lString; - }*/ + em.refresh(q); + } + + } diff --git a/src/main/java/DAO/SessionDAO.java b/src/main/java/DAO/SessionDAO.java index ab56567..761d5fb 100644 --- a/src/main/java/DAO/SessionDAO.java +++ b/src/main/java/DAO/SessionDAO.java @@ -3,6 +3,7 @@ package DAO; import jakarta.persistence.EntityTransaction; import jakarta.persistence.Query; +import metier.Quizz; import metier.Session; import java.util.List; @@ -26,4 +27,19 @@ public class SessionDAO extends AbstractJpaDao { return null; } } + + public void refresh(Session session) { + em.refresh(session); + } + + public void addQuizz(Quizz q, Session s) { + EntityTransaction t = em.getTransaction(); + t.begin(); + + q.setSession(s); + s.getQuizzs().add(q); + em.merge(s); + t.commit(); + em.refresh(s); + } } diff --git a/src/main/java/metier/Choix.java b/src/main/java/metier/Choix.java index 3bc550a..6bfcd68 100644 --- a/src/main/java/metier/Choix.java +++ b/src/main/java/metier/Choix.java @@ -21,7 +21,7 @@ public class Choix extends Reponse{ String res = ""; for (String val : this.choix) { - res+=val+"
"; + res+= val+"
"; } return res; } diff --git a/src/main/java/metier/Quizz.java b/src/main/java/metier/Quizz.java index 7206ac0..c22f89d 100644 --- a/src/main/java/metier/Quizz.java +++ b/src/main/java/metier/Quizz.java @@ -25,7 +25,7 @@ public class Quizz implements Serializable { @JoinColumn(name="id_utilisateur") private Utilisateur utilisateur; - @OneToMany(mappedBy = "quizz") + @OneToMany(mappedBy = "quizz", cascade = CascadeType.ALL, orphanRemoval = true) private List questions=new ArrayList(); public void addQuestion(Question question) { diff --git a/src/main/java/metier/ReponseCourte.java b/src/main/java/metier/ReponseCourte.java index 8f89772..dcb3ccf 100644 --- a/src/main/java/metier/ReponseCourte.java +++ b/src/main/java/metier/ReponseCourte.java @@ -16,6 +16,6 @@ public class ReponseCourte extends Reponse{ @Override public String valHTML(){ - return "INPUT"; + return "TEXT INPUT
"; } } diff --git a/src/main/java/metier/Session.java b/src/main/java/metier/Session.java index cb53c42..2017c0a 100644 --- a/src/main/java/metier/Session.java +++ b/src/main/java/metier/Session.java @@ -20,6 +20,7 @@ public class Session implements Serializable { @Column(unique=true) private int codePIN; + @OneToMany(mappedBy="session") private List quizzs = new ArrayList<>(); diff --git a/src/main/java/servlet/QuestionInfo.java b/src/main/java/servlet/QuestionInfo.java index af5e9bd..140a06f 100644 --- a/src/main/java/servlet/QuestionInfo.java +++ b/src/main/java/servlet/QuestionInfo.java @@ -23,49 +23,68 @@ public class QuestionInfo extends HttpServlet { @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { - QuizzDAO qDAO = new QuizzDAO(); + QuizzDAO quizzDAO = new QuizzDAO(); QuestionDAO questionDAO = new QuestionDAO(); + ReponseDAO reponseDAO = new ReponseDAO(); + + String ennonce = req.getParameter("question"); String type = req.getParameter("type"); String choixPossible = req.getParameter("choixPossible"); String reponse = req.getParameter("reponse"); String idQuizz = req.getParameter("idQuizz"); - Question question = new Question(); - Quizz quizz = qDAO.findById(Integer.parseInt(idQuizz)); + Quizz quizz = quizzDAO.findById(Integer.parseInt(idQuizz)); if(quizz==null){ resp.getWriter().println("\n\n" + "

Quizz non trouvable

" + ""); return ; } - quizz.addQuestion(question); + Question question = new Question(); question.setQuestion(ennonce); - List listRep = Arrays.asList(reponse.split("\n")); - - if(type.equals("choix")){ - Choix choix = new Choix(); - question.setReponse(choix); - List listChoix = Arrays.asList(choixPossible.split("\n")); - choix.setChoix(listChoix); - choix.setReponses(listRep); - } - else if (type.equals("courte")){ - ReponseCourte reponseCourte = new ReponseCourte(); - question.setReponse(reponseCourte); - reponseCourte.setReponses(listRep); - } - else{ - resp.getWriter().println("\n\n" + - "

Type de question non trouvé

" + - ""); - return ; - } - questionDAO.create(question); + if(type.equals("choix")){ + Choix choix = new Choix(); + //question.setReponse(choix); + List listChoix = Arrays.asList(choixPossible.split("\n")); + choix.setChoix(listChoix); + choix.setReponses(listRep); + + reponseDAO.create(choix); + reponseDAO.addToQuestion(choix, question); + + } + else if (type.equals("courte")){ + ReponseCourte reponseCourte = new ReponseCourte(); + //question.setReponse(reponseCourte); + reponseCourte.setReponses(listRep); + + reponseDAO.create(reponseCourte); + reponseDAO.addToQuestion(reponseCourte, question); + } + else{ + resp.getWriter().println( + "\n\n" + + "

Type de question non trouvé

" + + "" + ); + return ; + } + quizzDAO.addQuestion(quizz,question); + + + + + resp.getWriter().println( + "\n\n" + + "

Success

" + + "" + ); + return ; } } \ No newline at end of file diff --git a/src/main/java/servlet/QuizzInfo.java b/src/main/java/servlet/QuizzInfo.java index 512b2dd..12820b3 100644 --- a/src/main/java/servlet/QuizzInfo.java +++ b/src/main/java/servlet/QuizzInfo.java @@ -29,7 +29,7 @@ public class QuizzInfo extends HttpServlet { UtilisateurDAO uDAO = new UtilisateurDAO(); String email_user = req.getParameter("email_User"); String id_User = req.getParameter("id_User"); - String id_session = req.getParameter("code_pin"); +// String id_session = req.getParameter("code_pin"); Utilisateur u_cree_quizz = null; @@ -46,22 +46,9 @@ public class QuizzInfo extends HttpServlet { ""); return ; } - - //Session - SessionDAO sDAO = new SessionDAO(); - Session s_attached = null; - s_attached=sDAO.findById(Integer.parseInt(id_session)); - - if(s_attached==null){ - resp.getWriter().println("\n\n" + - "

Session non trouvable

" + - ""); - return ; - } - Quizz quizz = new Quizz(); quizz.setUtilisateur(u_cree_quizz); - quizz.setSession(s_attached); + //quizz.setSession(s_attached); quizzDAO.create(quizz); } } diff --git a/src/main/java/servlet/SessionInfo.java b/src/main/java/servlet/SessionInfo.java index 55af764..aa4832e 100644 --- a/src/main/java/servlet/SessionInfo.java +++ b/src/main/java/servlet/SessionInfo.java @@ -9,7 +9,7 @@ import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; - +import metier.Quizz; import metier.Session; import metier.Utilisateur; @@ -25,17 +25,37 @@ public class SessionInfo extends HttpServlet { @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { - // Créer une nouvelle session - String theme = req.getParameter("theme"); - String codePin = req.getParameter("codePIN"); - Session s = new Session(); - s.setCodePIN(Integer.parseInt(codePin)); - s.setTheme(theme); - sessionDAO.create(s); + String action = req.getParameter("action"); + if (action.equals("createSession")) { + // Créer une nouvelle session + String theme = req.getParameter("theme"); + String codePin = req.getParameter("codePIN"); + Session s = new Session(); + s.setCodePIN(Integer.parseInt(codePin)); + s.setTheme(theme); + sessionDAO.create(s); - resp.getWriter().println("

Session creee avec id: " + - s.getId() + "

"); - resp.getWriter().println("

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

"); + resp.getWriter().println("

Session creee avec id: " + + s.getId() + "

"); + resp.getWriter().println("

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

"); + } + else if (action.equals("addQuizz")){ + String idQuizz = req.getParameter("idQuizz"); + String sessionID = req.getParameter("sessionID"); + QuizzDAO quizzDAO = new QuizzDAO(); + SessionDAO sessionDAO = new SessionDAO(); + + Quizz quizz = quizzDAO.findById(Integer.parseInt(idQuizz)); + if(quizz==null) resp.getWriter().println("

Ce quizz n'existe pas !

"); + if(quizz==null) resp.getWriter().println("

Cette session n'existe pas !

"); + Session session = sessionDAO.findById(Integer.parseInt(sessionID)); + + sessionDAO.addQuizz(quizz,session); + + + resp.getWriter().println("

Quizz"+ idQuizz +" et ajouté à la session " + sessionID + " !

"); + + } } } diff --git a/src/main/java/servlet/Show.java b/src/main/java/servlet/Show.java index 15f6ee2..9a3fa69 100644 --- a/src/main/java/servlet/Show.java +++ b/src/main/java/servlet/Show.java @@ -21,11 +21,13 @@ public class Show extends HttpServlet { QuizzDAO quizzDAO = new QuizzDAO(); SessionDAO sessionDAO = new SessionDAO(); UtilisateurDAO utilisateurDAO = new UtilisateurDAO(); + QuestionDAO questionDAO = new QuestionDAO(); UtilisateurMapper mapper_u = Mappers.getMapper(UtilisateurMapper.class); @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + response.setContentType("text/html"); String result = "" + @@ -43,12 +45,12 @@ public class Show extends HttpServlet { result += "

Utilisateurs :

"; result += "" + - "" + + "" + "" + - "" + + "" + "" + - "" + - ""; + "" + + ""; for (Utilisateur u : listUser) { UtilisateurDTO dto = mapper_u.toDTO(u); result += @@ -66,20 +68,31 @@ public class Show extends HttpServlet { result += "

Quizz :

"; for (Quizz quizz : listQuizz) { + quizzDAO.refresh(quizz); + result += "
"; result += "quizz n°" + quizz.getId() + "
"; + result += "
"; result += "Admin" + quizz.getUtilisateur().getEmail() + " (id: " + quizz.getUtilisateur().getId() + ")
"; result += "nb Question :" + quizz.getQuestions().size() +"
"; + + for (Question question : quizz.getQuestions()) { - result += question.getQuestion() + "
"; + result += "
"; + result += "Q" + question.getId() + " Ennoncé : "+ question.getQuestion() + "
"; - result += "choix de réponse :
"; + + result += "Choix de réponse :
"; + result += "
"; result += question.getReponse().valHTML(); - - result += "Reponses corrects :
"; + result += "
"; + result += "Reponses corrects :
"; + result += "
"; for (String reponse : question.getReponse().getReponses()) { result += reponse; } + result += "
"; } + result += "
"; } //SESSION @@ -89,12 +102,13 @@ public class Show extends HttpServlet { "
NommailNommail
"+ ""+ ""+ - ""+ + ""+ ""+ ""+ ""; for(Session session : listSession){ + sessionDAO.refresh(session); result+= ""+ ""+""+""; @@ -104,7 +118,7 @@ public class Show extends HttpServlet { } String UtilisateurID = ""; for(Utilisateur utilisateur : session.getUtilisateurs()){ - UtilisateurID += utilisateur.getId() + " ; "; + UtilisateurID += utilisateur.getEmail() + " ; "; } result += ""+""; result+=""; diff --git a/src/main/webapp/Quizz.html b/src/main/webapp/Quizz.html index cd3a1b2..cf8fe5f 100644 --- a/src/main/webapp/Quizz.html +++ b/src/main/webapp/Quizz.html @@ -6,7 +6,6 @@

Creer des quizz

Create from user id :
Create from user email :
- Enter code pin of session:
diff --git a/src/main/webapp/Session.html b/src/main/webapp/Session.html index b0d3f63..2c1cc14 100644 --- a/src/main/webapp/Session.html +++ b/src/main/webapp/Session.html @@ -10,6 +10,13 @@ + + + session ID + ID Quizz + + + \ No newline at end of file diff --git a/src/main/webapp/css/style.css b/src/main/webapp/css/style.css index 21114f6..57ff231 100644 --- a/src/main/webapp/css/style.css +++ b/src/main/webapp/css/style.css @@ -1,5 +1,5 @@ body{ - + } table.show{ @@ -18,3 +18,22 @@ th.show{ padding-right: 5px; border: 1px solid #C0C0C0 } + + +.tabulation{ + padding-left: 10px; +} + +.question{ + border: solid; + border-color: #C0C0C0; + margin: 5px; + padding: 5px; +} + +.quizz{ + border: solid; + border-color: #909090; + margin: 5px; + padding: 5px; +} \ No newline at end of file
IDThemeCode PINQizzsParticipantsIDThemeCode PINQuizzsParticipants
"+session.getId()+""+session.getTheme()+""+session.getCodePIN()+""+quizzsID+""+UtilisateurID+"