Select Git revision
-
Hammouda Elbez authoredHammouda Elbez authored
Feed.java 4.55 KiB
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.ArrayList;
import java.util.List;
@WebServlet("/Welcome")
public class Feed extends HttpServlet {
UserDAO userDao = new UserDAO();
ThreadDAO threadDao = new ThreadDAO();
User user;
public void service(HttpServletRequest req, HttpServletResponse res)
throws IOException {
if (req.getSession().getAttribute("user") != null) {
PrintWriter out = res.getWriter();
String login = (String) req.getSession().getAttribute("login");
user = userDao.getUserByLogs(login, req.getSession().getAttribute("password").toString());
List<Integer> liked_messages = getLikedMessages(req);
List<Message> messages = null;
try {
messages = userDao.getMostRecentMessages(user);
} catch (SQLException e) {
throw new RuntimeException(e);
}
out.println("<html><body><meta charset=\"utf-8\">");
out.println("<link rel=\"stylesheet\" href=\"css/feed.css\">");
out.println("<title>Welcome</title>");
out.println("<h1>Welcome to CampusTalk, " + login + " !</h1>");
out.println(PageGeneration.generateNavMenu());
if (!messages.isEmpty()) {
for (Message message : messages) {
MyThread msgThread;
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("<form action=\"http://localhost:8080/s4a021-web-backend/PostMessage\" method=\"post\">");
out.println("<textarea name=\"message\" rows=\"2\" cols=\"30\" placeholder=\"Post a message in this thread\"></textarea>");
out.println("<input name=\"threadid\" type=\"hidden\" value=\"" + msgThread.getId() + "\">");
out.println("<button type=\"submit\">Post</button>");
out.println("</form>");
out.println("<form action=\"http://localhost:8080/s4a021-web-backend/LikeMessage\" method=\"post\">");
if (liked_messages.contains(message.getMsgId())) {
out.println("<button class=\"liked\" type=\"submit\" value=\"Liked\">Liked</button></form>");
} else {
out.println("<button class=\"unliked\" type\"submit\" value=\"Unliked\">Unliked</button></form>");
}
out.println("</div>");
}
}
else{
out.println("<p class=\"information\">You are not following any thread yet.</p>");
}
out.println("<div class=\"discover\">");
out.println("<a href=\"\">Discover new threads</a>");
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");
}
}
public List<Integer> getLikedMessages(HttpServletRequest req) {
List<Integer> liked_messages = new ArrayList<>();
if (req.getSession().getAttribute("liked_messages") != null) {
liked_messages = (List<Integer>) req.getSession().getAttribute("liked_messages");
}
else {
try {
liked_messages = userDao.getLikedMessagesFromUser(user);
req.getSession().setAttribute("liked_messages", liked_messages);
} catch (SQLException e) {
e.getStackTrace();
}
}
return liked_messages;
}
}