public abstract class SQLBetweenBaseClause extends Object implements JRClauseFunction
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]| Modifier and Type | Field and 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 and Description |
|---|
SQLBetweenBaseClause() |
| Modifier and Type | Method and 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 >= ?' clause |
protected void |
handleLessClause(StringBuffer sbuffer,
String clauseId,
String col,
ClauseFunctionParameterHandler rightParamHandler,
JRQueryClauseContext queryContext)
Generates either a '
column < ?' or a 'column <= ?' clause |
protected boolean |
isLeftClosed(String clauseId) |
protected boolean |
isRightClosed(String clauseId) |
public static final String EXCEPTION_MESSAGE_KEY_QUERY_BETWEEN_CLAUSE_DB_COLUMN_TOKEN_MISSING
public static final String EXCEPTION_MESSAGE_KEY_QUERY_BETWEEN_CLAUSE_LEFT_PARAMETER_TOKEN_MISSING
public static final String EXCEPTION_MESSAGE_KEY_QUERY_BETWEEN_CLAUSE_NAME_TOKEN_MISSING
public static final String EXCEPTION_MESSAGE_KEY_QUERY_BETWEEN_CLAUSE_RIGHT_PARAMETER_TOKEN_MISSING
protected static final int POSITION_CLAUSE_ID
protected static final int POSITION_DB_COLUMN
protected static final int POSITION_LEFT_PARAMETER
protected static final int POSITION_RIGHT_PARAMETER
protected static final String CLAUSE_TRUISM
public void apply(JRClauseTokens clauseTokens, JRQueryClauseContext queryContext)
The method expects three clause tokens (after the ID token):
The method constructs one of the following clauses:
(column > ? AND column < ?) if the clause ID is BETWEEN(column >= ? AND column < ?) if the clause ID is [BETWEEN(column > ? AND column <= ?) if the clause ID is BETWEEN](column >= ? AND column <= ?) if the clause ID is [BETWEEN]column < ? if the clause ID is BETWEEN or BETWEENcolumn <= ? if the clause ID is BETWEEN] or [BETWEEN]column > ? if the clause ID is BETWEEN or BETWEEN]column >= ? if the clause ID is [BETWEEN or [BETWEEN]0 = 0).
apply in interface JRClauseFunctionclauseTokens - queryContext - protected abstract ClauseFunctionParameterHandler createParameterHandler(JRQueryClauseContext queryContext, String clauseId, String parameterName, boolean left)
protected String getGreaterOperator(String clauseId)
clauseId - the clause ID>' or '>=' signprotected boolean isLeftClosed(String clauseId)
protected String getLessOperator(String clauseId)
clauseId - the clause ID<' or '<=' signprotected boolean isRightClosed(String clauseId)
protected void handleGreaterClause(StringBuffer sbuffer, String clauseId, String col, ClauseFunctionParameterHandler leftParamHandler, JRQueryClauseContext queryContext)
column > ?' or a 'column >= ?' clausesbuffer - 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 contextprotected void handleLessClause(StringBuffer sbuffer, String clauseId, String col, ClauseFunctionParameterHandler rightParamHandler, JRQueryClauseContext queryContext)
column < ?' or a 'column <= ?' clausesbuffer - the StringBuffer that contains the generated queryclauseId - the clause IDcol - the name of the column, or a column names combinationrightParamHandler - queryContext - the query contextCopyright © 2017. All rights reserved.