Example usage for org.springframework.dao InvalidDataAccessApiUsageException InvalidDataAccessApiUsageException

List of usage examples for org.springframework.dao InvalidDataAccessApiUsageException InvalidDataAccessApiUsageException

Introduction

In this page you can find the example usage for org.springframework.dao InvalidDataAccessApiUsageException InvalidDataAccessApiUsageException.

Prototype

public InvalidDataAccessApiUsageException(String msg) 

Source Link

Document

Constructor for InvalidDataAccessApiUsageException.

Usage

From source file:org.springframework.jdbc.object.RdbmsOperation.java

/**
 * Set whether to use statements that are capable of returning
 * updatable ResultSets.//from   w ww.  ja v  a  2s . c  om
 * @see java.sql.Connection#prepareStatement(String, int, int)
 */
public void setUpdatableResults(boolean updatableResults) {
    if (isCompiled()) {
        throw new InvalidDataAccessApiUsageException(
                "The updateableResults flag must be set before the operation is compiled");
    }
    this.updatableResults = updatableResults;
}

From source file:org.springframework.jdbc.object.RdbmsOperation.java

/**
 * Set whether prepared statements should be capable of returning
 * auto-generated keys.//from   w  w  w .  j av a2  s  .  co  m
 * @see java.sql.Connection#prepareStatement(String, int)
 */
public void setReturnGeneratedKeys(boolean returnGeneratedKeys) {
    if (isCompiled()) {
        throw new InvalidDataAccessApiUsageException(
                "The returnGeneratedKeys flag must be set before the operation is compiled");
    }
    this.returnGeneratedKeys = returnGeneratedKeys;
}

From source file:org.springframework.jdbc.object.RdbmsOperation.java

/**
 * Set the column names of the auto-generated keys.
 * @see java.sql.Connection#prepareStatement(String, String[])
 *//*from  w  ww. jav  a 2  s .  co  m*/
public void setGeneratedKeysColumnNames(String... names) {
    if (isCompiled()) {
        throw new InvalidDataAccessApiUsageException(
                "The column names for the generated keys must be set before the operation is compiled");
    }
    this.generatedKeysColumnNames = names;
}

From source file:org.springframework.jdbc.object.RdbmsOperation.java

/**
 * Add anonymous parameters, specifying only their SQL types
 * as defined in the {@code java.sql.Types} class.
 * <p>Parameter ordering is significant. This method is an alternative
 * to the {@link #declareParameter} method, which should normally be preferred.
 * @param types array of SQL types as defined in the
 * {@code java.sql.Types} class/*from w ww. j  a v  a  2 s  .  c  o  m*/
 * @throws InvalidDataAccessApiUsageException if the operation is already compiled
 */
public void setTypes(@Nullable int[] types) throws InvalidDataAccessApiUsageException {
    if (isCompiled()) {
        throw new InvalidDataAccessApiUsageException("Cannot add parameters once query is compiled");
    }
    if (types != null) {
        for (int type : types) {
            declareParameter(new SqlParameter(type));
        }
    }
}

From source file:org.springframework.jdbc.object.RdbmsOperation.java

/**
 * Declare a parameter for this operation.
 * <p>The order in which this method is called is significant when using
 * positional parameters. It is not significant when using named parameters
 * with named SqlParameter objects here; it remains significant when using
 * named parameters in combination with unnamed SqlParameter objects here.
 * @param param the SqlParameter to add. This will specify SQL type and (optionally)
 * the parameter's name. Note that you typically use the {@link SqlParameter} class
 * itself here, not any of its subclasses.
 * @throws InvalidDataAccessApiUsageException if the operation is already compiled,
 * and hence cannot be configured further
 *//*from w w  w.j  a v  a2 s  . c  o  m*/
public void declareParameter(SqlParameter param) throws InvalidDataAccessApiUsageException {
    if (isCompiled()) {
        throw new InvalidDataAccessApiUsageException("Cannot add parameters once the query is compiled");
    }
    this.declaredParameters.add(param);
}

From source file:org.springframework.jdbc.object.RdbmsOperation.java

/**
 * Add one or more declared parameters. Used for configuring this operation
 * when used in a bean factory.  Each parameter will specify SQL type and (optionally)
 * the parameter's name./*from   w ww .ja  va2  s  .c o  m*/
 * @param parameters Array containing the declared {@link SqlParameter} objects
 * @see #declaredParameters
 */
public void setParameters(SqlParameter... parameters) {
    if (isCompiled()) {
        throw new InvalidDataAccessApiUsageException("Cannot add parameters once the query is compiled");
    }
    for (int i = 0; i < parameters.length; i++) {
        if (parameters[i] != null) {
            this.declaredParameters.add(parameters[i]);
        } else {
            throw new InvalidDataAccessApiUsageException("Cannot add parameter at index " + i + " from "
                    + Arrays.asList(parameters) + " since it is 'null'");
        }
    }
}

From source file:org.springframework.jdbc.object.RdbmsOperation.java

/**
 * Compile this query./*w w  w  . ja  v  a 2  s.  com*/
 * Ignores subsequent attempts to compile.
 * @throws InvalidDataAccessApiUsageException if the object hasn't
 * been correctly initialized, for example if no DataSource has been provided
 */
public final void compile() throws InvalidDataAccessApiUsageException {
    if (!isCompiled()) {
        if (getSql() == null) {
            throw new InvalidDataAccessApiUsageException("Property 'sql' is required");
        }

        try {
            this.jdbcTemplate.afterPropertiesSet();
        } catch (IllegalArgumentException ex) {
            throw new InvalidDataAccessApiUsageException(ex.getMessage());
        }

        compileInternal();
        this.compiled = true;

        if (logger.isDebugEnabled()) {
            logger.debug("RdbmsOperation with SQL [" + getSql() + "] compiled");
        }
    }
}

From source file:org.springframework.jdbc.object.RdbmsOperation.java

/**
 * Validate the parameters passed to an execute method based on declared parameters.
 * Subclasses should invoke this method before every {@code executeQuery()}
 * or {@code update()} method./*from   w  w  w .  j  a  v a  2  s . c om*/
 * @param parameters parameters supplied (may be {@code null})
 * @throws InvalidDataAccessApiUsageException if the parameters are invalid
 */
protected void validateParameters(@Nullable Object[] parameters) throws InvalidDataAccessApiUsageException {
    checkCompiled();
    int declaredInParameters = 0;
    for (SqlParameter param : this.declaredParameters) {
        if (param.isInputValueProvided()) {
            if (!supportsLobParameters()
                    && (param.getSqlType() == Types.BLOB || param.getSqlType() == Types.CLOB)) {
                throw new InvalidDataAccessApiUsageException(
                        "BLOB or CLOB parameters are not allowed for this kind of operation");
            }
            declaredInParameters++;
        }
    }
    validateParameterCount((parameters != null ? parameters.length : 0), declaredInParameters);
}

From source file:org.springframework.jdbc.object.RdbmsOperation.java

/**
 * Validate the named parameters passed to an execute method based on declared parameters.
 * Subclasses should invoke this method before every {@code executeQuery()} or
 * {@code update()} method./*www  . j a v a2s  .  c o  m*/
 * @param parameters parameter Map supplied (may be {@code null})
 * @throws InvalidDataAccessApiUsageException if the parameters are invalid
 */
protected void validateNamedParameters(@Nullable Map<String, ?> parameters)
        throws InvalidDataAccessApiUsageException {
    checkCompiled();
    Map<String, ?> paramsToUse = (parameters != null ? parameters : Collections.<String, Object>emptyMap());
    int declaredInParameters = 0;
    for (SqlParameter param : this.declaredParameters) {
        if (param.isInputValueProvided()) {
            if (!supportsLobParameters()
                    && (param.getSqlType() == Types.BLOB || param.getSqlType() == Types.CLOB)) {
                throw new InvalidDataAccessApiUsageException(
                        "BLOB or CLOB parameters are not allowed for this kind of operation");
            }
            if (param.getName() != null && !paramsToUse.containsKey(param.getName())) {
                throw new InvalidDataAccessApiUsageException("The parameter named '" + param.getName()
                        + "' was not among the parameters supplied: " + paramsToUse.keySet());
            }
            declaredInParameters++;
        }
    }
    validateParameterCount(paramsToUse.size(), declaredInParameters);
}

From source file:org.springframework.jdbc.object.RdbmsOperation.java

/**
 * Validate the given parameter count against the given declared parameters.
 * @param suppliedParamCount the number of actual parameters given
 * @param declaredInParamCount the number of input parameters declared
 *//*ww w  . jav  a 2 s  . c  om*/
private void validateParameterCount(int suppliedParamCount, int declaredInParamCount) {
    if (suppliedParamCount < declaredInParamCount) {
        throw new InvalidDataAccessApiUsageException(
                suppliedParamCount + " parameters were supplied, but " + declaredInParamCount
                        + " in parameters were declared in class [" + getClass().getName() + "]");
    }
    if (suppliedParamCount > this.declaredParameters.size() && !allowsUnusedParameters()) {
        throw new InvalidDataAccessApiUsageException(suppliedParamCount + " parameters were supplied, but "
                + declaredInParamCount + " parameters were declared in class [" + getClass().getName() + "]");
    }
}