|
|
|
@ -19,6 +19,10 @@ |
|
|
|
|
*/ |
|
|
|
|
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. |
|
|
|
|
* |
|
|
|
@ -26,39 +30,22 @@ package org.libresonic.player.domain; |
|
|
|
|
* @version $Revision: 1.3 $ $Date: 2006/01/20 21:25:16 $ |
|
|
|
|
*/ |
|
|
|
|
public class Version implements Comparable<Version> { |
|
|
|
|
private int major; |
|
|
|
|
private int minor; |
|
|
|
|
private int beta; |
|
|
|
|
private int bugfix; |
|
|
|
|
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) { |
|
|
|
|
String[] s = version.split("\\."); |
|
|
|
|
major = Integer.valueOf(s[0]); |
|
|
|
|
minor = Integer.valueOf(s[1]); |
|
|
|
|
|
|
|
|
|
if (s.length > 2) { |
|
|
|
|
if (s[2].contains("beta")) { |
|
|
|
|
beta = Integer.valueOf(s[2].replace("beta", "")); |
|
|
|
|
} else { |
|
|
|
|
bugfix = Integer.valueOf(s[2]); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
this.internalVersion = new DefaultArtifactVersion(version); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public int getMajor() { |
|
|
|
|
return major; |
|
|
|
|
return internalVersion.getMajorVersion(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public int getMinor() { |
|
|
|
|
return minor; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public int getBeta() { |
|
|
|
|
return beta; |
|
|
|
|
return internalVersion.getMinorVersion(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -67,15 +54,11 @@ public class Version implements Comparable<Version> { |
|
|
|
|
* @return Whether this object is equals to another. |
|
|
|
|
*/ |
|
|
|
|
public boolean equals(Object o) { |
|
|
|
|
if (this == o) return true; |
|
|
|
|
if (o == null || getClass() != o.getClass()) return false; |
|
|
|
|
|
|
|
|
|
final Version version = (Version) o; |
|
|
|
|
|
|
|
|
|
if (beta != version.beta) return false; |
|
|
|
|
if (bugfix != version.bugfix) return false; |
|
|
|
|
if (major != version.major) return false; |
|
|
|
|
return minor == version.minor; |
|
|
|
|
if(o instanceof Version) { |
|
|
|
|
return internalVersion.equals(((Version)o).internalVersion); |
|
|
|
|
} else { |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -83,12 +66,7 @@ public class Version implements Comparable<Version> { |
|
|
|
|
* @return A hash code for this object. |
|
|
|
|
*/ |
|
|
|
|
public int hashCode() { |
|
|
|
|
int result; |
|
|
|
|
result = major; |
|
|
|
|
result = 29 * result + minor; |
|
|
|
|
result = 29 * result + beta; |
|
|
|
|
result = 29 * result + bugfix; |
|
|
|
|
return result; |
|
|
|
|
return internalVersion.hashCode(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -96,15 +74,7 @@ public class Version implements Comparable<Version> { |
|
|
|
|
* @return A string representation of the form "1.27", "1.27.2" or "1.27.beta3". |
|
|
|
|
*/ |
|
|
|
|
public String toString() { |
|
|
|
|
StringBuffer buf = new StringBuffer(); |
|
|
|
|
buf.append(major).append('.').append(minor); |
|
|
|
|
if (beta != 0) { |
|
|
|
|
buf.append(".beta").append(beta); |
|
|
|
|
} else if (bugfix != 0) { |
|
|
|
|
buf.append('.').append(bugfix); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return buf.toString(); |
|
|
|
|
return internalVersion.toString(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -114,33 +84,11 @@ public class Version implements Comparable<Version> { |
|
|
|
|
* greater than the specified object. |
|
|
|
|
*/ |
|
|
|
|
public int compareTo(Version version) { |
|
|
|
|
if (major < version.major) { |
|
|
|
|
return -1; |
|
|
|
|
} else if (major > version.major) { |
|
|
|
|
return 1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (minor < version.minor) { |
|
|
|
|
return -1; |
|
|
|
|
} else if (minor > version.minor) { |
|
|
|
|
return 1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (bugfix < version.bugfix) { |
|
|
|
|
return -1; |
|
|
|
|
} else if (bugfix > version.bugfix) { |
|
|
|
|
return 1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
int thisBeta = beta == 0 ? Integer.MAX_VALUE : beta; |
|
|
|
|
int otherBeta = version.beta == 0 ? Integer.MAX_VALUE : version.beta; |
|
|
|
|
|
|
|
|
|
if (thisBeta < otherBeta) { |
|
|
|
|
return -1; |
|
|
|
|
} else if (thisBeta > otherBeta) { |
|
|
|
|
return 1; |
|
|
|
|
} |
|
|
|
|
return internalVersion.compareTo(version.internalVersion); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return 0; |
|
|
|
|
public boolean isPreview() { |
|
|
|
|
return StringUtils.isNotBlank(internalVersion.getQualifier()) && |
|
|
|
|
!StringUtils.equalsIgnoreCase(internalVersion.getQualifier(), Artifact.RELEASE_VERSION); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|