FileDocCategorySizeDatePackage
DeweyDecimal.javaAPI DocApache Ant 1.707035Wed Dec 13 06:16:18 GMT 2006org.apache.tools.ant.util

DeweyDecimal

public class DeweyDecimal extends Object
Utility class to contain version numbers in "Dewey Decimal" syntax. Numbers in the "Dewey Decimal" syntax consist of positive decimal integers separated by periods ".". For example, "2.0" or "1.2.3.4.5.6.7". This allows an extensible number to be used to represent major, minor, micro, etc versions. The version number must begin with a number.

Fields Summary
private int[]
components
Array of components that make up DeweyDecimal
Constructors Summary
public DeweyDecimal(int[] components)
Construct a DeweyDecimal from an array of integer components.

param
components an array of integer components.

        this.components = new int[components.length];

        for (int i = 0; i < components.length; i++) {
            this.components[i] = components[i];
        }
    
public DeweyDecimal(String string)
Construct a DeweyDecimal from string in DeweyDecimal format.

param
string the string in dewey decimal format
exception
NumberFormatException if string is malformed

        final StringTokenizer tokenizer = new StringTokenizer(string, ".", true);
        final int size = tokenizer.countTokens();

        components = new int[ (size + 1) / 2 ];

        for (int i = 0; i < components.length; i++) {
            final String component = tokenizer.nextToken();
            if (component.equals("")) {
                throw new NumberFormatException("Empty component in string");
            }

            components[ i ] = Integer.parseInt(component);

            //Strip '.' token
            if (tokenizer.hasMoreTokens()) {
                tokenizer.nextToken();

                //If it ended in a dot, throw an exception
                if (!tokenizer.hasMoreTokens()) {
                    throw new NumberFormatException("DeweyDecimal ended in a '.'");
                }
            }
        }
    
Methods Summary
public intget(int index)
Return the component at specified index.

param
index the index of components
return
the value of component at index

        return components[ index ];
    
public intgetSize()
Return number of components in DeweyDecimal.

return
the number of components in dewey decimal

        return components.length;
    
public booleanisEqual(org.apache.tools.ant.util.DeweyDecimal other)
Return true if this DeweyDecimal is equal to the other DeweyDecimal.

param
other the other DeweyDecimal
return
true if equal to other DeweyDecimal, false otherwise

        final int max = Math.max(other.components.length, components.length);

        for (int i = 0; i < max; i++) {
            final int component1 = (i < components.length) ? components[ i ] : 0;
            final int component2 = (i < other.components.length) ? other.components[ i ] : 0;

            if (component2 != component1) {
                return false;
            }
        }

        return true; // Exact match
    
public booleanisGreaterThan(org.apache.tools.ant.util.DeweyDecimal other)
Return true if this DeweyDecimal is greater than the other DeweyDecimal.

param
other the other DeweyDecimal
return
true if greater than other DeweyDecimal, false otherwise

        final int max = Math.max(other.components.length, components.length);

        for (int i = 0; i < max; i++) {
            final int component1 = (i < components.length) ? components[ i ] : 0;
            final int component2 = (i < other.components.length) ? other.components[ i ] : 0;

            if (component2 > component1) {
                return false;
            }
            if (component2 < component1) {
                return true;
            }
        }

        return false; // Exact match
    
public booleanisGreaterThanOrEqual(org.apache.tools.ant.util.DeweyDecimal other)
Return true if this DeweyDecimal is greater than or equal to the other DeweyDecimal.

param
other the other DeweyDecimal
return
true if greater than or equal to other DeweyDecimal, false otherwise

        final int max = Math.max(other.components.length, components.length);

        for (int i = 0; i < max; i++) {
            final int component1 = (i < components.length) ? components[ i ] : 0;
            final int component2 = (i < other.components.length) ? other.components[ i ] : 0;

            if (component2 > component1) {
                return false;
            }
            if (component2 < component1) {
                return true;
            }
        }

        return true; // Exact match
    
public booleanisLessThan(org.apache.tools.ant.util.DeweyDecimal other)
Return true if this DeweyDecimal is less than the other DeweyDecimal.

param
other the other DeweyDecimal
return
true if less than other DeweyDecimal, false otherwise

        return !isGreaterThanOrEqual(other);
    
public booleanisLessThanOrEqual(org.apache.tools.ant.util.DeweyDecimal other)
Return true if this DeweyDecimal is less than or equal to the other DeweyDecimal.

param
other the other DeweyDecimal
return
true if less than or equal to other DeweyDecimal, false otherwise

        return !isGreaterThan(other);
    
public java.lang.StringtoString()
Return string representation of DeweyDecimal.

return
the string representation of DeweyDecimal.

        final StringBuffer sb = new StringBuffer();

        for (int i = 0; i < components.length; i++) {
            if (i != 0) {
                sb.append('.");
            }
            sb.append(components[ i ]);
        }

        return sb.toString();