universe@150: /* universe@180: * Copyright 2021 Mike Becker. All rights reserved. universe@150: * universe@150: * Redistribution and use in source and binary forms, with or without universe@150: * modification, are permitted provided that the following conditions are met: universe@150: * universe@150: * 1. Redistributions of source code must retain the above copyright universe@150: * notice, this list of conditions and the following disclaimer. universe@150: * universe@150: * 2. Redistributions in binary form must reproduce the above copyright universe@150: * notice, this list of conditions and the following disclaimer in the universe@150: * documentation and/or other materials provided with the distribution. universe@150: * universe@150: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" universe@150: * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE universe@150: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE universe@150: * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE universe@150: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL universe@150: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR universe@150: * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER universe@150: * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, universe@150: * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE universe@150: * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. universe@150: */ universe@150: universe@150: package de.uapcore.lightpit.entities universe@150: universe@167: import de.uapcore.lightpit.types.VersionStatus universe@225: import java.sql.Date universe@150: universe@184: data class Version(override val id: Int, val projectid: Int) : Entity, HasNode, Comparable { universe@152: var name: String = "" universe@184: override var node = name universe@150: var ordinal = 0 universe@150: var status = VersionStatus.Future universe@225: var release: Date? = null universe@225: var eol: Date? = null universe@225: universe@225: /** universe@225: * If this version is deprecated, this gives the [eol] date, otherwise this gives the [release] date. universe@225: * Note that a [release] date may be specified for the actual release in which case in should be universe@225: * understood as the planned release date. universe@225: */ universe@225: val releaseOrEolDate: Date? get() = if (status.isEndOfLife) eol else release universe@150: universe@150: override fun compareTo(other: Version): Int { universe@152: val ord = ordinal.compareTo(other.ordinal) universe@150: return if (ord == 0) { universe@150: name.compareTo(other.name, ignoreCase = true) universe@150: } else { universe@150: ord universe@150: } universe@150: } universe@150: }