SortList

Sort a delimited list of items in their natural string order. Note that the value and refid attributes are mutually exclusive, and the value attribute takes precedence if both are specified.

Parameters

Attribute Description Required
property The name of the property to set. Yes.
override If the property is already set, should we change it's value. Can be true or false No. Defaults to false
value The list of values to process, with the delimiter character, indicated by the "delimiter" attribute, separating each value. Yes, unless "refid" is specified.
refid The id of where the list of values to sort is stored. Yes, unless "value" is specified.
delimiter The delimiter string that separates the values in the "list" attribute. No, defaults to ",".
casesensitive If true, does a case sensitive sorting of the strings. If false does case insensitive sorting. No. Defaults to true.
numeric If true, does a numeric sorting, treating all list entries as if they were numbers. No. Defaults to false.
orderPropertyFile If specified, the list will sorted as if they were property names, and will be sorted in the order those properties appear in the given property file. Any properties in the value attribute which do not appear in the properties file will be inserted at the end of the list. This property is most useful when used in conjunction with the <propertyselector> task (see Example 2). No.
orderPropertyFilePrefix If orderPropertyFile is specified, this value (with a trailing '.') will be prefixed to each property in the specified orderPropertyFile to determine sorting order No.

Example 1

    
    <property name="my.list" value="z,y,x,w,v,u,t" />
    <sortlist property="my.sorted.list" value="${my.list}"
                 delimiter="," />
    <echo message="${my.sorted.list}" />
    

    prints

    
     [echo] t,u,v,w,x,y,z
    

    

Example 2

    test.properties
    ---------------
    a.name=a
    c.name=c
    b.name=b

    
    <property file="test.properties" prefix="test" />
    <propertyselector property="my.list"
                         delimiter=","
                         match="test\..*\.name"
                         select="\0" />
    <sortlist property="my.sorted.list"
                 value="${my.list}"
                 delimiter=","
                 orderPropertyFile="test.properties"
                 orderPropertyFilePrefix="test" />

    <echo message="${my.sorted.list}" />

    prints

    
     [echo] test.a.name,test.c.name,test.b.name
    

    Notice that the test.properties file did not have "test."
    prefixing all the properties.  The orderPropertyFilePrefix was
    used to do that.
    

Copyright © 2002-2003 Ant-Contrib Project. All rights Reserved.