Class SymbolTable

java.lang.Object
org.datanucleus.store.query.compiler.SymbolTable
All Implemented Interfaces:
Serializable

public class SymbolTable extends Object implements Serializable
Table of symbols in a query.
See Also:
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      See Also:
    • parentSymbolTable

      SymbolTable parentSymbolTable
      SymbolTable for the parent query (when this is a subquery), otherwise null.
    • symbols

      Map<String,Symbol> symbols
    • resolver

      transient SymbolResolver resolver
      Resolver for symbols. Note that this is not serialisable, but is set when compile() is called.
  • Constructor Details

    • SymbolTable

      public SymbolTable()
  • Method Details

    • setSymbolResolver

      public void setSymbolResolver(SymbolResolver resolver)
    • getSymbolResolver

      public SymbolResolver getSymbolResolver()
    • setParentSymbolTable

      public void setParentSymbolTable(SymbolTable tbl)
      Set the symbol table for any parent query, so that if this query refers to an expression from the parent query then it is resolvable.
      Parameters:
      tbl - The parent symbol table
    • getParentSymbolTable

      public SymbolTable getParentSymbolTable()
      Accessor for the parent symbol table (if any).
      Returns:
      The parent symbol table
    • getSymbolNames

      public Collection<String> getSymbolNames()
      Accessor for the names of the symbols in this table.
      Returns:
      Names of the symbols
    • getSymbol

      public Symbol getSymbol(String name)
      Return the Symbol for the specified name if known. If there is a parent symbol table then looks up in that after if not found here (unless the name is "this").
      Parameters:
      name - The name to look up
      Returns:
      The symbol for this name
    • getSymbolIgnoreCase

      public Symbol getSymbolIgnoreCase(String name)
      Return the Symbol for the specified name if known, treating the name as case-insensitive. If there is a parent symbol table then looks up in that after if not found here (unless the name is "this").
      Parameters:
      name - The name to look up
      Returns:
      The symbol for this name
    • hasSymbol

      public boolean hasSymbol(String name)
      Accessor for whether this symbol table has a particular symbol name. Does not make any use of parent symbol table(s).
      Parameters:
      name - The name of the symbol we require
      Returns:
      Whether it is present here
    • addSymbol

      public int addSymbol(Symbol symbol)
    • removeSymbol

      public void removeSymbol(Symbol symbol)
    • toString

      public String toString()
      Overrides:
      toString in class Object