58 |
58 |
59 private static final Logger LOG = LoggerFactory.getLogger(ProjectsModule.class); |
59 private static final Logger LOG = LoggerFactory.getLogger(ProjectsModule.class); |
60 |
60 |
61 private static final String SESSION_ATTR_SELECTED_PROJECT = fqn(ProjectsModule.class, "selected_project"); |
61 private static final String SESSION_ATTR_SELECTED_PROJECT = fqn(ProjectsModule.class, "selected_project"); |
62 private static final String SESSION_ATTR_SELECTED_VERSION = fqn(ProjectsModule.class, "selected_version"); |
62 private static final String SESSION_ATTR_SELECTED_VERSION = fqn(ProjectsModule.class, "selected_version"); |
|
63 private static final String SESSION_ATTR_SELECTED_COMPONENT = fqn(ProjectsModule.class, "selected_component"); |
63 private static final String PARAMETER_SELECTED_PROJECT = "pid"; |
64 private static final String PARAMETER_SELECTED_PROJECT = "pid"; |
64 private static final String PARAMETER_SELECTED_VERSION = "vid"; |
65 private static final String PARAMETER_SELECTED_VERSION = "vid"; |
|
66 private static final String PARAMETER_SELECTED_COMPONENT = "cid"; |
65 |
67 |
66 @Override |
68 @Override |
67 protected String getResourceBundleName() { |
69 protected String getResourceBundleName() { |
68 return "localization.projects"; |
70 return "localization.projects"; |
69 } |
71 } |
82 } |
84 } |
83 |
85 |
84 private void populate(ProjectView viewModel, HttpServletRequest req, DataAccessObjects dao) throws SQLException { |
86 private void populate(ProjectView viewModel, HttpServletRequest req, DataAccessObjects dao) throws SQLException { |
85 final var projectDao = dao.getProjectDao(); |
87 final var projectDao = dao.getProjectDao(); |
86 final var versionDao = dao.getVersionDao(); |
88 final var versionDao = dao.getVersionDao(); |
|
89 final var componentDao = dao.getComponentDao(); |
87 |
90 |
88 projectDao.list().stream().map(ProjectInfo::new).forEach(viewModel.getProjectList()::add); |
91 projectDao.list().stream().map(ProjectInfo::new).forEach(viewModel.getProjectList()::add); |
89 |
92 |
90 // Select Project |
93 // Select Project |
91 final int pid = syncParamWithSession(req, PARAMETER_SELECTED_PROJECT, SESSION_ATTR_SELECTED_PROJECT); |
94 final int pid = syncParamWithSession(req, PARAMETER_SELECTED_PROJECT, SESSION_ATTR_SELECTED_PROJECT); |
94 if (project == null) { |
97 if (project == null) { |
95 req.setAttribute(SESSION_ATTR_SELECTED_PROJECT, -1); |
98 req.setAttribute(SESSION_ATTR_SELECTED_PROJECT, -1); |
96 } else { |
99 } else { |
97 final var info = new ProjectInfo(project); |
100 final var info = new ProjectInfo(project); |
98 info.setVersions(versionDao.list(project)); |
101 info.setVersions(versionDao.list(project)); |
|
102 info.setComponents(componentDao.list(project)); |
99 info.setIssueSummary(projectDao.getIssueSummary(project)); |
103 info.setIssueSummary(projectDao.getIssueSummary(project)); |
100 viewModel.setProjectInfo(info); |
104 viewModel.setProjectInfo(info); |
101 } |
105 } |
102 } |
106 } |
103 |
107 |
104 // Select Version |
108 // Select Version |
105 final int vid = syncParamWithSession(req, PARAMETER_SELECTED_VERSION, SESSION_ATTR_SELECTED_VERSION); |
109 final int vid = syncParamWithSession(req, PARAMETER_SELECTED_VERSION, SESSION_ATTR_SELECTED_VERSION); |
106 if (vid >= 0) { |
110 if (vid > 0) { |
107 viewModel.setVersionFilter(versionDao.find(vid)); |
111 viewModel.setVersionFilter(versionDao.find(vid)); |
|
112 } else { |
|
113 // NULL for version means: show all unassigned |
|
114 viewModel.setVersionFilter(null); |
|
115 } |
|
116 |
|
117 // Select Component |
|
118 final int cid = syncParamWithSession(req, PARAMETER_SELECTED_COMPONENT, SESSION_ATTR_SELECTED_COMPONENT); |
|
119 if (cid > 0) { |
|
120 viewModel.setComponentFilter(componentDao.find(cid)); |
|
121 } else if (cid <= 0) { |
|
122 // -1 means: filter for unassigned, null means: show all |
|
123 viewModel.setComponentFilter(new Component(-1)); |
108 } |
124 } |
109 } |
125 } |
110 |
126 |
111 private ResponseType forwardView(HttpServletRequest req, ProjectView viewModel, String name) { |
127 private ResponseType forwardView(HttpServletRequest req, ProjectView viewModel, String name) { |
112 setViewModel(req, viewModel); |
128 setViewModel(req, viewModel); |