/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You 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 org.apache.tools.ant.taskdefs.condition; import java.util.Collections; import java.util.Enumeration; import java.util.List; import java.util.Vector; import org.apache.tools.ant.ProjectComponent; import org.apache.tools.ant.taskdefs.Available; import org.apache.tools.ant.taskdefs.Checksum; import org.apache.tools.ant.taskdefs.UpToDate; /** * Baseclass for the <condition> task as well as several * conditions - ensures that the types of conditions inside the task * and the "container" conditions are in sync. * * @since Ant 1.4 */ public abstract class ConditionBase extends ProjectComponent { /** * name of the component */ private String taskName = "condition"; /** * */ private List<Condition> conditions = new Vector<>(); /** * Simple constructor. */ protected ConditionBase() { taskName = "component"; } /** * Constructor that takes the name of the task in the task name. * @param taskName the name of the task. * @since Ant 1.7 */ protected ConditionBase(String taskName) { this.taskName = taskName; } /** * Count the conditions. * * @return the number of conditions in the container * @since 1.1 */ protected int countConditions() { return conditions.size(); } /** * Iterate through all conditions. * * @return an enumeration to use for iteration * @since 1.1 */ protected final Enumeration<Condition> getConditions() { return Collections.enumeration(conditions); } /** * Sets the name to use in logging messages. * * @param name The name to use in logging messages. * Should not be <code>null</code>. * @since Ant 1.7 */ public void setTaskName(String name) { this.taskName = name; } /** * Returns the name to use in logging messages. * * @return the name to use in logging messages. * @since Ant 1.7 */ public String getTaskName() { return taskName; } /** * Add an <available> condition. * @param a an available condition * @since 1.1 */ public void addAvailable(Available a) { conditions.add(a); } /** * Add an <checksum> condition. * * @param c a Checksum condition * @since 1.4, Ant 1.5 */ public void addChecksum(Checksum c) { conditions.add(c); } /** * Add an <uptodate> condition. * * @param u an UpToDate condition * @since 1.1 */ public void addUptodate(UpToDate u) { conditions.add(u); } /** * Add an <not> condition "container". * * @param n a Not condition * @since 1.1 */ public void addNot(Not n) { conditions.add(n); } /** * Add an <and> condition "container". * * @param a an And condition * @since 1.1 */ public void addAnd(And a) { conditions.add(a); } /** * Add an <or> condition "container". * * @param o an Or condition * @since 1.1 */ public void addOr(Or o) { conditions.add(o); } /** * Add an <equals> condition. * * @param e an Equals condition * @since 1.1 */ public void addEquals(Equals e) { conditions.add(e); } /** * Add an <os> condition. * * @param o an Os condition * @since 1.1 */ public void addOs(Os o) { conditions.add(o); } /** * Add an <isset> condition. * * @param i an IsSet condition * @since Ant 1.5 */ public void addIsSet(IsSet i) { conditions.add(i); } /** * Add an <http> condition. * * @param h an Http condition * @since Ant 1.5 */ public void addHttp(Http h) { conditions.add(h); } /** * Add a <socket> condition. * * @param s a Socket condition * @since Ant 1.5 */ public void addSocket(Socket s) { conditions.add(s); } /** * Add a <filesmatch> condition. * * @param test a FilesMatch condition * @since Ant 1.5 */ public void addFilesMatch(FilesMatch test) { conditions.add(test); } /** * Add a <contains> condition. * * @param test a Contains condition * @since Ant 1.5 */ public void addContains(Contains test) { conditions.add(test); } /** * Add a <istrue> condition. * * @param test an IsTrue condition * @since Ant 1.5 */ public void addIsTrue(IsTrue test) { conditions.add(test); } /** * Add a <isfalse> condition. * * @param test an IsFalse condition * @since Ant 1.5 */ public void addIsFalse(IsFalse test) { conditions.add(test); } /** * Add an <isreference> condition. * * @param i an IsReference condition * @since Ant 1.6 */ public void addIsReference(IsReference i) { conditions.add(i); } /** * Add an <isfileselected> condition. * @param test the condition */ public void addIsFileSelected(IsFileSelected test) { conditions.add(test); } /** * Add an arbitrary condition * @param c a condition * @since Ant 1.6 */ public void add(Condition c) { conditions.add(c); } }