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 String
static final String
static final String
static final String
protected static final int
protected static final int
protected static final int
protected static final int
Fields inherited from interface net.sf.jasperreports.engine.query.JRClauseFunction
CLAUSE_FALSISM, CLAUSE_TRUISM
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
apply
(JRClauseTokens clauseTokens, JRQueryClauseContext queryContext) Creates a BETWEEN-like SQL clause, depending on the clause ID.protected abstract ClauseFunctionParameterHandler
createParameterHandler
(JRQueryClauseContext queryContext, String clauseId, String parameterName, boolean left) protected String
getGreaterOperator
(String clauseId) protected String
getLessOperator
(String clauseId) protected void
handleGreaterClause
(StringBuffer sbuffer, String clauseId, String col, ClauseFunctionParameterHandler leftParamHandler, JRQueryClauseContext queryContext) Generates either a 'column > ?
' or a 'column >= ?
' clauseprotected void
handleLessClause
(StringBuffer sbuffer, String clauseId, String col, ClauseFunctionParameterHandler rightParamHandler, JRQueryClauseContext queryContext) Generates either a 'column < ?
' or a 'column <= ?
' clauseprotected boolean
isLeftClosed
(String clauseId) protected boolean
isRightClosed
(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 isBETWEEN
orBETWEEN
column <= ?
if the clause ID isBETWEEN]
or[BETWEEN]
column > ?
if the clause ID isBETWEEN
orBETWEEN]
column >= ?
if the clause ID is[BETWEEN
or[BETWEEN]
0 = 0
).- Specified by:
apply
in 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
-