From 4020d966615dda152291a8dc677a27966fa23b2c Mon Sep 17 00:00:00 2001 From: Charlie Darques <charlie.darques.etu@univ-lille.fr> Date: Thu, 6 Mar 2025 17:35:56 +0100 Subject: [PATCH] =?UTF-8?q?IMPORTANT=20ajout=20d'une=20colonne=20dans=20la?= =?UTF-8?q?=20table=20msg=20et=20changement=20des=20donn=C3=A9es=20repr?= =?UTF-8?q?=C3=A9sentatives=20+=20ajout=20m=C3=A9thodes=20de=20r=C3=A9cup?= =?UTF-8?q?=C3=A9ration=20des=20messages=20des=20threads=20suivis=20=C3=A0?= =?UTF-8?q?=20partir=20du=20plus=20r=C3=A9cent?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WEB-INF/classes/dto/Message.class | Bin 1211 -> 0 bytes WEB-INF/classes/dto/Thread.class | Bin 803 -> 0 bytes WEB-INF/src/dao/UserDAO.java | 40 ++++++++++++++++++++++++++++-- WEB-INF/src/dto/Message.java | 6 ++++- db/createTables.sql | 1 + db/data.sql | 8 +++--- 6 files changed, 48 insertions(+), 7 deletions(-) delete mode 100644 WEB-INF/classes/dto/Message.class delete mode 100644 WEB-INF/classes/dto/Thread.class diff --git a/WEB-INF/classes/dto/Message.class b/WEB-INF/classes/dto/Message.class deleted file mode 100644 index d2e78212587772e41a107588ec40d0777260468b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1211 zcmX^0Z`VEs1_oOOZ7v2T24;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk- z5<5l)W)00SP6iGJPId+^9tLg(9!3W4l#+aX-_+vb#Pn1~2G-o-bk7t<21ZYiGCm## zevlfD;?%s9)FRImkf0zBgAiD-B%>%bF$E$h!owiSAjZhRo}8aolA2e-$ROl{a7S=S zQD$DcH6w$BhNq_|ri5k~BLj<beo87M1HVsZUaDVdZc=JdNMce>D#)Px<iwn?#G*_P zA1cUFl95@=$iVA^<a%pH29EU95?_c9m^Cy#85y|KQ%i!Oj)(9<psr?Q;7U&|afUfp zL_-tPU5pGI#c%^zG(17><Ss@ru{gB^$;4tL6Gb&J4Fnm$6`WsMl$`383Gy5dH01R_ zfyJQ6z`?-8z`(%5zyyjM1_lNuPy~Q!AqE~WEy^Iqz`(%Cz{tSLAkM(ZAi==E(7?dN zz{<eDAf>gPfl*6(D+9Zh%vJ_oE!nLM0$P$RTN#8mg7r#*)G)9yFfi~iurTm4a5C^Q z@G<Z+2r~#UNHPdANHH)lm_STokY<o!00AkmOBlgA`5Ab??vnzg00w5T7|1;=42%r2 z402G{=rb@ffYh^UZDC+v1GktBEGQ1Pga^!Kg<8VMAdgiuFS=%FteO?DY8F7(ERR*Q zB7+hZXA5sYbG9;8&B_caP|bD>OyH1V1BX5$v_W~3fkBIbl|dV9f*3><)Z+{cY|zkU zWKhL!7B9M4dJL=#`Z&x2#SbX#)v%i-fNqu%11p0u4zob%4P=%&g9e5lwNX+O#E)hS TtPJKj%mSqmkXf4GP}Kqey7!&j diff --git a/WEB-INF/classes/dto/Thread.class b/WEB-INF/classes/dto/Thread.class deleted file mode 100644 index cbc1ec699cf07cc7c890b3993cc552f54d2b57ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 803 zcmX^0Z`VEs1_oOOWiAFL24;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk- z5<5l)W)00SP6iGJPId+^9tLg(9!3VPl#+b?kc^_##1uvbjuJ4#(}j_N(G#SQkB5Pu zL4c8g3nJl{n48MTAmoFvBDka|GcVnmkwHwu6H{0-jFExGIX@+pk%8YQGcVPzG&d== zC?qi{2W(7!a$-(cVo@fD4;5r7$;d2bWZ>~ZILn%mfhjYEk%1)-Y&&auYKdnG*e{-p z47};7B@ov`+$N%-iRlbR2JT{*GLYX`G(15r<An=C^onX=Y6Yp|3eGPrN=|jl1i6|U zVw)Z)2pAL@I2f217#Nrsm_VTkX7Mu!FfcH%GB7f*G6*s-G6*p+Fhqi)h=GBDUu!!9 zqn7km26io-tqi;y!5V}a7#M^YSQr=>xENR%xEVMZco_H?co{?(7#I{7m_gbYL>a^w zK!Be?oPmdd5iBObAi%)Hz{nuUAO*EXpMeo9$Evl3fqf0!a5k`@FxWtdW>%<yj11BY zGFUY8Za~v4j#aZPgB(<|9XJRW7}&s`L--4nHW?V?8CV$<z$S=+gNqGnJp%(9IM_h0 gmS<4FFiRUHj38zyGq5tK;4ljm^dPeo!LC;V0L#gEjsO4v diff --git a/WEB-INF/src/dao/UserDAO.java b/WEB-INF/src/dao/UserDAO.java index 31683b7..ddc68ae 100644 --- a/WEB-INF/src/dao/UserDAO.java +++ b/WEB-INF/src/dao/UserDAO.java @@ -6,6 +6,7 @@ import java.util.ArrayList; import java.util.List; import dto.Message; +import dto.MyThread; import dto.User; import jakarta.servlet.http.*; @@ -182,15 +183,50 @@ public class UserDAO extends HttpServlet{ } // Récupérer les thread auxquels un utilisateur est abonné - public List<Thread> getThreadsByUser(User user) throws SQLException { - List<Thread> threads = new ArrayList<>(); + public List<MyThread> getThreadsByUser(User user) throws SQLException { + List<MyThread> threads = new ArrayList<>(); PreparedStatement ps = this.con.prepareStatement("SELECT threadID_follow FROM follow WHERE userID_follow = ?"); try { ps.setInt(1, user.getId()); ResultSet rs = ps.executeQuery(); while(rs.next()){ + int threadId = rs.getInt(1); + String threadname = rs.getString(2); + threads.add(new MyThread(threadId, threadname)); + } + } + catch (SQLException sqle) { + sqle.getStackTrace(); + } + return threads; + } + // Récupérer les messages de chaque thread à partir du plus récent + public List<Message> getMostRecentMessages(User user) throws SQLException { + List<Message> messages = new ArrayList<>(); + PreparedStatement ps = this.con.prepareStatement(""" + SELECT m.msgID, m.userID_msg, m.threadID, m.msg, m.posted_at FROM msg AS m + INNER JOIN follow AS f + ON m.userID_msg = f.userID_follow + WHERE f.threadID_follow = m.threadID + AND m.userID_msg = ? + ORDER BY m.posted_at DESC + """); + try { + ps.setInt(1, user.getId()); + ResultSet rs = ps.executeQuery(); + while(rs.next()){ + int msgID = rs.getInt(1); + int sender = rs.getInt(2); + int threadID = rs.getInt(3); + String content = rs.getString(4); + Date creationDate = rs.getDate(5); + messages.add(new Message(msgID, sender, threadID, content, creationDate)); } } + catch (SQLException sqle) { + sqle.getStackTrace(); + } + return messages; } } \ No newline at end of file diff --git a/WEB-INF/src/dto/Message.java b/WEB-INF/src/dto/Message.java index a50cac3..b012203 100644 --- a/WEB-INF/src/dto/Message.java +++ b/WEB-INF/src/dto/Message.java @@ -1,19 +1,23 @@ package dto; +import java.util.Date; + public class Message { private int msgId; private int senderId; private int threadId; private String content; + private Date creationDate; // Constructor // - public Message(int msgId, int senderId, int threadId, String content) { + public Message(int msgId, int senderId, int threadId, String content, Date creationDate) { this.msgId = msgId; this.senderId = senderId; this.threadId = threadId; this.content = content; + this.creationDate = creationDate; } diff --git a/db/createTables.sql b/db/createTables.sql index 08b3c46..fc1c896 100644 --- a/db/createTables.sql +++ b/db/createTables.sql @@ -14,6 +14,7 @@ CREATE TABLE msg ( userID_msg int, threadID int, msg text, + posted_at DATE, CONSTRAINT fk_message FOREIGN KEY (userID_msg) REFERENCES userAccount(userID), CONSTRAINT pk_message PRIMARY KEY (msgID) ); diff --git a/db/data.sql b/db/data.sql index ca6e0be..93e813b 100644 --- a/db/data.sql +++ b/db/data.sql @@ -7,7 +7,7 @@ INSERT INTO userAccount VALUES (1, 'toto', 'totopwd123'), INSERT INTO thread VALUES (1, 2, 'Gaming'), (2, 3, 'Animaux'), (3, 3, 'Objet perdu'), - (4, 1, 'Discution'); + (4, 1, 'Discussion'); INSERT INTO follow VALUES (2,1, TO_DATE('11/02/2025', 'DD/MM/YYYY')), @@ -16,9 +16,9 @@ INSERT INTO follow VALUES (2,1, TO_DATE('11/02/2025', 'DD/MM/YYYY')), (1,4, TO_DATE('20/09/2025', 'DD/MM/YYYY')); -INSERT INTO msg VALUES (1, 3 , 1, 'Bonjour !'), - (2, 4, 1, 'Hello !'), - (3, 1, 3, 'Mon objet était ici.'); +INSERT INTO msg VALUES (1, 3 , 1, 'Bonjour !', TO_DATE('11/02/2025', 'DD/MM/YYYY'), + (2, 4, 1, 'Hello !', TO_DATE('18/02/2025', 'DD/MM/YYYY'), + (3, 1, 3, 'Mon objet était ici.', TO_DATE('02/02/2025', 'DD/MM/YYYY'); INSERT INTO reactions VALUES (2, 1, 'TRUE'), -- GitLab