ProjectAres/API/api/src/main/java/tc/oc/api/docs/SemanticVersion.java

83 lines
2.2 KiB
Java

package tc.oc.api.docs;
public class SemanticVersion {
protected final int major;
protected final int minor;
protected final int patch;
public SemanticVersion(int major, int minor, int patch) {
this.major = major;
this.minor = minor;
this.patch = patch;
}
public int major() {
return this.major;
}
public int minor() {
return this.minor;
}
public int patch() {
return this.patch;
}
@Override
public String toString() {
if(patch == 0) {
return major + "." + minor;
} else {
return major + "." + minor + "." + patch;
}
}
/**
* Return true if the major versions match and the minor version
* and patch levels are less or equal to the given version
*/
public boolean isNoNewerThan(SemanticVersion spec) {
return this.major == spec.major &&
(this.minor < spec.minor ||
(this.minor == spec.minor &&
this.patch <= spec.patch));
}
/**
* Return true if the major versions match and the minor version
* and patch levels are greater than the given version
*/
public boolean isNewerThan(SemanticVersion spec) {
return this.major == spec.major &&
(this.minor > spec.minor ||
(this.minor == spec.minor &&
this.patch > spec.patch));
}
/**
* Return true if the major versions match and the minor version
* and patch levels are greater or equal to the given version
*/
public boolean isNoOlderThan(SemanticVersion spec) {
return this.major == spec.major &&
(this.minor > spec.minor ||
(this.minor == spec.minor &&
this.patch >= spec.patch));
}
/**
* Return true if the major versions match and the minor version
* and patch levels are less than the given version
*/
public boolean isOlderThan(SemanticVersion spec) {
return this.major == spec.major &&
(this.minor < spec.minor ||
(this.minor == spec.minor &&
this.patch < spec.patch));
}
public int[] toArray() {
return new int[] {major, minor, patch};
}
}