1.1 --- a/src/main/kotlin/de/uapcore/lightpit/util/Issues.kt Sat Jun 04 18:02:25 2022 +0200 1.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 1.3 @@ -1,70 +0,0 @@ 1.4 -/* 1.5 - * Copyright 2021 Mike Becker. All rights reserved. 1.6 - * 1.7 - * Redistribution and use in source and binary forms, with or without 1.8 - * modification, are permitted provided that the following conditions are met: 1.9 - * 1.10 - * 1. Redistributions of source code must retain the above copyright 1.11 - * notice, this list of conditions and the following disclaimer. 1.12 - * 1.13 - * 2. Redistributions in binary form must reproduce the above copyright 1.14 - * notice, this list of conditions and the following disclaimer in the 1.15 - * documentation and/or other materials provided with the distribution. 1.16 - * 1.17 - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 1.18 - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 1.19 - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 1.20 - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 1.21 - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 1.22 - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 1.23 - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 1.24 - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 1.25 - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 1.26 - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 1.27 - */ 1.28 - 1.29 -package de.uapcore.lightpit.util 1.30 - 1.31 -import de.uapcore.lightpit.entities.Issue 1.32 -import de.uapcore.lightpit.types.IssueStatusPhase 1.33 - 1.34 -data class IssueSorter(val criteria: List<Criteria>) : Comparator<Issue> { 1.35 - enum class Field { 1.36 - DONE, ETA, UPDATED 1.37 - } 1.38 - 1.39 - data class Criteria(val field: Field, val asc: Boolean = true) 1.40 - 1.41 - companion object { 1.42 - val DEFAULT_ISSUE_SORTER = IssueSorter(listOf( 1.43 - Criteria(Field.DONE), 1.44 - Criteria(Field.ETA), 1.45 - Criteria(Field.UPDATED, false) 1.46 - )) 1.47 - } 1.48 - 1.49 - override fun compare(left: Issue, right: Issue): Int { 1.50 - if (left == right) { 1.51 - return 0; 1.52 - } 1.53 - for (c in criteria) { 1.54 - val result = when (c.field) { 1.55 - Field.DONE -> (left.status.phase == IssueStatusPhase.Done).compareTo(right.status.phase == IssueStatusPhase.Done) 1.56 - Field.ETA -> { 1.57 - val l = left.eta 1.58 - val r = right.eta 1.59 - if (l == null && r == null) 0 1.60 - else if (l == null) 1 1.61 - else if (r == null) -1 1.62 - else l.compareTo(r) 1.63 - } 1.64 - Field.UPDATED -> left.updated.compareTo(right.updated) 1.65 - } 1.66 - if (result != 0) { 1.67 - return if (c.asc) result else -result 1.68 - } 1.69 - } 1.70 - return 0 1.71 - } 1.72 -} 1.73 -