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

      • ElementCollectorVisitor

        public ElementCollectorVisitor​(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:
        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,
                                             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 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 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