src/main/java/de/uapcore/lightpit/modules/ProjectsModule.java

changeset 52
67a02e79b7a1
parent 51
dd0a45ae25d7
child 59
c759c60507a2
--- a/src/main/java/de/uapcore/lightpit/modules/ProjectsModule.java	Sat May 16 13:29:44 2020 +0200
+++ b/src/main/java/de/uapcore/lightpit/modules/ProjectsModule.java	Sat May 16 15:11:07 2020 +0200
@@ -39,6 +39,8 @@
 import java.sql.SQLException;
 import java.util.Optional;
 
+import static de.uapcore.lightpit.Functions.fqn;
+
 @LightPITModule(
         bundleBaseName = "localization.projects",
         modulePath = "projects",
@@ -50,10 +52,31 @@
 )
 public final class ProjectsModule extends AbstractLightPITServlet {
 
+    public static final String SESSION_ATTR_SELECTED_PROJECT = fqn(ProjectsModule.class, "selected-project");
+
     @RequestMapping(method = HttpMethod.GET)
     public ResponseType index(HttpServletRequest req, DataAccessObjects dao) throws SQLException {
-        req.setAttribute("projects", dao.getProjectDao().list());
+        final var projectList = dao.getProjectDao().list();
+        req.setAttribute("projects", projectList);
         setDynamicFragment(req, "projects");
+        setStylesheet(req, "projects");
+
+        final var session = req.getSession();
+        final var projectSelection = getParameter(req, Integer.class, "select");
+        if (projectSelection.isPresent()) {
+            final var selectedId = projectSelection.get();
+            for (var proj : projectList) {
+                if (proj.getId() == selectedId) {
+                    session.setAttribute(SESSION_ATTR_SELECTED_PROJECT, proj);
+                    break;
+                }
+            }
+        } else {
+            final var selectedProject = session.getAttribute(SESSION_ATTR_SELECTED_PROJECT);
+            if (selectedProject == null) {
+                projectList.stream().findFirst().ifPresent(proj -> session.setAttribute(SESSION_ATTR_SELECTED_PROJECT, proj));
+            }
+        }
 
         return ResponseType.HTML;
     }

mercurial