Example usage for org.springframework.dao InvalidDataAccessResourceUsageException InvalidDataAccessResourceUsageException

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

Introduction

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

Prototype

public InvalidDataAccessResourceUsageException(String msg) 

Source Link

Document

Constructor for InvalidDataAccessResourceUsageException.

Usage

From source file:org.grails.datastore.mapping.mongo.query.MongoQuery.java

@SuppressWarnings("unchecked")
public static void populateMongoQuery(PersistentEntity entity, DBObject query, Junction criteria) {

    List disjunction = null;/*from w  w w  .  jav  a 2 s.c o  m*/
    if (criteria instanceof Disjunction) {
        disjunction = new ArrayList();
        query.put(MONGO_OR_OPERATOR, disjunction);
    }
    for (Criterion criterion : criteria.getCriteria()) {
        final QueryHandler queryHandler = queryHandlers.get(criterion.getClass());
        if (queryHandler != null) {
            DBObject dbo = query;
            if (disjunction != null) {
                dbo = new BasicDBObject();
                disjunction.add(dbo);
            }

            if (criterion instanceof PropertyCriterion) {
                PropertyCriterion pc = (PropertyCriterion) criterion;
                PersistentProperty property = entity.getPropertyByName(pc.getProperty());
                if (property instanceof Custom) {
                    CustomTypeMarshaller customTypeMarshaller = ((Custom) property).getCustomTypeMarshaller();
                    customTypeMarshaller.query(property, pc, query);
                    continue;
                }
            }
            queryHandler.handle(entity, criterion, dbo);
        } else {
            throw new InvalidDataAccessResourceUsageException("Queries of type "
                    + criterion.getClass().getSimpleName() + " are not supported by this implementation");
        }
    }
}

From source file:org.grails.datastore.mapping.query.jpa.JpaQueryBuilder.java

private void buildUpdateStatement(StringBuilder queryString, Map<String, Object> propertiesToUpdate,
        List parameters, boolean hibernateCompatible) {
    queryString.append(SPACE).append("SET");

    // keys need to be sorted before query is built
    Set<String> keys = new TreeSet<String>(propertiesToUpdate.keySet());

    Iterator<String> iterator = keys.iterator();
    while (iterator.hasNext()) {
        String propertyName = iterator.next();
        PersistentProperty prop = entity.getPropertyByName(propertyName);
        if (prop == null)
            throw new InvalidDataAccessResourceUsageException("Property '" + propertyName + "' of class '"
                    + entity.getName() + "' specified in update does not exist");

        parameters.add(propertiesToUpdate.get(propertyName));
        queryString.append(SPACE).append(logicalName).append(DOT).append(propertyName).append('=')
                .append(QUESTIONMARK);// w  w  w.jav a  2 s.  c  o  m
        if (!hibernateCompatible)
            queryString.append(parameters.size());
        if (iterator.hasNext()) {
            queryString.append(COMMA);
        }

    }
}

From source file:org.grails.datastore.mapping.query.jpa.JpaQueryBuilder.java

private static PersistentProperty validateProperty(PersistentEntity entity, String name, Class criterionType) {
    if (entity.getIdentity().getName().equals(name))
        return entity.getIdentity();
    PersistentProperty prop = entity.getPropertyByName(name);
    if (prop == null) {
        throw new InvalidDataAccessResourceUsageException("Cannot use [" + criterionType.getSimpleName()
                + "] criterion on non-existent property: " + name);
    }//from  w ww  .  j a  v  a  2 s.  c  o m
    return prop;
}

From source file:org.grails.datastore.mapping.query.jpa.JpaQueryBuilder.java

static int buildWhereClauseForCriterion(PersistentEntity entity, Query.Junction criteria, StringBuilder q,
        StringBuilder whereClause, String logicalName, final List<Query.Criterion> criterionList, int position,
        List parameters, ConversionService conversionService, boolean allowJoins, boolean hibernateCompatible) {
    for (Iterator<Query.Criterion> iterator = criterionList.iterator(); iterator.hasNext();) {
        Query.Criterion criterion = iterator.next();

        final String operator = criteria instanceof Query.Conjunction ? LOGICAL_AND : LOGICAL_OR;
        QueryHandler qh = queryHandlers.get(criterion.getClass());
        if (qh != null) {

            position = qh.handle(entity, criterion, q, whereClause, logicalName, position, parameters,
                    conversionService, allowJoins, hibernateCompatible);
        } else if (criterion instanceof AssociationCriteria) {

            if (!allowJoins) {
                throw new InvalidDataAccessResourceUsageException(
                        "Joins cannot be used in a DELETE or UPDATE operation");
            }/*  w ww.  ja  va  2  s. co m*/
            AssociationCriteria ac = (AssociationCriteria) criterion;
            Association association = ac.getAssociation();
            List<Query.Criterion> associationCriteriaList = ac.getCriteria();
            handleAssociationCriteria(q, whereClause, logicalName, position, parameters, conversionService,
                    allowJoins, association, new Query.Conjunction(), associationCriteriaList,
                    hibernateCompatible);
        } else {
            throw new InvalidDataAccessResourceUsageException("Queries of type "
                    + criterion.getClass().getSimpleName() + " are not supported by this implementation");
        }

        if (iterator.hasNext()) {
            whereClause.append(operator);
        }
    }

    return position;
}

From source file:org.andromda.timetracker.domain.UserDaoBase.java

/**
 * {@inheritDoc}//from   w  w  w  .  j  a v a2  s .  co m
 */
@Override
public Object findByEmail(final int transform, final String queryString, final String email) {
    try {
        Query queryObject = super.getSession(false).createQuery(queryString);
        queryObject.setParameter("email", email);
        Set results = new LinkedHashSet(queryObject.list());
        Object result = null;
        if (results.size() > 1) {
            throw new InvalidDataAccessResourceUsageException(
                    "More than one instance of 'org.andromda.timetracker.domain.User"
                            + "' was found when executing query --> '" + queryString + "'");
        } else if (results.size() == 1) {
            result = results.iterator().next();
        }
        if (transform != TRANSFORM_NONE) {
            result = transformEntity(transform, (User) result);
        }
        return result;
    } catch (HibernateException ex) {
        throw super.convertHibernateAccessException(ex);
    }
}

From source file:org.springframework.batch.item.database.AbstractCursorItemReader.java

/**
 * Check the result set is in synch with the currentRow attribute. This is
 * important to ensure that the user hasn't modified the current row.
 *//*from  w  w w  . j  a  v  a2s.  c o m*/
private void verifyCursorPosition(long expectedCurrentRow) throws SQLException {
    if (verifyCursorPosition) {
        if (expectedCurrentRow != this.rs.getRow()) {
            throw new InvalidDataAccessResourceUsageException("Unexpected cursor position change.");
        }
    }
}

From source file:org.springframework.batch.item.database.IbatisBatchItemWriter.java

@Override
public void write(final List<? extends T> items) {

    if (!items.isEmpty()) {

        if (logger.isDebugEnabled()) {
            logger.debug("Executing batch with " + items.size() + " items.");
        }//from  ww w .ja  v  a 2 s .  c  o m

        List<BatchResult> results = execute(items);

        if (assertUpdates) {
            if (results.size() != 1) {
                throw new InvalidDataAccessResourceUsageException("Batch execution returned invalid results. "
                        + "Expected 1 but number of BatchResult objects returned was " + results.size());
            }

            int[] updateCounts = results.get(0).getUpdateCounts();

            for (int i = 0; i < updateCounts.length; i++) {
                int value = updateCounts[i];
                if (value == 0) {
                    throw new EmptyResultDataAccessException("Item " + i + " of " + updateCounts.length
                            + " did not update any rows: [" + items.get(i) + "]", 1);
                }
            }
        }
    }
}

From source file:org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory.java

@Override
public RedisSentinelConnection getSentinelConnection() {

    if (!(client instanceof RedisClient)) {
        throw new InvalidDataAccessResourceUsageException(
                "Unable to connect to sentinels using " + client.getClass());
    }/*from   w w w . j a  v a  2 s  .  com*/
    return new LettuceSentinelConnection(((RedisClient) client).connectSentinelAsync());
}

From source file:org.springframework.jdbc.core.simple.AbstractJdbcInsert.java

/**
 * Delegate method to execute the insert, generating any number of keys.
 *///from w  w w. j  a va  2s  . c o m
private KeyHolder executeInsertAndReturnKeyHolderInternal(final List<?> values) {
    if (logger.isDebugEnabled()) {
        logger.debug("The following parameters are used for call " + getInsertString() + " with: " + values);
    }
    final KeyHolder keyHolder = new GeneratedKeyHolder();

    if (this.tableMetaDataContext.isGetGeneratedKeysSupported()) {
        getJdbcTemplate().update(con -> {
            PreparedStatement ps = prepareStatementForGeneratedKeys(con);
            setParameterValues(ps, values, getInsertTypes());
            return ps;
        }, keyHolder);
    }

    else {
        if (!this.tableMetaDataContext.isGetGeneratedKeysSimulated()) {
            throw new InvalidDataAccessResourceUsageException(
                    "The getGeneratedKeys feature is not supported by this database");
        }
        if (getGeneratedKeyNames().length < 1) {
            throw new InvalidDataAccessApiUsageException("Generated Key Name(s) not specified. "
                    + "Using the generated keys features requires specifying the name(s) of the generated column(s)");
        }
        if (getGeneratedKeyNames().length > 1) {
            throw new InvalidDataAccessApiUsageException(
                    "Current database only supports retrieving the key for a single column. There are "
                            + getGeneratedKeyNames().length + " columns specified: "
                            + Arrays.asList(getGeneratedKeyNames()));
        }

        Assert.state(getTableName() != null, "No table name set");
        final String keyQuery = this.tableMetaDataContext.getSimulationQueryForGetGeneratedKey(getTableName(),
                getGeneratedKeyNames()[0]);
        Assert.state(keyQuery != null, "Query for simulating get generated keys can't be null");

        // This is a hack to be able to get the generated key from a database that doesn't support
        // get generated keys feature. HSQL is one, PostgreSQL is another. Postgres uses a RETURNING
        // clause while HSQL uses a second query that has to be executed with the same connection.

        if (keyQuery.toUpperCase().startsWith("RETURNING")) {
            Long key = getJdbcTemplate().queryForObject(getInsertString() + " " + keyQuery,
                    values.toArray(new Object[values.size()]), Long.class);
            Map<String, Object> keys = new HashMap<>(1);
            keys.put(getGeneratedKeyNames()[0], key);
            keyHolder.getKeyList().add(keys);
        } else {
            getJdbcTemplate().execute((ConnectionCallback<Object>) con -> {
                // Do the insert
                PreparedStatement ps = null;
                try {
                    ps = con.prepareStatement(getInsertString());
                    setParameterValues(ps, values, getInsertTypes());
                    ps.executeUpdate();
                } finally {
                    JdbcUtils.closeStatement(ps);
                }
                //Get the key
                Statement keyStmt = null;
                ResultSet rs = null;
                Map<String, Object> keys = new HashMap<>(1);
                try {
                    keyStmt = con.createStatement();
                    rs = keyStmt.executeQuery(keyQuery);
                    if (rs.next()) {
                        long key = rs.getLong(1);
                        keys.put(getGeneratedKeyNames()[0], key);
                        keyHolder.getKeyList().add(keys);
                    }
                } finally {
                    JdbcUtils.closeResultSet(rs);
                    JdbcUtils.closeStatement(keyStmt);
                }
                return null;
            });
        }
    }

    return keyHolder;
}