src/main/kotlin/de/uapcore/lightpit/entities/Issue.kt

changeset 167
3f30adba1c63
parent 150
822b7e3d064d
child 180
009700915269
--- a/src/main/kotlin/de/uapcore/lightpit/entities/Issue.kt	Sun Dec 20 11:06:25 2020 +0100
+++ b/src/main/kotlin/de/uapcore/lightpit/entities/Issue.kt	Mon Dec 21 18:29:34 2020 +0100
@@ -25,81 +25,32 @@
 
 package de.uapcore.lightpit.entities
 
+import de.uapcore.lightpit.types.IssueCategory
+import de.uapcore.lightpit.types.IssueStatus
+import de.uapcore.lightpit.types.IssueStatusPhase
 import java.sql.Date
 import java.sql.Timestamp
 import java.time.Instant
-import kotlin.math.roundToInt
 
-data class IssueStatusPhase(val number: Int) {
-    companion object {
-        val Open = IssueStatusPhase(0)
-        val WorkInProgress = IssueStatusPhase(1)
-        val Done = IssueStatusPhase(2)
-    }
-}
-
-enum class IssueStatus(val phase: IssueStatusPhase) {
-    InSpecification(IssueStatusPhase.Open),
-    ToDo(IssueStatusPhase.Open),
-    Scheduled(IssueStatusPhase.Open),
-    InProgress(IssueStatusPhase.WorkInProgress),
-    InReview(IssueStatusPhase.WorkInProgress),
-    Done(IssueStatusPhase.Done),
-    Rejected(IssueStatusPhase.Done),
-    Withdrawn(IssueStatusPhase.Done),
-    Duplicate(IssueStatusPhase.Done);
-}
-
-enum class IssueCategory {
-    Feature, Improvement, Bug, Task, Test
-}
-
-data class Issue(var id: Int) {
-
-    var project: Project? = null
-    var component: Component? = null
+data class Issue(override var id: Int, var project: Project, var component: Component? = null) : Entity {
 
     var status = IssueStatus.InSpecification
     var category = IssueCategory.Feature
 
-    var subject: String? = null
+    var subject: String = ""
     var description: String? = null
     var assignee: User? = null
 
-    var affectedVersions = emptyList<Version>()
-    var resolvedVersions = emptyList<Version>()
-
     var created: Timestamp = Timestamp.from(Instant.now())
     var updated: Timestamp = Timestamp.from(Instant.now())
     var eta: Date? = null
 
+    var affectedVersions = emptyList<Version>()
+    var resolvedVersions = emptyList<Version>()
+
     /**
      * An issue is overdue, if it is not done and the ETA is before the current time.
      */
     val overdue get() = status.phase != IssueStatusPhase.Done && eta?.before(Date(System.currentTimeMillis())) ?: false
 }
 
-class IssueSummary {
-    var open = 0
-    var active = 0
-    var done = 0
-
-    val total get() = open + active + done
-
-    val openPercent get() = 100 - activePercent - donePercent
-    val activePercent get() = if (total > 0) (100f * active / total).roundToInt() else 0
-    val donePercent get() = if (total > 0) (100f * done / total).roundToInt() else 100
-
-    /**
-     * Adds the specified issue to the summary by incrementing the respective counter.
-     * @param issue the issue
-     */
-    fun add(issue: Issue) {
-        when (issue.status.phase) {
-            IssueStatusPhase.Open -> open++
-            IssueStatusPhase.WorkInProgress -> active++
-            IssueStatusPhase.Done -> done++
-        }
-    }
-}
-

mercurial