Hierarchie des pages
This commit is contained in:
parent
01d08ab44a
commit
da3140f007
|
|
@ -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");
|
||||
|
|
@ -40,9 +40,12 @@ public class AfficherPage extends HttpServlet {
|
|||
int id = Integer.parseInt(idStr);
|
||||
Page page = Page.getPageById(u.getId(), id);
|
||||
|
||||
|
||||
if (page != null) {
|
||||
request.setAttribute("page", page);
|
||||
|
||||
Map<Integer, String> hierarchie = u.getHierarchie(id);
|
||||
request.setAttribute("hierarchie", hierarchie);
|
||||
|
||||
request.getRequestDispatcher("/WEB-INF/AfficherPage.jsp").forward(request, response);
|
||||
return;
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
@ -274,6 +276,8 @@ public class Page extends ParamBD {
|
|||
pst.setInt(4, idU);
|
||||
pst.executeUpdate();
|
||||
|
||||
pst.close();
|
||||
connexion.close();
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<Integer, String> getHierarchie(int idPage) {
|
||||
Map<Integer, String> hierarchie = new LinkedHashMap<>();
|
||||
getHierarchieRecurcive(idPage, hierarchie);
|
||||
|
||||
hierarchie.remove(idPage);
|
||||
|
||||
// Inverser le contenu du Map pour commencer par la page enfant
|
||||
Map<Integer, String> inverseHierarchie = new LinkedHashMap<>();
|
||||
List<Map.Entry<Integer, String>> entries = new ArrayList<>(hierarchie.entrySet());
|
||||
Collections.reverse(entries);
|
||||
|
||||
for (Map.Entry<Integer, String> entry : entries) {
|
||||
inverseHierarchie.put(entry.getKey(), entry.getValue());
|
||||
}
|
||||
|
||||
return inverseHierarchie;
|
||||
}
|
||||
|
||||
private void getHierarchieRecurcive(int idPage, Map<Integer, String> 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,7 +19,12 @@
|
|||
<c:choose>
|
||||
<c:when test="${not empty page.titre}">
|
||||
<div class="is-flex is-justify-content-space-between is-align-items-center mb-4">
|
||||
<h2 class="block">${page.titre}</h2>
|
||||
<h2 class="block">
|
||||
<c:forEach var="entry" items="${hierarchie}">
|
||||
<a href="AfficherPage?id=${entry.key}">${entry.value}</a> >
|
||||
</c:forEach>
|
||||
${page.titre}
|
||||
</h2>
|
||||
<div class="dropdown is-right">
|
||||
<div class="dropdown-trigger">
|
||||
<button class="button" aria-haspopup="true" aria-controls="dropdown-menu3">
|
||||
|
|
|
|||
Loading…
Reference in New Issue