diff --git a/Projet/src/main/java/projet/AfficherPage.java b/Projet/src/main/java/projet/AfficherPage.java index 0def7cd..1b426de 100644 --- a/Projet/src/main/java/projet/AfficherPage.java +++ b/Projet/src/main/java/projet/AfficherPage.java @@ -10,12 +10,12 @@ import jakarta.servlet.http.HttpSession; import java.io.IOException; import java.util.ArrayList; +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"); @@ -38,11 +38,14 @@ public class AfficherPage extends HttpServlet { if (idStr != null ) { try { int id = Integer.parseInt(idStr); - Page page = Page.getPageById(u.getId(), id); - + 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 { diff --git a/Projet/src/main/java/projet/Page.java b/Projet/src/main/java/projet/Page.java index ba86754..cc931c2 100644 --- a/Projet/src/main/java/projet/Page.java +++ b/Projet/src/main/java/projet/Page.java @@ -9,7 +9,9 @@ import java.sql.Statement; import java.time.LocalDate; import java.sql.Date; import java.util.ArrayList; +import java.util.LinkedHashMap; import java.util.List; +import java.util.Map; import projet.Bloc.Type; @@ -272,8 +274,10 @@ public class Page extends ParamBD { pst.setInt(2, idP); pst.setInt(3, idPage); pst.setInt(4, idU); - pst.executeUpdate(); + pst.executeUpdate(); + pst.close(); + connexion.close(); } catch (SQLException e) { e.printStackTrace(); } diff --git a/Projet/src/main/java/projet/Utilisateur.java b/Projet/src/main/java/projet/Utilisateur.java index 784b016..192a7ab 100644 --- a/Projet/src/main/java/projet/Utilisateur.java +++ b/Projet/src/main/java/projet/Utilisateur.java @@ -8,6 +8,10 @@ import java.sql.SQLException; import java.sql.Statement; import java.time.LocalDate; import java.util.ArrayList; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; import projet.Page.Droit; @@ -245,4 +249,53 @@ public class Utilisateur extends ParamBD { } return listeUtilisateur; } + + public Map getHierarchie(int idPage) { + Map hierarchie = new LinkedHashMap<>(); + getHierarchieRecurcive(idPage, hierarchie); + + hierarchie.remove(idPage); + + // Inverser le contenu du Map pour commencer par la page enfant + Map inverseHierarchie = new LinkedHashMap<>(); + List> entries = new ArrayList<>(hierarchie.entrySet()); + Collections.reverse(entries); + + for (Map.Entry entry : entries) { + inverseHierarchie.put(entry.getKey(), entry.getValue()); + } + + return inverseHierarchie; + } + + private void getHierarchieRecurcive(int idPage, Map hierarchie) { + try { + Connection connexion = DriverManager.getConnection(bdURL, bdLogin, bdPassword); + String sql = "SELECT titre, page_parent_id" + + " FROM page" + + " WHERE id = " + + idPage + + " AND auteur_id = " + + id + + ";"; + Statement st = connexion.createStatement(); + + ResultSet rs = st.executeQuery(sql); + while (rs.next()) { + String titre = rs.getString("titre"); + hierarchie.put(idPage, titre); + + int parentId = rs.getInt("page_parent_id"); + if (parentId != 0) { + getHierarchieRecurcive(parentId, hierarchie); + } + } + + rs.close(); + st.close(); + connexion.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + } } diff --git a/Projet/src/main/webapp/WEB-INF/AfficherPage.jsp b/Projet/src/main/webapp/WEB-INF/AfficherPage.jsp index b760fab..7f80e5a 100644 --- a/Projet/src/main/webapp/WEB-INF/AfficherPage.jsp +++ b/Projet/src/main/webapp/WEB-INF/AfficherPage.jsp @@ -19,7 +19,12 @@
-

${page.titre}

+

+ + ${entry.value} > + + ${page.titre} +