Use more intelligent version parsing
Signed-off-by: Andrew DeMaria <lostonamountain@gmail.com>
This commit is contained in:
@@ -115,7 +115,7 @@ public class Logger {
|
||||
return true; // versionService not yet available.
|
||||
}
|
||||
Version localVersion = versionService.getLocalVersion();
|
||||
debugEnabled = localVersion == null || localVersion.getBeta() != 0;
|
||||
debugEnabled = localVersion == null || localVersion.isPreview();
|
||||
}
|
||||
return debugEnabled;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
return internalVersion.compareTo(version.internalVersion);
|
||||
}
|
||||
|
||||
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 0;
|
||||
public boolean isPreview() {
|
||||
return StringUtils.isNotBlank(internalVersion.getQualifier()) &&
|
||||
!StringUtils.equalsIgnoreCase(internalVersion.getQualifier(), Artifact.RELEASE_VERSION);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -47,6 +47,22 @@ public class VersionTestCase extends TestCase {
|
||||
doTestVersion("1.5.beta1", "1.6");
|
||||
doTestVersion("1.5.beta1", "1.5.beta2");
|
||||
doTestVersion("1.5.beta2", "1.5.beta11");
|
||||
|
||||
doTestVersion("6.2-SNAPSHOT", "6.11-SNAPSHOT");
|
||||
}
|
||||
|
||||
public void testIsPreview() {
|
||||
Version version = new Version("1.6.0-SNAPSHOT");
|
||||
assertTrue("Version should be snapshot", version.isPreview());
|
||||
|
||||
version = new Version("1.6.0-beta2");
|
||||
assertTrue("Version should be snapshot", version.isPreview());
|
||||
|
||||
version = new Version("1.6.0");
|
||||
assertFalse("Version should not be snapshot", version.isPreview());
|
||||
|
||||
version = new Version("1.6.0-RELEASE");
|
||||
assertFalse("Version should not be snapshot", version.isPreview());
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user