Class JRSqlAbstractInClause
- java.lang.Object
-
- net.sf.jasperreports.engine.query.JRSqlAbstractInClause
-
- All Implemented Interfaces:
JRClauseFunction
- Direct Known Subclasses:
JRSqlInClause,JRSqlNotInClause
public abstract class JRSqlAbstractInClause extends Object implements JRClauseFunction
Base (NOT) IN clause function for SQL queries.The first token in the $X{...} syntax is the function ID token. Possible values for the (NOT) IN clause function ID token are:
INNOTIN
- Author:
- Lucian Chirita (lucianc@users.sourceforge.net)
-
-
Field Summary
Fields Modifier and Type Field Description protected static StringCLAUSE_TRUISMstatic StringEXCEPTION_MESSAGE_KEY_QUERY_IN_CLAUSE_DB_COLUMN_TOKEN_MISSINGstatic StringEXCEPTION_MESSAGE_KEY_QUERY_IN_CLAUSE_INVALID_PARAMETER_TYPEstatic StringEXCEPTION_MESSAGE_KEY_QUERY_IN_CLAUSE_PARAMETER_TOKEN_MISSINGprotected static intPOSITION_DB_COLUMNprotected static intPOSITION_PARAMETER
-
Constructor Summary
Constructors Modifier Constructor Description protectedJRSqlAbstractInClause()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected abstract voidappendAndOrOperator(StringBuffer sBuffer)protected abstract voidappendInOperator(StringBuffer sBuffer)protected abstract voidappendNullOperator(StringBuffer sBuffer)voidapply(JRClauseTokens clauseTokens, JRQueryClauseContext queryContext)Creates a (NOT) IN SQL clause.protected Collection<?>convert(String paramName, Object paramValue)protected voidhandleNoValues(JRQueryClauseContext queryContext)Generate a SQL clause that will always evaluate to true (e.g
-
-
-
Field Detail
-
EXCEPTION_MESSAGE_KEY_QUERY_IN_CLAUSE_DB_COLUMN_TOKEN_MISSING
public static final String EXCEPTION_MESSAGE_KEY_QUERY_IN_CLAUSE_DB_COLUMN_TOKEN_MISSING
- See Also:
- Constant Field Values
-
EXCEPTION_MESSAGE_KEY_QUERY_IN_CLAUSE_INVALID_PARAMETER_TYPE
public static final String EXCEPTION_MESSAGE_KEY_QUERY_IN_CLAUSE_INVALID_PARAMETER_TYPE
- See Also:
- Constant Field Values
-
EXCEPTION_MESSAGE_KEY_QUERY_IN_CLAUSE_PARAMETER_TOKEN_MISSING
public static final String EXCEPTION_MESSAGE_KEY_QUERY_IN_CLAUSE_PARAMETER_TOKEN_MISSING
- See Also:
- Constant Field Values
-
POSITION_DB_COLUMN
protected static final int POSITION_DB_COLUMN
- See Also:
- Constant Field Values
-
POSITION_PARAMETER
protected static final int POSITION_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 (NOT) IN SQL clause.The function expects two clause tokens (after the ID token):
- The first token is the SQL column to be used in the clause.
- The second token is the name of the report parameter that contains the value list.
The value of this parameter has to be an array, ajava.util.Collectionornull.
The function constructs one of the following clauses:
- When the function ID token is IN:
- If the parameter's value is a collection of not null values, the function constructs
a
<column_name> IN (?, ?, .., ?)clause - If the parameter's value is a collection containing both null and not null values, the
function constructs a
(<column_name> IS NULL OR <column_name> IN (?, ?, .., ?))clause - If the parameter's value is a collection containing only null values, the function
constructs a
<column_name> IS NULLclause
- If the parameter's value is a collection of not null values, the function constructs
a
- When the function ID token is NOTIN:
- If the parameter's value is a collection of not null values, the function constructs
a
<column_name> NOT IN (?, ?, .., ?)clause - If the parameter's value is a collection containing both null and not null values, the
function constructs a
(<column_name> IS NOT NULL AND <column_name> NOT IN (?, ?, .., ?))clause - If the parameter's value is a collection containing only null values, the function
constructs a
<column_name> IS NOT NULLclause
- If the parameter's value is a collection of not null values, the function constructs
a
- If the values list is null or empty, both IN and NOTIN functions generate a SQL clause that
will always evaluate to true (e.g.
0 = 0).
- Specified by:
applyin interfaceJRClauseFunction- Parameters:
clauseTokens-queryContext-
-
handleNoValues
protected void handleNoValues(JRQueryClauseContext queryContext)
Generate a SQL clause that will always evaluate to true (e.g. '0 = 0').- Parameters:
queryContext- the query context
-
convert
protected Collection<?> convert(String paramName, Object paramValue)
- Parameters:
paramName- the parameter nameparamValue- the parameter value- Returns:
- a
java.util.Collectiontype object obtained either by converting an array to a list or by a cast tojava.util.Collectiontype.
-
appendInOperator
protected abstract void appendInOperator(StringBuffer sBuffer)
-
appendNullOperator
protected abstract void appendNullOperator(StringBuffer sBuffer)
-
appendAndOrOperator
protected abstract void appendAndOrOperator(StringBuffer sBuffer)
-
-