236 if (viewModel.getProjectInfo() == null) { |
236 if (viewModel.getProjectInfo() == null) { |
237 resp.sendError(HttpServletResponse.SC_NOT_FOUND, "No project selected."); |
237 resp.sendError(HttpServletResponse.SC_NOT_FOUND, "No project selected."); |
238 return ResponseType.NONE; |
238 return ResponseType.NONE; |
239 } |
239 } |
240 |
240 |
241 if (viewModel.getVersionFilter() == null) { |
241 viewModel.setVersion(Optional.ofNullable(viewModel.getVersionFilter()).orElse(new Version(-1))); |
242 final var version = new Version(-1); |
|
243 version.setProject(viewModel.getProjectInfo().getProject()); |
|
244 viewModel.setVersion(version); |
|
245 } else { |
|
246 viewModel.setVersion(viewModel.getVersionFilter()); |
|
247 } |
|
248 |
242 |
249 return forwardView(req, viewModel, "version-form"); |
243 return forwardView(req, viewModel, "version-form"); |
250 } |
244 } |
251 |
245 |
252 @RequestMapping(requestPath = "versions/commit", method = HttpMethod.POST) |
246 @RequestMapping(requestPath = "versions/commit", method = HttpMethod.POST) |
253 public ResponseType commitVersion(HttpServletRequest req, HttpServletResponse resp, DataAccessObjects dao) throws SQLException { |
247 public ResponseType commitVersion(HttpServletRequest req, HttpServletResponse resp, DataAccessObjects dao) throws SQLException { |
254 |
248 |
255 var version = new Version(-1); |
249 var version = new Version(-1); |
256 try { |
250 try { |
|
251 final var project = new Project(getParameter(req, Integer.class, "pid").orElseThrow()); |
257 version = new Version(getParameter(req, Integer.class, "id").orElseThrow()); |
252 version = new Version(getParameter(req, Integer.class, "id").orElseThrow()); |
258 version.setProject(new Project(getParameter(req, Integer.class, "pid").orElseThrow())); |
|
259 version.setName(getParameter(req, String.class, "name").orElseThrow()); |
253 version.setName(getParameter(req, String.class, "name").orElseThrow()); |
260 getParameter(req, Integer.class, "ordinal").ifPresent(version::setOrdinal); |
254 getParameter(req, Integer.class, "ordinal").ifPresent(version::setOrdinal); |
261 version.setStatus(VersionStatus.valueOf(getParameter(req, String.class, "status").orElseThrow())); |
255 version.setStatus(VersionStatus.valueOf(getParameter(req, String.class, "status").orElseThrow())); |
262 dao.getVersionDao().saveOrUpdate(version); |
256 dao.getVersionDao().saveOrUpdate(version, project); |
263 |
257 |
264 // specifying the pid parameter will purposely reset the session selected version! |
258 setRedirectLocation(req, "./projects/versions?pid=" + project.getId()); |
265 setRedirectLocation(req, "./projects/versions?pid=" + version.getProject().getId()); |
|
266 setContentPage(req, Constants.JSP_COMMIT_SUCCESSFUL); |
259 setContentPage(req, Constants.JSP_COMMIT_SUCCESSFUL); |
267 } catch (NoSuchElementException | IllegalArgumentException | SQLException ex) { |
260 } catch (NoSuchElementException | IllegalArgumentException | SQLException ex) { |
268 LOG.warn("Form validation failure: {}", ex.getMessage()); |
261 LOG.warn("Form validation failure: {}", ex.getMessage()); |
269 LOG.debug("Details:", ex); |
262 LOG.debug("Details:", ex); |
270 final var viewModel = new VersionEditView(); |
263 final var viewModel = new VersionEditView(); |
330 .map(Stream::of) |
323 .map(Stream::of) |
331 .map(stream -> |
324 .map(stream -> |
332 stream.map(Version::new).collect(Collectors.toList()) |
325 stream.map(Version::new).collect(Collectors.toList()) |
333 ).ifPresent(issue::setResolvedVersions); |
326 ).ifPresent(issue::setResolvedVersions); |
334 |
327 |
335 dao.getIssueDao().saveOrUpdate(issue); |
328 dao.getIssueDao().saveOrUpdate(issue, issue.getProject()); |
336 |
329 |
337 // specifying the issue parameter keeps the edited issue as menu item |
330 // specifying the issue parameter keeps the edited issue as menu item |
338 setRedirectLocation(req, "./projects/view?pid=" + issue.getProject().getId()); |
331 setRedirectLocation(req, "./projects/view?pid=" + issue.getProject().getId()); |
339 setContentPage(req, Constants.JSP_COMMIT_SUCCESSFUL); |
332 setContentPage(req, Constants.JSP_COMMIT_SUCCESSFUL); |
340 |
333 |