FileDocCategorySizeDatePackage
AntVersion.javaAPI DocApache Ant 1.703931Wed Dec 13 06:16:20 GMT 2006org.apache.tools.ant.taskdefs.condition

AntVersion

public class AntVersion extends Object implements Condition
An Ant version condition.
since
Ant 1.7

Fields Summary
private String
atLeast
private String
exactly
Constructors Summary
Methods Summary
public booleaneval()
Evalute the condition.

return
true if the condition is true.
throws
BuildException if an error occurs.


                         
         
        validate();
        DeweyDecimal actual = getVersion();
        if (null != atLeast) {
            return actual.isGreaterThanOrEqual(new DeweyDecimal(atLeast));
        }
        if (null != exactly) {
            return actual.isEqual(new DeweyDecimal(exactly));
        }
        //default
        return false;
    
public java.lang.StringgetAtLeast()
Get the atleast attribute.

return
the atleast attribute.

        return atLeast;
    
public java.lang.StringgetExactly()
Get the exactly attribute.

return
the exactly attribute.

        return exactly;
    
private org.apache.tools.ant.util.DeweyDecimalgetVersion()

        Project p = new Project();
        p.init();
        char[] versionString = p.getProperty("ant.version").toCharArray();
        StringBuffer sb = new StringBuffer();
        boolean foundFirstDigit = false;
        for (int i = 0; i < versionString.length; i++) {
            if (Character.isDigit(versionString[i])) {
                sb.append(versionString[i]);
                foundFirstDigit = true;
            }
            if (versionString[i] == '." && foundFirstDigit) {
                sb.append(versionString[i]);
            }
            if (Character.isLetter(versionString[i]) && foundFirstDigit) {
                break;
            }
        }
        return new DeweyDecimal(sb.toString());
    
public voidsetAtLeast(java.lang.String atLeast)
Set the atleast attribute. This is of the form major.minor.point. For example 1.7.0.

param
atLeast the version to check against.

        this.atLeast = atLeast;
    
public voidsetExactly(java.lang.String exactly)
Set the exactly attribute. This is of the form major.minor.point. For example 1.7.0.

param
exactly the version to check against.

        this.exactly = exactly;
    
private voidvalidate()

        if (atLeast != null && exactly != null) {
            throw new BuildException("Only one of atleast or exactly may be set.");
        }
        if (null == atLeast && null == exactly) {
            throw new BuildException("One of atleast or exactly must be set.");
        }
        try {
            if (atLeast != null) {
                new DeweyDecimal(atLeast);
            } else {
                new DeweyDecimal(exactly);
            }
        } catch (NumberFormatException e) {
            throw new BuildException("The argument is not a Dewey Decimal eg 1.1.0");
        }