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

changeset 83
24a3596b8f98
parent 81
1a2e7b5d48f7
child 86
0a658e53177c
--- a/src/main/java/de/uapcore/lightpit/modules/ProjectsModule.java	Sat May 30 15:28:27 2020 +0200
+++ b/src/main/java/de/uapcore/lightpit/modules/ProjectsModule.java	Sat May 30 18:05:06 2020 +0200
@@ -42,10 +42,9 @@
 import java.io.IOException;
 import java.sql.Date;
 import java.sql.SQLException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.NoSuchElementException;
-import java.util.Objects;
+import java.util.*;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 import static de.uapcore.lightpit.Functions.fqn;
 
@@ -109,14 +108,14 @@
         }
 
         void selectVersion(Version version) {
-            if (!Objects.equals(project, version.getProject())) throw new AssertionError("Nice, you implemented a bug!");
+            this.project = version.getProject();
             this.version = version;
             this.issue = null;
             updateAttributes();
         }
 
         void selectIssue(Issue issue) {
-            if (!Objects.equals(issue.getProject(), project)) throw new AssertionError("Nice, you implemented a bug!");
+            this.project = issue.getProject();
             this.issue = issue;
             this.version = null;
             updateAttributes();
@@ -375,7 +374,16 @@
     }
 
     private void configureEditIssueForm(HttpServletRequest req, DataAccessObjects dao, SessionSelection selection) throws SQLException {
-        req.setAttribute("projects", dao.getProjectDao().list());
+
+        if (selection.issue.getProject() == null || selection.issue.getProject().getId() < 0) {
+            req.setAttribute("projects", dao.getProjectDao().list());
+            req.setAttribute("versions", Collections.<Version>emptyList());
+        } else {
+            req.setAttribute("projects", Collections.<Project>emptyList());
+            req.setAttribute("versions", dao.getVersionDao().list(selection.issue.getProject()));
+        }
+
+        dao.getIssueDao().joinVersionInformation(selection.issue);
         req.setAttribute("issue", selection.issue);
         req.setAttribute("issueStatusEnum", IssueStatus.values());
         req.setAttribute("issueCategoryEnum", IssueCategory.values());
@@ -428,6 +436,23 @@
             ).ifPresent(issue::setAssignee);
             getParameter(req, String.class, "description").ifPresent(issue::setDescription);
             getParameter(req, Date.class, "eta").ifPresent(issue::setEta);
+
+            getParameter(req, Integer[].class, "affected")
+                    .map(Stream::of)
+                    .map(stream ->
+                        stream.map(id -> new Version(id, sessionSelection.project)).collect(Collectors.toList())
+                    ).ifPresent(issue::setAffectedVersions);
+            getParameter(req, Integer[].class, "scheduled")
+                    .map(Stream::of)
+                    .map(stream ->
+                            stream.map(id -> new Version(id, sessionSelection.project)).collect(Collectors.toList())
+                    ).ifPresent(issue::setScheduledVersions);
+            getParameter(req, Integer[].class, "resolved")
+                    .map(Stream::of)
+                    .map(stream ->
+                            stream.map(id -> new Version(id, sessionSelection.project)).collect(Collectors.toList())
+                    ).ifPresent(issue::setResolvedVersions);
+
             dao.getIssueDao().saveOrUpdate(issue);
 
             // specifying the issue parameter keeps the edited issue as breadcrumb

mercurial