From 1de65d2ee92d656509068a4e32f344f1f0b279a0 Mon Sep 17 00:00:00 2001
From: Alexandre Dehaine <alexandredehaine@outlook.fr>
Date: Mon, 10 Mar 2025 11:57:34 +0100
Subject: [PATCH] v1

---
 .vscode/settings.json                         |  12 ------
 ScriptSQL.sql                                 |   2 +-
 WEB-INF/classes/dao/ConversationDao.class     | Bin 636 -> 636 bytes
 WEB-INF/classes/dao/ConversationJdbcDao.class | Bin 7431 -> 7777 bytes
 WEB-INF/src/dao/ConversationDao.java          |   2 +-
 WEB-INF/src/dao/ConversationJdbcDao.java      |  40 ++++++++++--------
 accueil.jsp                                   |  13 +++---
 7 files changed, 33 insertions(+), 36 deletions(-)
 delete mode 100644 .vscode/settings.json

diff --git a/.vscode/settings.json b/.vscode/settings.json
deleted file mode 100644
index cb83cd3..0000000
--- a/.vscode/settings.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-    "java.project.sourcePaths": [
-        "WEB-INF/classes",
-        "WEB-INF/lib"
-    ],
-    "java.project.referencedLibraries": [
-        "/home/infoetu/alexandre.dehaine.etu/tomcat/lib/annotations-api.jar",
-        "/home/infoetu/alexandre.dehaine.etu/tomcat/webapps/sae-r4.01/WEB-INF/lib/postgresql-42.7.4.jar",
-        "/home/infoetu/alexandre.dehaine.etu/tomcat/webapps/sae-r4.01/WEB-INF/lib/chesslib-1.1.8.jar"
-    ],
-    "java.project.outputPath": "WEB-INF/classes"
-}
\ No newline at end of file
diff --git a/ScriptSQL.sql b/ScriptSQL.sql
index 6473068..fbf9712 100644
--- a/ScriptSQL.sql
+++ b/ScriptSQL.sql
@@ -47,7 +47,7 @@ CREATE TABLE Messages
     INSERT INTO Messages(message, utilisateur, idConv)
     VALUES('Hello', (SELECT email FROM Utilisateur WHERE email = 'audrey.v.etu@univ-lille.fr'), (SELECT idConv FROM Conversations WHERE nomConv = 'Conversation 1'));
 -- Créations d'une Conversation 2 et de messages
-    INSERT INTO Conversations(nomConv, createur)
+    INSERT INTO Conversations(nomConv, createur, pwd)
     VALUES('Conversation 2', (SELECT email FROM Utilisateur WHERE email = 'alexandre.dehaine.etu@univ-lille.fr'), MD5('mdp'));
     INSERT INTO Messages(message, utilisateur, idConv)
     VALUES('Conv 2', (SELECT email FROM Utilisateur WHERE email = 'alexandre.dehaine.etu@univ-lille.fr'), (SELECT idConv FROM Conversations WHERE nomConv = 'Conversation 2'));
diff --git a/WEB-INF/classes/dao/ConversationDao.class b/WEB-INF/classes/dao/ConversationDao.class
index a2930172d2374868a20253fe952d727e48f96892..3be0414e77e4b46609e99caf177665a0431f1e97 100644
GIT binary patch
delta 13
Vcmeyv@`q)^CPqfj$(tEZ0sty+1-<|P

delta 13
Vcmeyv@`q)^CPv1n$(tEZ0stz+1<wEg

diff --git a/WEB-INF/classes/dao/ConversationJdbcDao.class b/WEB-INF/classes/dao/ConversationJdbcDao.class
index 21c0c2d04aa20f9680699cd709e95b6cc96324ec..5dcd0f5eadfff1a1839538bd6e7d0d036c2cfe49 100644
GIT binary patch
delta 2293
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
I{9up-0J??h!2kdN

delta 1969
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
Qu74OAo-#aVc*!6M0ONgxBme*a

diff --git a/WEB-INF/src/dao/ConversationDao.java b/WEB-INF/src/dao/ConversationDao.java
index 9f61d27..246c615 100644
--- a/WEB-INF/src/dao/ConversationDao.java
+++ b/WEB-INF/src/dao/ConversationDao.java
@@ -7,7 +7,7 @@ public interface ConversationDao {
     List<Message> findAllMessages(int idConv);
     List<Utilisateur> findAllUtilisateurs(int idConv);
     List<Conversation> findByUser(String email);
-    boolean createConversation(String nomConv, Utilisateur createur, String pwd);
+    int createConversation(String nomConv, Utilisateur createur, String pwd);
     boolean deleteConversation(int idConv);
     boolean goodPwd(int idConv, String pwd);
 }
diff --git a/WEB-INF/src/dao/ConversationJdbcDao.java b/WEB-INF/src/dao/ConversationJdbcDao.java
index d3897c2..ff2ea93 100644
--- a/WEB-INF/src/dao/ConversationJdbcDao.java
+++ b/WEB-INF/src/dao/ConversationJdbcDao.java
@@ -1,10 +1,5 @@
 package dao;
-
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
+import java.sql.*;
 import java.time.LocalDate;
 import java.util.ArrayList;
 import java.util.List;
@@ -94,21 +89,32 @@ public class ConversationJdbcDao implements ConversationDao{
 	}
 
 	@Override
-	public boolean createConversation(String nomConv, Utilisateur createur, String pwd) {
-		try (Connection con = getCon(); Statement stmt = con.createStatement()) {
+	public int createConversation(String nomConv, Utilisateur createur, String pwd) {
+        try (Connection con = getCon()) {
+            // Utilisation de PreparedStatement avec Statement.RETURN_GENERATED_KEYS pour récupérer l'ID généré
             String sql = "INSERT INTO Conversations(nomConv, createur, pwd) VALUES('"+nomConv+"', '"+createur.getEmail()+"', MD5('"+pwd+"'));";
-            System.err.println(sql);
-            ResultSet rs = stmt.executeQuery(sql);
-            rs.next();
-            rs.close();
-            con.close();
-            return true;
-        }catch (SQLException e) {
+            
+            // Préparer la requête pour insertion avec des paramètres
+            try (PreparedStatement pstmt = con.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)) {
+                // Exécuter la requête d'insertion
+                pstmt.executeUpdate();
+                
+                // Récupérer les clés générées
+                try (ResultSet rs = pstmt.getGeneratedKeys()) {
+                    if (rs.next()) {
+                        // Récupérer l'ID généré
+                        int res = rs.getInt(1); // Le premier champ dans ResultSet est l'ID auto-généré
+                        return res;
+                    }
+                }
+            }
+        } catch (SQLException e) {
             System.out.println("Erreur lors de l'accès à la base de données : " + e.getMessage());
             e.printStackTrace();
         }
-        return false;
-	}
+        return 0; // Retourner 0 en cas d'erreur
+    }
+    
 
 	@Override
 	public boolean deleteConversation(int idConv) {
diff --git a/accueil.jsp b/accueil.jsp
index 8729b9c..ff5805c 100644
--- a/accueil.jsp
+++ b/accueil.jsp
@@ -40,11 +40,13 @@
             response.sendRedirect("http://localhost:8080/sae-r4.01/accueil.jsp?idConv=" + selectedConvId);
         }
     }
-    if(request.getParameter("param") == "create"){
-        jdbcConv.createConversation(request.getParameter("nomConv") ,utilisateur, request.getParameter("pwd"));
+    if(request.getParameter("param") != null && request.getParameter("param").equals("create")){
+        System.out.println("suce");
+        selectedConvId = jdbcConv.createConversation(request.getParameter("nomConv") ,utilisateur, request.getParameter("pwd"));
         jdbcMessage.createMessage(utilisateur, request.getParameter("Message"), selectedConvId);
         response.sendRedirect("http://localhost:8080/sae-r4.01/accueil.jsp?idConv=" + selectedConvId);
     }
+    System.out.println("bite");
     %>
 
     <br>
@@ -100,7 +102,7 @@
         out.println("<label for=\"idConv,\">Identifiant de la conversation:</label>");
         out.println("<input type=\"text\" id=\"idConv\" name=\"idConv\">");
         out.println("<label for=\"pwd\">Mot de passe:</label>");
-        out.println("<input type=\"text\" id=\"pwd\" name=\"pwd\">");
+        out.println("<input type=\"password\" id=\"pwd\" name=\"pwd\">");
         out.println("<label for=\"Message\">Message:</label>");
         out.println("<input type=\"text\" id=\"Message\" name=\"Message\">");
         out.println("<button type=\"submit\" name=\"param\" value =  \"join\" class=\"btn btn-primary\">Rejoindre</button>");
@@ -109,13 +111,14 @@
 
     <h3>Créer une conversation :</h3>
     <%
+        out.println("<form action='accueil.jsp' method='get'>");
         out.println("<label for=\"nomConv\">Nom de la conversation:</label>");
         out.println("<input type=\"text\" id=\"nomConv\" name=\"nomConv\">");
         out.println("<label for=\"pwd\">Mot de passe:</label>");
-        out.println("<input type=\"text\" id=\"pwd\" name=\"pwd\">");
+        out.println("<input type=\"password\" id=\"pwd\" name=\"pwd\">");
         out.println("<label for=\"Message\">Message:</label>");
         out.println("<input type=\"text\" id=\"Message\" name=\"Message\">");
-        out.println("<button type=\"submit\" name=\"param\" value =  \"create\" class=\"btn btn-primary\">Créer</button>");
+        out.println("<button type=\"submit\" name=\"param\" value =\"create\" class=\"btn btn-primary\">Créer</button>");
         out.println("</form>");
     %>
 
-- 
GitLab