38 import de.uapcore.lightpit.types.VersionStatus |
38 import de.uapcore.lightpit.types.VersionStatus |
39 import kotlin.math.roundToInt |
39 import kotlin.math.roundToInt |
40 |
40 |
41 class IssueSorter(private vararg val criteria: Criteria) : Comparator<Issue> { |
41 class IssueSorter(private vararg val criteria: Criteria) : Comparator<Issue> { |
42 enum class Field { |
42 enum class Field { |
43 DONE, ETA, UPDATED |
43 PHASE, ETA, UPDATED |
44 } |
44 } |
45 |
45 |
46 data class Criteria(val field: Field, val asc: Boolean = true) |
46 data class Criteria(val field: Field, val asc: Boolean = true) |
47 |
47 |
48 override fun compare(left: Issue, right: Issue): Int { |
48 override fun compare(left: Issue, right: Issue): Int { |
49 if (left == right) { |
49 if (left == right) { |
50 return 0; |
50 return 0; |
51 } |
51 } |
52 for (c in criteria) { |
52 for (c in criteria) { |
53 val result = when (c.field) { |
53 val result = when (c.field) { |
54 Field.DONE -> (left.status.phase == IssueStatusPhase.Done).compareTo(right.status.phase == IssueStatusPhase.Done) |
54 Field.PHASE -> left.status.phase.compareTo(right.status.phase) |
55 Field.ETA -> { |
55 Field.ETA -> { |
56 val l = left.eta |
56 val l = left.eta |
57 val r = right.eta |
57 val r = right.eta |
58 if (l == null && r == null) 0 |
58 if (l == null && r == null) 0 |
59 else if (l == null) 1 |
59 else if (l == null) 1 |