Package org.apache.tools.ant.types.selectors

# Class AbstractSelectorContainer

java.lang.Object
org.apache.tools.ant.ProjectComponent
org.apache.tools.ant.types.DataType
org.apache.tools.ant.types.selectors.AbstractSelectorContainer

All Implemented Interfaces:
  `Cloneable`, `SelectorContainer`

Direct Known Subclasses:
  `Files`, `IsFileSelected`

public abstract class AbstractSelectorContainer extends DataType implements 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

Constructors
Constructor
Description
`AbstractSelectorContainer()`

## Method Summary

Modifier and Type
Method
Description
`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`
`addExecutable(ExecutableSelector e)`
`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`
`addOwnedBy(OwnedBySelector o)`
`void`
`addPosixGroup(PosixGroupSelector o)`
`void`
`addPosixPermissions(PosixPermissionsSelector o)`
`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`
`addSymlink(SymlinkSelector e)`
`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.
`Object`
`clone()`
Clone the selector container.
`protected void`
`dieOnCircularReference(Stack<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
`Enumeration<FileSelector>`
`selectorElements()`
Returns an enumerator for accessing the set of selectors.
`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, 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 Details

### AbstractSelectorContainer

public AbstractSelectorContainer()

## Method Details

### 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 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 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:

- Validation will often occur twice.
- Since it is not required that selectors derive from BaseSelector, there could be selectors in the container whose error conditions are not detected if their isSelected() call is never made.

### 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)

### addExecutable

public void addExecutable(ExecutableSelector e)

Parameters:
  `e` - ExecutableSelector
Since:
  1.10.0

### addSymlink

public void addSymlink(SymlinkSelector e)

Parameters:
  `e` - SymlinkSelector
Since:
  1.10.0

### addOwnedBy

public void addOwnedBy(OwnedBySelector o)

Parameters:
  `o` - OwnedBySelector
Since:
  1.10.0

### addPosixGroup

public void addPosixGroup(PosixGroupSelector o)

Parameters:
  `o` - PosixGroupSelector
Since:
  1.10.4

### addPosixPermissions

public void addPosixPermissions(PosixPermissionsSelector o)

Parameters:
  `o` - PosixPermissionsSelector
Since:
  1.10.4

### 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(Stack<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 `DataType.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 Object clone()
Clone the selector container.

Overrides:
  `clone` in class `DataType`
Returns:
  a deep clone of a selector container.