Package org.teiid.query.sql.visitor
Class GroupCollectorVisitor
- java.lang.Object
-
- org.teiid.query.sql.LanguageVisitor
-
- org.teiid.query.sql.visitor.GroupCollectorVisitor
-
public class GroupCollectorVisitor extends LanguageVisitor
This visitor class will traverse a language object tree and collect all group symbol references it finds. It uses a collection to collect the groups 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 get the collection. The public visit() methods should NOT be called directly.
-
-
Constructor Summary
Constructors Constructor Description GroupCollectorVisitor(Collection<GroupSymbol> groups)
Construct a new visitor with the specified collection, which should be non-null.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description Collection<GroupSymbol>
getGroups()
Get the groups collected by the visitor.static Collection<GroupSymbol>
getGroups(LanguageObject obj, boolean removeDuplicates)
Helper to quickly get the groups from obj in a collection.static void
getGroups(LanguageObject obj, Collection<GroupSymbol> groups)
Helper to quickly get the groups from obj in the groups collectionstatic Collection<GroupSymbol>
getGroupsIgnoreInlineViews(LanguageObject obj, boolean removeDuplicates)
Helper to quickly get the groups from obj in a collection.static void
getGroupsIgnoreInlineViewsAndEvaluatableSubqueries(LanguageObject obj, Collection<GroupSymbol> groups)
Helper to quickly get the groups from obj in the groups collectionCollection<GroupSymbol>
getInlineViewGroups()
void
setIgnoreInlineViewGroups(boolean ignoreInlineViewGroups)
void
visit(Into obj)
void
visit(StoredProcedure obj)
Visit a language object and collect symbols.void
visit(SubqueryFromClause obj)
void
visit(GroupSymbol 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, visit, visit, visit, visit, visit
-
-
-
-
Constructor Detail
-
GroupCollectorVisitor
public GroupCollectorVisitor(Collection<GroupSymbol> groups)
Construct a new visitor with the specified collection, which should be non-null.- Parameters:
groups
- Collection to use for groups- Throws:
IllegalArgumentException
- If groups is null
-
-
Method Detail
-
getGroups
public Collection<GroupSymbol> getGroups()
Get the groups collected by the visitor. This should best be called after the visitor has been run on the language object tree.- Returns:
- Collection of
GroupSymbol
-
getInlineViewGroups
public Collection<GroupSymbol> getInlineViewGroups()
-
setIgnoreInlineViewGroups
public void setIgnoreInlineViewGroups(boolean ignoreInlineViewGroups)
-
visit
public void visit(GroupSymbol obj)
Visit a language object and collect symbols. This method should NOT be called directly.- Overrides:
visit
in classLanguageVisitor
- Parameters:
obj
- Language object
-
visit
public void visit(StoredProcedure obj)
Visit a language object and collect symbols. This method should NOT be called directly.- Overrides:
visit
in classLanguageVisitor
- Parameters:
obj
- Language object
-
visit
public void visit(Into obj)
- Overrides:
visit
in classLanguageVisitor
-
visit
public void visit(SubqueryFromClause obj)
- Overrides:
visit
in classLanguageVisitor
-
getGroups
public static void getGroups(LanguageObject obj, Collection<GroupSymbol> groups)
Helper to quickly get the groups from obj in the groups collection- Parameters:
obj
- Language objectgroups
- Collection to collect groups in
-
getGroups
public static Collection<GroupSymbol> getGroups(LanguageObject obj, boolean removeDuplicates)
Helper to quickly get the groups from obj in a collection. The removeDuplicates flag affects whether duplicate groups will be filtered out.- Parameters:
obj
- Language objectremoveDuplicates
- True to remove duplicates- Returns:
- Collection of
GroupSymbol
-
getGroupsIgnoreInlineViewsAndEvaluatableSubqueries
public static void getGroupsIgnoreInlineViewsAndEvaluatableSubqueries(LanguageObject obj, Collection<GroupSymbol> groups)
Helper to quickly get the groups from obj in the groups collection- Parameters:
obj
- Language objectgroups
- Collection to collect groups in
-
getGroupsIgnoreInlineViews
public static Collection<GroupSymbol> getGroupsIgnoreInlineViews(LanguageObject obj, boolean removeDuplicates)
Helper to quickly get the groups from obj in a collection. The removeDuplicates flag affects whether duplicate groups will be filtered out.- Parameters:
obj
- Language objectremoveDuplicates
- True to remove duplicates- Returns:
- Collection of
GroupSymbol
-
-