org.apache.tools.ant.types.selectors
Class AbstractSelectorContainer

java.lang.Object
  extended by org.apache.tools.ant.ProjectComponent
      extended by org.apache.tools.ant.types.DataType
          extended by org.apache.tools.ant.types.selectors.AbstractSelectorContainer
All Implemented Interfaces:
java.lang.Cloneable, SelectorContainer
Direct Known Subclasses:
Files, IsFileSelected

public abstract class AbstractSelectorContainer
extends DataType
implements java.lang.Cloneable, SelectorContainer

This is the a base class a container of selectors - it does not need do be a selector itself.

Since:
1.7

Field Summary
 
Fields inherited from class org.apache.tools.ant.types.DataType
checked, ref
 
Fields inherited from class org.apache.tools.ant.ProjectComponent
description, location, project
 
Constructor Summary
AbstractSelectorContainer()
           
 
Method Summary
 void add(FileSelector selector)
          add an arbitrary selector
 void addAnd(AndSelector selector)
          add an "And" selector entry on the selector list
 void addContains(ContainsSelector selector)
          add a contains selector entry on the selector list
 void addContainsRegexp(ContainsRegexpSelector selector)
          add a regular expression selector entry on the selector list
 void addCustom(ExtendSelector selector)
          add an extended selector entry on the selector list
 void addDate(DateSelector selector)
          add a selector date entry on the selector list
 void addDepend(DependSelector selector)
          add a depends selector entry on the selector list
 void addDepth(DepthSelector selector)
          add a depth selector entry on the selector list
 void addDifferent(DifferentSelector selector)
          adds a different selector to the selector list
 void addFilename(FilenameSelector selector)
          add a selector filename entry on the selector list
 void addMajority(MajoritySelector selector)
          add a majority selector entry on the selector list
 void addModified(ModifiedSelector selector)
          add the modified selector
 void addNone(NoneSelector selector)
          add a "None" selector entry on the selector list
 void addNot(NotSelector selector)
          add a "Not" selector entry on the selector list
 void addOr(OrSelector selector)
          add an "Or" selector entry on the selector list
 void addPresent(PresentSelector selector)
          add a present selector entry on the selector list
 void addReadable(ReadableSelector r)
           
 void addSelector(SelectSelector selector)
          add a "Select" selector entry on the selector list
 void addSize(SizeSelector selector)
          add a selector size entry on the selector list
 void addType(TypeSelector selector)
          adds a type selector to the selector list
 void addWritable(WritableSelector w)
           
 void appendSelector(FileSelector selector)
          Add a new selector into this container.
 java.lang.Object clone()
           
protected  void dieOnCircularReference(java.util.Stack<java.lang.Object> stk, Project p)
          Check to see whether any DataType we hold references to is included in the Stack (which holds all DataType instances that directly or indirectly reference this instance, including this instance itself).
 FileSelector[] getSelectors(Project p)
          Returns the set of selectors as an array.
 boolean hasSelectors()
          Indicates whether there are any selectors here.
 int selectorCount()
          Gives the count of the number of selectors in this container
 java.util.Enumeration<FileSelector> selectorElements()
          Returns an enumerator for accessing the set of selectors.
 java.lang.String toString()
          Convert the Selectors within this container to a string.
 void validate()
           This validates each contained selector provided that the selector implements the validate interface.
 
Methods inherited from class org.apache.tools.ant.types.DataType
checkAttributesAllowed, checkChildrenAllowed, circularReference, dieOnCircularReference, dieOnCircularReference, getCheckedRef, getCheckedRef, getCheckedRef, getCheckedRef, getDataTypeName, getRefid, invokeCircularReferenceCheck, isChecked, isReference, noChildrenAllowed, pushAndInvokeCircularReferenceCheck, setChecked, setRefid, tooManyAttributes
 
Methods inherited from class org.apache.tools.ant.ProjectComponent
getDescription, getLocation, getProject, log, log, setDescription, setLocation, setProject
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

AbstractSelectorContainer

public AbstractSelectorContainer()
Method Detail

hasSelectors

public boolean hasSelectors()
Indicates whether there are any selectors here.

Specified by:
hasSelectors in interface SelectorContainer
Returns:
true if there are selectors

selectorCount

public int selectorCount()
Gives the count of the number of selectors in this container

Specified by:
selectorCount in interface SelectorContainer
Returns:
the number of selectors

getSelectors

public FileSelector[] getSelectors(Project p)
Returns the set of selectors as an array.

Specified by:
getSelectors in interface SelectorContainer
Parameters:
p - the current project
Returns:
an array of selectors

selectorElements

public java.util.Enumeration<FileSelector> selectorElements()
Returns an enumerator for accessing the set of selectors.

Specified by:
selectorElements in interface SelectorContainer
Returns:
an enumerator for the selectors

toString

public java.lang.String toString()
Convert the Selectors within this container to a string. This will just be a helper class for the subclasses that put their own name around the contents listed here.

Overrides:
toString in class DataType
Returns:
comma separated list of Selectors contained in this one

appendSelector

public void appendSelector(FileSelector selector)
Add a new selector into this container.

Specified by:
appendSelector in interface SelectorContainer
Parameters:
selector - the new selector to add

validate

public void validate()

This validates each contained selector provided that the selector implements the validate interface.

Ordinarily, this will validate all the elements of a selector container even if the isSelected() method of some elements is never called. This has two effects:


addSelector

public void addSelector(SelectSelector selector)
add a "Select" selector entry on the selector list

Specified by:
addSelector in interface SelectorContainer
Parameters:
selector - the selector to add

addAnd

public void addAnd(AndSelector selector)
add an "And" selector entry on the selector list

Specified by:
addAnd in interface SelectorContainer
Parameters:
selector - the selector to add

addOr

public void addOr(OrSelector selector)
add an "Or" selector entry on the selector list

Specified by:
addOr in interface SelectorContainer
Parameters:
selector - the selector to add

addNot

public void addNot(NotSelector selector)
add a "Not" selector entry on the selector list

Specified by:
addNot in interface SelectorContainer
Parameters:
selector - the selector to add

addNone

public void addNone(NoneSelector selector)
add a "None" selector entry on the selector list

Specified by:
addNone in interface SelectorContainer
Parameters:
selector - the selector to add

addMajority

public void addMajority(MajoritySelector selector)
add a majority selector entry on the selector list

Specified by:
addMajority in interface SelectorContainer
Parameters:
selector - the selector to add

addDate

public void addDate(DateSelector selector)
add a selector date entry on the selector list

Specified by:
addDate in interface SelectorContainer
Parameters:
selector - the selector to add

addSize

public void addSize(SizeSelector selector)
add a selector size entry on the selector list

Specified by:
addSize in interface SelectorContainer
Parameters:
selector - the selector to add

addFilename

public void addFilename(FilenameSelector selector)
add a selector filename entry on the selector list

Specified by:
addFilename in interface SelectorContainer
Parameters:
selector - the selector to add

addCustom

public void addCustom(ExtendSelector selector)
add an extended selector entry on the selector list

Specified by:
addCustom in interface SelectorContainer
Parameters:
selector - the selector to add

addContains

public void addContains(ContainsSelector selector)
add a contains selector entry on the selector list

Specified by:
addContains in interface SelectorContainer
Parameters:
selector - the selector to add

addPresent

public void addPresent(PresentSelector selector)
add a present selector entry on the selector list

Specified by:
addPresent in interface SelectorContainer
Parameters:
selector - the selector to add

addDepth

public void addDepth(DepthSelector selector)
add a depth selector entry on the selector list

Specified by:
addDepth in interface SelectorContainer
Parameters:
selector - the selector to add

addDepend

public void addDepend(DependSelector selector)
add a depends selector entry on the selector list

Specified by:
addDepend in interface SelectorContainer
Parameters:
selector - the selector to add

addDifferent

public void addDifferent(DifferentSelector selector)
adds a different selector to the selector list

Specified by:
addDifferent in interface SelectorContainer
Parameters:
selector - the selector to add

addType

public void addType(TypeSelector selector)
adds a type selector to the selector list

Specified by:
addType in interface SelectorContainer
Parameters:
selector - the selector to add

addContainsRegexp

public void addContainsRegexp(ContainsRegexpSelector selector)
add a regular expression selector entry on the selector list

Specified by:
addContainsRegexp in interface SelectorContainer
Parameters:
selector - the selector to add

addModified

public void addModified(ModifiedSelector selector)
add the modified selector

Specified by:
addModified in interface SelectorContainer
Parameters:
selector - the selector to add
Since:
ant 1.6

addReadable

public void addReadable(ReadableSelector r)

addWritable

public void addWritable(WritableSelector w)

add

public void add(FileSelector selector)
add an arbitrary selector

Specified by:
add in interface SelectorContainer
Parameters:
selector - the selector to add
Since:
Ant 1.6

dieOnCircularReference

protected void dieOnCircularReference(java.util.Stack<java.lang.Object> stk,
                                      Project p)
Description copied from class: DataType
Check to see whether any DataType we hold references to is included in the Stack (which holds all DataType instances that directly or indirectly reference this instance, including this instance itself).

If one is included, throw a BuildException created by circularReference.

This implementation is appropriate only for a DataType that cannot hold other DataTypes as children.

The general contract of this method is that it shouldn't do anything if checked is true and set it to true on exit.

Overrides:
dieOnCircularReference in class DataType
Parameters:
stk - the stack of references to check.
p - the project to use to dereference the references.

clone

public java.lang.Object clone()
Overrides:
clone in class DataType
Returns:
a shallow copy of this DataType.