org.teiid.query.sql.visitor
Class ElementCollectorVisitor

java.lang.Object
  extended by org.teiid.query.sql.LanguageVisitor
      extended by org.teiid.query.sql.visitor.ElementCollectorVisitor

public class ElementCollectorVisitor
extends LanguageVisitor

This visitor class will traverse a language object tree and collect all element symbol references it finds. It uses a collection to collect the elements in so different collections will give you different collection properties - for instance, using a Set will remove duplicates.

The easiest way to use this visitor is to call the static methods which create the visitor (and possibly the collection), run the visitor, and return the collection. The public visit() methods should NOT be called directly.


Constructor Summary
ElementCollectorVisitor(java.util.Collection<? super ElementSymbol> elements)
          Construct a new visitor with the specified collection, which should be non-null.
 
Method Summary
static java.util.Collection<ElementSymbol> getAggregates(LanguageObject obj, boolean removeDuplicates)
           
static void getElements(java.util.Collection<? extends LanguageObject> objs, java.util.Collection<ElementSymbol> elements)
           
static java.util.Collection<ElementSymbol> getElements(LanguageObject obj, boolean removeDuplicates)
          Helper to quickly get the elements from obj in a collection.
static java.util.Collection<ElementSymbol> getElements(LanguageObject obj, boolean removeDuplicates, boolean useDeepIteration)
          Helper to quickly get the elements from obj in a collection.
static java.util.Collection<ElementSymbol> getElements(LanguageObject obj, boolean removeDuplicates, boolean useDeepIteration, boolean aggsOnly)
           
static void getElements(LanguageObject obj, java.util.Collection<? super ElementSymbol> elements)
          Helper to quickly get the elements from obj in the elements collection
 void visit(ElementSymbol obj)
          Visit a language object and collect symbols.
 void visit(MultipleElementSymbol obj)
          Visit a language object and collect symbols.
 
Methods inherited from class org.teiid.query.sql.LanguageVisitor
setAbort, shouldAbort, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ElementCollectorVisitor

public ElementCollectorVisitor(java.util.Collection<? super ElementSymbol> elements)
Construct a new visitor with the specified collection, which should be non-null.

Parameters:
elements - Collection to use for elements
Throws:
java.lang.IllegalArgumentException - If elements is null
Method Detail

visit

public void visit(ElementSymbol obj)
Visit a language object and collect symbols. This method should NOT be called directly.

Overrides:
visit in class LanguageVisitor
Parameters:
obj - Language object

visit

public void visit(MultipleElementSymbol obj)
Visit a language object and collect symbols. This method should NOT be called directly.

Overrides:
visit in class LanguageVisitor
Parameters:
obj - Language object

getElements

public static final void getElements(LanguageObject obj,
                                     java.util.Collection<? super ElementSymbol> elements)
Helper to quickly get the elements from obj in the elements collection

Parameters:
obj - Language object
elements - Collection to collect elements in

getElements

public static final void getElements(java.util.Collection<? extends LanguageObject> objs,
                                     java.util.Collection<ElementSymbol> elements)

getElements

public static final java.util.Collection<ElementSymbol> getElements(LanguageObject obj,
                                                                    boolean removeDuplicates)
Helper to quickly get the elements from obj in a collection. The removeDuplicates flag affects whether duplicate elements will be filtered out.

Parameters:
obj - Language object
removeDuplicates - True to remove duplicates
Returns:
Collection of ElementSymbol

getElements

public static final java.util.Collection<ElementSymbol> getElements(LanguageObject obj,
                                                                    boolean removeDuplicates,
                                                                    boolean useDeepIteration)
Helper to quickly get the elements from obj in a collection. The removeDuplicates flag affects whether duplicate elements will be filtered out.

Parameters:
obj - Language object
removeDuplicates - True to remove duplicates
useDeepIteration - indicates whether or not to iterate into nested subqueries of the query
Returns:
Collection of ElementSymbol

getElements

public static final java.util.Collection<ElementSymbol> getElements(LanguageObject obj,
                                                                    boolean removeDuplicates,
                                                                    boolean useDeepIteration,
                                                                    boolean aggsOnly)

getAggregates

public static final java.util.Collection<ElementSymbol> getAggregates(LanguageObject obj,
                                                                      boolean removeDuplicates)


Copyright © 2011. All Rights Reserved.