only keep the sources
[fanfix.git] / src / be / nikiroo / utils / Version.java
diff --git a/src/be/nikiroo/utils/Version.java b/src/be/nikiroo/utils/Version.java
deleted file mode 100644 (file)
index 269edb6..0000000
+++ /dev/null
@@ -1,366 +0,0 @@
-package be.nikiroo.utils;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-
-/**
- * This class describe a program {@link Version}.
- * 
- * @author niki
- */
-public class Version implements Comparable<Version> {
-       private String version;
-       private int major;
-       private int minor;
-       private int patch;
-       private String tag;
-       private int tagVersion;
-
-       /**
-        * Create a new, empty {@link Version}.
-        * 
-        */
-       public Version() {
-       }
-
-       /**
-        * Create a new {@link Version} with the given values.
-        * 
-        * @param major
-        *            the major version
-        * @param minor
-        *            the minor version
-        * @param patch
-        *            the patch version
-        */
-       public Version(int major, int minor, int patch) {
-               this(major, minor, patch, null, -1);
-       }
-
-       /**
-        * Create a new {@link Version} with the given values.
-        * 
-        * @param major
-        *            the major version
-        * @param minor
-        *            the minor version
-        * @param patch
-        *            the patch version
-        * @param tag
-        *            a tag name for this version
-        */
-       public Version(int major, int minor, int patch, String tag) {
-               this(major, minor, patch, tag, -1);
-       }
-
-       /**
-        * Create a new {@link Version} with the given values.
-        * 
-        * @param major
-        *            the major version
-        * @param minor
-        *            the minor version
-        * @param patch
-        *            the patch version the patch version
-        * @param tag
-        *            a tag name for this version
-        * @param tagVersion
-        *            the version of the tagged version
-        */
-       public Version(int major, int minor, int patch, String tag, int tagVersion) {
-               if (tagVersion >= 0 && tag == null) {
-                       throw new java.lang.IllegalArgumentException(
-                                       "A tag version cannot be used without a tag");
-               }
-
-               this.major = major;
-               this.minor = minor;
-               this.patch = patch;
-               this.tag = tag;
-               this.tagVersion = tagVersion;
-
-               this.version = generateVersion();
-       }
-
-       /**
-        * Create a new {@link Version} with the given value, which must be in the
-        * form <tt>MAJOR.MINOR.PATCH(-TAG(TAG_VERSION))</tt>.
-        * 
-        * @param version
-        *            the version (<tt>MAJOR.MINOR.PATCH</tt>,
-        *            <tt>MAJOR.MINOR.PATCH-TAG</tt> or
-        *            <tt>MAJOR.MINOR.PATCH-TAGVERSIONTAG</tt>)
-        */
-       public Version(String version) {
-               try {
-                       String[] tab = version.split("\\.");
-                       this.major = Integer.parseInt(tab[0].trim());
-                       this.minor = Integer.parseInt(tab[1].trim());
-                       if (tab[2].contains("-")) {
-                               int posInVersion = version.indexOf('.');
-                               posInVersion = version.indexOf('.', posInVersion + 1);
-                               String rest = version.substring(posInVersion + 1);
-
-                               int posInRest = rest.indexOf('-');
-                               this.patch = Integer.parseInt(rest.substring(0, posInRest)
-                                               .trim());
-
-                               posInVersion = version.indexOf('-');
-                               this.tag = version.substring(posInVersion + 1).trim();
-                               this.tagVersion = -1;
-
-                               StringBuilder str = new StringBuilder();
-                               while (!tag.isEmpty() && tag.charAt(tag.length() - 1) >= '0'
-                                               && tag.charAt(tag.length() - 1) <= '9') {
-                                       str.insert(0, tag.charAt(tag.length() - 1));
-                                       tag = tag.substring(0, tag.length() - 1);
-                               }
-
-                               if (str.length() > 0) {
-                                       this.tagVersion = Integer.parseInt(str.toString());
-                               }
-                       } else {
-                               this.patch = Integer.parseInt(tab[2].trim());
-                               this.tag = null;
-                               this.tagVersion = -1;
-                       }
-
-                       this.version = generateVersion();
-               } catch (Exception e) {
-                       this.major = 0;
-                       this.minor = 0;
-                       this.patch = 0;
-                       this.tag = null;
-                       this.tagVersion = -1;
-                       this.version = null;
-               }
-       }
-
-       /**
-        * The 'major' version.
-        * <p>
-        * This version should only change when API-incompatible changes are made to
-        * the program.
-        * 
-        * @return the major version
-        */
-       public int getMajor() {
-               return major;
-       }
-
-       /**
-        * The 'minor' version.
-        * <p>
-        * This version should only change when new, backwards-compatible
-        * functionality has been added to the program.
-        * 
-        * @return the minor version
-        */
-       public int getMinor() {
-               return minor;
-       }
-
-       /**
-        * The 'patch' version.
-        * <p>
-        * This version should change when backwards-compatible bugfixes have been
-        * added to the program.
-        * 
-        * @return the patch version
-        */
-       public int getPatch() {
-               return patch;
-       }
-
-       /**
-        * A tag name for this version.
-        * 
-        * @return the tag
-        */
-       public String getTag() {
-               return tag;
-       }
-
-       /**
-        * The version of the tag, or -1 for no version.
-        * 
-        * @return the tag version
-        */
-       public int getTagVersion() {
-               return tagVersion;
-       }
-
-       /**
-        * Check if this {@link Version} is "empty" (i.e., the version was not
-        * parse-able or not given).
-        * 
-        * @return TRUE if it is empty
-        */
-       public boolean isEmpty() {
-               return version == null;
-       }
-
-       /**
-        * Check if we are more recent than the given {@link Version}.
-        * <p>
-        * Note that a tagged version is considered newer than a non-tagged version,
-        * but two tagged versions with different tags are not comparable.
-        * <p>
-        * Also, an empty version is always considered older.
-        * 
-        * @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 (isEmpty()) {
-                       return false;
-               } else if (o.isEmpty()) {
-                       return true;
-               }
-
-               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;
-               }
-
-               // a tagged version is considered newer than a non-tagged one
-               if (major == o.major && minor == o.minor && patch == o.patch
-                               && tag != null && o.tag == null) {
-                       return true;
-               }
-
-               // 2 <> tagged versions are not comparable
-               boolean sameTag = (tag == null && o.tag == null)
-                               || (tag != null && tag.equals(o.tag));
-               if (major == o.major && minor == o.minor && patch == o.patch && sameTag
-                               && tagVersion > o.tagVersion) {
-                       return true;
-               }
-
-               return false;
-       }
-
-       /**
-        * Check if we are older than the given {@link Version}.
-        * <p>
-        * Note that a tagged version is considered newer than a non-tagged version,
-        * but two tagged versions with different tags are not comparable.
-        * <p>
-        * Also, an empty version is always considered older.
-        * 
-        * @param o
-        *            the other {@link Version}
-        * @return TRUE if this {@link Version} is older than the given one
-        */
-       public boolean isOlderThan(Version o) {
-               if (o.isEmpty()) {
-                       return false;
-               } else if (isEmpty()) {
-                       return true;
-               }
-
-               // 2 <> tagged versions are not comparable
-               boolean sameTag = (tag == null && o.tag == null)
-                               || (tag != null && tag.equals(o.tag));
-               if (major == o.major && minor == o.minor && patch == o.patch
-                               && !sameTag) {
-                       return false;
-               }
-
-               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
-        * as a {@link String} in its binary root, and if this {@link String}
-        * follows the Major/Minor/Patch convention).
-        * <p>
-        * If it does not, return an empty {@link Version} object.
-        * 
-        * @return the {@link Version} of the program, or an empty {@link Version}
-        *         (does not return NULL)
-        */
-       public static Version getCurrentVersion() {
-               String version = null;
-
-               InputStream in = IOUtils.openResource("VERSION");
-               if (in != null) {
-                       try {
-                               ByteArrayOutputStream ba = new ByteArrayOutputStream();
-                               IOUtils.write(in, ba);
-                               in.close();
-
-                               version = ba.toString("UTF-8").trim();
-                       } catch (IOException e) {
-                       }
-               }
-
-               return new Version(version);
-       }
-
-       @Override
-       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;
-                       if (isEmpty()) {
-                               return o.isEmpty();
-                       }
-
-                       boolean sameTag = (tag == null && o.tag == null)
-                                       || (tag != null && tag.equals(o.tag));
-                       return o.major == major && o.minor == minor && o.patch == patch
-                                       && sameTag && o.tagVersion == tagVersion;
-               }
-
-               return false;
-       }
-
-       @Override
-       public int hashCode() {
-               return version == null ? 0 : version.hashCode();
-       }
-
-       /**
-        * Return a user-readable form of this {@link Version}.
-        */
-       @Override
-       public String toString() {
-               return version == null ? "[unknown]" : version;
-       }
-
-       /**
-        * Generate the clean version {@link String} from the current values.
-        * 
-        * @return the clean version string
-        */
-       private String generateVersion() {
-               String tagSuffix = "";
-               if (tag != null) {
-                       tagSuffix = "-" + tag
-                                       + (tagVersion >= 0 ? Integer.toString(tagVersion) : "");
-               }
-
-               return String.format("%d.%d.%d%s", major, minor, patch, tagSuffix);
-       }
-}