mirror of
https://github.com/essentials/Essentials.git
synced 2025-10-03 17:41:57 +02:00
EssentialsUpdate WIP
This commit is contained in:
173
EssentialsUpdate/src/com/earth2me/essentials/update/Version.java
Normal file
173
EssentialsUpdate/src/com/earth2me/essentials/update/Version.java
Normal file
@@ -0,0 +1,173 @@
|
||||
package com.earth2me.essentials.update;
|
||||
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
|
||||
public class Version implements Comparable<Version>
|
||||
{
|
||||
public enum Type
|
||||
{
|
||||
STABLE, PREVIEW, DEVELOPER
|
||||
}
|
||||
|
||||
public int getMajor()
|
||||
{
|
||||
return major;
|
||||
}
|
||||
|
||||
public int getMinor()
|
||||
{
|
||||
return minor;
|
||||
}
|
||||
|
||||
public int getBuild()
|
||||
{
|
||||
return build;
|
||||
}
|
||||
|
||||
public Type getType()
|
||||
{
|
||||
return type;
|
||||
}
|
||||
private final transient int major;
|
||||
private final transient int minor;
|
||||
private final transient int build;
|
||||
private final transient Type type;
|
||||
|
||||
public Version(final String versionString)
|
||||
{
|
||||
final Matcher matcher = Pattern.compile("(Pre|Dev)?([0-9]+)[_\\.]([0-9]+)[_\\.]([0-9]+).*").matcher(versionString);
|
||||
if (!matcher.matches() || matcher.groupCount() < 4)
|
||||
{
|
||||
type = Type.DEVELOPER;
|
||||
major = 99;
|
||||
minor = build = 0;
|
||||
return;
|
||||
}
|
||||
if (versionString.startsWith("Pre"))
|
||||
{
|
||||
type = Type.PREVIEW;
|
||||
}
|
||||
else if (versionString.startsWith("Dev"))
|
||||
{
|
||||
type = Type.DEVELOPER;
|
||||
}
|
||||
else
|
||||
{
|
||||
type = Type.STABLE;
|
||||
}
|
||||
major = Integer.parseInt(matcher.group(2));
|
||||
minor = Integer.parseInt(matcher.group(3));
|
||||
build = Integer.parseInt(matcher.group(4));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compareTo(final Version other)
|
||||
{
|
||||
int ret = 0;
|
||||
if (other.getType() == Type.DEVELOPER && getType() != Type.DEVELOPER)
|
||||
{
|
||||
ret = -1;
|
||||
}
|
||||
else if (getType() == Type.DEVELOPER && other.getType() != Type.DEVELOPER)
|
||||
{
|
||||
ret = 1;
|
||||
}
|
||||
else if (other.getMajor() > getMajor())
|
||||
{
|
||||
ret = -1;
|
||||
}
|
||||
else if (getMajor() > other.getMajor())
|
||||
{
|
||||
ret = 1;
|
||||
}
|
||||
else if (other.getMinor() > getMinor())
|
||||
{
|
||||
ret = -1;
|
||||
}
|
||||
else if (getMinor() > other.getMinor())
|
||||
{
|
||||
ret = 1;
|
||||
}
|
||||
else if (other.getBuild() > getBuild())
|
||||
{
|
||||
ret = -1;
|
||||
}
|
||||
else if (getBuild() > other.getBuild())
|
||||
{
|
||||
ret = 1;
|
||||
}
|
||||
else if (other.getType() == Type.STABLE && getType() == Type.PREVIEW)
|
||||
{
|
||||
ret = -1;
|
||||
}
|
||||
else if (getType() == Type.STABLE && other.getType() == Type.PREVIEW)
|
||||
{
|
||||
ret = 1;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(final Object obj)
|
||||
{
|
||||
if (obj == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (getClass() != obj.getClass())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
final Version other = (Version)obj;
|
||||
if (this.major != other.major)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (this.minor != other.minor)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (this.build != other.build)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (this.type != other.type)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode()
|
||||
{
|
||||
int hash = 5;
|
||||
hash = 71 * hash + this.major;
|
||||
hash = 71 * hash + this.minor;
|
||||
hash = 71 * hash + this.build;
|
||||
hash = 71 * hash + (this.type != null ? this.type.hashCode() : 0);
|
||||
return hash;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
final StringBuilder builder = new StringBuilder();
|
||||
if (type == Type.DEVELOPER)
|
||||
{
|
||||
builder.append("Dev");
|
||||
}
|
||||
if (type == Type.PREVIEW)
|
||||
{
|
||||
builder.append("Pre");
|
||||
}
|
||||
builder.append(major);
|
||||
builder.append('.');
|
||||
builder.append(minor);
|
||||
builder.append('.');
|
||||
builder.append(build);
|
||||
return builder.toString();
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user