Class 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:

    • IN
    • NOTIN

    Author:
    Lucian Chirita (lucianc@users.sourceforge.net)
    • 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
    • Constructor Detail

      • JRSqlAbstractInClause

        protected JRSqlAbstractInClause()
    • 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, a java.util.Collection or null.

        The function constructs one of the following clauses:

        1. 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 NULL clause
        2. 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 NULL clause
        3. 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:
        apply in interface JRClauseFunction
        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 name
        paramValue - the parameter value
        Returns:
        a java.util.Collection type object obtained either by converting an array to a list or by a cast to java.util.Collection type.
      • appendInOperator

        protected abstract void appendInOperator​(StringBuffer sBuffer)
      • appendNullOperator

        protected abstract void appendNullOperator​(StringBuffer sBuffer)
      • appendAndOrOperator

        protected abstract void appendAndOrOperator​(StringBuffer sBuffer)