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

changeset 128
947d0f6a6a83
parent 124
ed2e7aef2a3e
child 129
a09d5c59351a
equal deleted inserted replaced
127:6105ee2cceaf 128:947d0f6a6a83
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

mercurial