001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: *
017: */
018:
019: package org.apache.tools.ant.types.selectors;
020:
021: import java.util.Enumeration;
022: import org.apache.tools.ant.Project;
023: import org.apache.tools.ant.types.selectors.modifiedselector.ModifiedSelector;
024:
025: /**
026: * This is the interface for selectors that can contain other selectors.
027: *
028: * @since 1.5
029: */
030: public interface SelectorContainer {
031:
032: /**
033: * Indicates whether there are any selectors here.
034: *
035: * @return whether any selectors are in this container
036: */
037: boolean hasSelectors();
038:
039: /**
040: * Gives the count of the number of selectors in this container
041: *
042: * @return the number of selectors in this container
043: */
044: int selectorCount();
045:
046: /**
047: * Returns the set of selectors as an array.
048: * @param p the current project
049: * @return an array of selectors in this container
050: */
051: FileSelector[] getSelectors(Project p);
052:
053: /**
054: * Returns an enumerator for accessing the set of selectors.
055: *
056: * @return an enumerator that goes through each of the selectors
057: */
058: Enumeration selectorElements();
059:
060: /**
061: * Add a new selector into this container.
062: *
063: * @param selector the new selector to add
064: */
065: void appendSelector(FileSelector selector);
066:
067: /* Methods below all add specific selectors */
068:
069: /**
070: * add a "Select" selector entry on the selector list
071: * @param selector the selector to add
072: */
073: void addSelector(SelectSelector selector);
074:
075: /**
076: * add an "And" selector entry on the selector list
077: * @param selector the selector to add
078: */
079: void addAnd(AndSelector selector);
080:
081: /**
082: * add an "Or" selector entry on the selector list
083: * @param selector the selector to add
084: */
085: void addOr(OrSelector selector);
086:
087: /**
088: * add a "Not" selector entry on the selector list
089: * @param selector the selector to add
090: */
091: void addNot(NotSelector selector);
092:
093: /**
094: * add a "None" selector entry on the selector list
095: * @param selector the selector to add
096: */
097: void addNone(NoneSelector selector);
098:
099: /**
100: * add a majority selector entry on the selector list
101: * @param selector the selector to add
102: */
103: void addMajority(MajoritySelector selector);
104:
105: /**
106: * add a selector date entry on the selector list
107: * @param selector the selector to add
108: */
109: void addDate(DateSelector selector);
110:
111: /**
112: * add a selector size entry on the selector list
113: * @param selector the selector to add
114: */
115: void addSize(SizeSelector selector);
116:
117: /**
118: * add a selector filename entry on the selector list
119: * @param selector the selector to add
120: */
121: void addFilename(FilenameSelector selector);
122:
123: /**
124: * add an extended selector entry on the selector list
125: * @param selector the selector to add
126: */
127: void addCustom(ExtendSelector selector);
128:
129: /**
130: * add a contains selector entry on the selector list
131: * @param selector the selector to add
132: */
133: void addContains(ContainsSelector selector);
134:
135: /**
136: * add a present selector entry on the selector list
137: * @param selector the selector to add
138: */
139: void addPresent(PresentSelector selector);
140:
141: /**
142: * add a depth selector entry on the selector list
143: * @param selector the selector to add
144: */
145: void addDepth(DepthSelector selector);
146:
147: /**
148: * add a depends selector entry on the selector list
149: * @param selector the selector to add
150: */
151: void addDepend(DependSelector selector);
152:
153: /**
154: * add a regular expression selector entry on the selector list
155: * @param selector the selector to add
156: */
157: void addContainsRegexp(ContainsRegexpSelector selector);
158:
159: /**
160: * add the type selector
161: * @param selector the selector to add
162: * @since ant 1.6
163: */
164: void addType(TypeSelector selector);
165:
166: /**
167: * add the different selector
168: * @param selector the selector to add
169: * @since ant 1.6
170: */
171: void addDifferent(DifferentSelector selector);
172:
173: /**
174: * add the modified selector
175: * @param selector the selector to add
176: * @since ant 1.6
177: */
178: void addModified(ModifiedSelector selector);
179:
180: /**
181: * add an arbitary selector
182: * @param selector the selector to add
183: * @since Ant 1.6
184: */
185: void add(FileSelector selector);
186: }
|