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

changeset 52
67a02e79b7a1
parent 51
dd0a45ae25d7
child 59
c759c60507a2
     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      }

mercurial