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

Sun, 17 May 2020 16:38:04 +0200

author
Mike Becker <universe@uap-core.de>
date
Sun, 17 May 2020 16:38:04 +0200
changeset 61
3e287f361c7a
parent 59
c759c60507a2
child 64
0f1746c6abfb
permissions
-rw-r--r--

moves project index to separate sub path

unfortunately the current menu highlighting strategy sucks and this is the easiest way so that everything looks correct

41
4f1c026a8aab adds files for ProjectsModule
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1 /*
4f1c026a8aab adds files for ProjectsModule
Mike Becker <universe@uap-core.de>
parents:
diff changeset
2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
4f1c026a8aab adds files for ProjectsModule
Mike Becker <universe@uap-core.de>
parents:
diff changeset
3 *
4f1c026a8aab adds files for ProjectsModule
Mike Becker <universe@uap-core.de>
parents:
diff changeset
4 * Copyright 2018 Mike Becker. All rights reserved.
4f1c026a8aab adds files for ProjectsModule
Mike Becker <universe@uap-core.de>
parents:
diff changeset
5 *
4f1c026a8aab adds files for ProjectsModule
Mike Becker <universe@uap-core.de>
parents:
diff changeset
6 * Redistribution and use in source and binary forms, with or without
4f1c026a8aab adds files for ProjectsModule
Mike Becker <universe@uap-core.de>
parents:
diff changeset
7 * modification, are permitted provided that the following conditions are met:
4f1c026a8aab adds files for ProjectsModule
Mike Becker <universe@uap-core.de>
parents:
diff changeset
8 *
4f1c026a8aab adds files for ProjectsModule
Mike Becker <universe@uap-core.de>
parents:
diff changeset
9 * 1. Redistributions of source code must retain the above copyright
4f1c026a8aab adds files for ProjectsModule
Mike Becker <universe@uap-core.de>
parents:
diff changeset
10 * notice, this list of conditions and the following disclaimer.
4f1c026a8aab adds files for ProjectsModule
Mike Becker <universe@uap-core.de>
parents:
diff changeset
11 *
4f1c026a8aab adds files for ProjectsModule
Mike Becker <universe@uap-core.de>
parents:
diff changeset
12 * 2. Redistributions in binary form must reproduce the above copyright
4f1c026a8aab adds files for ProjectsModule
Mike Becker <universe@uap-core.de>
parents:
diff changeset
13 * notice, this list of conditions and the following disclaimer in the
4f1c026a8aab adds files for ProjectsModule
Mike Becker <universe@uap-core.de>
parents:
diff changeset
14 * documentation and/or other materials provided with the distribution.
4f1c026a8aab adds files for ProjectsModule
Mike Becker <universe@uap-core.de>
parents:
diff changeset
15 *
4f1c026a8aab adds files for ProjectsModule
Mike Becker <universe@uap-core.de>
parents:
diff changeset
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
4f1c026a8aab adds files for ProjectsModule
Mike Becker <universe@uap-core.de>
parents:
diff changeset
17 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
4f1c026a8aab adds files for ProjectsModule
Mike Becker <universe@uap-core.de>
parents:
diff changeset
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
4f1c026a8aab adds files for ProjectsModule
Mike Becker <universe@uap-core.de>
parents:
diff changeset
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
4f1c026a8aab adds files for ProjectsModule
Mike Becker <universe@uap-core.de>
parents:
diff changeset
20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
4f1c026a8aab adds files for ProjectsModule
Mike Becker <universe@uap-core.de>
parents:
diff changeset
21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
4f1c026a8aab adds files for ProjectsModule
Mike Becker <universe@uap-core.de>
parents:
diff changeset
22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
4f1c026a8aab adds files for ProjectsModule
Mike Becker <universe@uap-core.de>
parents:
diff changeset
23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
4f1c026a8aab adds files for ProjectsModule
Mike Becker <universe@uap-core.de>
parents:
diff changeset
24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
4f1c026a8aab adds files for ProjectsModule
Mike Becker <universe@uap-core.de>
parents:
diff changeset
25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
4f1c026a8aab adds files for ProjectsModule
Mike Becker <universe@uap-core.de>
parents:
diff changeset
26 * POSSIBILITY OF SUCH DAMAGE.
4f1c026a8aab adds files for ProjectsModule
Mike Becker <universe@uap-core.de>
parents:
diff changeset
27 *
4f1c026a8aab adds files for ProjectsModule
Mike Becker <universe@uap-core.de>
parents:
diff changeset
28 */
4f1c026a8aab adds files for ProjectsModule
Mike Becker <universe@uap-core.de>
parents:
diff changeset
29 package de.uapcore.lightpit.modules;
4f1c026a8aab adds files for ProjectsModule
Mike Becker <universe@uap-core.de>
parents:
diff changeset
30
4f1c026a8aab adds files for ProjectsModule
Mike Becker <universe@uap-core.de>
parents:
diff changeset
31
4f1c026a8aab adds files for ProjectsModule
Mike Becker <universe@uap-core.de>
parents:
diff changeset
32 import de.uapcore.lightpit.*;
4f1c026a8aab adds files for ProjectsModule
Mike Becker <universe@uap-core.de>
parents:
diff changeset
33 import de.uapcore.lightpit.dao.DataAccessObjects;
47
57cfb94ab99f projects can now be added and updated
Mike Becker <universe@uap-core.de>
parents: 45
diff changeset
34 import de.uapcore.lightpit.entities.Project;
57cfb94ab99f projects can now be added and updated
Mike Becker <universe@uap-core.de>
parents: 45
diff changeset
35 import de.uapcore.lightpit.entities.User;
59
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
36 import de.uapcore.lightpit.entities.Version;
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
37 import de.uapcore.lightpit.entities.VersionStatus;
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
38 import org.slf4j.Logger;
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
39 import org.slf4j.LoggerFactory;
41
4f1c026a8aab adds files for ProjectsModule
Mike Becker <universe@uap-core.de>
parents:
diff changeset
40
4f1c026a8aab adds files for ProjectsModule
Mike Becker <universe@uap-core.de>
parents:
diff changeset
41 import javax.servlet.annotation.WebServlet;
4f1c026a8aab adds files for ProjectsModule
Mike Becker <universe@uap-core.de>
parents:
diff changeset
42 import javax.servlet.http.HttpServletRequest;
59
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
43 import javax.servlet.http.HttpServletResponse;
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
44 import java.io.IOException;
47
57cfb94ab99f projects can now be added and updated
Mike Becker <universe@uap-core.de>
parents: 45
diff changeset
45 import java.sql.SQLException;
59
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
46 import java.util.NoSuchElementException;
47
57cfb94ab99f projects can now be added and updated
Mike Becker <universe@uap-core.de>
parents: 45
diff changeset
47 import java.util.Optional;
41
4f1c026a8aab adds files for ProjectsModule
Mike Becker <universe@uap-core.de>
parents:
diff changeset
48
52
67a02e79b7a1 adds project selection
Mike Becker <universe@uap-core.de>
parents: 51
diff changeset
49 import static de.uapcore.lightpit.Functions.fqn;
67a02e79b7a1 adds project selection
Mike Becker <universe@uap-core.de>
parents: 51
diff changeset
50
41
4f1c026a8aab adds files for ProjectsModule
Mike Becker <universe@uap-core.de>
parents:
diff changeset
51 @LightPITModule(
4f1c026a8aab adds files for ProjectsModule
Mike Becker <universe@uap-core.de>
parents:
diff changeset
52 bundleBaseName = "localization.projects",
4f1c026a8aab adds files for ProjectsModule
Mike Becker <universe@uap-core.de>
parents:
diff changeset
53 modulePath = "projects",
4f1c026a8aab adds files for ProjectsModule
Mike Becker <universe@uap-core.de>
parents:
diff changeset
54 defaultPriority = 20
4f1c026a8aab adds files for ProjectsModule
Mike Becker <universe@uap-core.de>
parents:
diff changeset
55 )
4f1c026a8aab adds files for ProjectsModule
Mike Becker <universe@uap-core.de>
parents:
diff changeset
56 @WebServlet(
4f1c026a8aab adds files for ProjectsModule
Mike Becker <universe@uap-core.de>
parents:
diff changeset
57 name = "ProjectsModule",
4f1c026a8aab adds files for ProjectsModule
Mike Becker <universe@uap-core.de>
parents:
diff changeset
58 urlPatterns = "/projects/*"
4f1c026a8aab adds files for ProjectsModule
Mike Becker <universe@uap-core.de>
parents:
diff changeset
59 )
4f1c026a8aab adds files for ProjectsModule
Mike Becker <universe@uap-core.de>
parents:
diff changeset
60 public final class ProjectsModule extends AbstractLightPITServlet {
4f1c026a8aab adds files for ProjectsModule
Mike Becker <universe@uap-core.de>
parents:
diff changeset
61
59
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
62 private static final Logger LOG = LoggerFactory.getLogger(ProjectsModule.class);
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
63
52
67a02e79b7a1 adds project selection
Mike Becker <universe@uap-core.de>
parents: 51
diff changeset
64 public static final String SESSION_ATTR_SELECTED_PROJECT = fqn(ProjectsModule.class, "selected-project");
67a02e79b7a1 adds project selection
Mike Becker <universe@uap-core.de>
parents: 51
diff changeset
65
61
3e287f361c7a moves project index to separate sub path
Mike Becker <universe@uap-core.de>
parents: 59
diff changeset
66 @RequestMapping(method = HttpMethod.GET)
3e287f361c7a moves project index to separate sub path
Mike Becker <universe@uap-core.de>
parents: 59
diff changeset
67 public ResponseType indexRedirect(HttpServletResponse resp) throws IOException {
3e287f361c7a moves project index to separate sub path
Mike Becker <universe@uap-core.de>
parents: 59
diff changeset
68 resp.sendRedirect("index/");
3e287f361c7a moves project index to separate sub path
Mike Becker <universe@uap-core.de>
parents: 59
diff changeset
69 return ResponseType.NONE;
3e287f361c7a moves project index to separate sub path
Mike Becker <universe@uap-core.de>
parents: 59
diff changeset
70 }
3e287f361c7a moves project index to separate sub path
Mike Becker <universe@uap-core.de>
parents: 59
diff changeset
71
3e287f361c7a moves project index to separate sub path
Mike Becker <universe@uap-core.de>
parents: 59
diff changeset
72 @RequestMapping(requestPath = "index", method = HttpMethod.GET, menuKey = "menu.index")
47
57cfb94ab99f projects can now be added and updated
Mike Becker <universe@uap-core.de>
parents: 45
diff changeset
73 public ResponseType index(HttpServletRequest req, DataAccessObjects dao) throws SQLException {
52
67a02e79b7a1 adds project selection
Mike Becker <universe@uap-core.de>
parents: 51
diff changeset
74 final var projectList = dao.getProjectDao().list();
67a02e79b7a1 adds project selection
Mike Becker <universe@uap-core.de>
parents: 51
diff changeset
75 req.setAttribute("projects", projectList);
47
57cfb94ab99f projects can now be added and updated
Mike Becker <universe@uap-core.de>
parents: 45
diff changeset
76 setDynamicFragment(req, "projects");
52
67a02e79b7a1 adds project selection
Mike Becker <universe@uap-core.de>
parents: 51
diff changeset
77 setStylesheet(req, "projects");
67a02e79b7a1 adds project selection
Mike Becker <universe@uap-core.de>
parents: 51
diff changeset
78
67a02e79b7a1 adds project selection
Mike Becker <universe@uap-core.de>
parents: 51
diff changeset
79 final var session = req.getSession();
67a02e79b7a1 adds project selection
Mike Becker <universe@uap-core.de>
parents: 51
diff changeset
80 final var projectSelection = getParameter(req, Integer.class, "select");
67a02e79b7a1 adds project selection
Mike Becker <universe@uap-core.de>
parents: 51
diff changeset
81 if (projectSelection.isPresent()) {
67a02e79b7a1 adds project selection
Mike Becker <universe@uap-core.de>
parents: 51
diff changeset
82 final var selectedId = projectSelection.get();
67a02e79b7a1 adds project selection
Mike Becker <universe@uap-core.de>
parents: 51
diff changeset
83 for (var proj : projectList) {
67a02e79b7a1 adds project selection
Mike Becker <universe@uap-core.de>
parents: 51
diff changeset
84 if (proj.getId() == selectedId) {
67a02e79b7a1 adds project selection
Mike Becker <universe@uap-core.de>
parents: 51
diff changeset
85 session.setAttribute(SESSION_ATTR_SELECTED_PROJECT, proj);
67a02e79b7a1 adds project selection
Mike Becker <universe@uap-core.de>
parents: 51
diff changeset
86 break;
67a02e79b7a1 adds project selection
Mike Becker <universe@uap-core.de>
parents: 51
diff changeset
87 }
67a02e79b7a1 adds project selection
Mike Becker <universe@uap-core.de>
parents: 51
diff changeset
88 }
67a02e79b7a1 adds project selection
Mike Becker <universe@uap-core.de>
parents: 51
diff changeset
89 } else {
67a02e79b7a1 adds project selection
Mike Becker <universe@uap-core.de>
parents: 51
diff changeset
90 final var selectedProject = session.getAttribute(SESSION_ATTR_SELECTED_PROJECT);
67a02e79b7a1 adds project selection
Mike Becker <universe@uap-core.de>
parents: 51
diff changeset
91 if (selectedProject == null) {
67a02e79b7a1 adds project selection
Mike Becker <universe@uap-core.de>
parents: 51
diff changeset
92 projectList.stream().findFirst().ifPresent(proj -> session.setAttribute(SESSION_ATTR_SELECTED_PROJECT, proj));
67a02e79b7a1 adds project selection
Mike Becker <universe@uap-core.de>
parents: 51
diff changeset
93 }
67a02e79b7a1 adds project selection
Mike Becker <universe@uap-core.de>
parents: 51
diff changeset
94 }
47
57cfb94ab99f projects can now be added and updated
Mike Becker <universe@uap-core.de>
parents: 45
diff changeset
95
57cfb94ab99f projects can now be added and updated
Mike Becker <universe@uap-core.de>
parents: 45
diff changeset
96 return ResponseType.HTML;
57cfb94ab99f projects can now be added and updated
Mike Becker <universe@uap-core.de>
parents: 45
diff changeset
97 }
57cfb94ab99f projects can now be added and updated
Mike Becker <universe@uap-core.de>
parents: 45
diff changeset
98
57cfb94ab99f projects can now be added and updated
Mike Becker <universe@uap-core.de>
parents: 45
diff changeset
99 @RequestMapping(requestPath = "edit", method = HttpMethod.GET)
51
dd0a45ae25d7 adds the possibility to add users / developers
Mike Becker <universe@uap-core.de>
parents: 47
diff changeset
100 public ResponseType edit(HttpServletRequest req, DataAccessObjects dao) throws SQLException {
47
57cfb94ab99f projects can now be added and updated
Mike Becker <universe@uap-core.de>
parents: 45
diff changeset
101 final var projectDao = dao.getProjectDao();
57cfb94ab99f projects can now be added and updated
Mike Becker <universe@uap-core.de>
parents: 45
diff changeset
102
57cfb94ab99f projects can now be added and updated
Mike Becker <universe@uap-core.de>
parents: 45
diff changeset
103 Optional<Integer> id = getParameter(req, Integer.class, "id");
57cfb94ab99f projects can now be added and updated
Mike Becker <universe@uap-core.de>
parents: 45
diff changeset
104 if (id.isPresent()) {
57cfb94ab99f projects can now be added and updated
Mike Becker <universe@uap-core.de>
parents: 45
diff changeset
105 req.setAttribute("project", Optional.ofNullable(projectDao.find(id.get())).orElse(new Project(-1)));
57cfb94ab99f projects can now be added and updated
Mike Becker <universe@uap-core.de>
parents: 45
diff changeset
106 } else {
57cfb94ab99f projects can now be added and updated
Mike Becker <universe@uap-core.de>
parents: 45
diff changeset
107 req.setAttribute("project", new Project(-1));
57cfb94ab99f projects can now be added and updated
Mike Becker <universe@uap-core.de>
parents: 45
diff changeset
108 }
51
dd0a45ae25d7 adds the possibility to add users / developers
Mike Becker <universe@uap-core.de>
parents: 47
diff changeset
109 req.setAttribute("users", dao.getUserDao().list());
47
57cfb94ab99f projects can now be added and updated
Mike Becker <universe@uap-core.de>
parents: 45
diff changeset
110
57cfb94ab99f projects can now be added and updated
Mike Becker <universe@uap-core.de>
parents: 45
diff changeset
111 setDynamicFragment(req, "project-form");
45
cc7f082c5ef3 simplifies menu generation, adds submenus and removes VersionsModule (versions will be part of the ProjectsModule)
Mike Becker <universe@uap-core.de>
parents: 43
diff changeset
112
cc7f082c5ef3 simplifies menu generation, adds submenus and removes VersionsModule (versions will be part of the ProjectsModule)
Mike Becker <universe@uap-core.de>
parents: 43
diff changeset
113 return ResponseType.HTML;
cc7f082c5ef3 simplifies menu generation, adds submenus and removes VersionsModule (versions will be part of the ProjectsModule)
Mike Becker <universe@uap-core.de>
parents: 43
diff changeset
114 }
cc7f082c5ef3 simplifies menu generation, adds submenus and removes VersionsModule (versions will be part of the ProjectsModule)
Mike Becker <universe@uap-core.de>
parents: 43
diff changeset
115
47
57cfb94ab99f projects can now be added and updated
Mike Becker <universe@uap-core.de>
parents: 45
diff changeset
116 @RequestMapping(requestPath = "commit", method = HttpMethod.POST)
57cfb94ab99f projects can now be added and updated
Mike Becker <universe@uap-core.de>
parents: 45
diff changeset
117 public ResponseType commit(HttpServletRequest req, DataAccessObjects dao) {
57cfb94ab99f projects can now be added and updated
Mike Becker <universe@uap-core.de>
parents: 45
diff changeset
118
57cfb94ab99f projects can now be added and updated
Mike Becker <universe@uap-core.de>
parents: 45
diff changeset
119 Project project = new Project(-1);
57cfb94ab99f projects can now be added and updated
Mike Becker <universe@uap-core.de>
parents: 45
diff changeset
120 try {
57cfb94ab99f projects can now be added and updated
Mike Becker <universe@uap-core.de>
parents: 45
diff changeset
121 project = new Project(getParameter(req, Integer.class, "id").orElseThrow());
57cfb94ab99f projects can now be added and updated
Mike Becker <universe@uap-core.de>
parents: 45
diff changeset
122 project.setName(getParameter(req, String.class, "name").orElseThrow());
57cfb94ab99f projects can now be added and updated
Mike Becker <universe@uap-core.de>
parents: 45
diff changeset
123 getParameter(req, String.class, "description").ifPresent(project::setDescription);
57cfb94ab99f projects can now be added and updated
Mike Becker <universe@uap-core.de>
parents: 45
diff changeset
124 getParameter(req, String.class, "repoUrl").ifPresent(project::setRepoUrl);
57cfb94ab99f projects can now be added and updated
Mike Becker <universe@uap-core.de>
parents: 45
diff changeset
125 getParameter(req, Integer.class, "owner").map(
57cfb94ab99f projects can now be added and updated
Mike Becker <universe@uap-core.de>
parents: 45
diff changeset
126 ownerId -> ownerId >= 0 ? new User(ownerId) : null
57cfb94ab99f projects can now be added and updated
Mike Becker <universe@uap-core.de>
parents: 45
diff changeset
127 ).ifPresent(project::setOwner);
57cfb94ab99f projects can now be added and updated
Mike Becker <universe@uap-core.de>
parents: 45
diff changeset
128
57cfb94ab99f projects can now be added and updated
Mike Becker <universe@uap-core.de>
parents: 45
diff changeset
129 dao.getProjectDao().saveOrUpdate(project);
57cfb94ab99f projects can now be added and updated
Mike Becker <universe@uap-core.de>
parents: 45
diff changeset
130
61
3e287f361c7a moves project index to separate sub path
Mike Becker <universe@uap-core.de>
parents: 59
diff changeset
131 setRedirectLocation(req, "./projects/index/");
47
57cfb94ab99f projects can now be added and updated
Mike Becker <universe@uap-core.de>
parents: 45
diff changeset
132 setDynamicFragment(req, Constants.DYN_FRAGMENT_COMMIT_SUCCESSFUL);
59
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
133 LOG.debug("Successfully updated project {}", project.getName());
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
134 } catch (NoSuchElementException | NumberFormatException | SQLException ex) {
47
57cfb94ab99f projects can now be added and updated
Mike Becker <universe@uap-core.de>
parents: 45
diff changeset
135 // TODO: set request attribute with error text
57cfb94ab99f projects can now be added and updated
Mike Becker <universe@uap-core.de>
parents: 45
diff changeset
136 req.setAttribute("project", project);
57cfb94ab99f projects can now be added and updated
Mike Becker <universe@uap-core.de>
parents: 45
diff changeset
137 setDynamicFragment(req, "project-form");
59
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
138 LOG.warn("Form validation failure: {}", ex.getMessage());
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
139 LOG.debug("Details:", ex);
47
57cfb94ab99f projects can now be added and updated
Mike Becker <universe@uap-core.de>
parents: 45
diff changeset
140 }
57cfb94ab99f projects can now be added and updated
Mike Becker <universe@uap-core.de>
parents: 45
diff changeset
141
57cfb94ab99f projects can now be added and updated
Mike Becker <universe@uap-core.de>
parents: 45
diff changeset
142 return ResponseType.HTML;
57cfb94ab99f projects can now be added and updated
Mike Becker <universe@uap-core.de>
parents: 45
diff changeset
143 }
57cfb94ab99f projects can now be added and updated
Mike Becker <universe@uap-core.de>
parents: 45
diff changeset
144
59
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
145 @RequestMapping(requestPath = "versions", method = HttpMethod.GET, menuKey = "menu.versions")
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
146 public ResponseType versions(HttpServletRequest req, HttpServletResponse resp, DataAccessObjects dao) throws IOException, SQLException {
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
147 final var selectedProject = (Project)req.getSession().getAttribute(SESSION_ATTR_SELECTED_PROJECT);
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
148 if (selectedProject == null) {
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
149 resp.sendError(HttpServletResponse.SC_FORBIDDEN);
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
150 return ResponseType.NONE;
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
151 }
47
57cfb94ab99f projects can now be added and updated
Mike Becker <universe@uap-core.de>
parents: 45
diff changeset
152
59
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
153 req.setAttribute("versions", dao.getVersionDao().list(selectedProject));
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
154 setDynamicFragment(req, "versions");
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
155
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
156 return ResponseType.HTML;
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
157 }
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
158
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
159 @RequestMapping(requestPath = "versions/edit", method = HttpMethod.GET)
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
160 public ResponseType editVersion(HttpServletRequest req, HttpServletResponse resp, DataAccessObjects dao) throws IOException, SQLException {
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
161 final var selectedProject = (Project)req.getSession().getAttribute(SESSION_ATTR_SELECTED_PROJECT);
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
162 if (selectedProject == null) {
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
163 resp.sendError(HttpServletResponse.SC_FORBIDDEN);
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
164 return ResponseType.NONE;
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
165 }
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
166
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
167 Optional<Integer> id = getParameter(req, Integer.class, "id");
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
168 if (id.isPresent()) {
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
169 req.setAttribute("version", Optional.ofNullable(dao.getVersionDao().find(id.get())).orElse(new Version(-1, selectedProject)));
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
170 } else {
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
171 req.setAttribute("version", new Version(-1, selectedProject));
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
172 }
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
173 req.setAttribute("versionStatusEnum", VersionStatus.values());
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
174
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
175 setDynamicFragment(req, "version-form");
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
176
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
177 return ResponseType.HTML;
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
178 }
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
179
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
180 @RequestMapping(requestPath = "versions/commit", method = HttpMethod.POST)
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
181 public ResponseType commitVersion(HttpServletRequest req, HttpServletResponse resp, DataAccessObjects dao) throws IOException {
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
182 final var selectedProject = (Project)req.getSession().getAttribute(SESSION_ATTR_SELECTED_PROJECT);
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
183 if (selectedProject == null) {
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
184 resp.sendError(HttpServletResponse.SC_FORBIDDEN);
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
185 return ResponseType.NONE;
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
186 }
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
187
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
188 Version version = new Version(-1, selectedProject);
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
189 try {
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
190 version = new Version(getParameter(req, Integer.class, "id").orElseThrow(), selectedProject);
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
191 version.setName(getParameter(req, String.class, "name").orElseThrow());
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
192 getParameter(req, Integer.class, "ordinal").ifPresent(version::setOrdinal);
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
193 version.setStatus(VersionStatus.valueOf(getParameter(req, String.class, "status").orElseThrow()));
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
194 dao.getVersionDao().saveOrUpdate(version);
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
195
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
196 setRedirectLocation(req, "./projects/versions/");
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
197 setDynamicFragment(req, Constants.DYN_FRAGMENT_COMMIT_SUCCESSFUL);
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
198 LOG.debug("Successfully updated version {} for project {}", version.getName(), selectedProject.getName());
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
199 } catch (NoSuchElementException | NumberFormatException | SQLException ex) {
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
200 // TODO: set request attribute with error text
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
201 req.setAttribute("version", version);
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
202 req.setAttribute("versionStatusEnum", VersionStatus.values());
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
203 setDynamicFragment(req, "version-form");
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
204 LOG.warn("Form validation failure: {}", ex.getMessage());
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
205 LOG.debug("Details:", ex);
c759c60507a2 adds version management
Mike Becker <universe@uap-core.de>
parents: 52
diff changeset
206 }
41
4f1c026a8aab adds files for ProjectsModule
Mike Becker <universe@uap-core.de>
parents:
diff changeset
207
43
9abf0bf44c7b renames some crappy constants
Mike Becker <universe@uap-core.de>
parents: 42
diff changeset
208 return ResponseType.HTML;
41
4f1c026a8aab adds files for ProjectsModule
Mike Becker <universe@uap-core.de>
parents:
diff changeset
209 }
4f1c026a8aab adds files for ProjectsModule
Mike Becker <universe@uap-core.de>
parents:
diff changeset
210 }

mercurial