Package adql.search

## Class SimpleSearchHandler

- java.lang.Object
- - adql.search.SimpleSearchHandler

- All Implemented Interfaces:
    `ISearchHandler`, `java.lang.Iterable<ADQLObject>`
  Direct Known Subclasses:
    `SearchColumnHandler`, `SimpleReplaceHandler`

      public abstract class SimpleSearchHandler
      extends java.lang.Object
      implements ISearchHandler

  Lets searching ADQL objects which match with the condition defined in the function `match(ADQLObject)`.

  - By default, this search handler does not search recursively (that's to say, it does not search in sub-queries).
  - By default, this search handler does not stop to the first matching object.
  - The matching objects are simply collected in an ArrayList.
  Version:
    1.2 (12/2013)
  Author:
    Grégory Mantelet (CDS;ARI)
  See Also:
    `SearchColumnHandler`

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected java.util.ArrayList<ADQLObject>` | `results` | List of all matching ADQL objects.

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `SimpleSearchHandler()` | Builds a SimpleSearchHandler:
    `SimpleSearchHandler​(boolean recursive)` | Builds a SimpleSearchHandler which does not stop at the first match.
    `SimpleSearchHandler​(boolean recursive, boolean onlyFirstMatch)` | Builds a SimpleSearchHandler.

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `protected void` | `addMatch​(ADQLObject matchObj, ADQLIterator it)` | Adds the given ADQL object as one result of the research.
    `int` | `getNbMatch()` | Indicates how many ADQL objects have matched.
    `protected boolean` | `goInto​(ADQLObject obj)` | Indicates whether the research must continue inside the given ADQL object or not: by default, it returns always true except if the given object is an ADQL query while the research must not be recursive.
    `protected boolean` | `isFinished()` | Indicates whether the research must finish now or not: by default, the research ends only at the first match if it has been asked (see `setOnlyFirstMatch(boolean)`).
    `boolean` | `isRecursive()` | Tells whether this handler must search also in sub-queries.
    `java.util.Iterator<ADQLObject>` | `iterator()` | Lets to iterate on the list of all the matched ADQL objects.
    `protected abstract boolean` | `match​(ADQLObject obj)` | Only tests whether the given ADQL object checks the search conditions.
    `boolean` | `onlyFirstMatch()` | Tells whether this handler must stop at the first match.
    `protected void` | `reset()` | Resets this handler before the beginning of the research: by default, the list of results is cleared.
    `void` | `search​(ADQLObject startObj)` | Searches all matching ADQL objects from the given ADQL object (included).
    `void` | `setOnlyFirstMatch​(boolean firstMatch)` | Lets configuring this handler so that it must stop at the first match.
    `void` | `setRecursive​(boolean recursive)` | Lets configuring this handler so that it must search also in sub-queries or not.

    - ### Methods inherited from class java.lang.Object

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

    - ### Methods inherited from interface java.lang.Iterable

      `forEach, spliterator`

- - ### Field Detail

    - #### results

          protected final java.util.ArrayList<ADQLObject> results

      List of all matching ADQL objects.

  - ### Constructor Detail

    - #### SimpleSearchHandler

          public SimpleSearchHandler()

      Builds a SimpleSearchHandler:

      - not recursive,
      - and which does not stop at the first match.

    - #### SimpleSearchHandler

          public SimpleSearchHandler​(boolean recursive)

      Builds a SimpleSearchHandler which does not stop at the first match.
      Parameters:
        `recursive` - true to search also in sub-queries, false otherwise.

    - #### SimpleSearchHandler

          public SimpleSearchHandler​(boolean recursive,
                                     boolean onlyFirstMatch)

      Builds a SimpleSearchHandler.
      Parameters:
        `recursive` - true to search also in sub-queries, false otherwise.
        `onlyFirstMatch` - true to stop at the first match, false otherwise.

  - ### Method Detail

    - #### isRecursive

          public final boolean isRecursive()

      Tells whether this handler must search also in sub-queries.
      Returns:
        true if recursive, false otherwise.

    - #### setRecursive

          public final void setRecursive​(boolean recursive)

      Lets configuring this handler so that it must search also in sub-queries or not.
      Parameters:
        `recursive` - true to search recursively, false otherwise.

    - #### onlyFirstMatch

          public final boolean onlyFirstMatch()

      Tells whether this handler must stop at the first match.
      Returns:
        true if it stops at the first match, false otherwise.

    - #### setOnlyFirstMatch

          public final void setOnlyFirstMatch​(boolean firstMatch)

      Lets configuring this handler so that it must stop at the first match.
      Parameters:
        `firstMatch` - true if it must stop at the first match, false otherwise.

    - #### iterator

          public final java.util.Iterator<ADQLObject> iterator()

      Description copied from interface: `ISearchHandler`
      Lets to iterate on the list of all the matched ADQL objects.
      Specified by:
        `iterator` in interface `ISearchHandler`
      Specified by:
        `iterator` in interface `java.lang.Iterable<ADQLObject>`
      See Also:
        `Iterable.iterator()`

    - #### getNbMatch

          public final int getNbMatch()

      Description copied from interface: `ISearchHandler`
      Indicates how many ADQL objects have matched.
      Specified by:
        `getNbMatch` in interface `ISearchHandler`
      Returns:
        The number of all the matched ADQL objects.

    - #### isFinished

          protected boolean isFinished()

      Indicates whether the research must finish now or not: by default, the research ends only at the first match if it has been asked (see `setOnlyFirstMatch(boolean)`).
      Returns:
        true if the research must end now, false otherwise.

    - #### goInto

          protected boolean goInto​(ADQLObject obj)

      Indicates whether the research must continue inside the given ADQL object or not: by default, it returns always true except if the given object is an ADQL query while the research must not be recursive.
      Parameters:
        `obj` - An ADQL object.
      Returns:
        true if the research must continue inside the given ADQL object, false otherwise.

    - #### addMatch

          protected void addMatch​(ADQLObject matchObj,
                                  ADQLIterator it)

      Adds the given ADQL object as one result of the research.

      Warning: the second parameter (it) may be null if the given match is the root search object itself.

      Parameters:
        `matchObj` - An ADQL object which has matched to the research criteria.
        `it` - The iterator from which the matched ADQL object has been extracted.

    - #### reset

          protected void reset()

      Resets this handler before the beginning of the research: by default, the list of results is cleared.

    - #### search

          public final void search​(ADQLObject startObj)

      Description copied from interface: `ISearchHandler`
      Searches all matching ADQL objects from the given ADQL object (included).
      Specified by:
        `search` in interface `ISearchHandler`
      Parameters:
        `startObj` - The ADQL object from which the search must start.

    - #### match

          protected abstract boolean match​(ADQLObject obj)

      Only tests whether the given ADQL object checks the search conditions.
      Parameters:
        `obj` - The ADQL object to test. (warning: this object may be null !)
      Returns:
        true if the given object checks the search conditions, false otherwise.