org.apache.cayenne.access.trans
Class QueryAssemblerHelper

java.lang.Object
  extended by org.apache.cayenne.access.trans.QueryAssemblerHelper
Direct Known Subclasses:
OrderingTranslator, QualifierTranslator

public abstract class QueryAssemblerHelper
extends Object

Translates parts of the query to SQL. Always works in the context of parent Translator.


Field Summary
protected  Appendable out
           
protected  QueryAssembler queryAssembler
           
protected  QuotingStrategy strategy
           
 
Constructor Summary
QueryAssemblerHelper(QueryAssembler queryAssembler)
          Creates QueryAssemblerHelper initializing with parent QueryAssembler and output buffer object.
 
Method Summary
protected  void appendDbPath(Expression pathExp)
           
protected  void appendLikeEscapeCharacter(PatternMatchNode patternMatchNode)
          Outputs the standard JDBC (database agnostic) expression for supplying the escape character to the database server when supplying a LIKE clause.
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 appendLiteralDirect(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 appendObjPath(Expression pathExp)
          Processes parts of the OBJ_PATH expression.
<T extends Appendable>
T
appendPart(T out)
           
protected abstract  void doAppendPart()
           
 DbEntity getDbEntity()
           
 ObjEntity getObjEntity()
           
protected  DbAttribute paramsDbType(Expression e)
          Returns database type of expression parameters or null if it can not be determined.
protected  void processColumn(DbAttribute dbAttr)
           
protected  void processColumnWithQuoteSqlIdentifiers(DbAttribute dbAttr, Expression pathExp)
           
protected  void processRelTermination(DbRelationship rel, JoinType joinType, String joinSplitAlias)
          Handles case when a DB_NAME expression ends with relationship.
protected  void processRelTermination(ObjRelationship rel, JoinType joinType, String joinSplitAlias)
          Processes case when an OBJ_PATH expression ends with relationship.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

queryAssembler

protected QueryAssembler queryAssembler

out

protected Appendable out

strategy

protected QuotingStrategy strategy
Constructor Detail

QueryAssemblerHelper

public QueryAssemblerHelper(QueryAssembler queryAssembler)
Creates QueryAssemblerHelper initializing with parent QueryAssembler and output buffer object.

Method Detail

getObjEntity

public ObjEntity getObjEntity()

getDbEntity

public DbEntity getDbEntity()

appendPart

public <T extends Appendable> T appendPart(T out)
                                throws IOException
Throws:
IOException
Since:
3.0

doAppendPart

protected abstract void doAppendPart()
                              throws IOException
Throws:
IOException
Since:
3.0

appendLikeEscapeCharacter

protected void appendLikeEscapeCharacter(PatternMatchNode patternMatchNode)
                                  throws IOException
Outputs the standard JDBC (database agnostic) expression for supplying the escape character to the database server when supplying a LIKE clause. This has been factored-out because some database adaptors handle LIKE differently and they need access to this common method in order not to repeat this code.

If there is no escape character defined then this method will not output anything. An escape character of 0 will mean no escape character.

Throws:
IOException
Since:
3.0.1

appendObjPath

protected void appendObjPath(Expression pathExp)
                      throws IOException
Processes parts of the OBJ_PATH expression.

Throws:
IOException

appendDbPath

protected void appendDbPath(Expression pathExp)
                     throws IOException
Throws:
IOException

processColumn

protected void processColumn(DbAttribute dbAttr)
                      throws IOException
Throws:
IOException

processColumnWithQuoteSqlIdentifiers

protected void processColumnWithQuoteSqlIdentifiers(DbAttribute dbAttr,
                                                    Expression pathExp)
                                             throws IOException
Throws:
IOException

appendLiteral

protected void appendLiteral(Object val,
                             DbAttribute attr,
                             Expression parentExpression)
                      throws IOException
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.

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

appendLiteralDirect

protected void appendLiteralDirect(Object val,
                                   DbAttribute attr,
                                   Expression parentExpression)
                            throws IOException
Appends SQL code to the query buffer to handle val as a parameter to the PreparedStatement being built. Adds val into QueryAssembler parameter list.

Throws:
IOException

paramsDbType

protected DbAttribute paramsDbType(Expression e)
Returns database type of expression parameters or null if it can not be determined.


processRelTermination

protected void processRelTermination(ObjRelationship rel,
                                     JoinType joinType,
                                     String joinSplitAlias)
                              throws IOException
Processes case when an OBJ_PATH 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.

Throws:
IOException
Since:
3.0

processRelTermination

protected void processRelTermination(DbRelationship rel,
                                     JoinType joinType,
                                     String joinSplitAlias)
                              throws IOException
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.

Throws:
IOException
Since:
3.0


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