X-Git-Url: http://git.nikiroo.be/?p=nikiroo-utils.git;a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Futils%2FVersion.java;h=94387373e980daf30b3ca4de01cfa72e490a0307;hp=613fcfe54130ef04d4df068091d7e52a26879002;hb=c108bc7d77819d071717115614d7b2e0c8bcef25;hpb=c37cc6902542f0b790d7b9c999447bf81a9e9837 diff --git a/src/be/nikiroo/utils/Version.java b/src/be/nikiroo/utils/Version.java index 613fcfe..9438737 100644 --- a/src/be/nikiroo/utils/Version.java +++ b/src/be/nikiroo/utils/Version.java @@ -9,12 +9,19 @@ import java.io.InputStream; * * @author niki */ -public class Version { +public class Version implements Comparable { private String version; private int major; private int minor; private int patch; + /** + * Create a new, empty {@link Version}. + * + */ + public Version() { + } + /** * Create a new {@link Version} with the given values. * @@ -96,12 +103,46 @@ public class Version { *

* An empty {@link Version} is always 0.0.0. * - * @return TRUS if it is empty + * @return TRUE if it is empty */ public boolean isEmpty() { return major == 0 && minor == 0 && patch == 0; } + /** + * Check if we are more recent than the given {@link Version}. + * + * @param o + * the other {@link Version} + * @return TRUE if this {@link Version} is more recent than the given one + */ + public boolean isNewerThan(Version o) { + if (major > o.major) { + return true; + } + + if (major == o.major && minor > o.minor) { + return true; + } + + if (major == o.major && minor == o.minor && patch > o.patch) { + return true; + } + + return false; + } + + /** + * Check if we are older than the given {@link Version}. + * + * @param o + * the other {@link Version} + * @return TRUE if this {@link Version} is older than the given one + */ + public boolean isOlderThan(Version o) { + return !equals(o) && !isNewerThan(o); + } + /** * Return the version of the running program if it follows the VERSION * convention (i.e., if it has a file called VERSION containing the version @@ -131,6 +172,31 @@ public class Version { return new Version(version); } + public int compareTo(Version o) { + if (equals(o)) { + return 0; + } else if (isNewerThan(o)) { + return 1; + } else { + return -1; + } + } + + @Override + public boolean equals(Object obj) { + if (obj instanceof Version) { + Version o = (Version) obj; + return o.major == major && o.minor == minor && o.patch == patch; + } + + return false; + } + + @Override + public int hashCode() { + return version == null ? 0 : version.hashCode(); + } + /** * Return a user-readable form of this {@link Version}. */