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

changeset 267
d8ec2d8ffa82
parent 265
6a21bb926e02
child 268
ca5501d851fa
equal deleted inserted replaced
266:65c72e65ff67 267:d8ec2d8ffa82
35 import de.uapcore.lightpit.types.* 35 import de.uapcore.lightpit.types.*
36 import kotlin.math.roundToInt 36 import kotlin.math.roundToInt
37 37
38 class IssueSorter(private vararg val criteria: Criteria) : Comparator<Issue> { 38 class IssueSorter(private vararg val criteria: Criteria) : Comparator<Issue> {
39 enum class Field { 39 enum class Field {
40 STATUS, CATEGORY, ETA, UPDATED, CREATED 40 DONE, PHASE, STATUS, CATEGORY, ETA, UPDATED, CREATED
41 } 41 }
42 42
43 data class Criteria(val field: Field, val asc: Boolean = true) 43 data class Criteria(val field: Field, val asc: Boolean = true)
44 44
45 override fun compare(left: Issue, right: Issue): Int { 45 override fun compare(left: Issue, right: Issue): Int {
46 if (left == right) { 46 if (left == right) {
47 return 0 47 return 0
48 } 48 }
49 for (c in criteria) { 49 for (c in criteria) {
50 val result = when (c.field) { 50 val result = when (c.field) {
51 Field.PHASE -> left.status.phase.compareTo(right.status.phase)
52 Field.DONE -> (left.status.phase == IssueStatusPhase.Done).compareTo(right.status.phase == IssueStatusPhase.Done)
51 Field.STATUS -> left.status.compareTo(right.status) 53 Field.STATUS -> left.status.compareTo(right.status)
52 Field.CATEGORY -> left.category.compareTo(right.category) 54 Field.CATEGORY -> left.category.compareTo(right.category)
53 Field.ETA -> left.compareEtaTo(right.eta) 55 Field.ETA -> left.compareEtaTo(right.eta)
54 Field.UPDATED -> left.updated.compareTo(right.updated) 56 Field.UPDATED -> left.updated.compareTo(right.updated)
55 Field.CREATED -> left.created.compareTo(right.created) 57 Field.CREATED -> left.created.compareTo(right.created)

mercurial