java.lang.Object
org.objectstyle.cayenne.access.trans.QueryAssemblerHelper
org.objectstyle.cayenne.access.trans.QualifierTranslator
- All Implemented Interfaces:
- org.objectstyle.cayenne.exp.TraversalHandler
- Direct Known Subclasses:
- TrimmingQualifierTranslator
- public class QualifierTranslator
- extends QueryAssemblerHelper
- implements org.objectstyle.cayenne.exp.TraversalHandler
Translates query qualifier to SQL. Used as a helper class by query translators.
|
Method Summary |
private void |
appendList(org.objectstyle.cayenne.exp.Expression listExpr,
org.objectstyle.cayenne.map.DbAttribute paramDesc)
|
protected void |
appendLiteral(java.lang.StringBuffer buf,
java.lang.Object val,
org.objectstyle.cayenne.map.DbAttribute attr,
org.objectstyle.cayenne.exp.Expression parentExpression)
Appends SQL code to the query buffer to handle val as a
parameter to the PreparedStatement being built. |
protected void |
appendObjectMatch()
|
private void |
appendRawSql(java.lang.Object sql)
|
protected void |
detectObjectMatch(org.objectstyle.cayenne.exp.Expression exp)
Called before processing an expression to initialize
objectMatchTranslator if needed. |
java.lang.String |
doTranslation()
Translates query qualifier to SQL WHERE clause. |
void |
endBinaryNode(org.objectstyle.cayenne.exp.Expression node,
org.objectstyle.cayenne.exp.Expression parentNode)
Opportunity to close a bracket. |
void |
endListNode(org.objectstyle.cayenne.exp.Expression node,
org.objectstyle.cayenne.exp.Expression parentNode)
Opportunity to close a bracket. |
void |
endTernaryNode(org.objectstyle.cayenne.exp.Expression node,
org.objectstyle.cayenne.exp.Expression parentNode)
Opportunity to close a bracket. |
void |
endUnaryNode(org.objectstyle.cayenne.exp.Expression node,
org.objectstyle.cayenne.exp.Expression parentNode)
Opportunity to close a bracket. |
protected org.objectstyle.cayenne.exp.Expression |
extractQualifier()
|
void |
finishedChild(org.objectstyle.cayenne.exp.Expression node,
int childIndex,
boolean hasMoreChildren)
Opportunity to insert an operation |
org.objectstyle.cayenne.map.ObjEntity |
getObjEntity()
|
boolean |
isTranslateParentQual()
Returns true if this translator will translate
parent qualifier on call to doTranslation. |
void |
objectNode(java.lang.Object leaf,
org.objectstyle.cayenne.exp.Expression parentNode)
Opportunity to insert leaf node operand. |
private boolean |
parenthesisNeeded(org.objectstyle.cayenne.exp.Expression node,
org.objectstyle.cayenne.exp.Expression parentNode)
|
protected void |
processRelTermination(java.lang.StringBuffer buf,
org.objectstyle.cayenne.map.DbRelationship rel)
Handles case when a DB_NAME expression ends with relationship. |
void |
setTranslateParentQual(boolean translateParentQual)
Configures translator to translate
parent or main qualifier on call to doTranslation. |
void |
startBinaryNode(org.objectstyle.cayenne.exp.Expression node,
org.objectstyle.cayenne.exp.Expression parentNode)
Opportunity to open a bracket. |
void |
startListNode(org.objectstyle.cayenne.exp.Expression node,
org.objectstyle.cayenne.exp.Expression parentNode)
Opportunity to open a bracket. |
void |
startTernaryNode(org.objectstyle.cayenne.exp.Expression node,
org.objectstyle.cayenne.exp.Expression parentNode)
Opportunity to open a bracket. |
void |
startUnaryNode(org.objectstyle.cayenne.exp.Expression node,
org.objectstyle.cayenne.exp.Expression parentNode)
Opportunity to open a bracket |
| Methods inherited from class org.objectstyle.cayenne.access.trans.QueryAssemblerHelper |
appendDbPath, appendLiteralDirect, appendObjPath, getDbEntity, getQueryAssembler, paramsDbType, processColumn, processColumn, processColumn, processRelTermination, setQueryAssembler |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
logObj
private static org.apache.log4j.Logger logObj
treeWalker
private org.objectstyle.cayenne.exp.ExpressionTraversal treeWalker
qualBuf
private java.lang.StringBuffer qualBuf
translateParentQual
protected boolean translateParentQual
objectMatchTranslator
protected DataObjectMatchTranslator objectMatchTranslator
matchingObject
protected boolean matchingObject
QualifierTranslator
public QualifierTranslator()
QualifierTranslator
public QualifierTranslator(QueryAssembler queryAssembler)
doTranslation
public java.lang.String doTranslation()
- Translates query qualifier to SQL WHERE clause.
Qualifier is obtained from
queryAssembler object.
- Specified by:
doTranslation in class QueryAssemblerHelper
extractQualifier
protected org.objectstyle.cayenne.exp.Expression extractQualifier()
detectObjectMatch
protected void detectObjectMatch(org.objectstyle.cayenne.exp.Expression exp)
- Called before processing an expression to initialize
objectMatchTranslator if needed.
appendObjectMatch
protected void appendObjectMatch()
finishedChild
public void finishedChild(org.objectstyle.cayenne.exp.Expression node,
int childIndex,
boolean hasMoreChildren)
- Opportunity to insert an operation
- Specified by:
finishedChild in interface org.objectstyle.cayenne.exp.TraversalHandler
startUnaryNode
public void startUnaryNode(org.objectstyle.cayenne.exp.Expression node,
org.objectstyle.cayenne.exp.Expression parentNode)
- Opportunity to open a bracket
- Specified by:
startUnaryNode in interface org.objectstyle.cayenne.exp.TraversalHandler
startBinaryNode
public void startBinaryNode(org.objectstyle.cayenne.exp.Expression node,
org.objectstyle.cayenne.exp.Expression parentNode)
- Description copied from interface:
org.objectstyle.cayenne.exp.TraversalHandler
- Opportunity to open a bracket.
- Specified by:
startBinaryNode in interface org.objectstyle.cayenne.exp.TraversalHandler
startTernaryNode
public void startTernaryNode(org.objectstyle.cayenne.exp.Expression node,
org.objectstyle.cayenne.exp.Expression parentNode)
- Description copied from interface:
org.objectstyle.cayenne.exp.TraversalHandler
- Opportunity to open a bracket.
- Specified by:
startTernaryNode in interface org.objectstyle.cayenne.exp.TraversalHandler
endUnaryNode
public void endUnaryNode(org.objectstyle.cayenne.exp.Expression node,
org.objectstyle.cayenne.exp.Expression parentNode)
- Description copied from interface:
org.objectstyle.cayenne.exp.TraversalHandler
- Opportunity to close a bracket.
- Specified by:
endUnaryNode in interface org.objectstyle.cayenne.exp.TraversalHandler
endBinaryNode
public void endBinaryNode(org.objectstyle.cayenne.exp.Expression node,
org.objectstyle.cayenne.exp.Expression parentNode)
- Description copied from interface:
org.objectstyle.cayenne.exp.TraversalHandler
- Opportunity to close a bracket.
- Specified by:
endBinaryNode in interface org.objectstyle.cayenne.exp.TraversalHandler
endTernaryNode
public void endTernaryNode(org.objectstyle.cayenne.exp.Expression node,
org.objectstyle.cayenne.exp.Expression parentNode)
- Description copied from interface:
org.objectstyle.cayenne.exp.TraversalHandler
- Opportunity to close a bracket.
- Specified by:
endTernaryNode in interface org.objectstyle.cayenne.exp.TraversalHandler
objectNode
public void objectNode(java.lang.Object leaf,
org.objectstyle.cayenne.exp.Expression parentNode)
- Description copied from interface:
org.objectstyle.cayenne.exp.TraversalHandler
- Opportunity to insert leaf node operand.
- Specified by:
objectNode in interface org.objectstyle.cayenne.exp.TraversalHandler
parenthesisNeeded
private boolean parenthesisNeeded(org.objectstyle.cayenne.exp.Expression node,
org.objectstyle.cayenne.exp.Expression parentNode)
appendRawSql
private void appendRawSql(java.lang.Object sql)
appendList
private final void appendList(org.objectstyle.cayenne.exp.Expression listExpr,
org.objectstyle.cayenne.map.DbAttribute paramDesc)
isTranslateParentQual
public boolean isTranslateParentQual()
- Returns
true if this translator will translate
parent qualifier on call to doTranslation.
setTranslateParentQual
public void setTranslateParentQual(boolean translateParentQual)
- Configures translator to translate
parent or main qualifier on call to
doTranslation.
getObjEntity
public org.objectstyle.cayenne.map.ObjEntity getObjEntity()
- Overrides:
getObjEntity in class QueryAssemblerHelper
endListNode
public void endListNode(org.objectstyle.cayenne.exp.Expression node,
org.objectstyle.cayenne.exp.Expression parentNode)
- Description copied from interface:
org.objectstyle.cayenne.exp.TraversalHandler
- Opportunity to close a bracket.
- Specified by:
endListNode in interface org.objectstyle.cayenne.exp.TraversalHandler
startListNode
public void startListNode(org.objectstyle.cayenne.exp.Expression node,
org.objectstyle.cayenne.exp.Expression parentNode)
- Description copied from interface:
org.objectstyle.cayenne.exp.TraversalHandler
- Opportunity to open a bracket.
- Specified by:
startListNode in interface org.objectstyle.cayenne.exp.TraversalHandler
appendLiteral
protected void appendLiteral(java.lang.StringBuffer buf,
java.lang.Object val,
org.objectstyle.cayenne.map.DbAttribute attr,
org.objectstyle.cayenne.exp.Expression parentExpression)
- Description copied from class:
QueryAssemblerHelper
- Appends SQL code to the query buffer to handle
val as a
parameter to the PreparedStatement being built. Adds val
into QueryAssembler parameter list.
If val is null, "NULL" is appended to the query.
If val is a DataObject, its primary key value is
used as a parameter. Only objects with a single column primary key
can be used.
- Overrides:
appendLiteral in class QueryAssemblerHelper
processRelTermination
protected void processRelTermination(java.lang.StringBuffer buf,
org.objectstyle.cayenne.map.DbRelationship rel)
- Description copied from class:
QueryAssemblerHelper
- Handles case when a DB_NAME expression ends with relationship.
If this is a "to many" relationship, a join is added and a column
expression for the target entity primary key. If this is a "to one"
relationship, column expresion for the source foreign key is added.
- Overrides:
processRelTermination in class QueryAssemblerHelper