109 @RequestMapping(method = HttpMethod.GET) |
109 @RequestMapping(method = HttpMethod.GET) |
110 public ResponseType index(HttpServletRequest req, DataAccessObjects dao) throws SQLException { |
110 public ResponseType index(HttpServletRequest req, DataAccessObjects dao) throws SQLException { |
111 |
111 |
112 final var projectList = dao.getProjectDao().list(); |
112 final var projectList = dao.getProjectDao().list(); |
113 req.setAttribute("projects", projectList); |
113 req.setAttribute("projects", projectList); |
114 setDynamicFragment(req, "projects"); |
114 setContentPage(req, "projects"); |
115 setStylesheet(req, "projects"); |
115 setStylesheet(req, "projects"); |
116 |
116 |
117 final var selectedProject = getSelectedProject(req, dao); |
117 final var selectedProject = getSelectedProject(req, dao); |
118 setBreadcrumbs(req, getBreadcrumbs(0, selectedProject)); |
118 setBreadcrumbs(req, getBreadcrumbs(0, selectedProject)); |
119 |
119 |
128 req.setAttribute("project", new Project(-1)); |
128 req.setAttribute("project", new Project(-1)); |
129 setBreadcrumbs(req, getBreadcrumbs(0, null)); |
129 setBreadcrumbs(req, getBreadcrumbs(0, null)); |
130 } |
130 } |
131 |
131 |
132 req.setAttribute("users", dao.getUserDao().list()); |
132 req.setAttribute("users", dao.getUserDao().list()); |
133 setDynamicFragment(req, "project-form"); |
133 setContentPage(req, "project-form"); |
134 } |
134 } |
135 |
135 |
136 @RequestMapping(requestPath = "edit", method = HttpMethod.GET) |
136 @RequestMapping(requestPath = "edit", method = HttpMethod.GET) |
137 public ResponseType edit(HttpServletRequest req, DataAccessObjects dao) throws SQLException { |
137 public ResponseType edit(HttpServletRequest req, DataAccessObjects dao) throws SQLException { |
138 |
138 |
159 ).ifPresent(project::setOwner); |
159 ).ifPresent(project::setOwner); |
160 |
160 |
161 dao.getProjectDao().saveOrUpdate(project); |
161 dao.getProjectDao().saveOrUpdate(project); |
162 |
162 |
163 setRedirectLocation(req, "./projects/"); |
163 setRedirectLocation(req, "./projects/"); |
164 setDynamicFragment(req, Constants.DYN_FRAGMENT_COMMIT_SUCCESSFUL); |
164 setContentPage(req, Constants.JSP_COMMIT_SUCCESSFUL); |
165 LOG.debug("Successfully updated project {}", project.getName()); |
165 LOG.debug("Successfully updated project {}", project.getName()); |
166 } catch (NoSuchElementException | NumberFormatException | SQLException ex) { |
166 } catch (NoSuchElementException | NumberFormatException | SQLException ex) { |
167 // TODO: set request attribute with error text |
167 // TODO: set request attribute with error text |
168 LOG.warn("Form validation failure: {}", ex.getMessage()); |
168 LOG.warn("Form validation failure: {}", ex.getMessage()); |
169 LOG.debug("Details:", ex); |
169 LOG.debug("Details:", ex); |
185 req.setAttribute("issues", dao.getIssueDao().list(selectedProject)); |
185 req.setAttribute("issues", dao.getIssueDao().list(selectedProject)); |
186 |
186 |
187 // TODO: add more levels depending on last visited location |
187 // TODO: add more levels depending on last visited location |
188 setBreadcrumbs(req, getBreadcrumbs(1, selectedProject)); |
188 setBreadcrumbs(req, getBreadcrumbs(1, selectedProject)); |
189 |
189 |
190 setDynamicFragment(req, "project-details"); |
190 setContentPage(req, "project-details"); |
191 |
191 |
192 return ResponseType.HTML; |
192 return ResponseType.HTML; |
193 } |
193 } |
194 |
194 |
195 private void configureEditVersionForm(HttpServletRequest req, Optional<Version> version, Project selectedProject) { |
195 private void configureEditVersionForm(HttpServletRequest req, Optional<Version> version, Project selectedProject) { |
196 req.setAttribute("version", version.orElse(new Version(-1, selectedProject))); |
196 req.setAttribute("version", version.orElse(new Version(-1, selectedProject))); |
197 req.setAttribute("versionStatusEnum", VersionStatus.values()); |
197 req.setAttribute("versionStatusEnum", VersionStatus.values()); |
198 |
198 |
199 setDynamicFragment(req, "version-form"); |
199 setContentPage(req, "version-form"); |
200 } |
200 } |
201 |
201 |
202 @RequestMapping(requestPath = "versions/edit", method = HttpMethod.GET) |
202 @RequestMapping(requestPath = "versions/edit", method = HttpMethod.GET) |
203 public ResponseType editVersion(HttpServletRequest req, HttpServletResponse resp, DataAccessObjects dao) throws IOException, SQLException { |
203 public ResponseType editVersion(HttpServletRequest req, HttpServletResponse resp, DataAccessObjects dao) throws IOException, SQLException { |
204 final var selectedProject = getSelectedProject(req, dao); |
204 final var selectedProject = getSelectedProject(req, dao); |
229 getParameter(req, Integer.class, "ordinal").ifPresent(version::setOrdinal); |
229 getParameter(req, Integer.class, "ordinal").ifPresent(version::setOrdinal); |
230 version.setStatus(VersionStatus.valueOf(getParameter(req, String.class, "status").orElseThrow())); |
230 version.setStatus(VersionStatus.valueOf(getParameter(req, String.class, "status").orElseThrow())); |
231 dao.getVersionDao().saveOrUpdate(version); |
231 dao.getVersionDao().saveOrUpdate(version); |
232 |
232 |
233 setRedirectLocation(req, "./projects/versions/"); |
233 setRedirectLocation(req, "./projects/versions/"); |
234 setDynamicFragment(req, Constants.DYN_FRAGMENT_COMMIT_SUCCESSFUL); |
234 setContentPage(req, Constants.JSP_COMMIT_SUCCESSFUL); |
235 LOG.debug("Successfully updated version {} for project {}", version.getName(), selectedProject.getName()); |
235 LOG.debug("Successfully updated version {} for project {}", version.getName(), selectedProject.getName()); |
236 } catch (NoSuchElementException | NumberFormatException | SQLException ex) { |
236 } catch (NoSuchElementException | NumberFormatException | SQLException ex) { |
237 // TODO: set request attribute with error text |
237 // TODO: set request attribute with error text |
238 LOG.warn("Form validation failure: {}", ex.getMessage()); |
238 LOG.warn("Form validation failure: {}", ex.getMessage()); |
239 LOG.debug("Details:", ex); |
239 LOG.debug("Details:", ex); |
248 req.setAttribute("issue", issue.orElse(new Issue(-1, selectedProject))); |
248 req.setAttribute("issue", issue.orElse(new Issue(-1, selectedProject))); |
249 req.setAttribute("issueStatusEnum", IssueStatus.values()); |
249 req.setAttribute("issueStatusEnum", IssueStatus.values()); |
250 req.setAttribute("issueCategoryEnum", IssueCategory.values()); |
250 req.setAttribute("issueCategoryEnum", IssueCategory.values()); |
251 req.setAttribute("versions", dao.getVersionDao().list(selectedProject)); |
251 req.setAttribute("versions", dao.getVersionDao().list(selectedProject)); |
252 |
252 |
253 setDynamicFragment(req, "issue-form"); |
253 setContentPage(req, "issue-form"); |
254 } |
254 } |
255 |
255 |
256 @RequestMapping(requestPath = "issues/edit", method = HttpMethod.GET) |
256 @RequestMapping(requestPath = "issues/edit", method = HttpMethod.GET) |
257 public ResponseType editIssue(HttpServletRequest req, HttpServletResponse resp, DataAccessObjects dao) throws IOException, SQLException { |
257 public ResponseType editIssue(HttpServletRequest req, HttpServletResponse resp, DataAccessObjects dao) throws IOException, SQLException { |
258 final var selectedProject = getSelectedProject(req, dao); |
258 final var selectedProject = getSelectedProject(req, dao); |
283 // TODO: implement |
283 // TODO: implement |
284 |
284 |
285 dao.getIssueDao().saveOrUpdate(issue); |
285 dao.getIssueDao().saveOrUpdate(issue); |
286 |
286 |
287 setRedirectLocation(req, "./projects/issues/"); |
287 setRedirectLocation(req, "./projects/issues/"); |
288 setDynamicFragment(req, Constants.DYN_FRAGMENT_COMMIT_SUCCESSFUL); |
288 setContentPage(req, Constants.JSP_COMMIT_SUCCESSFUL); |
289 LOG.debug("Successfully updated issue {} for project {}", issue.getId(), selectedProject.getName()); |
289 LOG.debug("Successfully updated issue {} for project {}", issue.getId(), selectedProject.getName()); |
290 } catch (NoSuchElementException | NumberFormatException | SQLException ex) { |
290 } catch (NoSuchElementException | NumberFormatException | SQLException ex) { |
291 // TODO: set request attribute with error text |
291 // TODO: set request attribute with error text |
292 LOG.warn("Form validation failure: {}", ex.getMessage()); |
292 LOG.warn("Form validation failure: {}", ex.getMessage()); |
293 LOG.debug("Details:", ex); |
293 LOG.debug("Details:", ex); |