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

changeset 83
24a3596b8f98
parent 81
1a2e7b5d48f7
child 86
0a658e53177c
equal deleted inserted replaced
82:4ec7f2600c83 83:24a3596b8f98
40 import javax.servlet.http.HttpServletResponse; 40 import javax.servlet.http.HttpServletResponse;
41 import javax.servlet.http.HttpSession; 41 import javax.servlet.http.HttpSession;
42 import java.io.IOException; 42 import java.io.IOException;
43 import java.sql.Date; 43 import java.sql.Date;
44 import java.sql.SQLException; 44 import java.sql.SQLException;
45 import java.util.ArrayList; 45 import java.util.*;
46 import java.util.List; 46 import java.util.stream.Collectors;
47 import java.util.NoSuchElementException; 47 import java.util.stream.Stream;
48 import java.util.Objects;
49 48
50 import static de.uapcore.lightpit.Functions.fqn; 49 import static de.uapcore.lightpit.Functions.fqn;
51 50
52 @WebServlet( 51 @WebServlet(
53 name = "ProjectsModule", 52 name = "ProjectsModule",
107 } 106 }
108 updateAttributes(); 107 updateAttributes();
109 } 108 }
110 109
111 void selectVersion(Version version) { 110 void selectVersion(Version version) {
112 if (!Objects.equals(project, version.getProject())) throw new AssertionError("Nice, you implemented a bug!"); 111 this.project = version.getProject();
113 this.version = version; 112 this.version = version;
114 this.issue = null; 113 this.issue = null;
115 updateAttributes(); 114 updateAttributes();
116 } 115 }
117 116
118 void selectIssue(Issue issue) { 117 void selectIssue(Issue issue) {
119 if (!Objects.equals(issue.getProject(), project)) throw new AssertionError("Nice, you implemented a bug!"); 118 this.project = issue.getProject();
120 this.issue = issue; 119 this.issue = issue;
121 this.version = null; 120 this.version = null;
122 updateAttributes(); 121 updateAttributes();
123 } 122 }
124 123
373 372
374 return ResponseType.HTML; 373 return ResponseType.HTML;
375 } 374 }
376 375
377 private void configureEditIssueForm(HttpServletRequest req, DataAccessObjects dao, SessionSelection selection) throws SQLException { 376 private void configureEditIssueForm(HttpServletRequest req, DataAccessObjects dao, SessionSelection selection) throws SQLException {
378 req.setAttribute("projects", dao.getProjectDao().list()); 377
378 if (selection.issue.getProject() == null || selection.issue.getProject().getId() < 0) {
379 req.setAttribute("projects", dao.getProjectDao().list());
380 req.setAttribute("versions", Collections.<Version>emptyList());
381 } else {
382 req.setAttribute("projects", Collections.<Project>emptyList());
383 req.setAttribute("versions", dao.getVersionDao().list(selection.issue.getProject()));
384 }
385
386 dao.getIssueDao().joinVersionInformation(selection.issue);
379 req.setAttribute("issue", selection.issue); 387 req.setAttribute("issue", selection.issue);
380 req.setAttribute("issueStatusEnum", IssueStatus.values()); 388 req.setAttribute("issueStatusEnum", IssueStatus.values());
381 req.setAttribute("issueCategoryEnum", IssueCategory.values()); 389 req.setAttribute("issueCategoryEnum", IssueCategory.values());
382 req.setAttribute("users", dao.getUserDao().list()); 390 req.setAttribute("users", dao.getUserDao().list());
383 391
426 getParameter(req, Integer.class, "assignee").map( 434 getParameter(req, Integer.class, "assignee").map(
427 userid -> userid >= 0 ? new User(userid) : null 435 userid -> userid >= 0 ? new User(userid) : null
428 ).ifPresent(issue::setAssignee); 436 ).ifPresent(issue::setAssignee);
429 getParameter(req, String.class, "description").ifPresent(issue::setDescription); 437 getParameter(req, String.class, "description").ifPresent(issue::setDescription);
430 getParameter(req, Date.class, "eta").ifPresent(issue::setEta); 438 getParameter(req, Date.class, "eta").ifPresent(issue::setEta);
439
440 getParameter(req, Integer[].class, "affected")
441 .map(Stream::of)
442 .map(stream ->
443 stream.map(id -> new Version(id, sessionSelection.project)).collect(Collectors.toList())
444 ).ifPresent(issue::setAffectedVersions);
445 getParameter(req, Integer[].class, "scheduled")
446 .map(Stream::of)
447 .map(stream ->
448 stream.map(id -> new Version(id, sessionSelection.project)).collect(Collectors.toList())
449 ).ifPresent(issue::setScheduledVersions);
450 getParameter(req, Integer[].class, "resolved")
451 .map(Stream::of)
452 .map(stream ->
453 stream.map(id -> new Version(id, sessionSelection.project)).collect(Collectors.toList())
454 ).ifPresent(issue::setResolvedVersions);
455
431 dao.getIssueDao().saveOrUpdate(issue); 456 dao.getIssueDao().saveOrUpdate(issue);
432 457
433 // specifying the issue parameter keeps the edited issue as breadcrumb 458 // specifying the issue parameter keeps the edited issue as breadcrumb
434 setRedirectLocation(req, "./projects/issues/?issue="+issue.getId()); 459 setRedirectLocation(req, "./projects/issues/?issue="+issue.getId());
435 setContentPage(req, Constants.JSP_COMMIT_SUCCESSFUL); 460 setContentPage(req, Constants.JSP_COMMIT_SUCCESSFUL);

mercurial