diff options
Diffstat (limited to 'src/java/net/sf/antcontrib/logic/Switch.java')
-rw-r--r-- | src/java/net/sf/antcontrib/logic/Switch.java | 207 |
1 files changed, 0 insertions, 207 deletions
diff --git a/src/java/net/sf/antcontrib/logic/Switch.java b/src/java/net/sf/antcontrib/logic/Switch.java deleted file mode 100644 index 14f31ec..0000000 --- a/src/java/net/sf/antcontrib/logic/Switch.java +++ /dev/null @@ -1,207 +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.logic; - -import java.util.Vector; - -import org.apache.tools.ant.BuildException; -import org.apache.tools.ant.Task; -import org.apache.tools.ant.taskdefs.Sequential; - -/*** - * Task definition for the ANT task to switch on a particular value. - * - * <pre> - * - * Usage: - * - * Task declaration in the project: - * <code> - * <taskdef name="switch" classname="net.sf.antcontrib.logic.Switch" /> - * </code> - * - * Task calling syntax: - * <code> - * <switch value="value" [caseinsensitive="true|false"] > - * <case value="val"> - * <property name="propname" value="propvalue" /> | - * <antcall target="targetname" /> | - * any other tasks - * </case> - * [ - * <default> - * <property name="propname" value="propvalue" /> | - * <antcall target="targetname" /> | - * any other tasks - * </default> - * ] - * </switch> - * </code> - * - * - * Attributes: - * value -> The value to switch on - * caseinsensitive -> Should we do case insensitive comparisons? - * (default is false) - * - * Subitems: - * case --> An individual case to consider, if the value that - * is being switched on matches to value attribute of - * the case, then the nested tasks will be executed. - * default --> The default case for when no match is found. - * - * - * Crude Example: - * - * <code> - * <switch value="${foo}"> - * <case value="bar"> - * <echo message="The value of property foo is bar" /> - * </case> - * <case value="baz"> - * <echo message="The value of property foo is baz" /> - * </case> - * <default> - * <echo message="The value of property foo is not sensible" /> - * </default> - * </switch> - * </code> - * - * </pre> - * - * @author <a href="mailto:[email protected]">Matthew Inger</a> - * @author <a href="mailto:[email protected]">Stefan Bodewig</a> - */ -public class Switch extends Task -{ - private String value; - private Vector cases; - private Sequential defaultCase; - private boolean caseInsensitive; - - /*** - * Default Constructor - */ - public Switch() - { - cases = new Vector(); - } - - public void execute() - throws BuildException - { - if (value == null) - throw new BuildException("Value is missing"); - if (cases.size() == 0 && defaultCase == null) - throw new BuildException("No cases supplied"); - - Sequential selectedCase = defaultCase; - - int sz = cases.size(); - for (int i=0;i<sz;i++) - { - Case c = (Case)(cases.elementAt(i)); - - String cvalue = c.value; - if (cvalue == null) { - throw new BuildException("Value is required for case."); - } - String mvalue = value; - - if (caseInsensitive) - { - cvalue = cvalue.toUpperCase(); - mvalue = mvalue.toUpperCase(); - } - - if (cvalue.equals(mvalue) && c != defaultCase) - selectedCase = c; - } - - if (selectedCase == null) { - throw new BuildException("No case matched the value " + value - + " and no default has been specified."); - } - selectedCase.perform(); - } - - /*** - * Sets the value being switched on - */ - public void setValue(String value) - { - this.value = value; - } - - public void setCaseInsensitive(boolean c) - { - caseInsensitive = c; - } - - public final class Case extends Sequential - { - private String value; - - public Case() - { - super(); - } - - public void setValue(String value) - { - this.value = value; - } - - public void execute() - throws BuildException - { - super.execute(); - } - - public boolean equals(Object o) - { - boolean res = false; - Case c = (Case)o; - if (c.value.equals(value)) - res = true; - return res; - } - } - - /*** - * Creates the <case> tag - */ - public Switch.Case createCase() - throws BuildException - { - Switch.Case res = new Switch.Case(); - cases.addElement(res); - return res; - } - - /*** - * Creates the <default> tag - */ - public void addDefault(Sequential res) - throws BuildException - { - if (defaultCase != null) - throw new BuildException("Cannot specify multiple default cases"); - - defaultCase = res; - } - -} |