1.1 --- a/src/main/java/de/uapcore/lightpit/modules/ProjectsModule.java Sat May 16 13:29:44 2020 +0200 1.2 +++ b/src/main/java/de/uapcore/lightpit/modules/ProjectsModule.java Sat May 16 15:11:07 2020 +0200 1.3 @@ -39,6 +39,8 @@ 1.4 import java.sql.SQLException; 1.5 import java.util.Optional; 1.6 1.7 +import static de.uapcore.lightpit.Functions.fqn; 1.8 + 1.9 @LightPITModule( 1.10 bundleBaseName = "localization.projects", 1.11 modulePath = "projects", 1.12 @@ -50,10 +52,31 @@ 1.13 ) 1.14 public final class ProjectsModule extends AbstractLightPITServlet { 1.15 1.16 + public static final String SESSION_ATTR_SELECTED_PROJECT = fqn(ProjectsModule.class, "selected-project"); 1.17 + 1.18 @RequestMapping(method = HttpMethod.GET) 1.19 public ResponseType index(HttpServletRequest req, DataAccessObjects dao) throws SQLException { 1.20 - req.setAttribute("projects", dao.getProjectDao().list()); 1.21 + final var projectList = dao.getProjectDao().list(); 1.22 + req.setAttribute("projects", projectList); 1.23 setDynamicFragment(req, "projects"); 1.24 + setStylesheet(req, "projects"); 1.25 + 1.26 + final var session = req.getSession(); 1.27 + final var projectSelection = getParameter(req, Integer.class, "select"); 1.28 + if (projectSelection.isPresent()) { 1.29 + final var selectedId = projectSelection.get(); 1.30 + for (var proj : projectList) { 1.31 + if (proj.getId() == selectedId) { 1.32 + session.setAttribute(SESSION_ATTR_SELECTED_PROJECT, proj); 1.33 + break; 1.34 + } 1.35 + } 1.36 + } else { 1.37 + final var selectedProject = session.getAttribute(SESSION_ATTR_SELECTED_PROJECT); 1.38 + if (selectedProject == null) { 1.39 + projectList.stream().findFirst().ifPresent(proj -> session.setAttribute(SESSION_ATTR_SELECTED_PROJECT, proj)); 1.40 + } 1.41 + } 1.42 1.43 return ResponseType.HTML; 1.44 }