com.atlassian.plugin.util
Class VersionStringComparator

java.lang.Object
  extended by com.atlassian.plugin.util.VersionStringComparator
All Implemented Interfaces:
java.util.Comparator<java.lang.String>

public class VersionStringComparator
extends java.lang.Object
implements java.util.Comparator<java.lang.String>

Compares dotted version strings of varying length. Makes a best effort with other delimiters and non-numeric versions.

For dotted decimals, comparison is as you'd expect: 0.1 is before 0.2 is before 1.0 is before 2.0. This works for any number of dots.

More complicated version numbers are compared by splitting the version strings into components using the DELIMITER_PATTERN and comparing each component in order. The first difference found when comparing components left-to-right is returned.

Two numeric components (containing only digits) are compared as integers. A numeric component comes after any non-numeric one. Two non-numeric components are ordered by String.compareToIgnoreCase(String).


Field Summary
static java.lang.String COMPONENT_PATTERN
           
static java.lang.String DELIMITER_PATTERN
           
static java.lang.String VALID_VERSION_PATTERN
           
 
Constructor Summary
VersionStringComparator()
           
 
Method Summary
 int compare(java.lang.String version1, java.lang.String version2)
          Compares two version strings using the algorithm described above.
static boolean isValidVersionString(java.lang.String version)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface java.util.Comparator
equals
 

Field Detail

DELIMITER_PATTERN

public static final java.lang.String DELIMITER_PATTERN
See Also:
Constant Field Values

COMPONENT_PATTERN

public static final java.lang.String COMPONENT_PATTERN
See Also:
Constant Field Values

VALID_VERSION_PATTERN

public static final java.lang.String VALID_VERSION_PATTERN
See Also:
Constant Field Values
Constructor Detail

VersionStringComparator

public VersionStringComparator()
Method Detail

isValidVersionString

public static boolean isValidVersionString(java.lang.String version)

compare

public int compare(java.lang.String version1,
                   java.lang.String version2)
Compares two version strings using the algorithm described above.

Specified by:
compare in interface java.util.Comparator<java.lang.String>
Returns:
-1 if version1 is before version2, 1 if version2 is before version1, or 0 if the versions are equal.
Throws:
java.lang.IllegalArgumentException - if either argument does not match VALID_VERSION_PATTERN.
See Also:
isValidVersionString(String)


Copyright © 2009 Atlassian Pty Ltd. All Rights Reserved.