src/main/kotlin/de/uapcore/lightpit/viewmodel/PathInfos.kt

changeset 311
bf67e0ff7131
parent 292
703591e739f4
equal deleted inserted replaced
310:bbf4eb9a71f8 311:bf67e0ff7131
29 import de.uapcore.lightpit.OptionalPathInfo 29 import de.uapcore.lightpit.OptionalPathInfo
30 import de.uapcore.lightpit.dao.DataAccessObject 30 import de.uapcore.lightpit.dao.DataAccessObject
31 import de.uapcore.lightpit.entities.Component 31 import de.uapcore.lightpit.entities.Component
32 import de.uapcore.lightpit.entities.Version 32 import de.uapcore.lightpit.entities.Version
33 33
34 data class PathInfos( 34 abstract class PathInfos(val issuesHref: String)
35 class PathInfosOnlyIssues(issuesHref: String): PathInfos(issuesHref)
36 data class PathInfosFull(
35 val projectInfo: ProjectInfo, 37 val projectInfo: ProjectInfo,
36 val versionInfo: OptionalPathInfo<Version>, 38 val versionInfo: OptionalPathInfo<Version>,
37 val componentInfo: OptionalPathInfo<Component> 39 val componentInfo: OptionalPathInfo<Component>
38 ) { 40 ): PathInfos("projects/${projectInfo.project.node}/issues/${versionInfo.node}/${componentInfo.node}/")
39 val issuesHref by lazyOf("projects/${projectInfo.project.node}/issues/${versionInfo.node}/${componentInfo.node}/")
40 }
41 41
42 private fun obtainProjectInfo(http: HttpRequest, dao: DataAccessObject): ProjectInfo? { 42 private fun obtainProjectInfo(http: HttpRequest, dao: DataAccessObject): ProjectInfo? {
43 val pathParam = http.pathParams["project"] ?: return null 43 val pathParam = http.pathParams["project"] ?: return null
44 val project = dao.findProjectByNode(pathParam) ?: return null 44 val project = dao.findProjectByNode(pathParam) ?: return null
45 45
52 components, 52 components,
53 dao.collectIssueSummary(project) 53 dao.collectIssueSummary(project)
54 ) 54 )
55 } 55 }
56 56
57 fun withPathInfo(http: HttpRequest, dao: DataAccessObject): PathInfos? { 57 fun withPathInfo(http: HttpRequest, dao: DataAccessObject): PathInfosFull? {
58 val projectInfo = obtainProjectInfo(http, dao) 58 val projectInfo = obtainProjectInfo(http, dao)
59 if (projectInfo == null) { 59 if (projectInfo == null) {
60 http.response.sendError(404) 60 http.response.sendError(404)
61 return null 61 return null
62 } 62 }
67 if (version == OptionalPathInfo.NotFound || component == OptionalPathInfo.NotFound) { 67 if (version == OptionalPathInfo.NotFound || component == OptionalPathInfo.NotFound) {
68 http.response.sendError(404) 68 http.response.sendError(404)
69 return null 69 return null
70 } 70 }
71 71
72 return PathInfos(projectInfo, version, component) 72 return PathInfosFull(projectInfo, version, component)
73 } 73 }

mercurial