package projet; import jakarta.servlet.RequestDispatcher; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpSession; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Map; @WebServlet("/AfficherPage") public class AfficherPage extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(); Utilisateur u = (Utilisateur) session.getAttribute("utilisateur"); String idStr = request.getParameter("id"); if(u != null) { u.chargerPages(); u.chargerPagesPartagees(); ArrayList listePages = u.getListePages(); ArrayList listePagesPartagees = u.getListePagesPartagees(); ArrayList listeMessages = Message.getListeMessages(); ArrayList listeUtilisateurs = Utilisateur.getListeUtilisateurs(); request.setAttribute("listePages", listePages); request.setAttribute("listePagesPartagees", listePagesPartagees); request.setAttribute("listeMessages", listeMessages); request.setAttribute("listeUtilisateurs", listeUtilisateurs); String menuHtml = genererMenuHTML(u.getId()); request.setAttribute("menuHtml", menuHtml); if (idStr != null ) { try { int id = Integer.parseInt(idStr); Page page = Page.getPageById(u.getId(), id); if (page != null) { request.setAttribute("page", page); Map hierarchie = u.getHierarchie(id); request.setAttribute("hierarchie", hierarchie); request.getRequestDispatcher("/WEB-INF/AfficherPage.jsp").forward(request, response); return; } else { request.getRequestDispatcher("/WEB-INF/AfficherPage.jsp").forward(request, response); return; } } catch (NumberFormatException e) { response.sendError(HttpServletResponse.SC_BAD_REQUEST, "ID invalide"); return; } } RequestDispatcher rd = request.getRequestDispatcher("/WEB-INF/AfficherPage.jsp"); rd.forward(request, response); } else { response.sendRedirect("/Projet/"); } } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } public static String genererMenuHTML(int idU) { Map> arbre = Page.getArbreDesPages(idU); StringBuilder html = new StringBuilder(); html.append("
    \n"); construireHTMLRecursif(arbre, -1, html, 6); html.append("
\n"); return html.toString(); } private static void construireHTMLRecursif(Map> arbre, int parentId, StringBuilder html, int indentLevel) { List enfants = arbre.get(parentId); if (enfants == null || enfants.isEmpty()) return; String indent = "\t".repeat(indentLevel); for (Page p : enfants) { List sousPages = arbre.get(p.getId()); boolean aSousPages = sousPages != null && !sousPages.isEmpty(); html.append(indent).append("
  • \n"); html.append(indent).append("\t
    \n"); html.append(indent).append("\t\t") .append(p.getTitre()).append("\n"); html.append(indent).append("\t\t\n"); html.append(indent).append("\t
    \n"); if (aSousPages) { html.append(indent).append("\t
      \n"); construireHTMLRecursif(arbre, p.getId(), html, indentLevel + 1); html.append(indent).append("\t
    \n"); } html.append(indent).append("
  • \n"); } } }