org.hibernate.hql.ast
Class HqlSqlWalker
java.lang.Object
antlr.TreeParser
org.hibernate.hql.antlr.HqlSqlBaseWalker
org.hibernate.hql.ast.HqlSqlWalker
- All Implemented Interfaces:
- ErrorReporter, HqlSqlTokenTypes
- public class HqlSqlWalker
- extends HqlSqlBaseWalker
- implements ErrorReporter
Implements methods used by the HQL->SQL tree transform grammar (a.k.a. the second phase).
- Isolates the Hibernate API-specific code from the ANTLR generated code.
- Handles the SQL framgents generated by the persisters in order to create the SELECT and FROM clauses,
taking into account the joins and projections that are implied by the mappings (persister/queryable).
- Uses SqlASTFactory to create customized AST nodes.
- See Also:
SqlASTFactory
| Fields inherited from class antlr.TreeParser |
_retTree, astFactory, ASTNULL, inputState, returnAST, tokenNames, traceDepth |
| Fields inherited from interface org.hibernate.hql.antlr.HqlSqlTokenTypes |
AGGREGATE, ALIAS, ALIAS_REF, ALL, AND, ANY, AS, ASCENDING, AVG, BETWEEN, BOGUS, BOTH, CASE, CASE2, CLASS, CLOSE, CLOSE_BRACKET, COLON, COMMA, CONCAT, CONSTANT, CONSTRUCTOR, COUNT, DELETE, DESCENDING, DISTINCT, DIV, DOT, ELEMENTS, ELSE, EMPTY, END, EOF, EQ, ESCAPE, ESCqs, EXISTS, EXPONENT, EXPR_LIST, FALSE, FETCH, FILTER_ENTITY, FILTERS, FLOAT_SUFFIX, FROM, FROM_FRAGMENT, FULL, GE, GROUP, GT, HAVING, HEX_DIGIT, IDENT, IMPLIED_FROM, IN, IN_LIST, INDEX_OP, INDICES, INNER, IS, IS_NOT_NULL, IS_NULL, JOIN, JOIN_FRAGMENT, LE, LEADING, LEFT, LEFT_OUTER, LIKE, LITERAL_ascending, LITERAL_by, LITERAL_descending, LT, MAX, MEMBER, METHOD_CALL, METHOD_NAME, MIN, MINUS, NAMED_PARAM, NE, NEW, NOT, NOT_BETWEEN, NOT_IN, NOT_LIKE, NULL, NULL_TREE_LOOKAHEAD, NUM_DOUBLE, NUM_FLOAT, NUM_INT, NUM_LONG, OBJECT, OF, ON, OPEN, OPEN_BRACKET, OR, ORDER, ORDER_ELEMENT, OUTER, PARAM, PLUS, PROPERTIES, PROPERTY_REF, QUERY, QUOTED_STRING, RANGE, RIGHT, RIGHT_OUTER, ROW_STAR, SELECT, SELECT_CLAUSE, SELECT_COLUMNS, SELECT_EXPR, SELECT_FROM, SET, SOME, SQL_NE, SQL_TOKEN, STAR, SUM, THEN, THETA_JOINS, TRAILING, TRUE, UNARY_MINUS, UNARY_PLUS, UNION, UPDATE, VECTOR_EXPR, WEIRD_IDENT, WHEN, WHERE, WS |
|
Method Summary |
protected void |
beforeSelectClause()
|
protected antlr.collections.AST |
createFromElement(String path,
antlr.collections.AST alias,
antlr.collections.AST propertyFetch)
|
protected antlr.collections.AST |
createFromFilterElement(antlr.collections.AST filterEntity,
antlr.collections.AST alias)
|
protected void |
createFromJoinElement(antlr.collections.AST path,
antlr.collections.AST alias,
int joinType,
antlr.collections.AST fetchNode,
antlr.collections.AST propertyFetch)
|
org.hibernate.hql.ast.AliasGenerator |
getAliasGenerator()
|
Map |
getEnabledFilters()
|
org.hibernate.hql.ast.FromClause |
getFinalFromClause()
|
ParseErrorHandler |
getParseErrorHandler()
|
String[] |
getReturnAliases()
|
Type[] |
getReturnTypes()
|
SelectClause |
getSelectClause()
|
org.hibernate.hql.ast.SessionFactoryHelper |
getSessionFactoryHelper()
|
Map |
getTokenReplacements()
|
boolean |
isShallowQuery()
|
boolean |
isSubQuery()
|
protected void |
lookupAlias(antlr.collections.AST aliasRef)
|
protected antlr.collections.AST |
lookupProperty(antlr.collections.AST dot,
boolean root,
boolean inSelect)
|
protected void |
namedParameter(antlr.collections.AST namedParameter)
|
protected void |
positionalParameter(antlr.collections.AST parameter)
|
protected void |
postProcessDelete(antlr.collections.AST delete)
|
protected void |
postProcessUpdate(antlr.collections.AST update)
|
protected void |
prepareFromClauseInputTree(antlr.collections.AST fromClauseInput)
Pre-process the from clause input tree. |
protected void |
processBoolean(antlr.collections.AST constant)
|
protected void |
processConstant(antlr.collections.AST constant)
|
protected void |
processConstructor(antlr.collections.AST constructor)
|
protected void |
processFunction(antlr.collections.AST functionCall,
boolean inSelect)
|
protected void |
processIndex(antlr.collections.AST indexOp)
|
protected void |
processQuery(antlr.collections.AST select,
antlr.collections.AST query)
|
protected void |
pushFromClause(antlr.collections.AST fromNode,
antlr.collections.AST inputFromNode)
Sets the current 'FROM' context. |
void |
reportError(antlr.RecognitionException e)
|
void |
reportError(String s)
|
void |
reportWarning(String s)
|
protected void |
resolve(antlr.collections.AST node)
|
protected void |
resolveSelectExpression(antlr.collections.AST node)
|
protected void |
setImpliedJoinType(int joinType)
|
| Methods inherited from class org.hibernate.hql.antlr.HqlSqlBaseWalker |
addrExpr, addrExprLhs, afterQuery, aggregateExpr, aliasedSelectExpr, aliasRef, arithmeticExpr, assignment, beforeQuery, caseExpr, collectionFunction, collectionFunctionOrSubselect, comparisonExpr, constant, constructor, count, deleteStatement, expr, exprOrSubquery, fromClause, fromElement, fromElementList, functionCall, getStatementType, groupClause, identifier, inLhs, inRhs, isInFrom, isInFunctionCall, isInSelect, isSelectStatement, joinElement, joinType, literal, logicalExpr, newValue, nonNestedPropertyRef, orderClause, orderExprs, parameter, path, propertyName, propertyRef, propertyRefLhs, query, selectClause, selectExpr, selectExprList, selectStatement, setClause, statement, updateStatement, whereClause |
| Methods inherited from class antlr.TreeParser |
getAST, getASTFactory, getTokenName, getTokenNames, match, match, matchNot, panic, setASTFactory, setASTNodeClass, setASTNodeType, traceIn, traceIndent, traceOut |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
HqlSqlWalker
public HqlSqlWalker(QueryTranslatorImpl qti,
SessionFactoryImplementor sfi,
HqlParser parser,
Map tokenReplacements,
String collectionRole)
- Create a new tree transformer.
- Parameters:
qti - Back pointer to the query translator implementation that is using this tree transform.sfi - The session factory implementor where the Hibernate mappings can be found.parser - tokenReplacements - Registers the token replacement map with the walker. This map will
be used to substitute function names and constants.collectionRole - the role name of the collection used as the basis for the filter, NULL if this
prepareFromClauseInputTree
protected void prepareFromClauseInputTree(antlr.collections.AST fromClauseInput)
- Description copied from class:
HqlSqlBaseWalker
- Pre-process the from clause input tree.
- Overrides:
prepareFromClauseInputTree in class HqlSqlBaseWalker
getSessionFactoryHelper
public org.hibernate.hql.ast.SessionFactoryHelper getSessionFactoryHelper()
getTokenReplacements
public Map getTokenReplacements()
getAliasGenerator
public org.hibernate.hql.ast.AliasGenerator getAliasGenerator()
getParseErrorHandler
public ParseErrorHandler getParseErrorHandler()
reportError
public void reportError(antlr.RecognitionException e)
- Specified by:
reportError in interface ErrorReporter
reportError
public void reportError(String s)
- Specified by:
reportError in interface ErrorReporter
reportWarning
public void reportWarning(String s)
- Specified by:
reportWarning in interface ErrorReporter
createFromElement
protected antlr.collections.AST createFromElement(String path,
antlr.collections.AST alias,
antlr.collections.AST propertyFetch)
throws antlr.SemanticException
- Overrides:
createFromElement in class HqlSqlBaseWalker
- Throws:
antlr.SemanticException
createFromFilterElement
protected antlr.collections.AST createFromFilterElement(antlr.collections.AST filterEntity,
antlr.collections.AST alias)
throws antlr.SemanticException
- Overrides:
createFromFilterElement in class HqlSqlBaseWalker
- Throws:
antlr.SemanticException
createFromJoinElement
protected void createFromJoinElement(antlr.collections.AST path,
antlr.collections.AST alias,
int joinType,
antlr.collections.AST fetchNode,
antlr.collections.AST propertyFetch)
throws antlr.SemanticException
- Overrides:
createFromJoinElement in class HqlSqlBaseWalker
- Throws:
antlr.SemanticException
pushFromClause
protected void pushFromClause(antlr.collections.AST fromNode,
antlr.collections.AST inputFromNode)
- Sets the current 'FROM' context.
- Overrides:
pushFromClause in class HqlSqlBaseWalker
- Parameters:
fromNode - The new 'FROM' context.inputFromNode - The from node from the input AST.
lookupAlias
protected void lookupAlias(antlr.collections.AST aliasRef)
throws antlr.SemanticException
- Overrides:
lookupAlias in class HqlSqlBaseWalker
- Throws:
antlr.SemanticException
setImpliedJoinType
protected void setImpliedJoinType(int joinType)
- Overrides:
setImpliedJoinType in class HqlSqlBaseWalker
lookupProperty
protected antlr.collections.AST lookupProperty(antlr.collections.AST dot,
boolean root,
boolean inSelect)
throws antlr.SemanticException
- Overrides:
lookupProperty in class HqlSqlBaseWalker
- Throws:
antlr.SemanticException
processQuery
protected void processQuery(antlr.collections.AST select,
antlr.collections.AST query)
throws antlr.SemanticException
- Overrides:
processQuery in class HqlSqlBaseWalker
- Throws:
antlr.SemanticException
postProcessUpdate
protected void postProcessUpdate(antlr.collections.AST update)
throws antlr.SemanticException
- Overrides:
postProcessUpdate in class HqlSqlBaseWalker
- Throws:
antlr.SemanticException
postProcessDelete
protected void postProcessDelete(antlr.collections.AST delete)
throws antlr.SemanticException
- Overrides:
postProcessDelete in class HqlSqlBaseWalker
- Throws:
antlr.SemanticException
resolve
protected void resolve(antlr.collections.AST node)
throws antlr.SemanticException
- Overrides:
resolve in class HqlSqlBaseWalker
- Throws:
antlr.SemanticException
resolveSelectExpression
protected void resolveSelectExpression(antlr.collections.AST node)
throws antlr.SemanticException
- Overrides:
resolveSelectExpression in class HqlSqlBaseWalker
- Throws:
antlr.SemanticException
beforeSelectClause
protected void beforeSelectClause()
throws antlr.SemanticException
- Overrides:
beforeSelectClause in class HqlSqlBaseWalker
- Throws:
antlr.SemanticException
positionalParameter
protected void positionalParameter(antlr.collections.AST parameter)
throws antlr.SemanticException
- Overrides:
positionalParameter in class HqlSqlBaseWalker
- Throws:
antlr.SemanticException
processConstant
protected void processConstant(antlr.collections.AST constant)
throws antlr.SemanticException
- Overrides:
processConstant in class HqlSqlBaseWalker
- Throws:
antlr.SemanticException
processBoolean
protected void processBoolean(antlr.collections.AST constant)
throws antlr.SemanticException
- Overrides:
processBoolean in class HqlSqlBaseWalker
- Throws:
antlr.SemanticException
processIndex
protected void processIndex(antlr.collections.AST indexOp)
throws antlr.SemanticException
- Overrides:
processIndex in class HqlSqlBaseWalker
- Throws:
antlr.SemanticException
processFunction
protected void processFunction(antlr.collections.AST functionCall,
boolean inSelect)
throws antlr.SemanticException
- Overrides:
processFunction in class HqlSqlBaseWalker
- Throws:
antlr.SemanticException
processConstructor
protected void processConstructor(antlr.collections.AST constructor)
throws antlr.SemanticException
- Overrides:
processConstructor in class HqlSqlBaseWalker
- Throws:
antlr.SemanticException
namedParameter
protected void namedParameter(antlr.collections.AST namedParameter)
throws antlr.SemanticException
- Overrides:
namedParameter in class HqlSqlBaseWalker
- Throws:
antlr.SemanticException
getReturnTypes
public Type[] getReturnTypes()
getReturnAliases
public String[] getReturnAliases()
isSubQuery
public boolean isSubQuery()
- Overrides:
isSubQuery in class HqlSqlBaseWalker
getSelectClause
public SelectClause getSelectClause()
getFinalFromClause
public org.hibernate.hql.ast.FromClause getFinalFromClause()
isShallowQuery
public boolean isShallowQuery()
getEnabledFilters
public Map getEnabledFilters()