CPD Results

The following document contains the results of PMD's CPD 5.3.5.

Duplications

File Line
com/codeferm/dbaccess/DbJdbcConn.java 167
com/codeferm/dbaccess/DbJdbcDs.java 167
            preparedStatement = connection.prepareStatement(sql);
            // Fill parameters
            int i = 1; //NOPMD
            for (Object o : params) {
                preparedStatement.setObject(i++, o);
            }
            resultSet = preparedStatement.executeQuery();
            final ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
            final int numberOfColumns = resultSetMetaData.getColumnCount();
            list = new ArrayList<Map<String, Object>>();
            final Map map = new HashMap();
            while (resultSet.next()) {
                for (i = 1; i <= numberOfColumns; i++) {
                    map.put(resultSetMetaData.getColumnName(i), resultSet.
                            getObject(i));
                }
                list.add(map);
            }
        } catch (SQLException e) {
            throw new DbAccessException(String.format(
                    "selectMapList: sql=%s, params=%s", sql, Arrays.asList(
                            params)), e);
        } finally {
            try {
                if (resultSet != null) {
                    resultSet.close();
                }
            } catch (SQLException e) {
                log.error(e.getMessage());
            }
            try {
                if (preparedStatement != null) {
                    preparedStatement.close();
                }
            } catch (SQLException e) {
                log.error(e.getMessage());
            }
File Line
com/codeferm/dbaccess/DbJdbcConn.java 276
com/codeferm/dbaccess/DbJdbcDs.java 294
            preparedStatement = connection.prepareStatement(sql,
                    Statement.RETURN_GENERATED_KEYS);
            // Fill parameters
            int i = 1; //NOPMD
            for (Object o : params) {
                preparedStatement.setObject(i++, o);
            }
            preparedStatement.executeUpdate();
            resultSet = preparedStatement.getGeneratedKeys();
            final ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
            final int numberOfColumns = resultSetMetaData.getColumnCount();
            // Prime the pump
            if (resultSet.next()) {
                keys = new HashMap<String, Object>();
                for (i = 1; i <= numberOfColumns; i++) {
                    keys.put(resultSetMetaData.getColumnName(i),
                            resultSet.getObject(i));
                }
            }
        } catch (SQLException e) {
            throw new DbAccessException(String.format(
                    "updateReturnKeys: sql=%s, params=%s", sql, Arrays.asList(
                            params)), e);
        } finally {
            try {
                if (resultSet != null) {
                    resultSet.close();
                }
            } catch (SQLException e) {
                log.error(e.getMessage());
            }
            try {
                if (preparedStatement != null) {
                    preparedStatement.close();
                }
            } catch (SQLException e) {
                log.error(e.getMessage());
            }
File Line
com/codeferm/dbaccess/DbJdbcConn.java 114
com/codeferm/dbaccess/DbJdbcDs.java 104
            preparedStatement = connection.prepareStatement(sql);
            // Fill parameters
            int i = 1; //NOPMD
            for (Object o : params) {
                preparedStatement.setObject(i++, o);
            }
            resultSet = preparedStatement.executeQuery();
            list = createObjects(resultSet, clazz);
        } catch (Exception e) {
            throw new DbAccessException(String.format(
                    "selectBeanList: sql=%s, params=%s", sql, Arrays.asList(
                            params)), e);
        } finally {
            try {
                if (resultSet != null) {
                    resultSet.close();
                }
            } catch (SQLException e) {
                log.error(e.getMessage());
            }
            try {
                if (preparedStatement != null) {
                    preparedStatement.close();
                }
            } catch (SQLException e) {
                log.error(e.getMessage());
            }
File Line
com/codeferm/dbaccess/transaction/JdbcTransInterceptor.java 94
com/codeferm/dbaccess/transaction/QueryRunnerTransInterceptor.java 94
            final DbJdbcConn dbAccess = (DbJdbcConn) invocation.
                    getArguments()[0];
            // Begin transaction
            dbAccess.getConnection().setAutoCommit(false);
            try {
                // Proceed with the original method's invocation
                object = invocation.proceed();
                // Commit if successful
                dbAccess.getConnection().commit();
                dbAccess.getConnection().setAutoCommit(true);
                if (log.isDebugEnabled()) {
                    log.debug(String.format(
                            "Committed transaction for method %s",
                            invocation.getMethod().getName()));
                }
            } catch (Exception e) {
                // Rollback on Exception
                if (log.isDebugEnabled()) {
                    log.debug(String.format(
                            "Rollback transaction for method %s",
                            invocation.getMethod().getName()));
                }
                // Rollback on error
                dbAccess.getConnection().rollback();
                dbAccess.getConnection().setAutoCommit(true);
                throw e;
            }
        }
        return object;
    }
}
File Line
com/codeferm/dbaccess/DbQueryRunnerConn.java 142
com/codeferm/dbaccess/DbQueryRunnerDs.java 104
            list = (List<T>) template.query(connection, sql,
                    new BeanListHandler(clazz,
                            new BasicRowProcessor(new DbBeanProcessor())),
                    params);
        } catch (SQLException e) {
            throw new DbAccessException(String.format(
                    "selectBeanList: sql=%s, params=%s", sql, Arrays.asList(
                            params)), e);
        }
        return list;
    }

    /**
     * Return query results as list of Maps. {@code Connection} is not closed.
     *
     * @param sql SQL statement to execute.
     * @param params Initialize the PreparedStatement's IN parameters.
     * @return {@code List} of Maps containing field name/value pair.
     */
    @Override
    @SuppressFBWarnings(value
            = "SQL_PREPARED_STATEMENT_GENERATED_FROM_NONCONSTANT_STRING",
            justification
            = "SQL libraries are allowed to accept SQL as parameter")
    public final List<Map<String, Object>> selectList(final String sql,
            final Object[] params) {
        if (log.isDebugEnabled()) {
            log.debug(String.format("selectMapList: sql=%s, params=%s", sql,
                    Arrays.asList(params)));
        }
        List<Map<String, Object>> list = null;
        try {
            list = template.query(connection, sql, new MapListHandler(),
File Line
com/codeferm/dbaccess/DbJdbcDs.java 114
com/codeferm/dbaccess/DbJdbcDs.java 187
                    "selectBeanList: sql=%s, params=%s", sql, Arrays.asList(
                            params)), e);
        } finally {
            try {
                if (resultSet != null) {
                    resultSet.close();
                }
            } catch (SQLException e) {
                log.error(e.getMessage());
            }
            try {
                if (preparedStatement != null) {
                    preparedStatement.close();
                }
            } catch (SQLException e) {
                log.error(e.getMessage());
            }
            try {
                if (connection != null) {
                    connection.close();
                }
            } catch (SQLException e) {
                log.error(e.getMessage());
            }
        }
        return list;
    }

    /**
     * Return query results as list of Maps. {@code Connection} closed
     * automatically.
     *
     * @param sql SQL statement to execute
     * @param params Initialize the PreparedStatement's IN parameters
     * @return {@code List} of Maps containing field name/value pair
     */
    @Override
    @SuppressFBWarnings(value
            = "SQL_PREPARED_STATEMENT_GENERATED_FROM_NONCONSTANT_STRING",
            justification
            = "SQL libraries are allowed to accept SQL as parameter")
    public final List<Map<String, Object>> selectList(final String sql,
File Line
com/codeferm/dbaccess/DbJdbcConn.java 343
com/codeferm/dbaccess/DbJdbcDs.java 370
            preparedStatement = connection.prepareStatement(sql);
            // Add parameter arrays to batch
            for (Object[] param : params) {
                // Fill parameters
                int i = 1; //NOPMD
                for (Object o : param) {
                    preparedStatement.setObject(i++, o);
                }
                // Add to batch
                preparedStatement.addBatch();
            }
            rows = preparedStatement.executeBatch();
        } catch (SQLException e) {
            throw new DbAccessException(String.format(
                    "batch: sql=%s, params=%s", sql, Arrays.asList(
                            params)), e);
        } finally {
            try {
                if (preparedStatement != null) {
                    preparedStatement.close();
                }
            } catch (SQLException e) {
                log.error(e.getMessage());
            }
File Line
com/codeferm/dbaccess/DbJdbcDs.java 114
com/codeferm/dbaccess/DbJdbcDs.java 187
com/codeferm/dbaccess/DbJdbcDs.java 315
                    "selectBeanList: sql=%s, params=%s", sql, Arrays.asList(
                            params)), e);
        } finally {
            try {
                if (resultSet != null) {
                    resultSet.close();
                }
            } catch (SQLException e) {
                log.error(e.getMessage());
            }
            try {
                if (preparedStatement != null) {
                    preparedStatement.close();
                }
            } catch (SQLException e) {
                log.error(e.getMessage());
            }
            try {
                if (connection != null) {
                    connection.close();
                }
            } catch (SQLException e) {
                log.error(e.getMessage());
            }
        }
        return list;
File Line
com/codeferm/dbaccess/DbQueryRunnerConn.java 98
com/codeferm/dbaccess/DbQueryRunnerDs.java 59
    }

    /**
     * Get {@code QueryRunner} object.
     *
     * @return QueryRunner template.
     */
    public final QueryRunner getTemplate() {
        return template;
    }

    /**
     * Set {@code QueryRunner} object.
     *
     * @param template QueryRunner template.
     */
    public final void setTemplate(final QueryRunner template) {
        this.template = template;
    }

    /**
     * Return query results as list of beans. DBUtils doesn't handle underscore
     * to camelCase conversions for you. A custom DbBeanProcessor is implemented
     * to handle underscores properly. Connection is not closed.
     *
     * @param <T> Type of object that the handler returns.
     * @param sql SQL statement to execute.
     * @param params Initialize the PreparedStatement's IN parameters.
     * @param clazz Class to map results to.
     * @return {@code List} of {@code <T>} typed objects.
     */
    @Override
    @SuppressFBWarnings(value
            = "SQL_PREPARED_STATEMENT_GENERATED_FROM_NONCONSTANT_STRING",
            justification
            = "SQL libraries are allowed to accept SQL as parameter")
    public final <T> List<T> selectList(final String sql,
            final Object[] params, final Class clazz) {
        if (log.isDebugEnabled()) {
            log.debug(String.format("selectBeanList: sql=%s, params=%s", sql,
                    Arrays.asList(params)));
        }
        List<T> list = null;
        try {
            list = (List<T>) template.query(connection, sql,
File Line
com/codeferm/dbaccess/DbQueryRunnerConn.java 174
com/codeferm/dbaccess/DbQueryRunnerDs.java 137
            list = template.query(connection, sql, new MapListHandler(),
                    params);
        } catch (SQLException e) {
            throw new DbAccessException(String.format(
                    "selectMapList: sql=%s, params=%s", sql, Arrays.asList(
                            params)), e);
        }
        return list;
    }

    /**
     * Executes the given INSERT, UPDATE, or DELETE SQL statement with parameter
     * array. {@code Connection} is not closed.
     *
     * @param sql SQL statement to execute.
     * @param params Initialize the PreparedStatement's IN parameters.
     * @return Number of rows updated.
     */
    @Override
    @SuppressFBWarnings(value
            = "SQL_PREPARED_STATEMENT_GENERATED_FROM_NONCONSTANT_STRING",
            justification
            = "SQL libraries are allowed to accept SQL as parameter")
    public final int update(final String sql, final Object[] params) {
        if (log.isDebugEnabled()) {
            log.debug(String.format("update: sql=%s, params=%s", sql, Arrays.
                    asList(params)));
        }
        int rows = -1;
        try {
            rows = template.update(connection, sql, params);
File Line
com/codeferm/dbaccess/DbJdbcConn.java 309
com/codeferm/dbaccess/DbJdbcDs.java 334
                    preparedStatement.close();
                }
            } catch (SQLException e) {
                log.error(e.getMessage());
            }
        }
        return keys;
    }

    /**
     * Executes the given INSERT, UPDATE, or DELETE SQL statement with array of
     * parameter arrays. {@code Connection} is not closed.
     *
     * @param sql SQL statement to execute
     * @param params Initialize the PreparedStatement's IN parameters
     * @return Number of rows updated array
     */
    @Override
    @SuppressFBWarnings(value
            = "SQL_PREPARED_STATEMENT_GENERATED_FROM_NONCONSTANT_STRING",
            justification
            = "SQL libraries are allowed to accept SQL as parameter")
    public final int[] batch(final String sql, final Object[][] params) {
        if (log.isDebugEnabled()) {
            log.debug(String.format("batch: sql=%s", sql));
            for (Object[] param : params) {
                log.debug(
                        String.format("batch: params=%s",
                                Arrays.asList(param)));
            }
        }
File Line
com/codeferm/dbaccess/DbQueryRunnerConn.java 253
com/codeferm/dbaccess/DbQueryRunnerDs.java 219
            DbUtils.closeQuietly(preparedStatement);
        }
        return keys;
    }

    /**
     * Executes the given INSERT, UPDATE, or DELETE SQL statement with array of
     * parameter arrays. {@code Connection} is not closed.
     *
     * @param sql SQL statement to execute.
     * @param params Initialize the PreparedStatement's IN parameters.
     * @return Number of rows updated array.
     */
    @Override
    @SuppressFBWarnings(value
            = "SQL_PREPARED_STATEMENT_GENERATED_FROM_NONCONSTANT_STRING",
            justification
            = "SQL libraries are allowed to accept SQL as parameter")
    public final int[] batch(final String sql, final Object[][] params) {
        if (log.isDebugEnabled()) {
            log.debug(String.format("batch: sql=%s", sql));
            for (Object[] param : params) {
                log.debug(
                        String.format("batch: params=%s",
                                Arrays.asList(param)));
            }
        }
        int[] rows = null;
        try {
            rows = template.batch(connection, sql, params);
File Line
com/codeferm/dbaccess/DbJdbcConn.java 229
com/codeferm/dbaccess/DbJdbcDs.java 238
            preparedStatement = connection.prepareStatement(sql);
            // Fill parameters
            int i = 1; //NOPMD OK to use short name for loop iteration variable
            for (Object o : params) {
                preparedStatement.setObject(i++, o);
            }
            rows = preparedStatement.executeUpdate();
        } catch (SQLException e) {
            throw new DbAccessException(String.format(
                    "update: sql=%s, params=%s", sql, Arrays.asList(
                            params)), e);
        } finally {
            try {
                if (preparedStatement != null) {
                    preparedStatement.close();
                }
            } catch (SQLException e) {
                log.error(e.getMessage());
            }
File Line
com/codeferm/dbaccess/DbJdbcConn.java 124
com/codeferm/dbaccess/DbJdbcConn.java 187
                    "selectBeanList: sql=%s, params=%s", sql, Arrays.asList(
                            params)), e);
        } finally {
            try {
                if (resultSet != null) {
                    resultSet.close();
                }
            } catch (SQLException e) {
                log.error(e.getMessage());
            }
            try {
                if (preparedStatement != null) {
                    preparedStatement.close();
                }
            } catch (SQLException e) {
                log.error(e.getMessage());
            }
        }
        return list;
    }

    /**
     * Return query results as list of Maps. {@code Connection} is not closed.
     *
     * @param sql SQL statement to execute
     * @param params Initialize the PreparedStatement's IN parameters
     * @return {@code List} of Maps containing field name/value pair
     */
    @Override
    @SuppressFBWarnings(value
            = "SQL_PREPARED_STATEMENT_GENERATED_FROM_NONCONSTANT_STRING",
            justification
            = "SQL libraries are allowed to accept SQL as parameter")
    public final List<Map<String, Object>> selectList(final String sql,
File Line
com/codeferm/dbaccess/DbQueryRunnerConn.java 204
com/codeferm/dbaccess/DbQueryRunnerDs.java 167
            rows = template.update(connection, sql, params);
        } catch (SQLException e) {
            throw new DbAccessException(String.format(
                    "update: sql=%s, params=%s", sql, Arrays.asList(
                            params)), e);
        }
        return rows;
    }

    /**
     * Executes the given INSERT statement with parameter array and returns auto
     * generate key. JDBC driver needs to support RETURN_GENERATED_KEYS.
     * Connection is not closed.
     *
     * @param sql SQL statement to execute.
     * @param params Initialize the PreparedStatement's IN parameters.
     * @return Field name/value pairs of keys.
     */
    @Override
    @SuppressFBWarnings(value
            = "SQL_PREPARED_STATEMENT_GENERATED_FROM_NONCONSTANT_STRING",
            justification
            = "SQL libraries are allowed to accept SQL as parameter")
    public final Map<String, Object> updateReturnKeys(final String sql,
            final Object[] params) {
        if (log.isDebugEnabled()) {
            log.debug(String.format("updateReturnKeys: sql=%s, params=%s", sql,
                    Arrays.asList(params)));
        }