* @author David Roden <bombe@freenetproject.org>
* @version $Id$
*/
-public class Version {
+public class Version implements Comparable<Version> {
- /** The version identifier. */
- private static final String VERSION = "0.9.0";
+ /** The version of the application. */
+ private static final Version VERSION = new Version(0, 9, 0);
+
+ /** The major level of the version. */
+ private final int major;
+
+ /** The minor level of the version. */
+ private final int minor;
+
+ /** The patch level of the version. */
+ private final int patch;
/**
- * Returns the version information.
+ * Creates a new version with the given major level and minor and patch
+ * levels set to <code>0</code>.
*
- * @return The version information
+ * @param major
+ * The major level of the version
*/
- public static final String getVersion() {
+ public Version(int major) {
+ this(major, 0);
+ }
+
+ /**
+ * Creates a new version with the given major and minor level and the patch
+ * level set to <code>0</code>.
+ *
+ * @param major
+ * The major level of the version
+ * @param minor
+ * The minor level of the version
+ */
+ public Version(int major, int minor) {
+ this(major, minor, 0);
+ }
+
+ /**
+ * Creates a new version with the given major, minor, and patch level.
+ *
+ * @param major
+ * The major level of the version
+ * @param minor
+ * The minor level of the version
+ * @param patch
+ * The patch level of the version
+ */
+ public Version(int major, int minor, int patch) {
+ this.major = major;
+ this.minor = minor;
+ this.patch = patch;
+ }
+
+ /**
+ * Returns the version of the application.
+ *
+ * @return The version of the application
+ */
+ public static Version getVersion() {
return VERSION;
}
+ /**
+ * Returns the major level of the version.
+ *
+ * @return The major level of the version
+ */
+ public int getMajor() {
+ return major;
+ }
+
+ /**
+ * Returns the minor level of the version.
+ *
+ * @return The minor level of the version
+ */
+ public int getMinor() {
+ return minor;
+ }
+
+ /**
+ * Returns the patch level of the version.
+ *
+ * @return The patch level of the version
+ */
+ public int getPatch() {
+ return patch;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public int compareTo(Version version) {
+ return (major != version.major) ? (major - version.major) : ((minor != version.minor) ? (minor - version.minor) : (patch - version.patch));
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public String toString() {
+ return major + "." + minor + "." + patch;
+ }
+
}