|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.datanucleus.query.evaluator.AbstractExpressionEvaluator
org.datanucleus.store.rdbms.query2.QueryToSQLMapper
public class QueryToSQLMapper
Class which maps a compiled query to an SQL query. Will form part of DataNucleus AccessPlatform 1.1 and later. Takes in an SQLStatement, and use of compile() will update the SQLStatement to reflect the filter, result, grouping, having, ordering etc.
| Constructor Summary | |
|---|---|
QueryToSQLMapper(SQLStatement stmt,
org.datanucleus.query.compiler.QueryCompilation compilation,
java.util.Map parameters,
org.datanucleus.store.mapped.StatementClassMapping resultDefForClass,
org.datanucleus.store.mapped.StatementResultMapping resultDef,
org.datanucleus.metadata.AbstractClassMetaData cmd,
org.datanucleus.FetchPlan fetchPlan,
org.datanucleus.store.mapped.StatementParameterMapping paramInfo,
org.datanucleus.ObjectManager om)
Constructor. |
|
| Method Summary | |
|---|---|
void |
compile()
Method to update the supplied SQLStatement with the components of the specified query. |
protected void |
compileFromClassExpression(org.datanucleus.query.expression.ClassExpression clsExpr)
Method to take a ClassExpression (in a FROM clause) and process the candidate and any linked JoinExpression(s), adding joins to the SQLStatement as required. |
org.datanucleus.ClassLoaderResolver |
getClassLoaderResolver()
Accessor for the ClassLoader resolver to use when looking up classes. |
org.datanucleus.query.compiler.CompilationComponent |
getCompilationComponent()
Accessor for the current query component being compiled. |
org.datanucleus.ObjectManager |
getObjectManager()
Accessor for the ObjectManager for this query. |
java.lang.Object |
getProperty(java.lang.String name)
Accessor for a property affecting the query compilation. |
java.lang.String |
getQueryLanguage()
Accessor for the query language that this query pertains to. |
protected org.datanucleus.store.rdbms.query2.QueryToSQLMapper.SQLTableMapping |
getSQLTableMappingForAlias(java.lang.String alias)
|
protected org.datanucleus.store.mapped.StatementNewObjectMapping |
getStatementMappingForNewObjectExpression(NewObjectExpression expr)
Convenience method to convert a NewObjectExpression into a StatementNewObjectMapping. |
protected java.lang.Object |
getValueForObjectField(java.lang.Object obj,
java.lang.String fieldName)
Convenience method to return the value of a field of the supplied object. |
protected boolean |
hasSQLTableMappingForAlias(java.lang.String alias)
|
boolean |
isPrecompilable()
Accessor for whether the query is precompilable (doesn't need to know parameter values to be able to compile it). |
protected java.lang.Object |
processAddExpression(org.datanucleus.query.expression.Expression expr)
|
protected java.lang.Object |
processAndExpression(org.datanucleus.query.expression.Expression expr)
|
protected java.lang.Object |
processCastExpression(org.datanucleus.query.expression.CastExpression expr)
|
protected java.lang.Object |
processComExpression(org.datanucleus.query.expression.Expression expr)
|
protected java.lang.Object |
processCreatorExpression(org.datanucleus.query.expression.CreatorExpression expr)
|
protected java.lang.Object |
processDivExpression(org.datanucleus.query.expression.Expression expr)
|
protected java.lang.Object |
processEqExpression(org.datanucleus.query.expression.Expression expr)
|
protected java.lang.Object |
processGteqExpression(org.datanucleus.query.expression.Expression expr)
|
protected java.lang.Object |
processGtExpression(org.datanucleus.query.expression.Expression expr)
|
protected java.lang.Object |
processInvokeExpression(org.datanucleus.query.expression.InvokeExpression expr)
|
protected java.lang.Object |
processIsExpression(org.datanucleus.query.expression.Expression expr)
|
protected java.lang.Object |
processLikeExpression(org.datanucleus.query.expression.Expression expr)
|
protected java.lang.Object |
processLiteral(org.datanucleus.query.expression.Literal expr)
|
protected java.lang.Object |
processLteqExpression(org.datanucleus.query.expression.Expression expr)
|
protected java.lang.Object |
processLtExpression(org.datanucleus.query.expression.Expression expr)
|
protected java.lang.Object |
processModExpression(org.datanucleus.query.expression.Expression expr)
|
protected java.lang.Object |
processMulExpression(org.datanucleus.query.expression.Expression expr)
|
protected java.lang.Object |
processNegExpression(org.datanucleus.query.expression.Expression expr)
|
protected java.lang.Object |
processNoteqExpression(org.datanucleus.query.expression.Expression expr)
|
protected java.lang.Object |
processNotExpression(org.datanucleus.query.expression.Expression expr)
|
protected java.lang.Object |
processOrExpression(org.datanucleus.query.expression.Expression expr)
|
protected java.lang.Object |
processParameterExpression(org.datanucleus.query.expression.ParameterExpression expr)
|
protected java.lang.Object |
processParameterExpression(org.datanucleus.query.expression.ParameterExpression expr,
boolean asLiteral)
Method to process a parameter expression. |
protected java.lang.Object |
processPrimaryExpression(org.datanucleus.query.expression.PrimaryExpression expr)
|
protected java.lang.Object |
processSubExpression(org.datanucleus.query.expression.Expression expr)
|
protected java.lang.Object |
processVariableExpression(org.datanucleus.query.expression.VariableExpression expr)
|
protected SQLExpression |
replaceParameterLiteral(ParameterLiteral paramLit,
org.datanucleus.store.mapped.mapping.JavaTypeMapping mapping)
Convenience method to return a parameter-based literal using the supplied mapping to replace the provided ParameterLiteral (generated before its type was known). |
protected void |
setSQLTableMappingForAlias(java.lang.String alias,
org.datanucleus.store.rdbms.query2.QueryToSQLMapper.SQLTableMapping mapping)
|
void |
useParameterExpressionAsLiteral(SQLLiteral paramLiteral)
Method to instruct the generator to convert the provided parameter expression to just be a literal using the value of the parameter (hence the statement cannot be precompilable since the value needs to be known). |
| Methods inherited from class org.datanucleus.query.evaluator.AbstractExpressionEvaluator |
|---|
compileAdditiveMultiplicativeExpression, compileOrAndExpression, compilePrimaryExpression, compileRelationalExpression, compileUnaryExpression, evaluate |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public QueryToSQLMapper(SQLStatement stmt,
org.datanucleus.query.compiler.QueryCompilation compilation,
java.util.Map parameters,
org.datanucleus.store.mapped.StatementClassMapping resultDefForClass,
org.datanucleus.store.mapped.StatementResultMapping resultDef,
org.datanucleus.metadata.AbstractClassMetaData cmd,
org.datanucleus.FetchPlan fetchPlan,
org.datanucleus.store.mapped.StatementParameterMapping paramInfo,
org.datanucleus.ObjectManager om)
stmt - SQL Statement to update with the query contents.compilation - The generic query compilationparameters - Parameters neededresultDefForClass - Definition of results for the statement (populated here)resultDef - Definition of results if we have a result clause (populated here)cmd - Metadata for the candidate classfetchPlan - Fetch Plan to applyparamInfo - Definition of parameters for the statement (populated here)om - ObjectManager| Method Detail |
|---|
public java.lang.String getQueryLanguage()
getQueryLanguage in interface QueryGeneratorpublic org.datanucleus.ClassLoaderResolver getClassLoaderResolver()
QueryGenerator
getClassLoaderResolver in interface QueryGeneratorpublic org.datanucleus.query.compiler.CompilationComponent getCompilationComponent()
QueryGenerator
getCompilationComponent in interface QueryGeneratorpublic org.datanucleus.ObjectManager getObjectManager()
QueryGenerator
getObjectManager in interface QueryGeneratorpublic java.lang.Object getProperty(java.lang.String name)
QueryGenerator
getProperty in interface QueryGeneratorname - The property name
public boolean isPrecompilable()
public void useParameterExpressionAsLiteral(SQLLiteral paramLiteral)
QueryGenerator
useParameterExpressionAsLiteral in interface QueryGeneratorparamLiteral - The parameter expressionpublic void compile()
protected void compileFromClassExpression(org.datanucleus.query.expression.ClassExpression clsExpr)
clsExpr - The ClassExpressionprotected org.datanucleus.store.mapped.StatementNewObjectMapping getStatementMappingForNewObjectExpression(NewObjectExpression expr)
expr - The NewObjectExpression
protected java.lang.Object processAndExpression(org.datanucleus.query.expression.Expression expr)
processAndExpression in class org.datanucleus.query.evaluator.AbstractExpressionEvaluatorprotected java.lang.Object processOrExpression(org.datanucleus.query.expression.Expression expr)
processOrExpression in class org.datanucleus.query.evaluator.AbstractExpressionEvaluatorprotected java.lang.Object processEqExpression(org.datanucleus.query.expression.Expression expr)
processEqExpression in class org.datanucleus.query.evaluator.AbstractExpressionEvaluatorprotected java.lang.Object processNoteqExpression(org.datanucleus.query.expression.Expression expr)
processNoteqExpression in class org.datanucleus.query.evaluator.AbstractExpressionEvaluatorprotected java.lang.Object processGteqExpression(org.datanucleus.query.expression.Expression expr)
processGteqExpression in class org.datanucleus.query.evaluator.AbstractExpressionEvaluatorprotected java.lang.Object processGtExpression(org.datanucleus.query.expression.Expression expr)
processGtExpression in class org.datanucleus.query.evaluator.AbstractExpressionEvaluatorprotected java.lang.Object processLteqExpression(org.datanucleus.query.expression.Expression expr)
processLteqExpression in class org.datanucleus.query.evaluator.AbstractExpressionEvaluatorprotected java.lang.Object processLtExpression(org.datanucleus.query.expression.Expression expr)
processLtExpression in class org.datanucleus.query.evaluator.AbstractExpressionEvaluatorprotected java.lang.Object processLiteral(org.datanucleus.query.expression.Literal expr)
processLiteral in class org.datanucleus.query.evaluator.AbstractExpressionEvaluatorprotected java.lang.Object processPrimaryExpression(org.datanucleus.query.expression.PrimaryExpression expr)
processPrimaryExpression in class org.datanucleus.query.evaluator.AbstractExpressionEvaluatorprotected java.lang.Object processParameterExpression(org.datanucleus.query.expression.ParameterExpression expr)
processParameterExpression in class org.datanucleus.query.evaluator.AbstractExpressionEvaluator
protected java.lang.Object processParameterExpression(org.datanucleus.query.expression.ParameterExpression expr,
boolean asLiteral)
expr - The ParameterExpressionasLiteral - Whether to create a SQLLiteral rather than a parameter literalprotected java.lang.Object processInvokeExpression(org.datanucleus.query.expression.InvokeExpression expr)
processInvokeExpression in class org.datanucleus.query.evaluator.AbstractExpressionEvaluatorprotected java.lang.Object processAddExpression(org.datanucleus.query.expression.Expression expr)
processAddExpression in class org.datanucleus.query.evaluator.AbstractExpressionEvaluatorprotected java.lang.Object processDivExpression(org.datanucleus.query.expression.Expression expr)
processDivExpression in class org.datanucleus.query.evaluator.AbstractExpressionEvaluatorprotected java.lang.Object processMulExpression(org.datanucleus.query.expression.Expression expr)
processMulExpression in class org.datanucleus.query.evaluator.AbstractExpressionEvaluatorprotected java.lang.Object processSubExpression(org.datanucleus.query.expression.Expression expr)
processSubExpression in class org.datanucleus.query.evaluator.AbstractExpressionEvaluatorprotected java.lang.Object processComExpression(org.datanucleus.query.expression.Expression expr)
processComExpression in class org.datanucleus.query.evaluator.AbstractExpressionEvaluatorprotected java.lang.Object processModExpression(org.datanucleus.query.expression.Expression expr)
processModExpression in class org.datanucleus.query.evaluator.AbstractExpressionEvaluatorprotected java.lang.Object processNegExpression(org.datanucleus.query.expression.Expression expr)
processNegExpression in class org.datanucleus.query.evaluator.AbstractExpressionEvaluatorprotected java.lang.Object processNotExpression(org.datanucleus.query.expression.Expression expr)
processNotExpression in class org.datanucleus.query.evaluator.AbstractExpressionEvaluatorprotected java.lang.Object processCastExpression(org.datanucleus.query.expression.CastExpression expr)
processCastExpression in class org.datanucleus.query.evaluator.AbstractExpressionEvaluatorprotected java.lang.Object processIsExpression(org.datanucleus.query.expression.Expression expr)
processIsExpression in class org.datanucleus.query.evaluator.AbstractExpressionEvaluatorprotected java.lang.Object processCreatorExpression(org.datanucleus.query.expression.CreatorExpression expr)
processCreatorExpression in class org.datanucleus.query.evaluator.AbstractExpressionEvaluatorprotected java.lang.Object processLikeExpression(org.datanucleus.query.expression.Expression expr)
processLikeExpression in class org.datanucleus.query.evaluator.AbstractExpressionEvaluatorprotected java.lang.Object processVariableExpression(org.datanucleus.query.expression.VariableExpression expr)
processVariableExpression in class org.datanucleus.query.evaluator.AbstractExpressionEvaluator
protected SQLExpression replaceParameterLiteral(ParameterLiteral paramLit,
org.datanucleus.store.mapped.mapping.JavaTypeMapping mapping)
paramLit - The parameter literalmapping - Mapping to use
protected java.lang.Object getValueForObjectField(java.lang.Object obj,
java.lang.String fieldName)
obj - The objectfieldName - The field name
protected org.datanucleus.store.rdbms.query2.QueryToSQLMapper.SQLTableMapping getSQLTableMappingForAlias(java.lang.String alias)
protected void setSQLTableMappingForAlias(java.lang.String alias,
org.datanucleus.store.rdbms.query2.QueryToSQLMapper.SQLTableMapping mapping)
protected boolean hasSQLTableMappingForAlias(java.lang.String alias)
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||