Class QueryAssemblerHelper

java.lang.Object
org.apache.cayenne.access.translator.select.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 Details

  • Constructor Details

    • QueryAssemblerHelper

      public QueryAssemblerHelper​(QueryAssembler queryAssembler)
      Creates QueryAssemblerHelper initializing with parent QueryAssembler and output buffer object.
  • Method Details

    • getObjEntity

      public ObjEntity getObjEntity()
    • getDbEntity

      public DbEntity getDbEntity()
    • appendPart

      public StringBuilder appendPart​(StringBuilder out)
      Since:
      3.0
    • doAppendPart

      protected abstract void doAppendPart()
      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.1
    • appendObjPath

      protected void appendObjPath​(Expression pathExp)
      Processes parts of the OBJ_PATH expression.
    • appendDbPath

      protected void appendDbPath​(Expression pathExp)
    • processColumn

      protected void processColumn​(DbAttribute dbAttr)
    • processColumnWithQuoteSqlIdentifiers

      protected void processColumnWithQuoteSqlIdentifiers​(DbAttribute dbAttr, Expression pathExp)
    • 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)
      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.
      Since:
      3.0
    • processRelTermination

      protected void processRelTermination​(DbRelationship rel, JoinType joinType, String joinSplitAlias)
      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.
      Since:
      3.0
    • setForceJoinForRelations

      protected void setForceJoinForRelations​(boolean forceJoinForRelations)
      Force joining tables for all relations, not only for toMany
      Since:
      4.0