Expand Up
@@ -24,18 +24,19 @@ public class Version implements Comparable<Version> {
public final static Version V3_0_2 = new Version("3.0.2", 3, 0, 2, null, true);
public final static Version V3_0_3 = new Version("3.0.3", 3, 0, 3, null, true);
public final static Version V3_0_4 = new Version("3.0.4", 3, 0, 4, null, true);
public final static Version V3_1_0 = new Version("3.1.0", 3, 1, 0, null, true);
public final static Version V3_1_1 = new Version("3.1.1", 3, 1, 1, null, true);
public final static Version V3_1_2 = new Version("3.1.2", 3, 1, 2, null, true);
public final static Version V3_1_3 = new Version("3.1.3", 3, 1, 3, null, true);
public final static Version V3_1_4 = new Version("3.1.4", 3, 1, 4, null, true);
public final static Version V3_1_5 = new Version("3.1.5", 3, 1, 5, null, true);
public final static Version V3_1_6 = new Version("3.1.6", 3, 1, 6, null, true);
public final static Version V3_1_7 = new Version("3.1.7", 3, 1, 7, null, true);
public final static Version V3_1_0 = new Version("3.1.0", 3, 1, 0, 1847, true);
public final static Version V3_1_1 = new Version("3.1.1", 3, 1, 1, 1865, true);
public final static Version V3_1_2 = new Version("3.1.2", 3, 1, 2, 2130, true);
public final static Version V3_1_3 = new Version("3.1.3", 3, 1, 3, 2398, true);
public final static Version V3_1_4 = new Version("3.1.4", 3, 1, 4, 2223, true);
public final static Version V3_1_5 = new Version("3.1.5", 3, 1, 5, 2707, true);
public final static Version V3_1_6 = new Version("3.1.6", 3, 1, 6, 2729, true);
public final static Version V3_1_7 = new Version("3.1.7", 3, 1, 7, 3085, true);
public final static Version V3_1_8 = new Version("3.1.8", 3, 1, 8, 3188, true);
private final static Map<String, Version> knownVersions =
Stream.of(V3_0_0, V3_0_1, V3_0_2, V3_0_3, V3_0_4, V3_1_0, V3_1_1, V3_1_2, V3_1_3, V3_1_4, V3_1_5, V3_1_6, V3_1_7)
Stream.of(V3_0_0, V3_0_1, V3_0_2, V3_0_3, V3_0_4, V3_1_0, V3_1_1, V3_1_2, V3_1_3, V3_1_4, V3_1_5, V3_1_6, V3_1_7, V3_1_8)
.collect(toMap(Version::toString, Function.identity()));
public final static Version LATEST = V3_1_7;
public final static Version LATEST = V3_1_8;
private final String origString;
private final Integer major;
Expand Down
Expand Up
@@ -167,10 +168,14 @@ public String getNormalizedString() {
}
private int compareToWithNulls(@Nullable Integer i1, @Nullable Integer i2) {
return compareToWithNulls(i1, i2, false);
}
private int compareToWithNulls(@Nullable Integer i1, @Nullable Integer i2, boolean nullMeansEqual) {
if (i1 == null && i2 == null) {
return 0;
} else if (i1 == null) {
return -1;
return nullMeansEqual ? 0 : -1;
} else if (i2 == null) {
return 1;
} else {
Expand All
@@ -180,26 +185,30 @@ private int compareToWithNulls(@Nullable Integer i1, @Nullable Integer i2) {
@Override
public int compareTo(Version o) {
return compareTo(o, false);
}
public int compareTo(Version o, boolean nullMeansEqual) {
int curResult;
if (isValid() && o.isValid()) {
curResult = compareToWithNulls(getMajor(), o.getMajor());
curResult = compareToWithNulls(getMajor(), o.getMajor(), nullMeansEqual);
if (curResult != 0) {
return curResult;
}
curResult = compareToWithNulls(getMinor(), o.getMinor());
curResult = compareToWithNulls(getMinor(), o.getMinor(), nullMeansEqual);
if (curResult != 0) {
return curResult;
}
curResult = compareToWithNulls(getBugfix(), o.getBugfix());
curResult = compareToWithNulls(getBugfix(), o.getBugfix(), nullMeansEqual);
if (curResult != 0) {
return curResult;
}
curResult = compareToWithNulls(getBuild(), o.getBuild());
curResult = compareToWithNulls(getBuild(), o.getBuild(), nullMeansEqual);
if (curResult != 0) {
return curResult;
}
Expand All
@@ -220,6 +229,7 @@ private void versionsAreValid(Version v) throws InvalidVersionException {
/**
* Compares this version to a given version and returns true if this version is greater or equal than the given one
* If one of the version parts of the base version is null, this level is assumed equal no matter the comparing level's version part
* Throws an InvalidVersionException if either this or the given version are invalid
*
* @param v Version to compare with
Expand All
@@ -230,7 +240,7 @@ public boolean isGreaterOrEqualThan(Version v) throws InvalidVersionException {
versionsAreValid(v);
return compareTo(v) >= 0;
return compareTo(v, true) >= 0;
}
Expand All
@@ -240,11 +250,20 @@ public boolean isGreaterThan(Version v) throws InvalidVersionException {
return compareTo(v) > 0;
}
/**
* Compares this version to a given version and returns true if this version is less or equal than the given one
* If one of the version parts of the base version is null, this level is assumed equal no matter the comparing level's version part
* Throws an InvalidVersionException if either this or the given version are invalid
*
* @param v Version to compare with
* @return
* @throws InvalidVersionException
*/
public boolean isLessOrEqualThan(Version v) throws InvalidVersionException {
versionsAreValid(v);
return compareTo(v) <= 0;
return compareTo(v, true) <= 0;
}
public boolean isLessThan(Version v) throws InvalidVersionException {
Expand Down