net.dpml.lang
Class Version

java.lang.Object
  extended by net.dpml.lang.Version
All Implemented Interfaces:
Serializable, Comparable

public final class Version
extends Object
implements Comparable, Serializable

This class is used to hold version information.

The version number is made up of three dot-separated fields:

"major.minor.micro"

The major, minor and micro fields are integer numbers represented in decimal notation and have the following meaning:

Version:
2.1.0
Author:
Digital Product Management Library
See Also:
Serialized Form

Field Summary
static Version NULL_VERSION
          Version -1.0.0.
 
Constructor Summary
Version(int major, int minor, int micro)
          Create a new instance of a Version object with the specified version numbers.
 
Method Summary
 int compareTo(Object o)
          Compare two versions together according to the Comparable interface.
 boolean complies(Version other)
          Check this Version against another for compliancy (compatibility).
 boolean equals(Object other)
          Indicates whether some other object is "equal to" this Version.
 boolean equals(Version other)
          Check this Version against another for equality.
 int getMajor()
          Retrieve major component of version.
 int getMicro()
          Retrieve micro component of version.
 int getMinor()
          Retrieve minor component of version.
 int hashCode()
          Add a hashing function to ensure the Version object is treated as expected in hashmaps and sets.
static Version parse(String version)
          Parse a version out of a string.
 String toString()
          Overload toString to report version correctly.
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

NULL_VERSION

public static final Version NULL_VERSION
Version -1.0.0.

Constructor Detail

Version

public Version(int major,
               int minor,
               int micro)
Create a new instance of a Version object with the specified version numbers.

Parameters:
major - This Version major number.
minor - This Version minor number.
micro - This Version micro number.
Method Detail

parse

public static Version parse(String version)
                     throws NumberFormatException,
                            IllegalArgumentException,
                            NullPointerException
Parse a version out of a string. The version string format is .. where both minor and micro are optional.

Parameters:
version - The input version string
Returns:
the new Version object
Throws:
NumberFormatException - if an error occurs
IllegalArgumentException - if an error occurs
NullPointerException - if the version argument is null.
Since:
4.1

getMajor

public int getMajor()
Retrieve major component of version.

Returns:
the major component of version
Since:
4.1

getMinor

public int getMinor()
Retrieve minor component of version.

Returns:
the minor component of version
Since:
4.1

getMicro

public int getMicro()
Retrieve micro component of version.

Returns:
the micro component of version.
Since:
4.1

equals

public boolean equals(Version other)
Check this Version against another for equality.

If this Version is compatible with the specified one, then true is returned, otherwise false.

Parameters:
other - The other Version object to be compared with this for equality.
Returns:
true if this Version is compatible with the specified one
Since:
4.1

equals

public boolean equals(Object other)
Indicates whether some other object is "equal to" this Version. Returns true if the other object is an instance of Version and has the same major, minor, and micro components.

Overrides:
equals in class Object
Parameters:
other - an Object value
Returns:
true if the other object is equal to this Version

hashCode

public int hashCode()
Add a hashing function to ensure the Version object is treated as expected in hashmaps and sets. NOTE: any time the equals() is overridden, hashCode() should also be overridden.

Overrides:
hashCode in class Object
Returns:
the hashCode

complies

public boolean complies(Version other)
Check this Version against another for compliancy (compatibility).

If this Version is compatible with the specified one, then true is returned, otherwise false. Be careful when using this method since, in example, version 1.3.7 is compliant to version 1.3.6, while the opposite is not.

The following example displays the expected behaviour and results of version.

 final Version v1 = new Version( 1, 3, 6 );
 final Version v2 = new Version( 1, 3, 7 );
 final Version v3 = new Version( 1, 4, 0 );
 final Version v4 = new Version( 2, 0, 1 );

 assert(   v1.complies( v1 ) );
 assert( ! v1.complies( v2 ) );
 assert(   v2.complies( v1 ) );
 assert( ! v1.complies( v3 ) );
 assert(   v3.complies( v1 ) );
 assert( ! v1.complies( v4 ) );
 assert( ! v4.complies( v1 ) );
 

Parameters:
other - The other Version object to be compared with this for compliancy (compatibility).
Returns:
true if this Version is compatible with the specified one

toString

public String toString()
Overload toString to report version correctly.

Overrides:
toString in class Object
Returns:
the dot seperated version string

compareTo

public int compareTo(Object o)
              throws NullPointerException
Compare two versions together according to the Comparable interface.

Specified by:
compareTo in interface Comparable
Parameters:
o - the other object
Returns:
number indicating relative value (-1, 0, 1)
Throws:
NullPointerException - if the argument is null.