26 package de.uapcore.lightpit.servlet |
26 package de.uapcore.lightpit.servlet |
27 |
27 |
28 import de.uapcore.lightpit.AbstractServlet |
28 import de.uapcore.lightpit.AbstractServlet |
29 import de.uapcore.lightpit.HttpRequest |
29 import de.uapcore.lightpit.HttpRequest |
30 import de.uapcore.lightpit.dao.DataAccessObject |
30 import de.uapcore.lightpit.dao.DataAccessObject |
|
31 import de.uapcore.lightpit.dateOptValidator |
31 import de.uapcore.lightpit.entities.* |
32 import de.uapcore.lightpit.entities.* |
32 import de.uapcore.lightpit.types.IssueCategory |
33 import de.uapcore.lightpit.types.IssueCategory |
33 import de.uapcore.lightpit.types.IssueStatus |
34 import de.uapcore.lightpit.types.IssueStatus |
34 import de.uapcore.lightpit.types.VersionStatus |
35 import de.uapcore.lightpit.types.VersionStatus |
35 import de.uapcore.lightpit.types.WebColor |
36 import de.uapcore.lightpit.types.WebColor |
327 val version = Version(id, project.id).apply { |
328 val version = Version(id, project.id).apply { |
328 name = http.param("name") ?: "" |
329 name = http.param("name") ?: "" |
329 node = http.param("node") ?: "" |
330 node = http.param("node") ?: "" |
330 ordinal = http.param("ordinal")?.toIntOrNull() ?: 0 |
331 ordinal = http.param("ordinal")?.toIntOrNull() ?: 0 |
331 status = http.param("status")?.let(VersionStatus::valueOf) ?: VersionStatus.Future |
332 status = http.param("status")?.let(VersionStatus::valueOf) ?: VersionStatus.Future |
|
333 // TODO: process error messages |
|
334 eol = http.param("eol", ::dateOptValidator, null, mutableListOf()) |
|
335 release = http.param("release", ::dateOptValidator, null, mutableListOf()) |
332 // intentional defaults |
336 // intentional defaults |
333 if (node.isBlank()) node = name |
337 if (node.isBlank()) node = name |
334 // sanitizing |
338 // sanitizing |
335 node = sanitizeNode(node) |
339 node = sanitizeNode(node) |
|
340 } |
|
341 |
|
342 // sanitize eol and release date |
|
343 if (version.status.isEndOfLife) { |
|
344 if (version.eol == null) version.eol = Date(System.currentTimeMillis()) |
|
345 } else if (version.status.isReleased) { |
|
346 if (version.release == null) version.release = Date(System.currentTimeMillis()) |
336 } |
347 } |
337 |
348 |
338 if (id < 0) { |
349 if (id < 0) { |
339 dao.insertVersion(version) |
350 dao.insertVersion(version) |
340 } else { |
351 } else { |
546 -1 -> null |
557 -1 -> null |
547 -2 -> component?.lead |
558 -2 -> component?.lead |
548 else -> dao.findUser(it) |
559 else -> dao.findUser(it) |
549 } |
560 } |
550 } |
561 } |
551 eta = http.param("eta")?.let { if (it.isBlank()) null else Date.valueOf(it) } |
562 // TODO: process error messages |
|
563 eta = http.param("eta", ::dateOptValidator, null, mutableListOf()) |
552 |
564 |
553 affectedVersions = http.paramArray("affected") |
565 affectedVersions = http.paramArray("affected") |
554 .mapNotNull { param -> param.toIntOrNull()?.let { Version(it, project.id) } } |
566 .mapNotNull { param -> param.toIntOrNull()?.let { Version(it, project.id) } } |
555 resolvedVersions = http.paramArray("resolved") |
567 resolvedVersions = http.paramArray("resolved") |
556 .mapNotNull { param -> param.toIntOrNull()?.let { Version(it, project.id) } } |
568 .mapNotNull { param -> param.toIntOrNull()?.let { Version(it, project.id) } } |