package org.halvors.electrometrics.common.updater;
import cpw.mods.fml.common.versioning.ArtifactVersion;
public class ModVersion implements ArtifactVersion {
private final String label;
private final ReleaseVersion minecraftVersion;
private final ReleaseVersion modVersion;
private final String description;
public ModVersion(String label, ReleaseVersion minecraftVersion, ReleaseVersion modVersion, String description) {
this.label = label;
this.minecraftVersion = minecraftVersion;
this.modVersion = modVersion;
this.description = description;
}
public ModVersion(String label, String s) {
String[] parts = s.split(" ", 2);
String description = null;
if (parts.length > 1) {
description = parts[1].trim();
}
parts = parts[0].split("-", 2);
this.label = label;
this.minecraftVersion = new ReleaseVersion("Minecraft", parts[0]);
this.modVersion = new ReleaseVersion(label, parts[1]);
this.description = description;
}
public static ModVersion parse(String label, String s) {
if (s == null || s.length() == 0) {
return null;
}
return new ModVersion(label, s);
}
@Override
public int compareTo(ArtifactVersion artifactVersion) {
if (artifactVersion instanceof ModVersion) {
return compareTo((ModVersion) artifactVersion);
}
if (artifactVersion instanceof ReleaseVersion) {
ReleaseVersion releaseVersion = (ReleaseVersion) artifactVersion;
if (label.equals(releaseVersion.getLabel())) {
return modVersion.compareTo(releaseVersion);
} else if ("Minecraft".equals(releaseVersion.getLabel())) {
return minecraftVersion.compareTo(releaseVersion);
}
}
return 0;
}
public int compareTo(ModVersion modVersion) {
if (minecraftVersion.compareTo(modVersion.getMinecraftVersion()) != 0) {
return minecraftVersion.compareTo(modVersion.getMinecraftVersion());
}
return this.modVersion.compareTo(modVersion.getModVersion());
}
@Override
public String getLabel() {
return label;
}
@Override
public String getVersionString() {
return minecraftVersion.getVersionString() + "-" + modVersion.getVersionString();
}
@Override
public boolean containsVersion(ArtifactVersion artifactVersion) {
return compareTo(artifactVersion) == 0;
}
@Override
public String getRangeString() {
return null;
}
@Override
public String toString() {
return modVersion.toString() + " for " + minecraftVersion.toString();
}
public ReleaseVersion getMinecraftVersion() {
return minecraftVersion;
}
public ReleaseVersion getModVersion() {
return modVersion;
}
public String getDescription() {
return description;
}
}