src/main/kotlin/de/uapcore/lightpit/servlet/FeedServlet.kt

changeset 311
bf67e0ff7131
parent 260
fb2ae2d63a56
child 315
4fe3f61744cf
equal deleted inserted replaced
310:bbf4eb9a71f8 311:bf67e0ff7131
30 import de.uapcore.lightpit.AbstractServlet 30 import de.uapcore.lightpit.AbstractServlet
31 import de.uapcore.lightpit.HttpRequest 31 import de.uapcore.lightpit.HttpRequest
32 import de.uapcore.lightpit.dao.DataAccessObject 32 import de.uapcore.lightpit.dao.DataAccessObject
33 import de.uapcore.lightpit.entities.IssueCommentHistoryEntry 33 import de.uapcore.lightpit.entities.IssueCommentHistoryEntry
34 import de.uapcore.lightpit.entities.IssueHistoryEntry 34 import de.uapcore.lightpit.entities.IssueHistoryEntry
35 import de.uapcore.lightpit.entities.Project
35 import de.uapcore.lightpit.types.IssueHistoryType 36 import de.uapcore.lightpit.types.IssueHistoryType
36 import de.uapcore.lightpit.viewmodel.CommentDiff 37 import de.uapcore.lightpit.viewmodel.CommentDiff
37 import de.uapcore.lightpit.viewmodel.IssueDiff 38 import de.uapcore.lightpit.viewmodel.IssueDiff
38 import de.uapcore.lightpit.viewmodel.IssueFeed 39 import de.uapcore.lightpit.viewmodel.IssueFeed
39 import de.uapcore.lightpit.viewmodel.IssueFeedEntry 40 import de.uapcore.lightpit.viewmodel.IssueFeedEntry
77 ) 78 )
78 79
79 private fun fullContent(issue: IssueHistoryEntry) = IssueDiff( 80 private fun fullContent(issue: IssueHistoryEntry) = IssueDiff(
80 issue.issueid, 81 issue.issueid,
81 issue.subject, 82 issue.subject,
83 issue.project,
82 issue.component, 84 issue.component,
83 issue.status.name, 85 issue.status.name,
84 issue.category.name, 86 issue.category.name,
85 issue.subject, 87 issue.subject,
86 issue.description.replace("\r", ""), 88 issue.description.replace("\r", ""),
160 ) 162 )
161 }.flatMap { it.value } 163 }.flatMap { it.value }
162 } 164 }
163 165
164 private fun issues(http: HttpRequest, dao: DataAccessObject) { 166 private fun issues(http: HttpRequest, dao: DataAccessObject) {
165 val project = http.pathParams["project"]?.let { dao.findProjectByNode(it) } 167 val projectNode = http.pathParams["project"].orEmpty()
166 if (project == null) { 168 val project: Project?
167 http.response.sendError(404) 169 if (projectNode == "-") {
168 return 170 project = null
171 } else {
172 project = dao.findProjectByNode(projectNode)
173 if (project == null) {
174 http.response.sendError(404)
175 return
176 }
169 } 177 }
170 val assignees = http.param("assignee")?.split(',') 178 val assignees = http.param("assignee")?.split(',')
171 val comments = http.param("comments") ?: "all" 179 val comments = http.param("comments") ?: "all"
172 180
173 val days = http.param("days")?.toIntOrNull() ?: 30 181 val days = http.param("days")?.toIntOrNull() ?: 30
174 182
175 val issuesFromDb = dao.listIssueHistory(project.id, days) 183 val issuesFromDb = dao.listIssueHistory(project, days)
176 val issueHistory = if (assignees == null) issuesFromDb else 184 val issueHistory = if (assignees == null) issuesFromDb else
177 issuesFromDb.filter { assignees.contains(it.currentAssignee) } 185 issuesFromDb.filter { assignees.contains(it.currentAssignee) }
178 186
179 val commentsFromDb = dao.listIssueCommentHistory(project.id, days) 187 val commentsFromDb = dao.listIssueCommentHistory(project, days)
180 val commentHistory = when (comments) { 188 val commentHistory = when (comments) {
181 "all" -> commentsFromDb 189 "all" -> commentsFromDb
182 "new" -> commentsFromDb.filter { it.type == IssueHistoryType.NewComment } 190 "new" -> commentsFromDb.filter { it.type == IssueHistoryType.NewComment }
183 else -> emptyList() 191 else -> emptyList()
184 } 192 }

mercurial