1. /*
  2. * Copyright 2001-2004 The Apache Software Foundation
  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 org.apache.tools.ant.taskdefs.condition;
  18. import java.util.Enumeration;
  19. import java.util.Vector;
  20. import org.apache.tools.ant.ProjectComponent;
  21. import org.apache.tools.ant.taskdefs.Available;
  22. import org.apache.tools.ant.taskdefs.Checksum;
  23. import org.apache.tools.ant.taskdefs.UpToDate;
  24. /**
  25. * Baseclass for the <condition> task as well as several
  26. * conditions - ensures that the types of conditions inside the task
  27. * and the "container" conditions are in sync.
  28. *
  29. * @since Ant 1.4
  30. * @version $Revision: 1.22.2.4 $
  31. */
  32. public abstract class ConditionBase extends ProjectComponent {
  33. private Vector conditions = new Vector();
  34. /**
  35. * Count the conditions.
  36. *
  37. * @return the number of conditions in the container
  38. * @since 1.1
  39. */
  40. protected int countConditions() {
  41. return conditions.size();
  42. }
  43. /**
  44. * Iterate through all conditions.
  45. *
  46. * @return an enumeration to use for iteration
  47. * @since 1.1
  48. */
  49. protected final Enumeration getConditions() {
  50. return conditions.elements();
  51. }
  52. /**
  53. * Add an <available> condition.
  54. * @param a an available condition
  55. * @since 1.1
  56. */
  57. public void addAvailable(Available a) {
  58. conditions.addElement(a);
  59. }
  60. /**
  61. * Add an <checksum> condition.
  62. *
  63. * @param c a Checksum condition
  64. * @since 1.4, Ant 1.5
  65. */
  66. public void addChecksum(Checksum c) {
  67. conditions.addElement(c);
  68. }
  69. /**
  70. * Add an <uptodate> condition.
  71. *
  72. * @param u an UpToDate condition
  73. * @since 1.1
  74. */
  75. public void addUptodate(UpToDate u) {
  76. conditions.addElement(u);
  77. }
  78. /**
  79. * Add an <not> condition "container".
  80. *
  81. * @param n a Not condition
  82. * @since 1.1
  83. */
  84. public void addNot(Not n) {
  85. conditions.addElement(n);
  86. }
  87. /**
  88. * Add an <and> condition "container".
  89. *
  90. * @param a an And condition
  91. * @since 1.1
  92. */
  93. public void addAnd(And a) {
  94. conditions.addElement(a);
  95. }
  96. /**
  97. * Add an <or> condition "container".
  98. *
  99. * @param o an Or condition
  100. * @since 1.1
  101. */
  102. public void addOr(Or o) {
  103. conditions.addElement(o);
  104. }
  105. /**
  106. * Add an <equals> condition.
  107. *
  108. * @param e an Equals condition
  109. * @since 1.1
  110. */
  111. public void addEquals(Equals e) {
  112. conditions.addElement(e);
  113. }
  114. /**
  115. * Add an <os> condition.
  116. *
  117. * @param o an Os condition
  118. * @since 1.1
  119. */
  120. public void addOs(Os o) {
  121. conditions.addElement(o);
  122. }
  123. /**
  124. * Add an <isset> condition.
  125. *
  126. * @param i an IsSet condition
  127. * @since Ant 1.5
  128. */
  129. public void addIsSet(IsSet i) {
  130. conditions.addElement(i);
  131. }
  132. /**
  133. * Add an <http> condition.
  134. *
  135. * @param h an Http condition
  136. * @since Ant 1.5
  137. */
  138. public void addHttp(Http h) {
  139. conditions.addElement(h);
  140. }
  141. /**
  142. * Add a <socket> condition.
  143. *
  144. * @param s a Socket condition
  145. * @since Ant 1.5
  146. */
  147. public void addSocket(Socket s) {
  148. conditions.addElement(s);
  149. }
  150. /**
  151. * Add a <filesmatch> condition.
  152. *
  153. * @param test a FilesMatch condition
  154. * @since Ant 1.5
  155. */
  156. public void addFilesMatch(FilesMatch test) {
  157. conditions.addElement(test);
  158. }
  159. /**
  160. * Add a <contains> condition.
  161. *
  162. * @param test a Contains condition
  163. * @since Ant 1.5
  164. */
  165. public void addContains(Contains test) {
  166. conditions.addElement(test);
  167. }
  168. /**
  169. * Add a <istrue> condition.
  170. *
  171. * @param test an IsTrue condition
  172. * @since Ant 1.5
  173. */
  174. public void addIsTrue(IsTrue test) {
  175. conditions.addElement(test);
  176. }
  177. /**
  178. * Add a <isfalse> condition.
  179. *
  180. * @param test an IsFalse condition
  181. * @since Ant 1.5
  182. */
  183. public void addIsFalse(IsFalse test) {
  184. conditions.addElement(test);
  185. }
  186. /**
  187. * Add an <isreference> condition.
  188. *
  189. * @param i an IsReference condition
  190. * @since Ant 1.6
  191. */
  192. public void addIsReference(IsReference i) {
  193. conditions.addElement(i);
  194. }
  195. /**
  196. * Add an arbitrary condition
  197. * @param c a condition
  198. * @since Ant 1.6
  199. */
  200. public void add(Condition c) {
  201. conditions.addElement(c);
  202. }
  203. }