Package adql.search

Class 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.