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

changeset 83
24a3596b8f98
parent 81
1a2e7b5d48f7
child 86
0a658e53177c
     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

mercurial