Class SQLBetweenBaseClause
java.lang.Object
net.sf.jasperreports.engine.query.SQLBetweenBaseClause
- All Implemented Interfaces:
JRClauseFunction
- Direct Known Subclasses:
DateRangeSQLBetweenClause,JRSqlBetweenClause
Base BETWEEN clause function for SQL queries.
The purpose of this clause function is to find that a given value can be found in a given A...B interval.
The first token in the $X{...} syntax is the function ID token. Possible values for the BETWEEN clause function ID token are:
BETWEEN- in this case the A...B interval will be considered open: (A,B)[BETWEEN- in this case the A...B interval will be considered right-open: [A,B)BETWEEN]- in this case the A...B interval will be considered left-open: (A,B][BETWEEN]- in this case the A...B interval will be considered closed: [A,B]
- Author:
- Sanda Zaharia (shertage@users.sourceforge.net)
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final Stringstatic final Stringstatic final Stringstatic final Stringprotected static final intprotected static final intprotected static final intprotected static final intFields inherited from interface net.sf.jasperreports.engine.query.JRClauseFunction
CLAUSE_FALSISM, CLAUSE_TRUISM -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidapply(JRClauseTokens clauseTokens, JRQueryClauseContext queryContext) Creates a BETWEEN-like SQL clause, depending on the clause ID.protected abstract ClauseFunctionParameterHandlercreateParameterHandler(JRQueryClauseContext queryContext, String clauseId, String parameterName, boolean left) protected StringgetGreaterOperator(String clauseId) protected StringgetLessOperator(String clauseId) protected voidhandleGreaterClause(StringBuffer sbuffer, String clauseId, String col, ClauseFunctionParameterHandler leftParamHandler, JRQueryClauseContext queryContext) Generates either a 'column > ?' or a 'column >= ?' clauseprotected voidhandleLessClause(StringBuffer sbuffer, String clauseId, String col, ClauseFunctionParameterHandler rightParamHandler, JRQueryClauseContext queryContext) Generates either a 'column < ?' or a 'column <= ?' clauseprotected booleanisLeftClosed(String clauseId) protected booleanisRightClosed(String clauseId)
-
Field Details
-
EXCEPTION_MESSAGE_KEY_QUERY_BETWEEN_CLAUSE_DB_COLUMN_TOKEN_MISSING
- See Also:
-
EXCEPTION_MESSAGE_KEY_QUERY_BETWEEN_CLAUSE_LEFT_PARAMETER_TOKEN_MISSING
- See Also:
-
EXCEPTION_MESSAGE_KEY_QUERY_BETWEEN_CLAUSE_NAME_TOKEN_MISSING
- See Also:
-
EXCEPTION_MESSAGE_KEY_QUERY_BETWEEN_CLAUSE_RIGHT_PARAMETER_TOKEN_MISSING
- See Also:
-
POSITION_CLAUSE_ID
protected static final int POSITION_CLAUSE_ID- See Also:
-
POSITION_DB_COLUMN
protected static final int POSITION_DB_COLUMN- See Also:
-
POSITION_LEFT_PARAMETER
protected static final int POSITION_LEFT_PARAMETER- See Also:
-
POSITION_RIGHT_PARAMETER
protected static final int POSITION_RIGHT_PARAMETER- See Also:
-
-
Constructor Details
-
SQLBetweenBaseClause
public SQLBetweenBaseClause()
-
-
Method Details
-
apply
Creates a BETWEEN-like SQL clause, depending on the clause ID.The method expects three clause tokens (after the ID token):
- The first token is the SQL column (or column combination) to be used in the clause.
- The second token is the name of the parameter that contains the left member value.
- The second token is the name of the parameter that contains the right member value.
The method constructs one of the following clauses:
(column > ? AND column < ?)if the clause ID isBETWEEN(column >= ? AND column < ?)if the clause ID is[BETWEEN(column > ? AND column <= ?)if the clause ID isBETWEEN](column >= ? AND column <= ?)if the clause ID is[BETWEEN]
column < ?if the clause ID isBETWEENorBETWEENcolumn <= ?if the clause ID isBETWEEN]or[BETWEEN]
column > ?if the clause ID isBETWEENorBETWEEN]column >= ?if the clause ID is[BETWEENor[BETWEEN]
0 = 0).- Specified by:
applyin interfaceJRClauseFunction- Parameters:
clauseTokens-queryContext-
-
createParameterHandler
protected abstract ClauseFunctionParameterHandler createParameterHandler(JRQueryClauseContext queryContext, String clauseId, String parameterName, boolean left) -
getGreaterOperator
- Parameters:
clauseId- the clause ID- Returns:
- the '
>' or '>=' sign
-
isLeftClosed
-
getLessOperator
- Parameters:
clauseId- the clause ID- Returns:
- the '
<' or '<=' sign
-
isRightClosed
-
handleGreaterClause
protected void handleGreaterClause(StringBuffer sbuffer, String clauseId, String col, ClauseFunctionParameterHandler leftParamHandler, JRQueryClauseContext queryContext) Generates either a 'column > ?' or a 'column >= ?' clause- Parameters:
sbuffer- the StringBuffer that contains the generated queryclauseId- the clause IDcol- the name of the column, or a column names combinationleftParamHandler- the parameter handler that contains the left member valuequeryContext- the query context
-
handleLessClause
protected void handleLessClause(StringBuffer sbuffer, String clauseId, String col, ClauseFunctionParameterHandler rightParamHandler, JRQueryClauseContext queryContext) Generates either a 'column < ?' or a 'column <= ?' clause- Parameters:
sbuffer- the StringBuffer that contains the generated queryclauseId- the clause IDcol- the name of the column, or a column names combinationrightParamHandler-queryContext- the query context
-