535 |
535 |
536 forwardView(req, resp, viewModel, "issue-form"); |
536 forwardView(req, resp, viewModel, "issue-form"); |
537 } |
537 } |
538 |
538 |
539 @RequestMapping(requestPath = "$project/create-issue", method = HttpMethod.GET) |
539 @RequestMapping(requestPath = "$project/create-issue", method = HttpMethod.GET) |
540 public void createIssue(HttpServletRequest req, HttpServletResponse resp, PathParameters pathParameters, DataAccessObject dao) throws IOException, SQLException, ServletException { |
540 public void createIssue(HttpServletRequest req, HttpServletResponse resp, PathParameters pathParameters, DataAccessObject dao) throws IOException, ServletException { |
541 final var viewModel = new IssueEditView(); |
541 final var viewModel = new IssueEditView(); |
542 populate(viewModel, pathParameters, dao); |
542 populate(viewModel, pathParameters, dao); |
543 |
543 |
544 final var projectInfo = viewModel.getProjectInfo(); |
544 final var projectInfo = viewModel.getProjectInfo(); |
545 if (projectInfo == null) { |
545 if (projectInfo == null) { |
546 resp.sendError(HttpServletResponse.SC_NOT_FOUND); |
546 resp.sendError(HttpServletResponse.SC_NOT_FOUND); |
547 return; |
547 return; |
548 } |
548 } |
549 |
549 |
550 // TODO: fix #38 - automatically select component (and version) |
550 setAttributeFromParameter(req, "more"); |
|
551 setAttributeFromParameter(req, "component"); |
|
552 setAttributeFromParameter(req, "version"); |
|
553 |
551 final var issue = new Issue(-1, projectInfo.getProject(), null); |
554 final var issue = new Issue(-1, projectInfo.getProject(), null); |
552 issue.setProject(projectInfo.getProject()); |
555 issue.setProject(projectInfo.getProject()); |
553 configureIssueEditor(viewModel, issue, dao); |
556 configureIssueEditor(viewModel, issue, dao); |
554 |
557 |
555 forwardView(req, resp, viewModel, "issue-form"); |
558 forwardView(req, resp, viewModel, "issue-form"); |
605 dao.updateIssue(issue); |
608 dao.updateIssue(issue); |
606 } else { |
609 } else { |
607 dao.insertIssue(issue); |
610 dao.insertIssue(issue); |
608 } |
611 } |
609 |
612 |
610 // TODO: implement #110 |
613 if (getParameter(req, Boolean.class, "create-another").orElse(false)) { |
611 setRedirectLocation(req, "./projects/" + issue.getProject().getNode()+"/issues/"+issue.getId()+"/view"); |
614 // TODO: fix #38 - automatically select component (and version) |
|
615 setRedirectLocation(req, "./projects/" + issue.getProject().getNode() + "/create-issue?more=true"); |
|
616 } else{ |
|
617 setRedirectLocation(req, "./projects/" + issue.getProject().getNode() + "/issues/" + issue.getId() + "/view"); |
|
618 } |
612 setContentPage(req, Constants.JSP_COMMIT_SUCCESSFUL); |
619 setContentPage(req, Constants.JSP_COMMIT_SUCCESSFUL); |
613 |
620 |
614 renderSite(req, resp); |
621 renderSite(req, resp); |
615 } catch (NoSuchElementException | IllegalArgumentException ex) { |
622 } catch (NoSuchElementException | IllegalArgumentException ex) { |
616 resp.sendError(HttpServletResponse.SC_NOT_IMPLEMENTED); |
623 resp.sendError(HttpServletResponse.SC_NOT_IMPLEMENTED); |