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

changeset 146
b0e83cab0bde
parent 141
8160dfc4dbc3
child 150
822b7e3d064d
equal deleted inserted replaced
145:6d2d69fd1c12 146:b0e83cab0bde
420 return ResponseType.HTML; 420 return ResponseType.HTML;
421 } 421 }
422 422
423 private void configureIssueEditor(IssueEditView viewModel, Issue issue, DataAccessObjects dao) throws SQLException { 423 private void configureIssueEditor(IssueEditView viewModel, Issue issue, DataAccessObjects dao) throws SQLException {
424 final var project = viewModel.getProjectInfo().getProject(); 424 final var project = viewModel.getProjectInfo().getProject();
425 issue.setProject(project); 425 issue.setProject(project); // automatically set current project for new issues
426 viewModel.setIssue(issue); 426 viewModel.setIssue(issue);
427 viewModel.configureVersionSelectors(viewModel.getProjectInfo().getVersions()); 427 viewModel.configureVersionSelectors(viewModel.getProjectInfo().getVersions());
428 viewModel.setUsers(dao.getUserDao().list()); 428 viewModel.setUsers(dao.getUserDao().list());
429 viewModel.setComponents(dao.getComponentDao().list(project)); 429 viewModel.setComponents(dao.getComponentDao().list(project));
430 if (issue.getId() >= 0) { 430 }
431 viewModel.setComments(dao.getIssueDao().listComments(issue)); 431
432 } 432 @RequestMapping(requestPath = "$project/issues/$issue/view", method = HttpMethod.GET)
433 } 433 public ResponseType viewIssue(HttpServletRequest req, HttpServletResponse resp, PathParameters pathParameters, DataAccessObjects dao) throws IOException, SQLException {
434 434 final var viewModel = new IssueDetailView();
435 populate(viewModel, pathParameters, dao);
436
437 final var projectInfo = viewModel.getProjectInfo();
438 if (projectInfo == null) {
439 resp.sendError(HttpServletResponse.SC_NOT_FOUND);
440 return ResponseType.NONE;
441 }
442
443 final var issueDao = dao.getIssueDao();
444 final var issue = issueDao.find(Functions.parseIntOrZero(pathParameters.get("issue")));
445 if (issue == null) {
446 resp.sendError(HttpServletResponse.SC_NOT_FOUND);
447 return ResponseType.NONE;
448 }
449
450 issueDao.joinVersionInformation(issue);
451 viewModel.setIssue(issue);
452 viewModel.setComments(issueDao.listComments(issue));
453
454 return forwardView(req, viewModel, "issue-view");
455 }
456
457 // TODO: why should the issue editor be child of $project?
435 @RequestMapping(requestPath = "$project/issues/$issue/edit", method = HttpMethod.GET) 458 @RequestMapping(requestPath = "$project/issues/$issue/edit", method = HttpMethod.GET)
436 public ResponseType editIssue(HttpServletRequest req, HttpServletResponse resp, PathParameters pathParameters, DataAccessObjects dao) throws IOException, SQLException { 459 public ResponseType editIssue(HttpServletRequest req, HttpServletResponse resp, PathParameters pathParameters, DataAccessObjects dao) throws IOException, SQLException {
437 final var viewModel = new IssueEditView(); 460 final var viewModel = new IssueEditView();
438 populate(viewModel, pathParameters, dao); 461 populate(viewModel, pathParameters, dao);
439 462
520 stream.map(Version::new).collect(Collectors.toList()) 543 stream.map(Version::new).collect(Collectors.toList())
521 ).ifPresent(issue::setResolvedVersions); 544 ).ifPresent(issue::setResolvedVersions);
522 545
523 dao.getIssueDao().saveOrUpdate(issue, issue.getProject()); 546 dao.getIssueDao().saveOrUpdate(issue, issue.getProject());
524 547
525 // TODO: fix issue #14 548 // TODO: fix redirect location
526 setRedirectLocation(req, "./projects/" + issue.getProject().getNode() + "/all-components/all-versions/issues/"); 549 setRedirectLocation(req, "./projects/" + issue.getProject().getNode()+"/issues/"+issue.getId()+"/view");
527 setContentPage(req, Constants.JSP_COMMIT_SUCCESSFUL); 550 setContentPage(req, Constants.JSP_COMMIT_SUCCESSFUL);
528 551
529 return ResponseType.HTML; 552 return ResponseType.HTML;
530 } catch (NoSuchElementException | IllegalArgumentException | SQLException ex) { 553 } catch (NoSuchElementException | IllegalArgumentException | SQLException ex) {
531 resp.sendError(HttpServletResponse.SC_NOT_IMPLEMENTED); 554 resp.sendError(HttpServletResponse.SC_NOT_IMPLEMENTED);
559 dao.getUserDao().findByUsername(req.getRemoteUser()).ifPresent(issueComment::setAuthor); 582 dao.getUserDao().findByUsername(req.getRemoteUser()).ifPresent(issueComment::setAuthor);
560 } 583 }
561 584
562 dao.getIssueDao().saveComment(issueComment); 585 dao.getIssueDao().saveComment(issueComment);
563 586
564 // TODO: fix redirect location (e.g. after fixing #24) 587 // TODO: fix redirect location
565 setRedirectLocation(req, "./projects/" + issue.getProject().getNode()+"/issues/"+issue.getId()+"/edit"); 588 setRedirectLocation(req, "./projects/" + issue.getProject().getNode()+"/issues/"+issue.getId()+"/view");
566 setContentPage(req, Constants.JSP_COMMIT_SUCCESSFUL); 589 setContentPage(req, Constants.JSP_COMMIT_SUCCESSFUL);
567 590
568 return ResponseType.HTML; 591 return ResponseType.HTML;
569 } catch (NoSuchElementException | IllegalArgumentException | SQLException ex) { 592 } catch (NoSuchElementException | IllegalArgumentException | SQLException ex) {
570 resp.sendError(HttpServletResponse.SC_NOT_IMPLEMENTED); 593 resp.sendError(HttpServletResponse.SC_NOT_IMPLEMENTED);

mercurial