package com.narrowtux.fmm.model;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Version implements Comparable<Version> {
public static final Pattern VERSION_PATTERN = Pattern.compile("([0-9]+)\\.([0-9]+)\\.([0-9]+)");
private int major;
private int minor;
private int build;
public Version(int major, int minor, int build) {
this.major = major;
this.minor = minor;
this.build = build;
}
public int getMajor() {
return major;
}
public int getMinor() {
return minor;
}
public int getBuild() {
return build;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Version version = (Version) o;
if (major != version.major) return false;
if (minor != version.minor) return false;
return build == version.build;
}
@Override
public int hashCode() {
int result = major;
result = 31 * result + minor;
result = 31 * result + build;
return result;
}
public static Version valueOf(String version) {
Matcher matcher = VERSION_PATTERN.matcher(version);
if (matcher.matches()) {
return new Version(Integer.valueOf(matcher.group(1)), Integer.valueOf(matcher.group(2)), Integer.valueOf(matcher.group(3)));
}
return null;
}
@Override
public String toString() {
return "" + major + '.' + minor + '.' + build;
}
@Override
public int compareTo(Version o) {
if (this.major == o.major) {
if (this.minor == o.minor) {
return Integer.compare(this.build, o.build);
} else {
return Integer.compare(this.minor, o.minor);
}
} else {
return Integer.compare(this.major, o.major);
}
}
}