SelectSelector (Apache Ant API)
Description: declaration: package: org.apache.tools.ant.types.selectors, class: SelectSelector

# Class SelectSelector

java.lang.Object
org.apache.tools.ant.ProjectComponent
org.apache.tools.ant.types.DataType
org.apache.tools.ant.types.selectors.BaseSelector
org.apache.tools.ant.types.selectors.BaseSelectorContainer
org.apache.tools.ant.types.selectors.SelectSelector

All Implemented Interfaces:
  `Cloneable, ResourceSelector, FileSelector, SelectorContainer`

public class SelectSelector extends BaseSelectorContainer
This selector just holds one other selector and forwards all requests to it. It exists so that there is a single selector type that can exist outside of any targets, as an element of project. It overrides all of the reference stuff so that it works as expected. Note that this is the only selector you can reference.

Since:
  1.5

- ## Field Summary

  ### Fields inherited from class DataType

  `checked, ref`
  Modifier and Type
  Field
  Description
  `protected boolean`
  `checked`
  Deprecated.
  since 1.7.
  `protected Reference`
  `ref`
  Deprecated.
  since 1.7.

  ### Fields inherited from class ProjectComponent

  `description, location, project`
  Modifier and Type
  Field
  Description
  `protected String`
  `description`
  Deprecated.
  since 1.6.x.
  `protected Location`
  `location`
  Deprecated.
  since 1.6.x.
  `protected Project`
  `project`
  Deprecated.
  since 1.6.x.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `SelectSelector()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `appendSelector(FileSelector selector)`
  Add a new selector into this container.
  `FileSelector[]`
  `getSelectors(Project p)`
  Returns the set of selectors as an array.
  `boolean`
  `hasSelectors()`
  Indicates whether there are any selectors here.
  `boolean`
  `isSelected(File basedir, String filename, File file)`
  Returns true (the file is selected) only if the if property (if any) exists, the unless property (if any) doesn't exist, and the contained selector (if any) selects the file.
  `boolean`
  `passesConditions()`
  Ensures that the selector passes the conditions placed on it with `if` and `unless`.
  `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.
  `void`
  `setIf(Object ifProperty)`
  Sets the if attribute to an expression which must evaluate to true or the name of an existing property for the selector to select any files.
  `void`
  `setIf(String ifProperty)`
  Sets the if attribute to an expression which must evaluate to true or the name of an existing property for the selector to select any files.
  `void`
  `setUnless(Object unlessProperty)`
  Sets the unless attribute to an expression which must evaluate to false or the name of a property which cannot exist for the selector to select any files.
  `void`
  `setUnless(String unlessProperty)`
  Sets the unless attribute to an expression which must evaluate to false or the name of a property which cannot exist for the selector to select any files.
  `String`
  `toString()`
  Convert the Selectors within this container to a string.
  `void`
  `verifySettings()`
  Makes sure that there is only one entry, sets an error message if not.

  ### Methods inherited from class BaseSelectorContainer

  `add, addAnd, addContains, addContainsRegexp, addCustom, addDate, addDepend, addDepth, addDifferent, addExecutable, addFilename, addMajority, addModified, addNone, addNot, addOr, addOwnedBy, addPosixGroup, addPosixPermissions, addPresent, addReadable, addSelector, addSize, addSymlink, addType, addWindowsJunction, addWritable, dieOnCircularReference, validate`
  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`
  `addWindowsJunction(WindowsJunctionSelector e)`
  `void`
  `addWritable(WritableSelector w)`
  `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).
  `void`
  `validate()`
  This implementation validates the container by calling verifySettings() and then validates each contained selector provided that the selector implements the validate interface.

  ### Methods inherited from class BaseSelector

  `getError, setError, setError`
  Modifier and Type
  Method
  Description
  `String`
  `getError()`
  Returns any error messages that have been set.
  `void`
  `setError(String msg)`
  Allows all selectors to indicate a setup error.
  `void`
  `setError(String msg, Throwable cause)`
  Allows all selectors to indicate a setup error.

  ### Methods inherited from class DataType

  `checkAttributesAllowed, checkChildrenAllowed, circularReference, clone, dieOnCircularReference, dieOnCircularReference, getCheckedRef, getCheckedRef, getCheckedRef, getCheckedRef, getCheckedRef, getDataTypeName, getRefid, invokeCircularReferenceCheck, isChecked, isReference, noChildrenAllowed, pushAndInvokeCircularReferenceCheck, setChecked, setRefid, tooManyAttributes`
  Modifier and Type
  Method
  Description
  `protected void`
  `checkAttributesAllowed()`
  check that it is ok to set attributes, i.e that no reference is defined
  `protected void`
  `checkChildrenAllowed()`
  check that it is ok to add children, i.e that no reference is defined
  `protected BuildException`
  `circularReference()`
  Creates an exception that indicates the user has generated a loop of data types referencing each other.
  `Object`
  `clone()`
  `protected void`
  `dieOnCircularReference()`
  Convenience method.
  `protected void`
  `dieOnCircularReference(Project p)`
  Convenience method.
  `protected <T> T`
  `getCheckedRef()`
  Deprecated.
  use getCheckedRef(Class)
  `protected <T> T`
  `getCheckedRef(Class<T> requiredClass)`
  Performs the check for circular references and returns the referenced object.
  `protected <T> T`
  `getCheckedRef(Class<T> requiredClass, String dataTypeName)`
  Performs the check for circular references and returns the referenced object.
  `protected <T> T`
  `getCheckedRef(Class<T> requiredClass, String dataTypeName, Project project)`
  Performs the check for circular references and returns the referenced object.
  `protected <T> T`
  `getCheckedRef(Project p)`
  Deprecated.
  use getCheckedRef(Class)
  `protected String`
  `getDataTypeName()`
  Gets as descriptive as possible a name used for this datatype instance.
  `Reference`
  `getRefid()`
  get the reference set on this object
  `static void`
  `invokeCircularReferenceCheck(DataType dt, Stack<Object> stk, Project p)`
  Allow DataTypes outside org.apache.tools.ant.types to indirectly call dieOnCircularReference on nested DataTypes.
  `protected boolean`
  `isChecked()`
  The flag that is used to indicate that circular references have been checked.
  `boolean`
  `isReference()`
  Has the refid attribute of this element been set?
  `protected BuildException`
  `noChildrenAllowed()`
  Creates an exception that indicates that this XML element must not have child elements if the refid attribute is set.
  `static void`
  `pushAndInvokeCircularReferenceCheck(DataType dt, Stack<Object> stk, Project p)`
  Allow DataTypes outside org.apache.tools.ant.types to indirectly call dieOnCircularReference on nested DataTypes.
  `protected void`
  `setChecked(boolean checked)`
  Set the flag that is used to indicate that circular references have been checked.
  `void`
  `setRefid(Reference ref)`
  Set the value of the refid attribute.
  `protected BuildException`
  `tooManyAttributes()`
  Creates an exception that indicates that refid has to be the only attribute if it is set.

  ### Methods inherited from class ProjectComponent

  `getDescription, getLocation, getProject, log, log, setDescription, setLocation, setProject`
  Modifier and Type
  Method
  Description
  `String`
  `getDescription()`
  Returns the description of the current action.
  `Location`
  `getLocation()`
  Returns the file/location where this task was defined.
  `Project`
  `getProject()`
  Returns the project to which this component belongs.
  `void`
  `log(String msg)`
  Logs a message with the default (INFO) priority.
  `void`
  `log(String msg, int msgLevel)`
  Logs a message with the given priority.
  `void`
  `setDescription(String desc)`
  Sets a description of the current action.
  `void`
  `setLocation(Location location)`
  Sets the file/location where this task was defined.
  `void`
  `setProject(Project project)`
  Sets the project object of this component.

  ### Methods inherited from class Object

  `equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

  ### Methods inherited from interface FileSelector

  `isSelected`
  Modifier and Type
  Method
  Description
  `default boolean`
  `isSelected(Resource r)`
  Implement a basic `Resource` selection that delegates to this `FileSelector`.

- ## Constructor Details

  - ### SelectSelector

    public SelectSelector()

- ## Method Details

  - ### toString

    public String toString()
    Description copied from class: `BaseSelectorContainer`
    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 `BaseSelectorContainer`
    Returns:
      a string describing this object

  - ### hasSelectors

    public boolean hasSelectors()
    Indicates whether there are any selectors here.
    Specified by:
      `hasSelectors` in interface `SelectorContainer`
    Overrides:
      `hasSelectors` in class `BaseSelectorContainer`
    Returns:
      whether any selectors are in this container

  - ### selectorCount

    public int selectorCount()
    Gives the count of the number of selectors in this container
    Specified by:
      `selectorCount` in interface `SelectorContainer`
    Overrides:
      `selectorCount` in class `BaseSelectorContainer`
    Returns:
      the number of selectors in this container

  - ### getSelectors

    public FileSelector[] getSelectors(Project p)
    Returns the set of selectors as an array.
    Specified by:
      `getSelectors` in interface `SelectorContainer`
    Overrides:
      `getSelectors` in class `BaseSelectorContainer`
    Parameters:
      `p` - the current project
    Returns:
      an array of selectors in this container

  - ### selectorElements

    public Enumeration<FileSelector> selectorElements()
    Returns an enumerator for accessing the set of selectors.
    Specified by:
      `selectorElements` in interface `SelectorContainer`
    Overrides:
      `selectorElements` in class `BaseSelectorContainer`
    Returns:
      an enumerator that goes through each of the selectors

  - ### appendSelector

    public void appendSelector(FileSelector selector)
    Add a new selector into this container.
    Specified by:
      `appendSelector` in interface `SelectorContainer`
    Overrides:
      `appendSelector` in class `BaseSelectorContainer`
    Parameters:
      `selector` - the new selector to add

  - ### verifySettings

    public void verifySettings()
    Makes sure that there is only one entry, sets an error message if not.
    Overrides:
      `verifySettings` in class `BaseSelector`

  - ### passesConditions

    public boolean passesConditions()
    Ensures that the selector passes the conditions placed on it with `if` and `unless`.
    Returns:
      true if conditions are passed

  - ### setIf

    public void setIf(Object ifProperty)
    Sets the if attribute to an expression which must evaluate to true or the name of an existing property for the selector to select any files.
    Parameters:
      `ifProperty` - the expression to check
    Since:
      Ant 1.8.0

  - ### setIf

    public void setIf(String ifProperty)
    Sets the if attribute to an expression which must evaluate to true or the name of an existing property for the selector to select any files.
    Parameters:
      `ifProperty` - the expression to check

  - ### setUnless

    public void setUnless(Object unlessProperty)
    Sets the unless attribute to an expression which must evaluate to false or the name of a property which cannot exist for the selector to select any files.
    Parameters:
      `unlessProperty` - the expression to check
    Since:
      Ant 1.8.0

  - ### setUnless

    public void setUnless(String unlessProperty)
    Sets the unless attribute to an expression which must evaluate to false or the name of a property which cannot exist for the selector to select any files.
    Parameters:
      `unlessProperty` - the expression to check

  - ### isSelected

    public boolean isSelected(File basedir, String filename, File file)
    Returns true (the file is selected) only if the if property (if any) exists, the unless property (if any) doesn't exist, and the contained selector (if any) selects the file. If there is no contained selector, return true (because we assume that the point was to test the if and unless conditions).
    Specified by:
      `isSelected` in interface `FileSelector`
    Specified by:
      `isSelected` in class `BaseSelectorContainer`
    Parameters:
      `basedir` - the base directory the scan is being done from
      `filename` - the name of the file to check
      `file` - a java.io.File object for the filename that the selector can use
    Returns:
      whether the file should be selected or not