package org.halvors.electrometrics.common.updater;
import cpw.mods.fml.common.versioning.ArtifactVersion;
public class ReleaseVersion implements ArtifactVersion {
private final String label;
private final int major;
private final int minor;
private final int patch;
public ReleaseVersion(String label, int major, int minor, int patch) {
this.label = label;
this.major = major;
this.minor = minor;
this.patch = patch;
}
public ReleaseVersion(String label, String s) {
int major = 0;
int minor = 0;
int patch = 0;
String[] parts = s.split("\\.");
switch (parts.length) {
case 3:
patch = Integer.parseInt(parts[2]);
case 2:
minor = Integer.parseInt(parts[1]);
case 1:
major = Integer.parseInt(parts[0]);
}
this.label = label;
this.major = major;
this.minor = minor;
this.patch = patch;
}
public static ReleaseVersion parse(String label, String s) {
return new ReleaseVersion(label, s);
}
@Override
public int compareTo(ArtifactVersion artifactVersion) {
if (artifactVersion instanceof ReleaseVersion) {
return compareTo((ReleaseVersion) artifactVersion);
}
if (artifactVersion instanceof ModVersion) {
ModVersion modVersion = (ModVersion) artifactVersion;
if (label.equals(modVersion.getLabel())) {
return compareTo(modVersion.getModVersion());
} else if (label.equals("Minecraft")) {
return compareTo(modVersion.getMinecraftVersion());
}
}
return 0;
}
public int compareTo(ReleaseVersion releaseVersion) {
if (major != releaseVersion.getMajor()) {
return major < releaseVersion.getMajor() ? -1 : 1;
}
if (minor != releaseVersion.getMinor()) {
return minor < releaseVersion.getMinor() ? -1 : 1;
}
if (patch != releaseVersion.getPatch()) {
return patch < releaseVersion.getPatch() ? -1 : 1;
}
return 0;
}
@Override
public String getLabel() {
return label;
}
@Override
public String getVersionString() {
return major + "." + minor + "." + patch;
}
@Override
public boolean containsVersion(ArtifactVersion artifactVersion) {
return compareTo(artifactVersion) == 0;
}
@Override
public String getRangeString() {
return null;
}
@Override
public String toString() {
return label + " " + getVersionString();
}
public int getMajor() {
return major;
}
public int getMinor() {
return minor;
}
public int getPatch() {
return patch;
}
}