Package org.apache.cayenne.dba.firebird
Class FirebirdQualifierTranslator
- java.lang.Object
-
- org.apache.cayenne.access.translator.select.QueryAssemblerHelper
-
- org.apache.cayenne.access.translator.select.QualifierTranslator
-
- org.apache.cayenne.dba.firebird.FirebirdQualifierTranslator
-
- All Implemented Interfaces:
TraversalHandler
public class FirebirdQualifierTranslator extends QualifierTranslator
-
-
Field Summary
-
Fields inherited from class org.apache.cayenne.access.translator.select.QualifierTranslator
caseInsensitive, matchingObject, objectMatchTranslator, qualifier, useAliasForExpressions, waitingForEndNode
-
Fields inherited from class org.apache.cayenne.access.translator.select.QueryAssemblerHelper
out, queryAssembler, strategy
-
-
Constructor Summary
Constructors Constructor Description FirebirdQualifierTranslator(QueryAssembler queryAssembler)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
appendExtractFunction(ASTExtract functionExpression)
Special case for extract date/time parts functions as they have many variantsprotected void
appendFunction(ASTFunctionCall functionExpression)
Append function name to result SQL Override this method to rename or skip function if generic name isn't supported on target DB.protected void
appendFunctionArg(Object value, ASTFunctionCall functionExpression)
A little bit ugly code that wraps String scalars to CAST(? AS VARCHAR(length)) because otherwise derby don't know what type will be at the placeholder and use LONG VARCHAR that isn't comparable what leads to statement preparation failure.protected void
appendFunctionArgDivider(ASTFunctionCall functionExpression)
Append divider between function arguments.protected void
clearLastFunctionArgDivider(ASTFunctionCall functionExpression)
Clear last divider as we currently don't now position of argument until parent element is ended.protected void
doAppendPart(Expression rootNode)
Translates query qualifier to SQL WHERE clause.protected boolean
parenthesisNeeded(Expression node, Expression parentNode)
-
Methods inherited from class org.apache.cayenne.access.translator.select.QualifierTranslator
appendLiteral, appendObjectMatch, detectObjectMatch, doAppendPart, endNode, extractQualifier, finishedChild, objectNode, operandForBitwiseAnd, operandForBitwiseLeftShift, operandForBitwiseNot, operandForBitwiseOr, operandForBitwiseRightShift, operandForBitwiseXor, processRelTermination, setCaseInsensitive, setQualifier, setUseAliasForExpressions, startNode
-
Methods inherited from class org.apache.cayenne.access.translator.select.QueryAssemblerHelper
appendDbPath, appendLikeEscapeCharacter, appendLiteralDirect, appendObjPath, appendPart, getDbEntity, getObjEntity, paramsDbType, processColumn, processColumnWithQuoteSqlIdentifiers, processRelTermination, setForceJoinForRelations
-
-
-
-
Constructor Detail
-
FirebirdQualifierTranslator
public FirebirdQualifierTranslator(QueryAssembler queryAssembler)
-
-
Method Detail
-
doAppendPart
protected void doAppendPart(Expression rootNode)
Description copied from class:QualifierTranslator
Translates query qualifier to SQL WHERE clause. Qualifier is a method parameter.- Overrides:
doAppendPart
in classQualifierTranslator
-
appendFunction
protected void appendFunction(ASTFunctionCall functionExpression)
Description copied from class:QualifierTranslator
Append function name to result SQL Override this method to rename or skip function if generic name isn't supported on target DB.- Overrides:
appendFunction
in classQualifierTranslator
- Since:
- 4.0
-
appendFunctionArg
protected void appendFunctionArg(Object value, ASTFunctionCall functionExpression) throws IOException
A little bit ugly code that wraps String scalars to CAST(? AS VARCHAR(length)) because otherwise derby don't know what type will be at the placeholder and use LONG VARCHAR that isn't comparable what leads to statement preparation failure.- Overrides:
appendFunctionArg
in classQualifierTranslator
- Throws:
IOException
- Since:
- 4.0
-
appendFunctionArgDivider
protected void appendFunctionArgDivider(ASTFunctionCall functionExpression)
Description copied from class:QualifierTranslator
Append divider between function arguments. In overriding methods can be replaced e.g. for " || " for CONCAT operation- Overrides:
appendFunctionArgDivider
in classQualifierTranslator
- Since:
- 4.0
-
clearLastFunctionArgDivider
protected void clearLastFunctionArgDivider(ASTFunctionCall functionExpression)
Description copied from class:QualifierTranslator
Clear last divider as we currently don't now position of argument until parent element is ended.- Overrides:
clearLastFunctionArgDivider
in classQualifierTranslator
- Since:
- 4.0
-
parenthesisNeeded
protected boolean parenthesisNeeded(Expression node, Expression parentNode)
- Overrides:
parenthesisNeeded
in classQualifierTranslator
-
appendExtractFunction
protected void appendExtractFunction(ASTExtract functionExpression)
Description copied from class:QualifierTranslator
Special case for extract date/time parts functions as they have many variants- Overrides:
appendExtractFunction
in classQualifierTranslator
-
-