From 7ce174b94ac0424c2059e9ff6ba334e762215602 Mon Sep 17 00:00:00 2001 From: Charlie Darques <charlie.darques.etu@univ-lille.fr> Date: Fri, 14 Mar 2025 00:32:08 +0100 Subject: [PATCH] =?UTF-8?q?refacto=20+=20ajout=20page=20d=C3=A9couverte=20?= =?UTF-8?q?des=20threads=20non=20suivis=20+=20option=20follow=20un=20threa?= =?UTF-8?q?d?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WEB-INF/src/controleurs/Discover.java | 84 +++++++++++++++++++++++ WEB-INF/src/controleurs/Feed.java | 3 +- WEB-INF/src/controleurs/FollowThread.java | 37 ++++++++++ WEB-INF/src/controleurs/Following.java | 2 +- WEB-INF/src/dao/ThreadDAO.java | 2 +- WEB-INF/src/dao/UserDAO.java | 2 - 6 files changed, 124 insertions(+), 6 deletions(-) create mode 100644 WEB-INF/src/controleurs/Discover.java create mode 100644 WEB-INF/src/controleurs/FollowThread.java diff --git a/WEB-INF/src/controleurs/Discover.java b/WEB-INF/src/controleurs/Discover.java new file mode 100644 index 0000000..31645e0 --- /dev/null +++ b/WEB-INF/src/controleurs/Discover.java @@ -0,0 +1,84 @@ +package controleurs; + +import dao.ThreadDAO; +import dao.UserDAO; +import dto.Message; +import dto.MyThread; +import dto.User; +import jakarta.servlet.annotation.WebServlet; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; + +import java.io.PrintWriter; +import java.io.IOException; +import java.sql.SQLException; +import java.util.List; + +@WebServlet("/Discover") +public class Discover extends HttpServlet { + public void service(HttpServletRequest req, HttpServletResponse res) + throws IOException { + if (req.getSession().getAttribute("user") != null) { + UserDAO userDao = new UserDAO(); + ThreadDAO threadDao = new ThreadDAO(); + PrintWriter out = res.getWriter(); + String login = (String) req.getSession().getAttribute("login"); + + User user = (User) req.getSession().getAttribute("user"); + + if (user != null) { + List<Message> messages = null; + messages = threadDao.getAllMessages(); + + out.println("<html><body><meta charset=\"utf-8\">"); + out.println("<link rel=\"stylesheet\" href=\"css/feed.css\">"); + out.println("<title>Discover</title>"); + + out.println("<h1>Discover the threads you're not following yet</h1>"); + + out.println(PageGeneration.generateNavMenu()); + + if (!messages.isEmpty()) { + for (Message message : messages) { + MyThread msgThread = null; + try { + msgThread = threadDao.getThreadById(message.getThreadId()); + } catch (SQLException e) { + throw new RuntimeException(e); + } + out.println("<div class=\"message\">"); + out.println("<h3 class=\"msgThread\">" + msgThread.getThreadName() + "</h3>"); + out.println("<p class=\"msgContent\">" + message.getContent() + "</p>"); + out.println("<p class=\"sender\">by " + userDao.getUserById(message.getSenderId()).getUserName() + "</p>"); + + out.println("<form class=\"followThread\" action=\"http://localhost:8080/s4a021-web-backend/FollowThread\" method=\"post\">"); + out.println("<input name=\"threadid\" type=\"hidden\" value=\"" + msgThread.getId() +"\">"); + out.println("<button type=\"submit\">Follow</button>"); + out.println("</form>"); + } + } + else { + out.println("<p class=\"information\">No new thread to discover for now !</p>"); + } + + out.println("<div class=\"discover\">"); + out.println("<a href=\"http://localhost:8080/s4a021-web-backend/NewThread\">Create a new thread</a>"); + out.println("</div>"); + + out.println("</body>"); + out.println("<footer>"); + out.println("Connected as " + login); + out.println("</footer>"); + out.println("</html>"); + + } + + + } else { + res.sendRedirect("http://localhost:8080/s4a021-web-backend/index.html"); + } + + } + +} diff --git a/WEB-INF/src/controleurs/Feed.java b/WEB-INF/src/controleurs/Feed.java index a31cea7..cbc8c11 100644 --- a/WEB-INF/src/controleurs/Feed.java +++ b/WEB-INF/src/controleurs/Feed.java @@ -20,7 +20,6 @@ public class Feed extends HttpServlet { public void service(HttpServletRequest req, HttpServletResponse res) throws IOException { if (req.getSession().getAttribute("user") != null) { - System.out.println("Utilisateur connecté :" + req.getSession().getAttribute("user")); UserDAO userDao = new UserDAO(); ThreadDAO threadDao = new ThreadDAO(); PrintWriter out = res.getWriter(); @@ -41,7 +40,7 @@ public class Feed extends HttpServlet { out.println("<link rel=\"stylesheet\" href=\"css/feed.css\">"); out.println("<title>Welcome</title>"); - out.println("<h1>Welcome " + login + "</h1>"); + out.println("<h1>Welcome to CampusTalk, " + login + " !</h1>"); out.println(PageGeneration.generateNavMenu()); diff --git a/WEB-INF/src/controleurs/FollowThread.java b/WEB-INF/src/controleurs/FollowThread.java new file mode 100644 index 0000000..4d69a3a --- /dev/null +++ b/WEB-INF/src/controleurs/FollowThread.java @@ -0,0 +1,37 @@ +package controleurs; + +import dao.ThreadDAO; +import dao.UserDAO; +import dto.User; +import jakarta.servlet.annotation.WebServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; + +import java.io.IOException; +import java.io.PrintWriter; +import java.sql.SQLException; + +@WebServlet("/FollowThread") +public class FollowThread { + public void service(HttpServletRequest req, HttpServletResponse res) + throws IOException { + if (req.getSession().getAttribute("user") != null) { + User user = (User) req.getSession().getAttribute("user"); + + UserDAO userDao = new UserDAO(); + ThreadDAO threadDao = new ThreadDAO(); + PrintWriter out = res.getWriter(); + String login = (String) req.getSession().getAttribute("login"); + + try { + userDao.followThread(user, threadDao.getThreadById((Integer.parseInt(req.getParameter("threadid"))))); + } + catch (SQLException sqle) { + sqle.getStackTrace(); + } + } + else { + res.sendRedirect("http://localhost:8080/s4a021-web-backend/Welcome"); + } + } +} diff --git a/WEB-INF/src/controleurs/Following.java b/WEB-INF/src/controleurs/Following.java index 07cc323..d98f435 100644 --- a/WEB-INF/src/controleurs/Following.java +++ b/WEB-INF/src/controleurs/Following.java @@ -25,7 +25,7 @@ public class Following extends HttpServlet { UserDAO userDAO = new UserDAO(); String login = (String) req.getSession().getAttribute("login"); - User user = userDAO.getUserByLogs(login, req.getSession().getAttribute("password").toString()); + User user = (User) req.getSession().getAttribute("user"); if (!userDAO.isDatabased(user)) res.sendRedirect("http://localhost:8080/s4a021-web-backend/index.html"); List<MyThread> threadsFollowedByUser = null; diff --git a/WEB-INF/src/dao/ThreadDAO.java b/WEB-INF/src/dao/ThreadDAO.java index 3c5ae83..8c3860f 100644 --- a/WEB-INF/src/dao/ThreadDAO.java +++ b/WEB-INF/src/dao/ThreadDAO.java @@ -20,7 +20,7 @@ public class ThreadDAO { ArrayList<Message> messages = new ArrayList<>(); try{ Statement stmt = this.con.createStatement(); - ResultSet rs = stmt.executeQuery("SELECT * FROM msg;"); + ResultSet rs = stmt.executeQuery("SELECT * FROM msg ORDER BY posted_at DESC;"); while(rs.next()){ int msgId = rs.getInt(1); diff --git a/WEB-INF/src/dao/UserDAO.java b/WEB-INF/src/dao/UserDAO.java index c2c3eb0..0e8ec68 100644 --- a/WEB-INF/src/dao/UserDAO.java +++ b/WEB-INF/src/dao/UserDAO.java @@ -169,9 +169,7 @@ public class UserDAO { public void postMessage(User user, MyThread thread, String message) throws SQLException { PreparedStatement ps = this.con.prepareStatement("INSERT INTO msg (userID_msg, threadID, msg, posted_at) VALUES(?, ?, ?, ?)"); try { - System.out.println("dans le try de post message"); ps.setInt(1, user.getId()); - // PROBLEME ICI ps.setInt(2, thread.getId()); ps.setString(3, message); Date date = Date.valueOf(LocalDate.now()); -- GitLab