1 /*
2 * Copyright 2008 University Corporation for Advanced Internet Development, Inc.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17 package edu.internet2.middleware.ant.util;
18
19 import java.util.regex.Matcher;
20 import java.util.regex.Pattern;
21
22 import org.apache.tools.ant.BuildException;
23 import org.apache.tools.ant.Task;
24
25 /**
26 * A task that splits a string based on a regular expression.
27 *
28 * This ant task requires three attributes:
29 * <ul>
30 * <li><strong>input</strong> - the value to be split by the regular expression</li>
31 * <li><strong>regex</strong> - regular expression, with one matching group, use to split the string</li>
32 * <li><strong>addProperty</strong> - name of the property that will receive the split string</li>
33 * <ul>
34 */
35 public class RegexSplit extends Task {
36
37 /** The input string to be split. */
38 private String input;
39
40 /** The regular expression used to split the input string. */
41 private String regex;
42
43 /** The name of the property that will receive the split string. */
44 private String addProperty;
45
46 /** {@inheritDoc} */
47 public void execute() throws BuildException {
48 Pattern regexPat = Pattern.compile(regex);
49 Matcher stringSplitter = regexPat.matcher(input);
50 stringSplitter.matches();
51 getProject().setProperty(addProperty, stringSplitter.group(1));
52 }
53
54 /**
55 * Sets the input string to be split.
56 *
57 * @param input input string to be split
58 */
59 public void setInput(String input) {
60 this.input = input.trim();
61 }
62
63 /**
64 * Sets the regular expression used to split the input string.
65 *
66 * @param regex regular expression used to split the input string
67 */
68 public void setRegex(String regex) {
69 this.regex = regex;
70 }
71
72 /**
73 * Sets the name of the property that will receive the split string.
74 *
75 * @param addProperty name of the property that will receive the split string
76 */
77 public void setAddProperty(String addProperty) {
78 this.addProperty = addProperty;
79 }
80
81 }