/* This file is part of Libresonic. Libresonic is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Libresonic is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Libresonic. If not, see <http://www.gnu.org/licenses/>. Copyright 2016 (C) Libresonic Authors Based upon Subsonic, Copyright 2009 (C) Sindre Mehus */ package org.libresonic.player.domain; import org.apache.commons.lang3.StringUtils; import org.apache.maven.artifact.Artifact; import org.apache.maven.artifact.versioning.DefaultArtifactVersion; /** * Represents the version number of Libresonic. * * @author Sindre Mehus * @version $Revision: 1.3 $ $Date: 2006/01/20 21:25:16 $ */ public class Version implements Comparable<Version> { private final DefaultArtifactVersion internalVersion; /** * Creates a new version instance by parsing the given string. * @param version A string of the format "1.27", "1.27.2" or "1.27.beta3". */ public Version(String version) { this.internalVersion = new DefaultArtifactVersion(version); } public int getMajor() { return internalVersion.getMajorVersion(); } public int getMinor() { return internalVersion.getMinorVersion(); } /** * Return whether this object is equal to another. * @param o Object to compare to. * @return Whether this object is equals to another. */ public boolean equals(Object o) { if(o instanceof Version) { return internalVersion.equals(((Version)o).internalVersion); } else { return false; } } /** * Returns a hash code for this object. * @return A hash code for this object. */ public int hashCode() { return internalVersion.hashCode(); } /** * Returns a string representation of the form "1.27", "1.27.2" or "1.27.beta3". * @return A string representation of the form "1.27", "1.27.2" or "1.27.beta3". */ public String toString() { return internalVersion.toString(); } /** * Compares this object with the specified object for order. * @param version The object to compare to. * @return A negative integer, zero, or a positive integer as this object is less than, equal to, or * greater than the specified object. */ public int compareTo(Version version) { return internalVersion.compareTo(version.internalVersion); } public boolean isPreview() { return StringUtils.isNotBlank(internalVersion.getQualifier()) && !StringUtils.equalsIgnoreCase(internalVersion.getQualifier(), Artifact.RELEASE_VERSION); } }