1.1 --- a/src/main/java/de/uapcore/lightpit/modules/ProjectsModule.java Sat May 30 15:28:27 2020 +0200 1.2 +++ b/src/main/java/de/uapcore/lightpit/modules/ProjectsModule.java Sat May 30 18:05:06 2020 +0200 1.3 @@ -42,10 +42,9 @@ 1.4 import java.io.IOException; 1.5 import java.sql.Date; 1.6 import java.sql.SQLException; 1.7 -import java.util.ArrayList; 1.8 -import java.util.List; 1.9 -import java.util.NoSuchElementException; 1.10 -import java.util.Objects; 1.11 +import java.util.*; 1.12 +import java.util.stream.Collectors; 1.13 +import java.util.stream.Stream; 1.14 1.15 import static de.uapcore.lightpit.Functions.fqn; 1.16 1.17 @@ -109,14 +108,14 @@ 1.18 } 1.19 1.20 void selectVersion(Version version) { 1.21 - if (!Objects.equals(project, version.getProject())) throw new AssertionError("Nice, you implemented a bug!"); 1.22 + this.project = version.getProject(); 1.23 this.version = version; 1.24 this.issue = null; 1.25 updateAttributes(); 1.26 } 1.27 1.28 void selectIssue(Issue issue) { 1.29 - if (!Objects.equals(issue.getProject(), project)) throw new AssertionError("Nice, you implemented a bug!"); 1.30 + this.project = issue.getProject(); 1.31 this.issue = issue; 1.32 this.version = null; 1.33 updateAttributes(); 1.34 @@ -375,7 +374,16 @@ 1.35 } 1.36 1.37 private void configureEditIssueForm(HttpServletRequest req, DataAccessObjects dao, SessionSelection selection) throws SQLException { 1.38 - req.setAttribute("projects", dao.getProjectDao().list()); 1.39 + 1.40 + if (selection.issue.getProject() == null || selection.issue.getProject().getId() < 0) { 1.41 + req.setAttribute("projects", dao.getProjectDao().list()); 1.42 + req.setAttribute("versions", Collections.<Version>emptyList()); 1.43 + } else { 1.44 + req.setAttribute("projects", Collections.<Project>emptyList()); 1.45 + req.setAttribute("versions", dao.getVersionDao().list(selection.issue.getProject())); 1.46 + } 1.47 + 1.48 + dao.getIssueDao().joinVersionInformation(selection.issue); 1.49 req.setAttribute("issue", selection.issue); 1.50 req.setAttribute("issueStatusEnum", IssueStatus.values()); 1.51 req.setAttribute("issueCategoryEnum", IssueCategory.values()); 1.52 @@ -428,6 +436,23 @@ 1.53 ).ifPresent(issue::setAssignee); 1.54 getParameter(req, String.class, "description").ifPresent(issue::setDescription); 1.55 getParameter(req, Date.class, "eta").ifPresent(issue::setEta); 1.56 + 1.57 + getParameter(req, Integer[].class, "affected") 1.58 + .map(Stream::of) 1.59 + .map(stream -> 1.60 + stream.map(id -> new Version(id, sessionSelection.project)).collect(Collectors.toList()) 1.61 + ).ifPresent(issue::setAffectedVersions); 1.62 + getParameter(req, Integer[].class, "scheduled") 1.63 + .map(Stream::of) 1.64 + .map(stream -> 1.65 + stream.map(id -> new Version(id, sessionSelection.project)).collect(Collectors.toList()) 1.66 + ).ifPresent(issue::setScheduledVersions); 1.67 + getParameter(req, Integer[].class, "resolved") 1.68 + .map(Stream::of) 1.69 + .map(stream -> 1.70 + stream.map(id -> new Version(id, sessionSelection.project)).collect(Collectors.toList()) 1.71 + ).ifPresent(issue::setResolvedVersions); 1.72 + 1.73 dao.getIssueDao().saveOrUpdate(issue); 1.74 1.75 // specifying the issue parameter keeps the edited issue as breadcrumb