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

changeset 198
94f174d591ab
parent 195
9c7aff3cbb14
child 199
59393c8cc557
     1.1 --- a/src/main/kotlin/de/uapcore/lightpit/servlet/FeedServlet.kt	Thu May 13 18:01:56 2021 +0200
     1.2 +++ b/src/main/kotlin/de/uapcore/lightpit/servlet/FeedServlet.kt	Thu May 13 19:31:09 2021 +0200
     1.3 @@ -28,24 +28,39 @@
     1.4  import de.uapcore.lightpit.AbstractServlet
     1.5  import de.uapcore.lightpit.HttpRequest
     1.6  import de.uapcore.lightpit.dao.DataAccessObject
     1.7 -import de.uapcore.lightpit.entities.Issue
     1.8  import de.uapcore.lightpit.util.IssueFilter
     1.9  import de.uapcore.lightpit.util.IssueSorter
    1.10 +import de.uapcore.lightpit.util.SpecificFilter
    1.11  import de.uapcore.lightpit.viewmodel.IssueFeed
    1.12 +import de.uapcore.lightpit.viewmodel.ProjectFeed
    1.13  import javax.servlet.annotation.WebServlet
    1.14  
    1.15  @WebServlet(urlPatterns = ["/feed/*"])
    1.16  class FeedServlet : AbstractServlet() {
    1.17  
    1.18      init {
    1.19 -        get("/issues.rss", this::issues)
    1.20 +        get("/projects.rss", this::projects)
    1.21 +        get("/%project/issues.rss", this::issues)
    1.22 +    }
    1.23 +
    1.24 +    private fun projects(http: HttpRequest, dao: DataAccessObject) {
    1.25 +
    1.26 +        val projects = dao.listProjects()
    1.27 +
    1.28 +        http.view = ProjectFeed(projects)
    1.29 +        http.renderFeed("project-feed")
    1.30      }
    1.31  
    1.32      private fun issues(http: HttpRequest, dao: DataAccessObject) {
    1.33 +        val project = http.pathParams["project"]?.let { dao.findProjectByNode(it) }
    1.34 +        if (project == null) {
    1.35 +            http.response.sendError(404)
    1.36 +            return
    1.37 +        }
    1.38  
    1.39 -        val issues = dao.listIssues(IssueFilter()).sortedWith(IssueSorter.DEFAULT_ISSUE_SORTER)
    1.40 +        val issues = dao.listIssues(IssueFilter(SpecificFilter(project))).sortedWith(IssueSorter.DEFAULT_ISSUE_SORTER)
    1.41  
    1.42 -        http.view = IssueFeed(issues.groupBy(Issue::project))
    1.43 -        http.forward("issues-feed")
    1.44 +        http.view = IssueFeed(project, issues)
    1.45 +        http.renderFeed("issues-feed")
    1.46      }
    1.47  }
    1.48 \ No newline at end of file

mercurial