diff options
Diffstat (limited to 'src/java/net/sf/antcontrib/property/PropertySelector.java')
-rw-r--r-- | src/java/net/sf/antcontrib/property/PropertySelector.java | 142 |
1 files changed, 0 insertions, 142 deletions
diff --git a/src/java/net/sf/antcontrib/property/PropertySelector.java b/src/java/net/sf/antcontrib/property/PropertySelector.java deleted file mode 100644 index 23328c4..0000000 --- a/src/java/net/sf/antcontrib/property/PropertySelector.java +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Copyright (c) 2001-2004 Ant-Contrib project. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package net.sf.antcontrib.property; - -import java.util.Enumeration; -import java.util.Hashtable; -import java.util.Vector; - -import org.apache.tools.ant.BuildException; -import org.apache.tools.ant.types.RegularExpression; -import org.apache.tools.ant.util.regexp.Regexp; - - -/**************************************************************************** - * Place class description here. - * - * @author <a href='mailto:[email protected]'>Matthew Inger</a> - * @author <additional author> - * - * @since - * - ****************************************************************************/ - - -public class PropertySelector - extends AbstractPropertySetterTask -{ - private RegularExpression match; - private String select = "\\0"; - private char delim = ','; - private boolean caseSensitive = true; - private boolean distinct = false; - - - public PropertySelector() - { - super(); - } - - - public void setMatch(String match) - { - this.match = new RegularExpression(); - this.match.setPattern(match); - } - - - public void setSelect(String select) - { - this.select = select; - } - - - public void setCaseSensitive(boolean caseSensitive) - { - this.caseSensitive = caseSensitive; - } - - - public void setDelimiter(char delim) - { - this.delim = delim; - } - - - public void setDistinct(boolean distinct) - { - this.distinct = distinct; - } - - - protected void validate() - { - super.validate(); - if (match == null) - throw new BuildException("No match expression specified."); - } - - - public void execute() - throws BuildException - { - validate(); - - int options = 0; - if (!caseSensitive) - options |= Regexp.MATCH_CASE_INSENSITIVE; - - Regexp regex = match.getRegexp(project); - Hashtable props = project.getProperties(); - Enumeration e = props.keys(); - StringBuffer buf = new StringBuffer(); - int cnt = 0; - - Vector used = new Vector(); - - while (e.hasMoreElements()) - { - String key = (String) (e.nextElement()); - if (regex.matches(key, options)) - { - String output = select; - Vector groups = regex.getGroups(key, options); - int sz = groups.size(); - for (int i = 0; i < sz; i++) - { - String s = (String) (groups.elementAt(i)); - - RegularExpression result = null; - result = new RegularExpression(); - result.setPattern("\\\\" + i); - Regexp sregex = result.getRegexp(project); - output = sregex.substitute(output, s, Regexp.MATCH_DEFAULT); - } - - if (!(distinct && used.contains(output))) - { - used.addElement(output); - if (cnt != 0) buf.append(delim); - buf.append(output); - cnt++; - } - } - } - - if (buf.length() > 0) - setPropertyValue(buf.toString()); - } -} |