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.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
@WebServlet("/AfficherPage")
|
@WebServlet("/AfficherPage")
|
||||||
public class AfficherPage extends HttpServlet {
|
public class AfficherPage extends HttpServlet {
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
|
||||||
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
||||||
HttpSession session = request.getSession();
|
HttpSession session = request.getSession();
|
||||||
Utilisateur u = (Utilisateur) session.getAttribute("utilisateur");
|
Utilisateur u = (Utilisateur) session.getAttribute("utilisateur");
|
||||||
|
|
@ -40,9 +40,12 @@ public class AfficherPage extends HttpServlet {
|
||||||
int id = Integer.parseInt(idStr);
|
int id = Integer.parseInt(idStr);
|
||||||
Page page = Page.getPageById(u.getId(), id);
|
Page page = Page.getPageById(u.getId(), id);
|
||||||
|
|
||||||
|
|
||||||
if (page != null) {
|
if (page != null) {
|
||||||
request.setAttribute("page", page);
|
request.setAttribute("page", page);
|
||||||
|
|
||||||
|
Map<Integer, String> hierarchie = u.getHierarchie(id);
|
||||||
|
request.setAttribute("hierarchie", hierarchie);
|
||||||
|
|
||||||
request.getRequestDispatcher("/WEB-INF/AfficherPage.jsp").forward(request, response);
|
request.getRequestDispatcher("/WEB-INF/AfficherPage.jsp").forward(request, response);
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,9 @@ import java.sql.Statement;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.sql.Date;
|
import java.sql.Date;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
import projet.Bloc.Type;
|
import projet.Bloc.Type;
|
||||||
|
|
||||||
|
|
@ -274,6 +276,8 @@ public class Page extends ParamBD {
|
||||||
pst.setInt(4, idU);
|
pst.setInt(4, idU);
|
||||||
pst.executeUpdate();
|
pst.executeUpdate();
|
||||||
|
|
||||||
|
pst.close();
|
||||||
|
connexion.close();
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,10 @@ import java.sql.SQLException;
|
||||||
import java.sql.Statement;
|
import java.sql.Statement;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
import projet.Page.Droit;
|
import projet.Page.Droit;
|
||||||
|
|
||||||
|
|
@ -245,4 +249,53 @@ public class Utilisateur extends ParamBD {
|
||||||
}
|
}
|
||||||
return listeUtilisateur;
|
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:choose>
|
||||||
<c:when test="${not empty page.titre}">
|
<c:when test="${not empty page.titre}">
|
||||||
<div class="is-flex is-justify-content-space-between is-align-items-center mb-4">
|
<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 is-right">
|
||||||
<div class="dropdown-trigger">
|
<div class="dropdown-trigger">
|
||||||
<button class="button" aria-haspopup="true" aria-controls="dropdown-menu3">
|
<button class="button" aria-haspopup="true" aria-controls="dropdown-menu3">
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue