Class SQLBetweenBaseClause
- java.lang.Object
-
- net.sf.jasperreports.engine.query.SQLBetweenBaseClause
-
- All Implemented Interfaces:
JRClauseFunction
- Direct Known Subclasses:
DateRangeSQLBetweenClause
,JRSqlBetweenClause
public abstract class SQLBetweenBaseClause extends Object implements JRClauseFunction
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
Fields Modifier and Type Field Description protected static String
CLAUSE_TRUISM
static String
EXCEPTION_MESSAGE_KEY_QUERY_BETWEEN_CLAUSE_DB_COLUMN_TOKEN_MISSING
static String
EXCEPTION_MESSAGE_KEY_QUERY_BETWEEN_CLAUSE_LEFT_PARAMETER_TOKEN_MISSING
static String
EXCEPTION_MESSAGE_KEY_QUERY_BETWEEN_CLAUSE_NAME_TOKEN_MISSING
static String
EXCEPTION_MESSAGE_KEY_QUERY_BETWEEN_CLAUSE_RIGHT_PARAMETER_TOKEN_MISSING
protected static int
POSITION_CLAUSE_ID
protected static int
POSITION_DB_COLUMN
protected static int
POSITION_LEFT_PARAMETER
protected static int
POSITION_RIGHT_PARAMETER
-
Constructor Summary
Constructors Constructor Description SQLBetweenBaseClause()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description void
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 Detail
-
EXCEPTION_MESSAGE_KEY_QUERY_BETWEEN_CLAUSE_DB_COLUMN_TOKEN_MISSING
public static final String EXCEPTION_MESSAGE_KEY_QUERY_BETWEEN_CLAUSE_DB_COLUMN_TOKEN_MISSING
- See Also:
- Constant Field Values
-
EXCEPTION_MESSAGE_KEY_QUERY_BETWEEN_CLAUSE_LEFT_PARAMETER_TOKEN_MISSING
public static final String EXCEPTION_MESSAGE_KEY_QUERY_BETWEEN_CLAUSE_LEFT_PARAMETER_TOKEN_MISSING
- See Also:
- Constant Field Values
-
EXCEPTION_MESSAGE_KEY_QUERY_BETWEEN_CLAUSE_NAME_TOKEN_MISSING
public static final String EXCEPTION_MESSAGE_KEY_QUERY_BETWEEN_CLAUSE_NAME_TOKEN_MISSING
- See Also:
- Constant Field Values
-
EXCEPTION_MESSAGE_KEY_QUERY_BETWEEN_CLAUSE_RIGHT_PARAMETER_TOKEN_MISSING
public static final String EXCEPTION_MESSAGE_KEY_QUERY_BETWEEN_CLAUSE_RIGHT_PARAMETER_TOKEN_MISSING
- See Also:
- Constant Field Values
-
POSITION_CLAUSE_ID
protected static final int POSITION_CLAUSE_ID
- See Also:
- Constant Field Values
-
POSITION_DB_COLUMN
protected static final int POSITION_DB_COLUMN
- See Also:
- Constant Field Values
-
POSITION_LEFT_PARAMETER
protected static final int POSITION_LEFT_PARAMETER
- See Also:
- Constant Field Values
-
POSITION_RIGHT_PARAMETER
protected static final int POSITION_RIGHT_PARAMETER
- See Also:
- Constant Field Values
-
CLAUSE_TRUISM
protected static final String CLAUSE_TRUISM
- See Also:
- Constant Field Values
-
-
Method Detail
-
apply
public void apply(JRClauseTokens clauseTokens, JRQueryClauseContext queryContext)
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
protected String getGreaterOperator(String clauseId)
- Parameters:
clauseId
- the clause ID- Returns:
- the '
>
' or '>=
' sign
-
isLeftClosed
protected boolean isLeftClosed(String clauseId)
-
getLessOperator
protected String getLessOperator(String clauseId)
- Parameters:
clauseId
- the clause ID- Returns:
- the '
<
' or '<=
' sign
-
isRightClosed
protected boolean isRightClosed(String clauseId)
-
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
-
-