org.apache.cayenne.access.trans
Class QualifierTranslator

java.lang.Object
  extended by org.apache.cayenne.access.trans.QueryAssemblerHelper
      extended by org.apache.cayenne.access.trans.QualifierTranslator
All Implemented Interfaces:
TraversalHandler
Direct Known Subclasses:
OpenBaseQualifierTranslator, TrimmingQualifierTranslator

public class QualifierTranslator
extends QueryAssemblerHelper
implements TraversalHandler

Translates query qualifier to SQL. Used as a helper class by query translators.


Field Summary
protected  boolean matchingObject
           
protected  DataObjectMatchTranslator objectMatchTranslator
           
 
Fields inherited from class org.apache.cayenne.access.trans.QueryAssemblerHelper
out, queryAssembler, strategy
 
Constructor Summary
QualifierTranslator(QueryAssembler queryAssembler)
           
 
Method Summary
protected  void appendLiteral(Object val, DbAttribute attr, Expression parentExpression)
          Appends SQL code to the query buffer to handle val as a parameter to the PreparedStatement being built.
protected  void appendObjectMatch()
           
protected  void detectObjectMatch(Expression exp)
          Called before processing an expression to initialize objectMatchTranslator if needed.
protected  void doAppendPart()
          Translates query qualifier to SQL WHERE clause.
protected  void doAppendPart(Expression rootNode)
          Translates query qualifier to SQL WHERE clause.
 void endNode(Expression node, Expression parentNode)
          Called during the traversal after an expression node children processing is finished.
protected  Expression extractQualifier()
           
 void finishedChild(Expression node, int childIndex, boolean hasMoreChildren)
          Called during traversal after a child of expression has been visited.
 void objectNode(Object leaf, Expression parentNode)
          Called during the traversal when a leaf non-expression node is encountered.
protected  boolean parenthesisNeeded(Expression node, Expression parentNode)
           
protected  void processRelTermination(DbRelationship rel, JoinType joinType, String joinSplitAlias)
          Handles case when a DB_NAME expression ends with relationship.
 void startNode(Expression node, Expression parentNode)
          Called during the traversal before an expression node children processing is started.
 
Methods inherited from class org.apache.cayenne.access.trans.QueryAssemblerHelper
appendDbPath, appendLikeEscapeCharacter, appendLiteralDirect, appendObjPath, appendPart, getDbEntity, getObjEntity, paramsDbType, processColumn, processColumnWithQuoteSqlIdentifiers, processRelTermination
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

objectMatchTranslator

protected DataObjectMatchTranslator objectMatchTranslator

matchingObject

protected boolean matchingObject
Constructor Detail

QualifierTranslator

public QualifierTranslator(QueryAssembler queryAssembler)
Method Detail

doAppendPart

protected void doAppendPart()
                     throws IOException
Translates query qualifier to SQL WHERE clause. Qualifier is obtained from the parent queryAssembler.

Specified by:
doAppendPart in class QueryAssemblerHelper
Throws:
IOException
Since:
3.0

doAppendPart

protected void doAppendPart(Expression rootNode)
                     throws IOException
Translates query qualifier to SQL WHERE clause. Qualifier is a method parameter *

Throws:
IOException
Since:
3.0

extractQualifier

protected Expression extractQualifier()

detectObjectMatch

protected void detectObjectMatch(Expression exp)
Called before processing an expression to initialize objectMatchTranslator if needed.


appendObjectMatch

protected void appendObjectMatch()
                          throws IOException
Throws:
IOException

finishedChild

public void finishedChild(Expression node,
                          int childIndex,
                          boolean hasMoreChildren)
Description copied from interface: TraversalHandler
Called during traversal after a child of expression has been visited.

Specified by:
finishedChild in interface TraversalHandler

startNode

public void startNode(Expression node,
                      Expression parentNode)
Description copied from interface: TraversalHandler
Called during the traversal before an expression node children processing is started.

Specified by:
startNode in interface TraversalHandler

endNode

public void endNode(Expression node,
                    Expression parentNode)
Description copied from interface: TraversalHandler
Called during the traversal after an expression node children processing is finished.

Specified by:
endNode in interface TraversalHandler
Since:
1.1

objectNode

public void objectNode(Object leaf,
                       Expression parentNode)
Description copied from interface: TraversalHandler
Called during the traversal when a leaf non-expression node is encountered.

Specified by:
objectNode in interface TraversalHandler

parenthesisNeeded

protected boolean parenthesisNeeded(Expression node,
                                    Expression parentNode)

appendLiteral

protected void appendLiteral(Object val,
                             DbAttribute attr,
                             Expression parentExpression)
                      throws IOException
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
Parameters:
val - object that should be appended as a literal to the query. Must be of one of "standard JDBC" types, null or a DataObject.
attr - DbAttribute that has information on what type of parameter is being appended.
Throws:
IOException

processRelTermination

protected void processRelTermination(DbRelationship rel,
                                     JoinType joinType,
                                     String joinSplitAlias)
                              throws IOException
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 expression for the source foreign key is added.

Overrides:
processRelTermination in class QueryAssemblerHelper
Throws:
IOException


Copyright © 2001-2011 Apache Cayenne. All Rights Reserved.