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

changeset 284
671c1c8fbf1c
parent 271
f8f5e82944fa
child 292
703591e739f4
equal deleted inserted replaced
283:ea6181255423 284:671c1c8fbf1c
44 get("/%project", this::project) 44 get("/%project", this::project)
45 get("/%project/issues/%version/%component/", this::project) 45 get("/%project/issues/%version/%component/", this::project)
46 get("/%project/edit", this::projectForm) 46 get("/%project/edit", this::projectForm)
47 get("/-/create", this::projectForm) 47 get("/-/create", this::projectForm)
48 post("/-/commit", this::projectCommit) 48 post("/-/commit", this::projectCommit)
49 post("/%project/vcs/analyze", this::vcsAnalyze)
49 50
50 get("/%project/versions/", this::versions) 51 get("/%project/versions/", this::versions)
51 get("/%project/versions/%version/edit", this::versionForm) 52 get("/%project/versions/%version/edit", this::versionForm)
52 get("/%project/versions/-/create", this::versionForm) 53 get("/%project/versions/-/create", this::versionForm)
53 post("/%project/versions/-/commit", this::versionCommit) 54 post("/%project/versions/-/commit", this::versionCommit)
241 name = http.param("name") ?: "" 242 name = http.param("name") ?: ""
242 node = http.param("node") ?: "" 243 node = http.param("node") ?: ""
243 description = http.param("description") ?: "" 244 description = http.param("description") ?: ""
244 ordinal = http.param("ordinal")?.toIntOrNull() ?: 0 245 ordinal = http.param("ordinal")?.toIntOrNull() ?: 0
245 repoUrl = http.param("repoUrl") ?: "" 246 repoUrl = http.param("repoUrl") ?: ""
247 vcs = VcsType.valueOf(http.param("vcs") ?: "None")
246 owner = (http.param("owner")?.toIntOrNull() ?: -1).let { 248 owner = (http.param("owner")?.toIntOrNull() ?: -1).let {
247 if (it < 0) null else dao.findUser(it) 249 if (it < 0) null else dao.findUser(it)
248 } 250 }
249 // intentional defaults 251 // intentional defaults
250 if (node.isBlank()) node = name 252 if (node.isBlank()) node = name
257 } else { 259 } else {
258 dao.updateProject(project) 260 dao.updateProject(project)
259 } 261 }
260 262
261 http.renderCommit("projects/${project.node}") 263 http.renderCommit("projects/${project.node}")
264 }
265
266 private fun vcsAnalyze(http: HttpRequest, dao: DataAccessObject) {
267 val projectInfo = obtainProjectInfo(http, dao)
268 if (projectInfo == null) {
269 http.response.sendError(404)
270 return
271 }
272
273 // if analysis is not configured, reject the request
274 if (projectInfo.project.vcs == VcsType.None) {
275 http.response.sendError(404)
276 return
277 }
278
279 // obtain the list of issues for this project to filter cross-project references
280 val knownIds = dao.listIssues(projectInfo.project, true).map { it.id }
281
282 // read the provided commit log and merge only the refs that relate issues from the current project
283 dao.mergeCommitRefs(parseCommitRefs(http.body).filter { knownIds.contains(it.issueId) })
262 } 284 }
263 285
264 private fun versions(http: HttpRequest, dao: DataAccessObject) { 286 private fun versions(http: HttpRequest, dao: DataAccessObject) {
265 val projectInfo = obtainProjectInfo(http, dao) 287 val projectInfo = obtainProjectInfo(http, dao)
266 if (projectInfo == null) { 288 if (projectInfo == null) {
473 project, 495 project,
474 version, 496 version,
475 component, 497 component,
476 dao.listIssues(project, true), 498 dao.listIssues(project, true),
477 dao.listIssueRelations(issue), 499 dao.listIssueRelations(issue),
478 relationError 500 relationError,
501 dao.listCommitRefs(issue)
479 ) 502 )
480 feedPath = feedPath(projectInfo.project) 503 feedPath = feedPath(projectInfo.project)
481 navigationMenu = activeProjectNavMenu( 504 navigationMenu = activeProjectNavMenu(
482 dao.listProjects(), 505 dao.listProjects(),
483 projectInfo, 506 projectInfo,

mercurial