Add @Override annotations to main sources
Issue: SPR-10130
This commit is contained in:
@@ -26,6 +26,7 @@ import org.springframework.beans.factory.xml.NamespaceHandlerSupport;
|
||||
*/
|
||||
public class JdbcNamespaceHandler extends NamespaceHandlerSupport {
|
||||
|
||||
@Override
|
||||
public void init() {
|
||||
registerBeanDefinitionParser("embedded-database", new EmbeddedDatabaseBeanDefinitionParser());
|
||||
registerBeanDefinitionParser("initialize-database", new InitializeDatabaseBeanDefinitionParser());
|
||||
|
||||
@@ -59,6 +59,7 @@ public class SortedResourcesFactoryBean extends AbstractFactoryBean<Resource[]>
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void setResourceLoader(ResourceLoader resourceLoader) {
|
||||
this.resourcePatternResolver = ResourcePatternUtils.getResourcePatternResolver(resourceLoader);
|
||||
}
|
||||
@@ -76,6 +77,7 @@ public class SortedResourcesFactoryBean extends AbstractFactoryBean<Resource[]>
|
||||
List<Resource> resources = new ArrayList<Resource>(
|
||||
Arrays.asList(this.resourcePatternResolver.getResources(location)));
|
||||
Collections.sort(resources, new Comparator<Resource>() {
|
||||
@Override
|
||||
public int compare(Resource r1, Resource r2) {
|
||||
try {
|
||||
return r1.getURL().toString().compareTo(r2.getURL().toString());
|
||||
|
||||
@@ -39,6 +39,7 @@ class ArgPreparedStatementSetter implements PreparedStatementSetter, ParameterDi
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void setValues(PreparedStatement ps) throws SQLException {
|
||||
if (this.args != null) {
|
||||
for (int i = 0; i < this.args.length; i++) {
|
||||
@@ -66,6 +67,7 @@ class ArgPreparedStatementSetter implements PreparedStatementSetter, ParameterDi
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cleanupParameters() {
|
||||
StatementCreatorUtils.cleanupParameters(this.args);
|
||||
}
|
||||
|
||||
@@ -52,6 +52,7 @@ class ArgTypePreparedStatementSetter implements PreparedStatementSetter, Paramet
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void setValues(PreparedStatement ps) throws SQLException {
|
||||
int parameterPosition = 1;
|
||||
if (this.args != null) {
|
||||
@@ -97,6 +98,7 @@ class ArgTypePreparedStatementSetter implements PreparedStatementSetter, Paramet
|
||||
StatementCreatorUtils.setParameterValue(ps, parameterPosition, argType, argValue);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cleanupParameters() {
|
||||
StatementCreatorUtils.cleanupParameters(this.args);
|
||||
}
|
||||
|
||||
@@ -33,11 +33,13 @@ public abstract class BatchUpdateUtils {
|
||||
sql,
|
||||
new BatchPreparedStatementSetter() {
|
||||
|
||||
@Override
|
||||
public void setValues(PreparedStatement ps, int i) throws SQLException {
|
||||
Object[] values = batchValues.get(i);
|
||||
setStatementParameters(values, ps, columnTypes);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getBatchSize() {
|
||||
return batchValues.size();
|
||||
}
|
||||
|
||||
@@ -228,6 +228,7 @@ public class BeanPropertyRowMapper<T> implements RowMapper<T> {
|
||||
* <p>Utilizes public setters and result set metadata.
|
||||
* @see java.sql.ResultSetMetaData
|
||||
*/
|
||||
@Override
|
||||
public T mapRow(ResultSet rs, int rowNumber) throws SQLException {
|
||||
Assert.state(this.mappedClass != null, "Mapped class was not specified");
|
||||
T mappedObject = BeanUtils.instantiate(this.mappedClass);
|
||||
|
||||
@@ -150,6 +150,7 @@ public class CallableStatementCreatorFactory {
|
||||
this.inParameters = inParams;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CallableStatement createCallableStatement(Connection con) throws SQLException {
|
||||
// If we were given a ParameterMapper, we must let the mapper do its thing to create the Map.
|
||||
if (this.inParameterMapper != null) {
|
||||
@@ -218,10 +219,12 @@ public class CallableStatementCreatorFactory {
|
||||
return cs;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getSql() {
|
||||
return callString;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cleanupParameters() {
|
||||
if (this.inParameters != null) {
|
||||
StatementCreatorUtils.cleanupParameters(this.inParameters.values());
|
||||
|
||||
@@ -47,6 +47,7 @@ import org.springframework.util.LinkedCaseInsensitiveMap;
|
||||
*/
|
||||
public class ColumnMapRowMapper implements RowMapper<Map<String, Object>> {
|
||||
|
||||
@Override
|
||||
public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
|
||||
ResultSetMetaData rsmd = rs.getMetaData();
|
||||
int columnCount = rsmd.getColumnCount();
|
||||
|
||||
@@ -325,6 +325,7 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations {
|
||||
// Methods dealing with a plain java.sql.Connection
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
@Override
|
||||
public <T> T execute(ConnectionCallback<T> action) throws DataAccessException {
|
||||
Assert.notNull(action, "Callback object must not be null");
|
||||
|
||||
@@ -376,6 +377,7 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations {
|
||||
// Methods dealing with static SQL (java.sql.Statement)
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
@Override
|
||||
public <T> T execute(StatementCallback<T> action) throws DataAccessException {
|
||||
Assert.notNull(action, "Callback object must not be null");
|
||||
|
||||
@@ -412,15 +414,18 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(final String sql) throws DataAccessException {
|
||||
if (logger.isDebugEnabled()) {
|
||||
logger.debug("Executing SQL statement [" + sql + "]");
|
||||
}
|
||||
class ExecuteStatementCallback implements StatementCallback<Object>, SqlProvider {
|
||||
@Override
|
||||
public Object doInStatement(Statement stmt) throws SQLException {
|
||||
stmt.execute(sql);
|
||||
return null;
|
||||
}
|
||||
@Override
|
||||
public String getSql() {
|
||||
return sql;
|
||||
}
|
||||
@@ -428,6 +433,7 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations {
|
||||
execute(new ExecuteStatementCallback());
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T query(final String sql, final ResultSetExtractor<T> rse) throws DataAccessException {
|
||||
Assert.notNull(sql, "SQL must not be null");
|
||||
Assert.notNull(rse, "ResultSetExtractor must not be null");
|
||||
@@ -435,6 +441,7 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations {
|
||||
logger.debug("Executing SQL query [" + sql + "]");
|
||||
}
|
||||
class QueryStatementCallback implements StatementCallback<T>, SqlProvider {
|
||||
@Override
|
||||
public T doInStatement(Statement stmt) throws SQLException {
|
||||
ResultSet rs = null;
|
||||
try {
|
||||
@@ -449,6 +456,7 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations {
|
||||
JdbcUtils.closeResultSet(rs);
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public String getSql() {
|
||||
return sql;
|
||||
}
|
||||
@@ -456,55 +464,67 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations {
|
||||
return execute(new QueryStatementCallback());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void query(String sql, RowCallbackHandler rch) throws DataAccessException {
|
||||
query(sql, new RowCallbackHandlerResultSetExtractor(rch));
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> List<T> query(String sql, RowMapper<T> rowMapper) throws DataAccessException {
|
||||
return query(sql, new RowMapperResultSetExtractor<T>(rowMapper));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> queryForMap(String sql) throws DataAccessException {
|
||||
return queryForObject(sql, getColumnMapRowMapper());
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T queryForObject(String sql, RowMapper<T> rowMapper) throws DataAccessException {
|
||||
List<T> results = query(sql, rowMapper);
|
||||
return DataAccessUtils.requiredSingleResult(results);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T queryForObject(String sql, Class<T> requiredType) throws DataAccessException {
|
||||
return queryForObject(sql, getSingleColumnRowMapper(requiredType));
|
||||
}
|
||||
|
||||
@Override
|
||||
public long queryForLong(String sql) throws DataAccessException {
|
||||
Number number = queryForObject(sql, Long.class);
|
||||
return (number != null ? number.longValue() : 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int queryForInt(String sql) throws DataAccessException {
|
||||
Number number = queryForObject(sql, Integer.class);
|
||||
return (number != null ? number.intValue() : 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> List<T> queryForList(String sql, Class<T> elementType) throws DataAccessException {
|
||||
return query(sql, getSingleColumnRowMapper(elementType));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Map<String, Object>> queryForList(String sql) throws DataAccessException {
|
||||
return query(sql, getColumnMapRowMapper());
|
||||
}
|
||||
|
||||
@Override
|
||||
public SqlRowSet queryForRowSet(String sql) throws DataAccessException {
|
||||
return query(sql, new SqlRowSetResultSetExtractor());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int update(final String sql) throws DataAccessException {
|
||||
Assert.notNull(sql, "SQL must not be null");
|
||||
if (logger.isDebugEnabled()) {
|
||||
logger.debug("Executing SQL update [" + sql + "]");
|
||||
}
|
||||
class UpdateStatementCallback implements StatementCallback<Integer>, SqlProvider {
|
||||
@Override
|
||||
public Integer doInStatement(Statement stmt) throws SQLException {
|
||||
int rows = stmt.executeUpdate(sql);
|
||||
if (logger.isDebugEnabled()) {
|
||||
@@ -512,6 +532,7 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations {
|
||||
}
|
||||
return rows;
|
||||
}
|
||||
@Override
|
||||
public String getSql() {
|
||||
return sql;
|
||||
}
|
||||
@@ -519,6 +540,7 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations {
|
||||
return execute(new UpdateStatementCallback());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[] batchUpdate(final String[] sql) throws DataAccessException {
|
||||
Assert.notEmpty(sql, "SQL array must not be empty");
|
||||
if (logger.isDebugEnabled()) {
|
||||
@@ -526,6 +548,7 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations {
|
||||
}
|
||||
class BatchUpdateStatementCallback implements StatementCallback<int[]>, SqlProvider {
|
||||
private String currSql;
|
||||
@Override
|
||||
public int[] doInStatement(Statement stmt) throws SQLException, DataAccessException {
|
||||
int[] rowsAffected = new int[sql.length];
|
||||
if (JdbcUtils.supportsBatchUpdates(stmt.getConnection())) {
|
||||
@@ -548,6 +571,7 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations {
|
||||
}
|
||||
return rowsAffected;
|
||||
}
|
||||
@Override
|
||||
public String getSql() {
|
||||
return this.currSql;
|
||||
}
|
||||
@@ -560,6 +584,7 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations {
|
||||
// Methods dealing with prepared statements
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
@Override
|
||||
public <T> T execute(PreparedStatementCreator psc, PreparedStatementCallback<T> action)
|
||||
throws DataAccessException {
|
||||
|
||||
@@ -611,6 +636,7 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T execute(String sql, PreparedStatementCallback<T> action) throws DataAccessException {
|
||||
return execute(new SimplePreparedStatementCreator(sql), action);
|
||||
}
|
||||
@@ -635,6 +661,7 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations {
|
||||
logger.debug("Executing prepared SQL query");
|
||||
|
||||
return execute(psc, new PreparedStatementCallback<T>() {
|
||||
@Override
|
||||
public T doInPreparedStatement(PreparedStatement ps) throws SQLException {
|
||||
ResultSet rs = null;
|
||||
try {
|
||||
@@ -658,66 +685,82 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations {
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T query(PreparedStatementCreator psc, ResultSetExtractor<T> rse) throws DataAccessException {
|
||||
return query(psc, null, rse);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T query(String sql, PreparedStatementSetter pss, ResultSetExtractor<T> rse) throws DataAccessException {
|
||||
return query(new SimplePreparedStatementCreator(sql), pss, rse);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T query(String sql, Object[] args, int[] argTypes, ResultSetExtractor<T> rse) throws DataAccessException {
|
||||
return query(sql, newArgTypePreparedStatementSetter(args, argTypes), rse);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T query(String sql, Object[] args, ResultSetExtractor<T> rse) throws DataAccessException {
|
||||
return query(sql, newArgPreparedStatementSetter(args), rse);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T query(String sql, ResultSetExtractor<T> rse, Object... args) throws DataAccessException {
|
||||
return query(sql, newArgPreparedStatementSetter(args), rse);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void query(PreparedStatementCreator psc, RowCallbackHandler rch) throws DataAccessException {
|
||||
query(psc, new RowCallbackHandlerResultSetExtractor(rch));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void query(String sql, PreparedStatementSetter pss, RowCallbackHandler rch) throws DataAccessException {
|
||||
query(sql, pss, new RowCallbackHandlerResultSetExtractor(rch));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void query(String sql, Object[] args, int[] argTypes, RowCallbackHandler rch) throws DataAccessException {
|
||||
query(sql, newArgTypePreparedStatementSetter(args, argTypes), rch);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void query(String sql, Object[] args, RowCallbackHandler rch) throws DataAccessException {
|
||||
query(sql, newArgPreparedStatementSetter(args), rch);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void query(String sql, RowCallbackHandler rch, Object... args) throws DataAccessException {
|
||||
query(sql, newArgPreparedStatementSetter(args), rch);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> List<T> query(PreparedStatementCreator psc, RowMapper<T> rowMapper) throws DataAccessException {
|
||||
return query(psc, new RowMapperResultSetExtractor<T>(rowMapper));
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> List<T> query(String sql, PreparedStatementSetter pss, RowMapper<T> rowMapper) throws DataAccessException {
|
||||
return query(sql, pss, new RowMapperResultSetExtractor<T>(rowMapper));
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> List<T> query(String sql, Object[] args, int[] argTypes, RowMapper<T> rowMapper) throws DataAccessException {
|
||||
return query(sql, args, argTypes, new RowMapperResultSetExtractor<T>(rowMapper));
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> List<T> query(String sql, Object[] args, RowMapper<T> rowMapper) throws DataAccessException {
|
||||
return query(sql, args, new RowMapperResultSetExtractor<T>(rowMapper));
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> List<T> query(String sql, RowMapper<T> rowMapper, Object... args) throws DataAccessException {
|
||||
return query(sql, args, new RowMapperResultSetExtractor<T>(rowMapper));
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T queryForObject(String sql, Object[] args, int[] argTypes, RowMapper<T> rowMapper)
|
||||
throws DataAccessException {
|
||||
|
||||
@@ -725,82 +768,100 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations {
|
||||
return DataAccessUtils.requiredSingleResult(results);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T queryForObject(String sql, Object[] args, RowMapper<T> rowMapper) throws DataAccessException {
|
||||
List<T> results = query(sql, args, new RowMapperResultSetExtractor<T>(rowMapper, 1));
|
||||
return DataAccessUtils.requiredSingleResult(results);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T queryForObject(String sql, RowMapper<T> rowMapper, Object... args) throws DataAccessException {
|
||||
List<T> results = query(sql, args, new RowMapperResultSetExtractor<T>(rowMapper, 1));
|
||||
return DataAccessUtils.requiredSingleResult(results);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T queryForObject(String sql, Object[] args, int[] argTypes, Class<T> requiredType)
|
||||
throws DataAccessException {
|
||||
|
||||
return queryForObject(sql, args, argTypes, getSingleColumnRowMapper(requiredType));
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T queryForObject(String sql, Object[] args, Class<T> requiredType) throws DataAccessException {
|
||||
return queryForObject(sql, args, getSingleColumnRowMapper(requiredType));
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T queryForObject(String sql, Class<T> requiredType, Object... args) throws DataAccessException {
|
||||
return queryForObject(sql, args, getSingleColumnRowMapper(requiredType));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> queryForMap(String sql, Object[] args, int[] argTypes) throws DataAccessException {
|
||||
return queryForObject(sql, args, argTypes, getColumnMapRowMapper());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> queryForMap(String sql, Object... args) throws DataAccessException {
|
||||
return queryForObject(sql, args, getColumnMapRowMapper());
|
||||
}
|
||||
|
||||
@Override
|
||||
public long queryForLong(String sql, Object[] args, int[] argTypes) throws DataAccessException {
|
||||
Number number = queryForObject(sql, args, argTypes, Long.class);
|
||||
return (number != null ? number.longValue() : 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public long queryForLong(String sql, Object... args) throws DataAccessException {
|
||||
Number number = queryForObject(sql, args, Long.class);
|
||||
return (number != null ? number.longValue() : 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int queryForInt(String sql, Object[] args, int[] argTypes) throws DataAccessException {
|
||||
Number number = queryForObject(sql, args, argTypes, Integer.class);
|
||||
return (number != null ? number.intValue() : 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int queryForInt(String sql, Object... args) throws DataAccessException {
|
||||
Number number = queryForObject(sql, args, Integer.class);
|
||||
return (number != null ? number.intValue() : 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> List<T> queryForList(String sql, Object[] args, int[] argTypes, Class<T> elementType) throws DataAccessException {
|
||||
return query(sql, args, argTypes, getSingleColumnRowMapper(elementType));
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> List<T> queryForList(String sql, Object[] args, Class<T> elementType) throws DataAccessException {
|
||||
return query(sql, args, getSingleColumnRowMapper(elementType));
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> List<T> queryForList(String sql, Class<T> elementType, Object... args) throws DataAccessException {
|
||||
return query(sql, args, getSingleColumnRowMapper(elementType));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Map<String, Object>> queryForList(String sql, Object[] args, int[] argTypes) throws DataAccessException {
|
||||
return query(sql, args, argTypes, getColumnMapRowMapper());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Map<String, Object>> queryForList(String sql, Object... args) throws DataAccessException {
|
||||
return query(sql, args, getColumnMapRowMapper());
|
||||
}
|
||||
|
||||
@Override
|
||||
public SqlRowSet queryForRowSet(String sql, Object[] args, int[] argTypes) throws DataAccessException {
|
||||
return query(sql, args, argTypes, new SqlRowSetResultSetExtractor());
|
||||
}
|
||||
|
||||
@Override
|
||||
public SqlRowSet queryForRowSet(String sql, Object... args) throws DataAccessException {
|
||||
return query(sql, args, new SqlRowSetResultSetExtractor());
|
||||
}
|
||||
@@ -810,6 +871,7 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations {
|
||||
|
||||
logger.debug("Executing prepared SQL update");
|
||||
return execute(psc, new PreparedStatementCallback<Integer>() {
|
||||
@Override
|
||||
public Integer doInPreparedStatement(PreparedStatement ps) throws SQLException {
|
||||
try {
|
||||
if (pss != null) {
|
||||
@@ -830,10 +892,12 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations {
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public int update(PreparedStatementCreator psc) throws DataAccessException {
|
||||
return update(psc, (PreparedStatementSetter) null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int update(final PreparedStatementCreator psc, final KeyHolder generatedKeyHolder)
|
||||
throws DataAccessException {
|
||||
|
||||
@@ -841,6 +905,7 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations {
|
||||
logger.debug("Executing SQL update and returning generated keys");
|
||||
|
||||
return execute(psc, new PreparedStatementCallback<Integer>() {
|
||||
@Override
|
||||
public Integer doInPreparedStatement(PreparedStatement ps) throws SQLException {
|
||||
int rows = ps.executeUpdate();
|
||||
List<Map<String, Object>> generatedKeys = generatedKeyHolder.getKeyList();
|
||||
@@ -864,24 +929,29 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations {
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public int update(String sql, PreparedStatementSetter pss) throws DataAccessException {
|
||||
return update(new SimplePreparedStatementCreator(sql), pss);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int update(String sql, Object[] args, int[] argTypes) throws DataAccessException {
|
||||
return update(sql, newArgTypePreparedStatementSetter(args, argTypes));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int update(String sql, Object... args) throws DataAccessException {
|
||||
return update(sql, newArgPreparedStatementSetter(args));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[] batchUpdate(String sql, final BatchPreparedStatementSetter pss) throws DataAccessException {
|
||||
if (logger.isDebugEnabled()) {
|
||||
logger.debug("Executing SQL batch update [" + sql + "]");
|
||||
}
|
||||
|
||||
return execute(sql, new PreparedStatementCallback<int[]>() {
|
||||
@Override
|
||||
public int[] doInPreparedStatement(PreparedStatement ps) throws SQLException {
|
||||
try {
|
||||
int batchSize = pss.getBatchSize();
|
||||
@@ -923,10 +993,12 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations {
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[] batchUpdate(String sql, List<Object[]> batchArgs) {
|
||||
return batchUpdate(sql, batchArgs, new int[0]);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[] batchUpdate(String sql, List<Object[]> batchArgs, int[] argTypes) {
|
||||
return BatchUpdateUtils.executeBatchUpdate(sql, batchArgs, argTypes, this);
|
||||
}
|
||||
@@ -937,11 +1009,13 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations {
|
||||
*
|
||||
* Contribution by Nicolas Fabre
|
||||
*/
|
||||
@Override
|
||||
public <T> int[][] batchUpdate(String sql, final Collection<T> batchArgs, final int batchSize, final ParameterizedPreparedStatementSetter<T> pss) {
|
||||
if (logger.isDebugEnabled()) {
|
||||
logger.debug("Executing SQL batch update [" + sql + "] with a batch size of " + batchSize);
|
||||
}
|
||||
return execute(sql, new PreparedStatementCallback<int[][]>() {
|
||||
@Override
|
||||
public int[][] doInPreparedStatement(PreparedStatement ps) throws SQLException {
|
||||
List<int[]> rowsAffected = new ArrayList<int[]>();
|
||||
try {
|
||||
@@ -988,6 +1062,7 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations {
|
||||
// Methods dealing with callable statements
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
@Override
|
||||
public <T> T execute(CallableStatementCreator csc, CallableStatementCallback<T> action)
|
||||
throws DataAccessException {
|
||||
|
||||
@@ -1038,10 +1113,12 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T execute(String callString, CallableStatementCallback<T> action) throws DataAccessException {
|
||||
return execute(new SimpleCallableStatementCreator(callString), action);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> call(CallableStatementCreator csc, List<SqlParameter> declaredParameters)
|
||||
throws DataAccessException {
|
||||
|
||||
@@ -1062,6 +1139,7 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations {
|
||||
}
|
||||
}
|
||||
return execute(csc, new CallableStatementCallback<Map<String, Object>>() {
|
||||
@Override
|
||||
public Map<String, Object> doInCallableStatement(CallableStatement cs) throws SQLException {
|
||||
boolean retVal = cs.execute();
|
||||
int updateCount = cs.getUpdateCount();
|
||||
@@ -1369,6 +1447,7 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations {
|
||||
this.target = target;
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("rawtypes")
|
||||
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
|
||||
// Invocation on ConnectionProxy interface coming in...
|
||||
@@ -1434,10 +1513,12 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations {
|
||||
this.sql = sql;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PreparedStatement createPreparedStatement(Connection con) throws SQLException {
|
||||
return con.prepareStatement(this.sql);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getSql() {
|
||||
return this.sql;
|
||||
}
|
||||
@@ -1456,10 +1537,12 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations {
|
||||
this.callString = callString;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CallableStatement createCallableStatement(Connection con) throws SQLException {
|
||||
return con.prepareCall(this.callString);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getSql() {
|
||||
return this.callString;
|
||||
}
|
||||
@@ -1479,6 +1562,7 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations {
|
||||
this.rch = rch;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object extractData(ResultSet rs) throws SQLException {
|
||||
while (rs.next()) {
|
||||
this.rch.processRow(rs);
|
||||
|
||||
@@ -224,6 +224,7 @@ public class PreparedStatementCreatorFactory {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public PreparedStatement createPreparedStatement(Connection con) throws SQLException {
|
||||
PreparedStatement ps = null;
|
||||
if (generatedKeysColumnNames != null || returnGeneratedKeys) {
|
||||
@@ -252,6 +253,7 @@ public class PreparedStatementCreatorFactory {
|
||||
return ps;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setValues(PreparedStatement ps) throws SQLException {
|
||||
// Determine PreparedStatement to pass to custom types.
|
||||
PreparedStatement psToUse = ps;
|
||||
@@ -300,10 +302,12 @@ public class PreparedStatementCreatorFactory {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getSql() {
|
||||
return sql;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cleanupParameters() {
|
||||
StatementCreatorUtils.cleanupParameters(this.parameters);
|
||||
}
|
||||
|
||||
@@ -69,6 +69,7 @@ public class RowCountCallbackHandler implements RowCallbackHandler {
|
||||
* by overriding the {@code processRow(ResultSet, int)} method.
|
||||
* @see #processRow(java.sql.ResultSet, int)
|
||||
*/
|
||||
@Override
|
||||
public final void processRow(ResultSet rs) throws SQLException {
|
||||
if (this.rowCount == 0) {
|
||||
ResultSetMetaData rsmd = rs.getMetaData();
|
||||
|
||||
@@ -85,6 +85,7 @@ public class RowMapperResultSetExtractor<T> implements ResultSetExtractor<List<T
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public List<T> extractData(ResultSet rs) throws SQLException {
|
||||
List<T> results = (this.rowsExpected > 0 ? new ArrayList<T>(this.rowsExpected) : new ArrayList<T>());
|
||||
int rowNum = 0;
|
||||
|
||||
@@ -78,6 +78,7 @@ public class SingleColumnRowMapper<T> implements RowMapper<T> {
|
||||
* @see #getColumnValue(java.sql.ResultSet, int, Class)
|
||||
* @see #convertValueToRequiredType(Object, Class)
|
||||
*/
|
||||
@Override
|
||||
@SuppressWarnings("unchecked")
|
||||
public T mapRow(ResultSet rs, int rowNum) throws SQLException {
|
||||
// Validate column count.
|
||||
|
||||
@@ -58,6 +58,7 @@ public class SqlRowSetResultSetExtractor implements ResultSetExtractor<SqlRowSet
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public SqlRowSet extractData(ResultSet rs) throws SQLException {
|
||||
return createSqlRowSet(rs);
|
||||
}
|
||||
@@ -120,6 +121,7 @@ public class SqlRowSetResultSetExtractor implements ResultSetExtractor<SqlRowSet
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public CachedRowSet createCachedRowSet() throws SQLException {
|
||||
return this.rowSetFactory.createCachedRowSet();
|
||||
}
|
||||
@@ -131,6 +133,7 @@ public class SqlRowSetResultSetExtractor implements ResultSetExtractor<SqlRowSet
|
||||
*/
|
||||
private static class SunCachedRowSetFactory implements CachedRowSetFactory {
|
||||
|
||||
@Override
|
||||
public CachedRowSet createCachedRowSet() throws SQLException {
|
||||
return new com.sun.rowset.CachedRowSetImpl();
|
||||
}
|
||||
|
||||
@@ -69,6 +69,7 @@ public class CallMetaDataProviderFactory {
|
||||
static public CallMetaDataProvider createMetaDataProvider(DataSource dataSource, final CallMetaDataContext context) {
|
||||
try {
|
||||
return (CallMetaDataProvider) JdbcUtils.extractDatabaseMetaData(dataSource, new DatabaseMetaDataCallback() {
|
||||
@Override
|
||||
public Object processMetaData(DatabaseMetaData databaseMetaData) throws SQLException, MetaDataAccessException {
|
||||
String databaseProductName = JdbcUtils.commonDatabaseName(databaseMetaData.getDatabaseProductName());
|
||||
boolean accessProcedureColumnMetaData = context.isAccessCallParameterMetaData();
|
||||
|
||||
@@ -68,6 +68,7 @@ public class GenericCallMetaDataProvider implements CallMetaDataProvider {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void initializeWithMetaData(DatabaseMetaData databaseMetaData) throws SQLException {
|
||||
try {
|
||||
setSupportsCatalogsInProcedureCalls(databaseMetaData.supportsCatalogsInProcedureCalls());
|
||||
@@ -95,6 +96,7 @@ public class GenericCallMetaDataProvider implements CallMetaDataProvider {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initializeWithProcedureColumnMetaData(DatabaseMetaData databaseMetaData, String catalogName,
|
||||
String schemaName, String procedureName) throws SQLException {
|
||||
|
||||
@@ -102,10 +104,12 @@ public class GenericCallMetaDataProvider implements CallMetaDataProvider {
|
||||
processProcedureColumns(databaseMetaData, catalogName, schemaName, procedureName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<CallParameterMetaData> getCallParameterMetaData() {
|
||||
return this.callParameterMetaData;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String procedureNameToUse(String procedureName) {
|
||||
if (procedureName == null) {
|
||||
return null;
|
||||
@@ -121,6 +125,7 @@ public class GenericCallMetaDataProvider implements CallMetaDataProvider {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String catalogNameToUse(String catalogName) {
|
||||
if (catalogName == null) {
|
||||
return null;
|
||||
@@ -136,6 +141,7 @@ public class GenericCallMetaDataProvider implements CallMetaDataProvider {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String schemaNameToUse(String schemaName) {
|
||||
if (schemaName == null) {
|
||||
return null;
|
||||
@@ -151,6 +157,7 @@ public class GenericCallMetaDataProvider implements CallMetaDataProvider {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String metaDataCatalogNameToUse(String catalogName) {
|
||||
if (isSupportsCatalogsInProcedureCalls()) {
|
||||
return catalogNameToUse(catalogName);
|
||||
@@ -160,6 +167,7 @@ public class GenericCallMetaDataProvider implements CallMetaDataProvider {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String metaDataSchemaNameToUse(String schemaName) {
|
||||
if (isSupportsSchemasInProcedureCalls()) {
|
||||
return schemaNameToUse(schemaName);
|
||||
@@ -169,6 +177,7 @@ public class GenericCallMetaDataProvider implements CallMetaDataProvider {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String parameterNameToUse(String parameterName) {
|
||||
if (parameterName == null) {
|
||||
return null;
|
||||
@@ -184,38 +193,47 @@ public class GenericCallMetaDataProvider implements CallMetaDataProvider {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean byPassReturnParameter(String parameterName) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SqlParameter createDefaultOutParameter(String parameterName, CallParameterMetaData meta) {
|
||||
return new SqlOutParameter(parameterName, meta.getSqlType());
|
||||
}
|
||||
|
||||
@Override
|
||||
public SqlParameter createDefaultInOutParameter(String parameterName, CallParameterMetaData meta) {
|
||||
return new SqlInOutParameter(parameterName, meta.getSqlType());
|
||||
}
|
||||
|
||||
@Override
|
||||
public SqlParameter createDefaultInParameter(String parameterName, CallParameterMetaData meta) {
|
||||
return new SqlParameter(parameterName, meta.getSqlType());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUserName() {
|
||||
return this.userName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isReturnResultSetSupported() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isRefCursorSupported() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRefCursorSqlType() {
|
||||
return Types.OTHER;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isProcedureColumnMetaDataUsed() {
|
||||
return this.procedureColumnMetaDataUsed;
|
||||
}
|
||||
@@ -231,6 +249,7 @@ public class GenericCallMetaDataProvider implements CallMetaDataProvider {
|
||||
/**
|
||||
* Does the database support the use of catalog name in procedure calls
|
||||
*/
|
||||
@Override
|
||||
public boolean isSupportsCatalogsInProcedureCalls() {
|
||||
return this.supportsCatalogsInProcedureCalls;
|
||||
}
|
||||
@@ -245,6 +264,7 @@ public class GenericCallMetaDataProvider implements CallMetaDataProvider {
|
||||
/**
|
||||
* Does the database support the use of schema name in procedure calls
|
||||
*/
|
||||
@Override
|
||||
public boolean isSupportsSchemasInProcedureCalls() {
|
||||
return this.supportsSchemasInProcedureCalls;
|
||||
}
|
||||
|
||||
@@ -113,22 +113,27 @@ public class GenericTableMetaDataProvider implements TableMetaDataProvider {
|
||||
return this.storesLowerCaseIdentifiers;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isTableColumnMetaDataUsed() {
|
||||
return this.tableColumnMetaDataUsed;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TableParameterMetaData> getTableParameterMetaData() {
|
||||
return this.insertParameterMetaData;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isGetGeneratedKeysSupported() {
|
||||
return this.getGeneratedKeysSupported;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isGetGeneratedKeysSimulated(){
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getSimpleQueryForGetGeneratedKey(String tableName, String keyColumnName) {
|
||||
return null;
|
||||
}
|
||||
@@ -147,10 +152,12 @@ public class GenericTableMetaDataProvider implements TableMetaDataProvider {
|
||||
this.generatedKeysColumnNameArraySupported = generatedKeysColumnNameArraySupported;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isGeneratedKeysColumnNameArraySupported() {
|
||||
return this.generatedKeysColumnNameArraySupported;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNativeJdbcExtractor(NativeJdbcExtractor nativeJdbcExtractor) {
|
||||
this.nativeJdbcExtractor = nativeJdbcExtractor;
|
||||
}
|
||||
@@ -160,6 +167,7 @@ public class GenericTableMetaDataProvider implements TableMetaDataProvider {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void initializeWithMetaData(DatabaseMetaData databaseMetaData) throws SQLException {
|
||||
try {
|
||||
if (databaseMetaData.supportsGetGeneratedKeys()) {
|
||||
@@ -214,6 +222,7 @@ public class GenericTableMetaDataProvider implements TableMetaDataProvider {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initializeWithTableColumnMetaData(DatabaseMetaData databaseMetaData, String catalogName,
|
||||
String schemaName, String tableName) throws SQLException {
|
||||
|
||||
@@ -221,6 +230,7 @@ public class GenericTableMetaDataProvider implements TableMetaDataProvider {
|
||||
locateTableAndProcessMetaData(databaseMetaData, catalogName, schemaName, tableName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String tableNameToUse(String tableName) {
|
||||
if (tableName == null) {
|
||||
return null;
|
||||
@@ -236,6 +246,7 @@ public class GenericTableMetaDataProvider implements TableMetaDataProvider {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String catalogNameToUse(String catalogName) {
|
||||
if (catalogName == null) {
|
||||
return null;
|
||||
@@ -251,6 +262,7 @@ public class GenericTableMetaDataProvider implements TableMetaDataProvider {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String schemaNameToUse(String schemaName) {
|
||||
if (schemaName == null) {
|
||||
return null;
|
||||
@@ -266,10 +278,12 @@ public class GenericTableMetaDataProvider implements TableMetaDataProvider {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String metaDataCatalogNameToUse(String catalogName) {
|
||||
return catalogNameToUse(catalogName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String metaDataSchemaNameToUse(String schemaName) {
|
||||
if (schemaName == null) {
|
||||
return schemaNameToUse(getDefaultSchema());
|
||||
|
||||
@@ -62,6 +62,7 @@ public class TableMetaDataProviderFactory {
|
||||
try {
|
||||
return (TableMetaDataProvider) JdbcUtils.extractDatabaseMetaData(dataSource,
|
||||
new DatabaseMetaDataCallback() {
|
||||
@Override
|
||||
public Object processMetaData(DatabaseMetaData databaseMetaData) throws SQLException {
|
||||
String databaseProductName =
|
||||
JdbcUtils.commonDatabaseName(databaseMetaData.getDatabaseProductName());
|
||||
|
||||
@@ -61,6 +61,7 @@ public abstract class AbstractSqlParameterSource implements SqlParameterSource {
|
||||
* @return the SQL type of the parameter,
|
||||
* or {@code TYPE_UNKNOWN} if not registered
|
||||
*/
|
||||
@Override
|
||||
public int getSqlType(String paramName) {
|
||||
Assert.notNull(paramName, "Parameter name must not be null");
|
||||
Integer sqlType = this.sqlTypes.get(paramName);
|
||||
@@ -76,6 +77,7 @@ public abstract class AbstractSqlParameterSource implements SqlParameterSource {
|
||||
* @return the type name of the parameter,
|
||||
* or {@code null} if not registered
|
||||
*/
|
||||
@Override
|
||||
public String getTypeName(String paramName) {
|
||||
Assert.notNull(paramName, "Parameter name must not be null");
|
||||
return this.typeNames.get(paramName);
|
||||
|
||||
@@ -55,10 +55,12 @@ public class BeanPropertySqlParameterSource extends AbstractSqlParameterSource {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean hasValue(String paramName) {
|
||||
return this.beanWrapper.isReadableProperty(paramName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getValue(String paramName) throws IllegalArgumentException {
|
||||
try {
|
||||
return this.beanWrapper.getPropertyValue(paramName);
|
||||
|
||||
@@ -149,10 +149,12 @@ public class MapSqlParameterSource extends AbstractSqlParameterSource {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean hasValue(String paramName) {
|
||||
return this.values.containsKey(paramName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getValue(String paramName) {
|
||||
if (!hasValue(paramName)) {
|
||||
throw new IllegalArgumentException("No value registered for key '" + paramName + "'");
|
||||
|
||||
@@ -41,12 +41,14 @@ public class NamedParameterBatchUpdateUtils extends BatchUpdateUtils {
|
||||
sqlToUse,
|
||||
new BatchPreparedStatementSetter() {
|
||||
|
||||
@Override
|
||||
public void setValues(PreparedStatement ps, int i) throws SQLException {
|
||||
Object[] values = NamedParameterUtils.buildValueArray(parsedSql, batchArgs[i], null);
|
||||
int[] columnTypes = NamedParameterUtils.buildSqlTypeArray(parsedSql, batchArgs[i]);
|
||||
setStatementParameters(values, ps, columnTypes);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getBatchSize() {
|
||||
return batchArgs.length;
|
||||
}
|
||||
|
||||
@@ -105,6 +105,7 @@ public class NamedParameterJdbcTemplate implements NamedParameterJdbcOperations
|
||||
* Expose the classic Spring JdbcTemplate to allow invocation of
|
||||
* less commonly used methods.
|
||||
*/
|
||||
@Override
|
||||
public JdbcOperations getJdbcOperations() {
|
||||
return this.classicJdbcTemplate;
|
||||
}
|
||||
@@ -125,54 +126,63 @@ public class NamedParameterJdbcTemplate implements NamedParameterJdbcOperations
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public <T> T execute(String sql, SqlParameterSource paramSource, PreparedStatementCallback<T> action)
|
||||
throws DataAccessException {
|
||||
|
||||
return getJdbcOperations().execute(getPreparedStatementCreator(sql, paramSource), action);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T execute(String sql, Map<String, ?> paramMap, PreparedStatementCallback<T> action)
|
||||
throws DataAccessException {
|
||||
|
||||
return execute(sql, new MapSqlParameterSource(paramMap), action);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T query(String sql, SqlParameterSource paramSource, ResultSetExtractor<T> rse)
|
||||
throws DataAccessException {
|
||||
|
||||
return getJdbcOperations().query(getPreparedStatementCreator(sql, paramSource), rse);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T query(String sql, Map<String, ?> paramMap, ResultSetExtractor<T> rse)
|
||||
throws DataAccessException {
|
||||
|
||||
return query(sql, new MapSqlParameterSource(paramMap), rse);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void query(String sql, SqlParameterSource paramSource, RowCallbackHandler rch)
|
||||
throws DataAccessException {
|
||||
|
||||
getJdbcOperations().query(getPreparedStatementCreator(sql, paramSource), rch);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void query(String sql, Map<String, ?> paramMap, RowCallbackHandler rch)
|
||||
throws DataAccessException {
|
||||
|
||||
query(sql, new MapSqlParameterSource(paramMap), rch);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> List<T> query(String sql, SqlParameterSource paramSource, RowMapper<T> rowMapper)
|
||||
throws DataAccessException {
|
||||
|
||||
return getJdbcOperations().query(getPreparedStatementCreator(sql, paramSource), rowMapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> List<T> query(String sql, Map<String, ?> paramMap, RowMapper<T> rowMapper)
|
||||
throws DataAccessException {
|
||||
|
||||
return query(sql, new MapSqlParameterSource(paramMap), rowMapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T queryForObject(String sql, SqlParameterSource paramSource, RowMapper<T> rowMapper)
|
||||
throws DataAccessException {
|
||||
|
||||
@@ -180,97 +190,116 @@ public class NamedParameterJdbcTemplate implements NamedParameterJdbcOperations
|
||||
return DataAccessUtils.requiredSingleResult(results);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T queryForObject(String sql, Map<String, ?> paramMap, RowMapper<T>rowMapper)
|
||||
throws DataAccessException {
|
||||
|
||||
return queryForObject(sql, new MapSqlParameterSource(paramMap), rowMapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T queryForObject(String sql, SqlParameterSource paramSource, Class<T> requiredType)
|
||||
throws DataAccessException {
|
||||
|
||||
return queryForObject(sql, paramSource, new SingleColumnRowMapper<T>(requiredType));
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T queryForObject(String sql, Map<String, ?> paramMap, Class<T> requiredType)
|
||||
throws DataAccessException {
|
||||
|
||||
return queryForObject(sql, paramMap, new SingleColumnRowMapper<T>(requiredType));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> queryForMap(String sql, SqlParameterSource paramSource) throws DataAccessException {
|
||||
return queryForObject(sql, paramSource, new ColumnMapRowMapper());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> queryForMap(String sql, Map<String, ?> paramMap) throws DataAccessException {
|
||||
return queryForObject(sql, paramMap, new ColumnMapRowMapper());
|
||||
}
|
||||
|
||||
@Override
|
||||
public long queryForLong(String sql, SqlParameterSource paramSource) throws DataAccessException {
|
||||
Number number = queryForObject(sql, paramSource, Long.class);
|
||||
return (number != null ? number.longValue() : 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public long queryForLong(String sql, Map<String, ?> paramMap) throws DataAccessException {
|
||||
return queryForLong(sql, new MapSqlParameterSource(paramMap));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int queryForInt(String sql, SqlParameterSource paramSource) throws DataAccessException {
|
||||
Number number = queryForObject(sql, paramSource, Integer.class);
|
||||
return (number != null ? number.intValue() : 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int queryForInt(String sql, Map<String, ?> paramMap) throws DataAccessException {
|
||||
return queryForInt(sql, new MapSqlParameterSource(paramMap));
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> List<T> queryForList(String sql, SqlParameterSource paramSource, Class<T> elementType)
|
||||
throws DataAccessException {
|
||||
|
||||
return query(sql, paramSource, new SingleColumnRowMapper<T>(elementType));
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> List<T> queryForList(String sql, Map<String, ?> paramMap, Class<T> elementType)
|
||||
throws DataAccessException {
|
||||
|
||||
return queryForList(sql, new MapSqlParameterSource(paramMap), elementType);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Map<String, Object>> queryForList(String sql, SqlParameterSource paramSource)
|
||||
throws DataAccessException {
|
||||
|
||||
return query(sql, paramSource, new ColumnMapRowMapper());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Map<String, Object>> queryForList(String sql, Map<String, ?> paramMap)
|
||||
throws DataAccessException {
|
||||
|
||||
return queryForList(sql, new MapSqlParameterSource(paramMap));
|
||||
}
|
||||
|
||||
@Override
|
||||
public SqlRowSet queryForRowSet(String sql, SqlParameterSource paramSource) throws DataAccessException {
|
||||
return getJdbcOperations().query(
|
||||
getPreparedStatementCreator(sql, paramSource), new SqlRowSetResultSetExtractor());
|
||||
}
|
||||
|
||||
@Override
|
||||
public SqlRowSet queryForRowSet(String sql, Map<String, ?> paramMap) throws DataAccessException {
|
||||
return queryForRowSet(sql, new MapSqlParameterSource(paramMap));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int update(String sql, SqlParameterSource paramSource) throws DataAccessException {
|
||||
return getJdbcOperations().update(getPreparedStatementCreator(sql, paramSource));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int update(String sql, Map<String, ?> paramMap) throws DataAccessException {
|
||||
return update(sql, new MapSqlParameterSource(paramMap));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int update(String sql, SqlParameterSource paramSource, KeyHolder generatedKeyHolder)
|
||||
throws DataAccessException {
|
||||
|
||||
return update(sql, paramSource, generatedKeyHolder, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int update(
|
||||
String sql, SqlParameterSource paramSource, KeyHolder generatedKeyHolder, String[] keyColumnNames)
|
||||
throws DataAccessException {
|
||||
@@ -289,6 +318,7 @@ public class NamedParameterJdbcTemplate implements NamedParameterJdbcOperations
|
||||
return getJdbcOperations().update(pscf.newPreparedStatementCreator(params), generatedKeyHolder);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[] batchUpdate(String sql, Map<String, ?>[] batchValues) {
|
||||
SqlParameterSource[] batchArgs = new SqlParameterSource[batchValues.length];
|
||||
int i = 0;
|
||||
@@ -299,6 +329,7 @@ public class NamedParameterJdbcTemplate implements NamedParameterJdbcOperations
|
||||
return batchUpdate(sql, batchArgs);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[] batchUpdate(String sql, SqlParameterSource[] batchArgs) {
|
||||
ParsedSql parsedSql = this.getParsedSql(sql);
|
||||
return NamedParameterBatchUpdateUtils.executeBatchUpdateWithNamedParameters(parsedSql, batchArgs, getJdbcOperations());
|
||||
|
||||
@@ -444,6 +444,7 @@ public abstract class AbstractJdbcInsert {
|
||||
if (this.tableMetaDataContext.isGetGeneratedKeysSupported()) {
|
||||
jdbcTemplate.update(
|
||||
new PreparedStatementCreator() {
|
||||
@Override
|
||||
public PreparedStatement createPreparedStatement(Connection con) throws SQLException {
|
||||
PreparedStatement ps = prepareStatementForGeneratedKeys(con);
|
||||
setParameterValues(ps, values, getInsertTypes());
|
||||
@@ -483,6 +484,7 @@ public abstract class AbstractJdbcInsert {
|
||||
}
|
||||
else {
|
||||
jdbcTemplate.execute(new ConnectionCallback() {
|
||||
@Override
|
||||
public Object doInConnection(Connection con) throws SQLException, DataAccessException {
|
||||
// Do the insert
|
||||
PreparedStatement ps = null;
|
||||
@@ -592,11 +594,13 @@ public abstract class AbstractJdbcInsert {
|
||||
getInsertString(),
|
||||
new BatchPreparedStatementSetter() {
|
||||
|
||||
@Override
|
||||
public void setValues(PreparedStatement ps, int i) throws SQLException {
|
||||
List<Object> values = batchValues[i];
|
||||
setParameterValues(ps, values, getInsertTypes());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getBatchSize() {
|
||||
return batchValues.length;
|
||||
}
|
||||
|
||||
@@ -79,33 +79,39 @@ public class SimpleJdbcCall extends AbstractJdbcCall implements SimpleJdbcCallOp
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public SimpleJdbcCall withProcedureName(String procedureName) {
|
||||
setProcedureName(procedureName);
|
||||
setFunction(false);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SimpleJdbcCall withFunctionName(String functionName) {
|
||||
setProcedureName(functionName);
|
||||
setFunction(true);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SimpleJdbcCall withSchemaName(String schemaName) {
|
||||
setSchemaName(schemaName);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SimpleJdbcCall withCatalogName(String catalogName) {
|
||||
setCatalogName(catalogName);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SimpleJdbcCall withReturnValue() {
|
||||
setReturnValueRequired(true);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SimpleJdbcCall declareParameters(SqlParameter... sqlParameters) {
|
||||
for (SqlParameter sqlParameter : sqlParameters) {
|
||||
if (sqlParameter != null) {
|
||||
@@ -115,11 +121,13 @@ public class SimpleJdbcCall extends AbstractJdbcCall implements SimpleJdbcCallOp
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SimpleJdbcCall useInParameterNames(String... inParameterNames) {
|
||||
setInParameterNames(new HashSet<String>(Arrays.asList(inParameterNames)));
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SimpleJdbcCall returningResultSet(String parameterName, RowMapper rowMapper) {
|
||||
addDeclaredRowMapper(parameterName, rowMapper);
|
||||
return this;
|
||||
@@ -128,55 +136,66 @@ public class SimpleJdbcCall extends AbstractJdbcCall implements SimpleJdbcCallOp
|
||||
/**
|
||||
* @deprecated in favor of {@link #returningResultSet(String, org.springframework.jdbc.core.RowMapper)}
|
||||
*/
|
||||
@Override
|
||||
@Deprecated
|
||||
public SimpleJdbcCall returningResultSet(String parameterName, ParameterizedRowMapper rowMapper) {
|
||||
addDeclaredRowMapper(parameterName, rowMapper);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SimpleJdbcCall withoutProcedureColumnMetaDataAccess() {
|
||||
setAccessCallParameterMetaData(false);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("unchecked")
|
||||
public <T> T executeFunction(Class<T> returnType, Object... args) {
|
||||
return (T) doExecute(args).get(getScalarOutParameterName());
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("unchecked")
|
||||
public <T> T executeFunction(Class<T> returnType, Map<String, ?> args) {
|
||||
return (T) doExecute(args).get(getScalarOutParameterName());
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("unchecked")
|
||||
public <T> T executeFunction(Class<T> returnType, SqlParameterSource args) {
|
||||
return (T) doExecute(args).get(getScalarOutParameterName());
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("unchecked")
|
||||
public <T> T executeObject(Class<T> returnType, Object... args) {
|
||||
return (T) doExecute(args).get(getScalarOutParameterName());
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("unchecked")
|
||||
public <T> T executeObject(Class<T> returnType, Map<String, ?> args) {
|
||||
return (T) doExecute(args).get(getScalarOutParameterName());
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("unchecked")
|
||||
public <T> T executeObject(Class<T> returnType, SqlParameterSource args) {
|
||||
return (T) doExecute(args).get(getScalarOutParameterName());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> execute(Object... args) {
|
||||
return doExecute(args);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> execute(Map<String, ?> args) {
|
||||
return doExecute(args);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> execute(SqlParameterSource parameterSource) {
|
||||
return doExecute(parameterSource);
|
||||
}
|
||||
|
||||
@@ -70,74 +70,90 @@ public class SimpleJdbcInsert extends AbstractJdbcInsert implements SimpleJdbcIn
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public SimpleJdbcInsert withTableName(String tableName) {
|
||||
setTableName(tableName);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SimpleJdbcInsert withSchemaName(String schemaName) {
|
||||
setSchemaName(schemaName);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SimpleJdbcInsert withCatalogName(String catalogName) {
|
||||
setCatalogName(catalogName);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SimpleJdbcInsert usingColumns(String... columnNames) {
|
||||
setColumnNames(Arrays.asList(columnNames));
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SimpleJdbcInsert usingGeneratedKeyColumns(String... columnNames) {
|
||||
setGeneratedKeyNames(columnNames);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SimpleJdbcInsertOperations withoutTableColumnMetaDataAccess() {
|
||||
setAccessTableColumnMetaData(false);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SimpleJdbcInsertOperations includeSynonymsForTableColumnMetaData() {
|
||||
setOverrideIncludeSynonymsDefault(true);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SimpleJdbcInsertOperations useNativeJdbcExtractorForMetaData(NativeJdbcExtractor nativeJdbcExtractor) {
|
||||
setNativeJdbcExtractor(nativeJdbcExtractor);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int execute(Map<String, Object> args) {
|
||||
return doExecute(args);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int execute(SqlParameterSource parameterSource) {
|
||||
return doExecute(parameterSource);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Number executeAndReturnKey(Map<String, Object> args) {
|
||||
return doExecuteAndReturnKey(args);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Number executeAndReturnKey(SqlParameterSource parameterSource) {
|
||||
return doExecuteAndReturnKey(parameterSource);
|
||||
}
|
||||
|
||||
@Override
|
||||
public KeyHolder executeAndReturnKeyHolder(Map<String, Object> args) {
|
||||
return doExecuteAndReturnKeyHolder(args);
|
||||
}
|
||||
|
||||
@Override
|
||||
public KeyHolder executeAndReturnKeyHolder(SqlParameterSource parameterSource) {
|
||||
return doExecuteAndReturnKeyHolder(parameterSource);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[] executeBatch(Map<String, Object>[] batch) {
|
||||
return doExecuteBatch(batch);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[] executeBatch(SqlParameterSource[] batch) {
|
||||
return doExecuteBatch(batch);
|
||||
}
|
||||
|
||||
@@ -91,6 +91,7 @@ public class SimpleJdbcTemplate implements SimpleJdbcOperations {
|
||||
* Expose the classic Spring JdbcTemplate to allow invocation of
|
||||
* less commonly used methods.
|
||||
*/
|
||||
@Override
|
||||
public JdbcOperations getJdbcOperations() {
|
||||
return this.namedParameterJdbcOperations.getJdbcOperations();
|
||||
}
|
||||
@@ -99,172 +100,207 @@ public class SimpleJdbcTemplate implements SimpleJdbcOperations {
|
||||
* Expose the Spring NamedParameterJdbcTemplate to allow invocation of
|
||||
* less commonly used methods.
|
||||
*/
|
||||
@Override
|
||||
public NamedParameterJdbcOperations getNamedParameterJdbcOperations() {
|
||||
return this.namedParameterJdbcOperations;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int queryForInt(String sql, Map<String, ?> args) throws DataAccessException {
|
||||
return getNamedParameterJdbcOperations().queryForInt(sql, args);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int queryForInt(String sql, SqlParameterSource args) throws DataAccessException {
|
||||
return getNamedParameterJdbcOperations().queryForInt(sql, args);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int queryForInt(String sql, Object... args) throws DataAccessException {
|
||||
return (ObjectUtils.isEmpty(args) ?
|
||||
getJdbcOperations().queryForInt(sql) :
|
||||
getJdbcOperations().queryForInt(sql, getArguments(args)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public long queryForLong(String sql, Map<String, ?> args) throws DataAccessException {
|
||||
return getNamedParameterJdbcOperations().queryForLong(sql, args);
|
||||
}
|
||||
|
||||
@Override
|
||||
public long queryForLong(String sql, SqlParameterSource args) throws DataAccessException {
|
||||
return getNamedParameterJdbcOperations().queryForLong(sql, args);
|
||||
}
|
||||
|
||||
@Override
|
||||
public long queryForLong(String sql, Object... args) throws DataAccessException {
|
||||
return (ObjectUtils.isEmpty(args) ?
|
||||
getJdbcOperations().queryForLong(sql) :
|
||||
getJdbcOperations().queryForLong(sql, getArguments(args)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T queryForObject(String sql, Class<T> requiredType, Map<String, ?> args) throws DataAccessException {
|
||||
return getNamedParameterJdbcOperations().queryForObject(sql, args, requiredType);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T queryForObject(String sql, Class<T> requiredType, SqlParameterSource args)
|
||||
throws DataAccessException {
|
||||
return getNamedParameterJdbcOperations().queryForObject(sql, args, requiredType);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T queryForObject(String sql, Class<T> requiredType, Object... args) throws DataAccessException {
|
||||
return (ObjectUtils.isEmpty(args) ?
|
||||
getJdbcOperations().queryForObject(sql, requiredType) :
|
||||
getJdbcOperations().queryForObject(sql, getArguments(args), requiredType));
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T queryForObject(String sql, RowMapper<T> rm, Map<String, ?> args) throws DataAccessException {
|
||||
return getNamedParameterJdbcOperations().queryForObject(sql, args, rm);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Deprecated
|
||||
public <T> T queryForObject(String sql, ParameterizedRowMapper<T> rm, Map<String, ?> args) throws DataAccessException {
|
||||
return queryForObject(sql, (RowMapper<T>) rm, args);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T queryForObject(String sql, RowMapper<T> rm, SqlParameterSource args)
|
||||
throws DataAccessException {
|
||||
return getNamedParameterJdbcOperations().queryForObject(sql, args, rm);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Deprecated
|
||||
public <T> T queryForObject(String sql, ParameterizedRowMapper<T> rm, SqlParameterSource args)
|
||||
throws DataAccessException {
|
||||
return queryForObject(sql, (RowMapper<T>) rm, args);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T queryForObject(String sql, RowMapper<T> rm, Object... args) throws DataAccessException {
|
||||
return (ObjectUtils.isEmpty(args) ?
|
||||
getJdbcOperations().queryForObject(sql, rm):
|
||||
getJdbcOperations().queryForObject(sql, getArguments(args), rm));
|
||||
}
|
||||
|
||||
@Override
|
||||
@Deprecated
|
||||
public <T> T queryForObject(String sql, ParameterizedRowMapper<T> rm, Object... args) throws DataAccessException {
|
||||
return queryForObject(sql, (RowMapper<T>) rm, args);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> List<T> query(String sql, RowMapper<T> rm, Map<String, ?> args) throws DataAccessException {
|
||||
return getNamedParameterJdbcOperations().query(sql, args, rm);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Deprecated
|
||||
public <T> List<T> query(String sql, ParameterizedRowMapper<T> rm, Map<String, ?> args) throws DataAccessException {
|
||||
return query(sql, (RowMapper<T>) rm, args);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> List<T> query(String sql, RowMapper<T> rm, SqlParameterSource args)
|
||||
throws DataAccessException {
|
||||
return getNamedParameterJdbcOperations().query(sql, args, rm);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Deprecated
|
||||
public <T> List<T> query(String sql, ParameterizedRowMapper<T> rm, SqlParameterSource args)
|
||||
throws DataAccessException {
|
||||
return query(sql, (RowMapper<T>) rm, args);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> List<T> query(String sql, RowMapper<T> rm, Object... args) throws DataAccessException {
|
||||
return (ObjectUtils.isEmpty(args) ?
|
||||
getJdbcOperations().query(sql, rm) :
|
||||
getJdbcOperations().query(sql, getArguments(args), rm));
|
||||
}
|
||||
|
||||
@Override
|
||||
@Deprecated
|
||||
public <T> List<T> query(String sql, ParameterizedRowMapper<T> rm, Object... args) throws DataAccessException {
|
||||
return query(sql, (RowMapper<T>) rm, args);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> queryForMap(String sql, Map<String, ?> args) throws DataAccessException {
|
||||
return getNamedParameterJdbcOperations().queryForMap(sql, args);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> queryForMap(String sql, SqlParameterSource args)
|
||||
throws DataAccessException {
|
||||
return getNamedParameterJdbcOperations().queryForMap(sql, args);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> queryForMap(String sql, Object... args) throws DataAccessException {
|
||||
return (ObjectUtils.isEmpty(args) ?
|
||||
getJdbcOperations().queryForMap(sql) :
|
||||
getJdbcOperations().queryForMap(sql, getArguments(args)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Map<String, Object>> queryForList(String sql, Map<String, ?> args) throws DataAccessException {
|
||||
return getNamedParameterJdbcOperations().queryForList(sql, args);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Map<String, Object>> queryForList(String sql, SqlParameterSource args)
|
||||
throws DataAccessException {
|
||||
return getNamedParameterJdbcOperations().queryForList(sql, args);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Map<String, Object>> queryForList(String sql, Object... args) throws DataAccessException {
|
||||
return (ObjectUtils.isEmpty(args) ?
|
||||
getJdbcOperations().queryForList(sql) :
|
||||
getJdbcOperations().queryForList(sql, getArguments(args)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int update(String sql, Map<String, ?> args) throws DataAccessException {
|
||||
return getNamedParameterJdbcOperations().update(sql, args);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int update(String sql, SqlParameterSource args) throws DataAccessException {
|
||||
return getNamedParameterJdbcOperations().update(sql, args);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int update(String sql, Object ... args) throws DataAccessException {
|
||||
return (ObjectUtils.isEmpty(args) ?
|
||||
getJdbcOperations().update(sql) :
|
||||
getJdbcOperations().update(sql, getArguments(args)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[] batchUpdate(String sql, List<Object[]> batchArgs) {
|
||||
return batchUpdate(sql, batchArgs, new int[0]);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[] batchUpdate(String sql, List<Object[]> batchArgs, int[] argTypes) {
|
||||
return BatchUpdateUtils.executeBatchUpdate(sql, batchArgs, argTypes, getJdbcOperations());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[] batchUpdate(String sql, Map<String, ?>[] batchValues) {
|
||||
return getNamedParameterJdbcOperations().batchUpdate(sql, batchValues);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[] batchUpdate(String sql, SqlParameterSource[] batchArgs) {
|
||||
return getNamedParameterJdbcOperations().batchUpdate(sql, batchArgs);
|
||||
}
|
||||
|
||||
@@ -40,6 +40,7 @@ public abstract class AbstractInterruptibleBatchPreparedStatementSetter
|
||||
* This implementation calls {@link #setValuesIfAvailable}
|
||||
* and sets this instance's exhaustion flag accordingly.
|
||||
*/
|
||||
@Override
|
||||
public final void setValues(PreparedStatement ps, int i) throws SQLException {
|
||||
this.exhausted = !setValuesIfAvailable(ps, i);
|
||||
}
|
||||
@@ -47,6 +48,7 @@ public abstract class AbstractInterruptibleBatchPreparedStatementSetter
|
||||
/**
|
||||
* This implementation return this instance's current exhaustion flag.
|
||||
*/
|
||||
@Override
|
||||
public final boolean isBatchExhausted(int i) {
|
||||
return this.exhausted;
|
||||
}
|
||||
@@ -55,6 +57,7 @@ public abstract class AbstractInterruptibleBatchPreparedStatementSetter
|
||||
* This implementation returns {@code Integer.MAX_VALUE}.
|
||||
* Can be overridden in subclasses to lower the maximum batch size.
|
||||
*/
|
||||
@Override
|
||||
public int getBatchSize() {
|
||||
return Integer.MAX_VALUE;
|
||||
}
|
||||
|
||||
@@ -66,6 +66,7 @@ public abstract class AbstractLobCreatingPreparedStatementCallback implements Pr
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public final Integer doInPreparedStatement(PreparedStatement ps) throws SQLException, DataAccessException {
|
||||
LobCreator lobCreator = this.lobHandler.getLobCreator();
|
||||
try {
|
||||
|
||||
@@ -64,6 +64,7 @@ public abstract class AbstractLobStreamingResultSetExtractor implements ResultSe
|
||||
* @see #streamData
|
||||
* @see org.springframework.jdbc.LobRetrievalFailureException
|
||||
*/
|
||||
@Override
|
||||
public final Object extractData(ResultSet rs) throws SQLException, DataAccessException {
|
||||
if (!rs.next()) {
|
||||
handleNoRowFound();
|
||||
|
||||
@@ -52,6 +52,7 @@ import org.springframework.jdbc.core.SqlTypeValue;
|
||||
*/
|
||||
public abstract class AbstractSqlTypeValue implements SqlTypeValue {
|
||||
|
||||
@Override
|
||||
public final void setTypeValue(PreparedStatement ps, int paramIndex, int sqlType, String typeName)
|
||||
throws SQLException {
|
||||
|
||||
|
||||
@@ -107,6 +107,7 @@ public class JdbcBeanDefinitionReader {
|
||||
Assert.notNull(this.jdbcTemplate, "Not fully configured - specify DataSource or JdbcTemplate");
|
||||
final Properties props = new Properties();
|
||||
this.jdbcTemplate.query(sql, new RowCallbackHandler() {
|
||||
@Override
|
||||
public void processRow(ResultSet rs) throws SQLException {
|
||||
String beanName = rs.getString(1);
|
||||
String property = rs.getString(2);
|
||||
|
||||
@@ -168,6 +168,7 @@ public class SqlLobValue implements DisposableSqlTypeValue {
|
||||
/**
|
||||
* Set the specified content via the LobCreator.
|
||||
*/
|
||||
@Override
|
||||
public void setTypeValue(PreparedStatement ps, int paramIndex, int sqlType, String typeName)
|
||||
throws SQLException {
|
||||
if (sqlType == Types.BLOB) {
|
||||
@@ -208,6 +209,7 @@ public class SqlLobValue implements DisposableSqlTypeValue {
|
||||
/**
|
||||
* Close the LobCreator, if any.
|
||||
*/
|
||||
@Override
|
||||
public void cleanup() {
|
||||
this.lobCreator.close();
|
||||
}
|
||||
|
||||
@@ -45,6 +45,7 @@ public abstract class AbstractDataSource implements DataSource {
|
||||
/**
|
||||
* Returns 0, indicating the default system timeout is to be used.
|
||||
*/
|
||||
@Override
|
||||
public int getLoginTimeout() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
@@ -52,6 +53,7 @@ public abstract class AbstractDataSource implements DataSource {
|
||||
/**
|
||||
* Setting a login timeout is not supported.
|
||||
*/
|
||||
@Override
|
||||
public void setLoginTimeout(int timeout) throws SQLException {
|
||||
throw new UnsupportedOperationException("setLoginTimeout");
|
||||
}
|
||||
@@ -59,6 +61,7 @@ public abstract class AbstractDataSource implements DataSource {
|
||||
/**
|
||||
* LogWriter methods are not supported.
|
||||
*/
|
||||
@Override
|
||||
public PrintWriter getLogWriter() {
|
||||
throw new UnsupportedOperationException("getLogWriter");
|
||||
}
|
||||
@@ -66,6 +69,7 @@ public abstract class AbstractDataSource implements DataSource {
|
||||
/**
|
||||
* LogWriter methods are not supported.
|
||||
*/
|
||||
@Override
|
||||
public void setLogWriter(PrintWriter pw) throws SQLException {
|
||||
throw new UnsupportedOperationException("setLogWriter");
|
||||
}
|
||||
@@ -75,6 +79,7 @@ public abstract class AbstractDataSource implements DataSource {
|
||||
// Implementation of JDBC 4.0's Wrapper interface
|
||||
//---------------------------------------------------------------------
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("unchecked")
|
||||
public <T> T unwrap(Class<T> iface) throws SQLException {
|
||||
if (iface.isInstance(this)) {
|
||||
@@ -84,6 +89,7 @@ public abstract class AbstractDataSource implements DataSource {
|
||||
"] cannot be unwrapped as [" + iface.getName() + "]");
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isWrapperFor(Class<?> iface) throws SQLException {
|
||||
return iface.isInstance(this);
|
||||
}
|
||||
@@ -93,6 +99,7 @@ public abstract class AbstractDataSource implements DataSource {
|
||||
// Implementation of JDBC 4.1's getParentLogger method
|
||||
//---------------------------------------------------------------------
|
||||
|
||||
@Override
|
||||
public Logger getParentLogger() {
|
||||
return Logger.getLogger(Logger.GLOBAL_LOGGER_NAME);
|
||||
}
|
||||
|
||||
@@ -115,6 +115,7 @@ public abstract class AbstractDriverBasedDataSource extends AbstractDataSource {
|
||||
* @see #setUsername
|
||||
* @see #setPassword
|
||||
*/
|
||||
@Override
|
||||
public Connection getConnection() throws SQLException {
|
||||
return getConnectionFromDriver(getUsername(), getPassword());
|
||||
}
|
||||
@@ -124,6 +125,7 @@ public abstract class AbstractDriverBasedDataSource extends AbstractDataSource {
|
||||
* using the given username and password.
|
||||
* @see #getConnectionFromDriver(String, String)
|
||||
*/
|
||||
@Override
|
||||
public Connection getConnection(String username, String password) throws SQLException {
|
||||
return getConnectionFromDriver(username, password);
|
||||
}
|
||||
|
||||
@@ -162,6 +162,7 @@ public class DataSourceTransactionManager extends AbstractPlatformTransactionMan
|
||||
return this.dataSource;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterPropertiesSet() {
|
||||
if (getDataSource() == null) {
|
||||
throw new IllegalArgumentException("Property 'dataSource' is required");
|
||||
@@ -169,6 +170,7 @@ public class DataSourceTransactionManager extends AbstractPlatformTransactionMan
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Object getResourceFactory() {
|
||||
return getDataSource();
|
||||
}
|
||||
@@ -364,6 +366,7 @@ public class DataSourceTransactionManager extends AbstractPlatformTransactionMan
|
||||
getConnectionHolder().setRollbackOnly();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isRollbackOnly() {
|
||||
return getConnectionHolder().isRollbackOnly();
|
||||
}
|
||||
|
||||
@@ -73,6 +73,7 @@ public class DelegatingDataSource implements DataSource, InitializingBean {
|
||||
return this.targetDataSource;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterPropertiesSet() {
|
||||
if (getTargetDataSource() == null) {
|
||||
throw new IllegalArgumentException("Property 'targetDataSource' is required");
|
||||
@@ -80,26 +81,32 @@ public class DelegatingDataSource implements DataSource, InitializingBean {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Connection getConnection() throws SQLException {
|
||||
return getTargetDataSource().getConnection();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Connection getConnection(String username, String password) throws SQLException {
|
||||
return getTargetDataSource().getConnection(username, password);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PrintWriter getLogWriter() throws SQLException {
|
||||
return getTargetDataSource().getLogWriter();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setLogWriter(PrintWriter out) throws SQLException {
|
||||
getTargetDataSource().setLogWriter(out);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getLoginTimeout() throws SQLException {
|
||||
return getTargetDataSource().getLoginTimeout();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setLoginTimeout(int seconds) throws SQLException {
|
||||
getTargetDataSource().setLoginTimeout(seconds);
|
||||
}
|
||||
@@ -109,6 +116,7 @@ public class DelegatingDataSource implements DataSource, InitializingBean {
|
||||
// Implementation of JDBC 4.0's Wrapper interface
|
||||
//---------------------------------------------------------------------
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("unchecked")
|
||||
public <T> T unwrap(Class<T> iface) throws SQLException {
|
||||
if (iface.isInstance(this)) {
|
||||
@@ -117,6 +125,7 @@ public class DelegatingDataSource implements DataSource, InitializingBean {
|
||||
return getTargetDataSource().unwrap(iface);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isWrapperFor(Class<?> iface) throws SQLException {
|
||||
return (iface.isInstance(this) || getTargetDataSource().isWrapperFor(iface));
|
||||
}
|
||||
@@ -126,6 +135,7 @@ public class DelegatingDataSource implements DataSource, InitializingBean {
|
||||
// Implementation of JDBC 4.1's getParentLogger method
|
||||
//---------------------------------------------------------------------
|
||||
|
||||
@Override
|
||||
public Logger getParentLogger() {
|
||||
return Logger.getLogger(Logger.GLOBAL_LOGGER_NAME);
|
||||
}
|
||||
|
||||
@@ -87,6 +87,7 @@ public abstract class JdbcTransactionObjectSupport implements SavepointManager,
|
||||
return this.savepointAllowed;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void flush() {
|
||||
// no-op
|
||||
}
|
||||
@@ -100,6 +101,7 @@ public abstract class JdbcTransactionObjectSupport implements SavepointManager,
|
||||
* This implementation creates a JDBC 3.0 Savepoint and returns it.
|
||||
* @see java.sql.Connection#setSavepoint
|
||||
*/
|
||||
@Override
|
||||
public Object createSavepoint() throws TransactionException {
|
||||
ConnectionHolder conHolder = getConnectionHolderForSavepoint();
|
||||
try {
|
||||
@@ -124,6 +126,7 @@ public abstract class JdbcTransactionObjectSupport implements SavepointManager,
|
||||
* This implementation rolls back to the given JDBC 3.0 Savepoint.
|
||||
* @see java.sql.Connection#rollback(java.sql.Savepoint)
|
||||
*/
|
||||
@Override
|
||||
public void rollbackToSavepoint(Object savepoint) throws TransactionException {
|
||||
try {
|
||||
getConnectionHolderForSavepoint().getConnection().rollback((Savepoint) savepoint);
|
||||
@@ -137,6 +140,7 @@ public abstract class JdbcTransactionObjectSupport implements SavepointManager,
|
||||
* This implementation releases the given JDBC 3.0 Savepoint.
|
||||
* @see java.sql.Connection#releaseSavepoint
|
||||
*/
|
||||
@Override
|
||||
public void releaseSavepoint(Object savepoint) throws TransactionException {
|
||||
try {
|
||||
getConnectionHolderForSavepoint().getConnection().releaseSavepoint((Savepoint) savepoint);
|
||||
|
||||
@@ -274,6 +274,7 @@ public class LazyConnectionDataSourceProxy extends DelegatingDataSource {
|
||||
this.password = password;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
|
||||
// Invocation on ConnectionProxy interface coming in...
|
||||
|
||||
|
||||
@@ -44,6 +44,7 @@ public class SimpleConnectionHandle implements ConnectionHandle {
|
||||
/**
|
||||
* Return the specified Connection as-is.
|
||||
*/
|
||||
@Override
|
||||
public Connection getConnection() {
|
||||
return this.connection;
|
||||
}
|
||||
@@ -52,6 +53,7 @@ public class SimpleConnectionHandle implements ConnectionHandle {
|
||||
* This implementation is empty, as we're using a standard
|
||||
* Connection handle that does not have to be released.
|
||||
*/
|
||||
@Override
|
||||
public void releaseConnection(Connection con) {
|
||||
}
|
||||
|
||||
|
||||
@@ -213,6 +213,7 @@ public class SingleConnectionDataSource extends DriverManagerDataSource
|
||||
/**
|
||||
* This is a single Connection: Do not close it when returning to the "pool".
|
||||
*/
|
||||
@Override
|
||||
public boolean shouldClose(Connection con) {
|
||||
synchronized (this.connectionMonitor) {
|
||||
return (con != this.connection && con != this.target);
|
||||
@@ -225,6 +226,7 @@ public class SingleConnectionDataSource extends DriverManagerDataSource
|
||||
* <p>As this bean implements DisposableBean, a bean factory will
|
||||
* automatically invoke this on destruction of its cached singletons.
|
||||
*/
|
||||
@Override
|
||||
public void destroy() {
|
||||
synchronized (this.connectionMonitor) {
|
||||
closeConnection();
|
||||
@@ -314,6 +316,7 @@ public class SingleConnectionDataSource extends DriverManagerDataSource
|
||||
this.target = target;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
|
||||
// Invocation on ConnectionProxy interface coming in...
|
||||
|
||||
|
||||
@@ -174,6 +174,7 @@ public class TransactionAwareDataSourceProxy extends DelegatingDataSource {
|
||||
this.targetDataSource = targetDataSource;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
|
||||
// Invocation on ConnectionProxy interface coming in...
|
||||
|
||||
|
||||
@@ -35,6 +35,7 @@ abstract class AbstractEmbeddedDatabaseConfigurer implements EmbeddedDatabaseCon
|
||||
|
||||
protected final Log logger = LogFactory.getLog(getClass());
|
||||
|
||||
@Override
|
||||
public void shutdown(DataSource dataSource, String databaseName) {
|
||||
try {
|
||||
Connection connection = dataSource.getConnection();
|
||||
|
||||
@@ -69,6 +69,7 @@ final class DerbyEmbeddedDatabaseConfigurer implements EmbeddedDatabaseConfigure
|
||||
private DerbyEmbeddedDatabaseConfigurer() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void configureConnectionProperties(ConnectionProperties properties, String databaseName) {
|
||||
properties.setDriverClass(EmbeddedDriver.class);
|
||||
properties.setUrl(String.format(URL_TEMPLATE, databaseName, "create=true"));
|
||||
@@ -76,6 +77,7 @@ final class DerbyEmbeddedDatabaseConfigurer implements EmbeddedDatabaseConfigure
|
||||
properties.setPassword("");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void shutdown(DataSource dataSource, String databaseName) {
|
||||
try {
|
||||
new EmbeddedDriver().connect(
|
||||
|
||||
@@ -172,44 +172,54 @@ public class EmbeddedDatabaseFactory {
|
||||
this.dataSource = dataSource;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Connection getConnection() throws SQLException {
|
||||
return this.dataSource.getConnection();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Connection getConnection(String username, String password) throws SQLException {
|
||||
return this.dataSource.getConnection(username, password);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PrintWriter getLogWriter() throws SQLException {
|
||||
return this.dataSource.getLogWriter();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setLogWriter(PrintWriter out) throws SQLException {
|
||||
this.dataSource.setLogWriter(out);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getLoginTimeout() throws SQLException {
|
||||
return this.dataSource.getLoginTimeout();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setLoginTimeout(int seconds) throws SQLException {
|
||||
this.dataSource.setLoginTimeout(seconds);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T unwrap(Class<T> iface) throws SQLException {
|
||||
return this.dataSource.unwrap(iface);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isWrapperFor(Class<?> iface) throws SQLException {
|
||||
return this.dataSource.isWrapperFor(iface);
|
||||
}
|
||||
|
||||
// getParentLogger() is required for JDBC 4.1 compatibility
|
||||
@Override
|
||||
@SuppressWarnings("unused")
|
||||
public Logger getParentLogger() {
|
||||
return Logger.getLogger(Logger.GLOBAL_LOGGER_NAME);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void shutdown() {
|
||||
shutdownDatabase();
|
||||
}
|
||||
|
||||
@@ -54,10 +54,12 @@ public class EmbeddedDatabaseFactoryBean extends EmbeddedDatabaseFactory
|
||||
this.databaseCleaner = databaseCleaner;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterPropertiesSet() {
|
||||
initDatabase();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void destroy() {
|
||||
if (this.databaseCleaner != null) {
|
||||
DatabasePopulatorUtils.execute(this.databaseCleaner, getDataSource());
|
||||
@@ -66,14 +68,17 @@ public class EmbeddedDatabaseFactoryBean extends EmbeddedDatabaseFactory
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public DataSource getObject() {
|
||||
return getDataSource();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<? extends DataSource> getObjectType() {
|
||||
return DataSource.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSingleton() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -52,6 +52,7 @@ final class H2EmbeddedDatabaseConfigurer extends AbstractEmbeddedDatabaseConfigu
|
||||
this.driverClass = driverClass;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void configureConnectionProperties(ConnectionProperties properties, String databaseName) {
|
||||
properties.setDriverClass(this.driverClass);
|
||||
properties.setUrl(String.format("jdbc:h2:mem:%s;DB_CLOSE_DELAY=-1", databaseName));
|
||||
|
||||
@@ -52,6 +52,7 @@ final class HsqlEmbeddedDatabaseConfigurer extends AbstractEmbeddedDatabaseConfi
|
||||
this.driverClass = driverClass;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void configureConnectionProperties(ConnectionProperties properties, String databaseName) {
|
||||
properties.setDriverClass(this.driverClass);
|
||||
properties.setUrl("jdbc:hsqldb:mem:" + databaseName);
|
||||
|
||||
@@ -33,6 +33,7 @@ public class OutputStreamFactory {
|
||||
*/
|
||||
public static OutputStream getNoopOutputStream() {
|
||||
return new OutputStream() {
|
||||
@Override
|
||||
public void write(int b) throws IOException {
|
||||
// ignore the output
|
||||
}
|
||||
|
||||
@@ -33,26 +33,32 @@ final class SimpleDriverDataSourceFactory implements DataSourceFactory {
|
||||
|
||||
private final SimpleDriverDataSource dataSource = new SimpleDriverDataSource();
|
||||
|
||||
@Override
|
||||
public ConnectionProperties getConnectionProperties() {
|
||||
return new ConnectionProperties() {
|
||||
@Override
|
||||
public void setDriverClass(Class<? extends Driver> driverClass) {
|
||||
dataSource.setDriverClass(driverClass);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setUrl(String url) {
|
||||
dataSource.setUrl(url);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setUsername(String username) {
|
||||
dataSource.setUsername(username);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPassword(String password) {
|
||||
dataSource.setPassword(password);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public DataSource getDataSource() {
|
||||
return this.dataSource;
|
||||
}
|
||||
|
||||
@@ -50,6 +50,7 @@ public class CompositeDatabasePopulator implements DatabasePopulator {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void populate(Connection connection) throws SQLException {
|
||||
for (DatabasePopulator populator : this.populators) {
|
||||
populator.populate(connection);
|
||||
|
||||
@@ -78,6 +78,7 @@ public class DataSourceInitializer implements InitializingBean, DisposableBean {
|
||||
/**
|
||||
* Use the populator to set up data in the data source.
|
||||
*/
|
||||
@Override
|
||||
public void afterPropertiesSet() {
|
||||
if (this.databasePopulator != null && this.enabled) {
|
||||
DatabasePopulatorUtils.execute(this.databasePopulator, this.dataSource);
|
||||
@@ -87,6 +88,7 @@ public class DataSourceInitializer implements InitializingBean, DisposableBean {
|
||||
/**
|
||||
* Use the populator to clean up data in the data source.
|
||||
*/
|
||||
@Override
|
||||
public void destroy() {
|
||||
if (this.databaseCleaner != null && this.enabled) {
|
||||
DatabasePopulatorUtils.execute(this.databaseCleaner, this.dataSource);
|
||||
|
||||
@@ -129,6 +129,7 @@ public class ResourceDatabasePopulator implements DatabasePopulator {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void populate(Connection connection) throws SQLException {
|
||||
for (Resource script : this.scripts) {
|
||||
executeSqlScript(connection, applyEncodingIfNecessary(script), this.continueOnError, this.ignoreFailedDrops);
|
||||
|
||||
@@ -107,6 +107,7 @@ public abstract class AbstractRoutingDataSource extends AbstractDataSource imple
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void afterPropertiesSet() {
|
||||
if (this.targetDataSources == null) {
|
||||
throw new IllegalArgumentException("Property 'targetDataSources' is required");
|
||||
@@ -158,10 +159,12 @@ public abstract class AbstractRoutingDataSource extends AbstractDataSource imple
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Connection getConnection() throws SQLException {
|
||||
return determineTargetDataSource().getConnection();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Connection getConnection(String username, String password) throws SQLException {
|
||||
return determineTargetDataSource().getConnection(username, password);
|
||||
}
|
||||
|
||||
@@ -62,11 +62,13 @@ public class BeanFactoryDataSourceLookup implements DataSourceLookup, BeanFactor
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void setBeanFactory(BeanFactory beanFactory) {
|
||||
this.beanFactory = beanFactory;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public DataSource getDataSource(String dataSourceName) throws DataSourceLookupFailureException {
|
||||
Assert.state(this.beanFactory != null, "BeanFactory is required");
|
||||
try {
|
||||
|
||||
@@ -39,6 +39,7 @@ public class JndiDataSourceLookup extends JndiLocatorSupport implements DataSour
|
||||
setResourceRef(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DataSource getDataSource(String dataSourceName) throws DataSourceLookupFailureException {
|
||||
try {
|
||||
return lookup(dataSourceName, DataSource.class);
|
||||
|
||||
@@ -98,6 +98,7 @@ public class MapDataSourceLookup implements DataSourceLookup {
|
||||
this.dataSources.put(dataSourceName, dataSource);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DataSource getDataSource(String dataSourceName) throws DataSourceLookupFailureException {
|
||||
Assert.notNull(dataSourceName, "DataSource name must not be null");
|
||||
DataSource dataSource = this.dataSources.get(dataSourceName);
|
||||
|
||||
@@ -42,6 +42,7 @@ public class SingleDataSourceLookup implements DataSourceLookup {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public DataSource getDataSource(String dataSourceName) {
|
||||
return this.dataSource;
|
||||
}
|
||||
|
||||
@@ -184,9 +184,11 @@ public class BatchSqlUpdate extends SqlUpdate {
|
||||
int[] rowsAffected = getJdbcTemplate().batchUpdate(
|
||||
getSql(),
|
||||
new BatchPreparedStatementSetter() {
|
||||
@Override
|
||||
public int getBatchSize() {
|
||||
return parameterQueue.size();
|
||||
}
|
||||
@Override
|
||||
public void setValues(PreparedStatement ps, int index) throws SQLException {
|
||||
Object[] params = parameterQueue.removeFirst();
|
||||
newPreparedStatementSetter(params).setValues(ps);
|
||||
|
||||
@@ -37,11 +37,13 @@ public class GenericSqlQuery extends SqlQuery {
|
||||
"'org.springframework.jdbc.core.RowMapper'");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterPropertiesSet() {
|
||||
super.afterPropertiesSet();
|
||||
Assert.notNull(rowMapperClass, "The 'rowMapperClass' property is required");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected RowMapper newRowMapper(Object[] parameters, Map context) {
|
||||
try {
|
||||
return (RowMapper) rowMapperClass.newInstance();
|
||||
|
||||
@@ -111,6 +111,7 @@ public abstract class MappingSqlQueryWithParameters<T> extends SqlQuery<T> {
|
||||
this.context = context;
|
||||
}
|
||||
|
||||
@Override
|
||||
public T mapRow(ResultSet rs, int rowNum) throws SQLException {
|
||||
return MappingSqlQueryWithParameters.this.mapRow(rs, rowNum, this.params, this.context);
|
||||
}
|
||||
|
||||
@@ -313,6 +313,7 @@ public abstract class RdbmsOperation implements InitializingBean {
|
||||
/**
|
||||
* Ensures compilation if used in a bean factory.
|
||||
*/
|
||||
@Override
|
||||
public void afterPropertiesSet() {
|
||||
compile();
|
||||
}
|
||||
|
||||
@@ -94,6 +94,7 @@ public abstract class UpdatableSqlQuery<T> extends SqlQuery<T> {
|
||||
this.context = context;
|
||||
}
|
||||
|
||||
@Override
|
||||
public T mapRow(ResultSet rs, int rowNum) throws SQLException {
|
||||
T result = updateRow(rs, rowNum, this.context);
|
||||
rs.updateRow();
|
||||
|
||||
@@ -60,6 +60,7 @@ public abstract class AbstractFallbackSQLExceptionTranslator implements SQLExcep
|
||||
* Pre-checks the arguments, calls {@link #doTranslate}, and invokes the
|
||||
* {@link #getFallbackTranslator() fallback translator} if necessary.
|
||||
*/
|
||||
@Override
|
||||
public DataAccessException translate(String task, String sql, SQLException ex) {
|
||||
Assert.notNull(ex, "Cannot translate a null SQLException");
|
||||
if (task == null) {
|
||||
|
||||
@@ -48,6 +48,7 @@ public class CustomSQLExceptionTranslatorRegistrar implements InitializingBean {
|
||||
this.translators.putAll(translators);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterPropertiesSet() {
|
||||
for (String dbName : this.translators.keySet()) {
|
||||
CustomSQLExceptionTranslatorRegistry.getInstance().registerTranslator(dbName, this.translators.get(dbName));
|
||||
|
||||
@@ -93,6 +93,7 @@ public class DatabaseStartupValidator implements InitializingBean {
|
||||
* from the specified DataSource, with the specified interval between
|
||||
* checks, until the specified timeout.
|
||||
*/
|
||||
@Override
|
||||
public void afterPropertiesSet() {
|
||||
if (this.dataSource == null) {
|
||||
throw new IllegalArgumentException("dataSource is required");
|
||||
|
||||
@@ -57,6 +57,7 @@ public class GeneratedKeyHolder implements KeyHolder {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Number getKey() throws InvalidDataAccessApiUsageException, DataRetrievalFailureException {
|
||||
if (this.keyList.size() == 0) {
|
||||
return null;
|
||||
@@ -83,6 +84,7 @@ public class GeneratedKeyHolder implements KeyHolder {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> getKeys() throws InvalidDataAccessApiUsageException {
|
||||
if (this.keyList.size() == 0) {
|
||||
return null;
|
||||
@@ -94,6 +96,7 @@ public class GeneratedKeyHolder implements KeyHolder {
|
||||
return this.keyList.get(0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Map<String, Object>> getKeyList() {
|
||||
return this.keyList;
|
||||
}
|
||||
|
||||
@@ -129,6 +129,7 @@ public abstract class JdbcAccessor implements InitializingBean {
|
||||
* Eagerly initialize the exception translator, if demanded,
|
||||
* creating a default one for the specified DataSource if none set.
|
||||
*/
|
||||
@Override
|
||||
public void afterPropertiesSet() {
|
||||
if (getDataSource() == null) {
|
||||
throw new IllegalArgumentException("Property 'dataSource' is required");
|
||||
|
||||
@@ -319,6 +319,7 @@ public abstract class JdbcUtils {
|
||||
|
||||
return extractDatabaseMetaData(dataSource,
|
||||
new DatabaseMetaDataCallback() {
|
||||
@Override
|
||||
public Object processMetaData(DatabaseMetaData dbmd) throws SQLException, MetaDataAccessException {
|
||||
try {
|
||||
Method method = DatabaseMetaData.class.getMethod(metaDataMethodName, (Class[]) null);
|
||||
|
||||
@@ -107,6 +107,7 @@ public abstract class AbstractDataFieldMaxValueIncrementer implements DataFieldM
|
||||
return this.paddingLength;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterPropertiesSet() {
|
||||
if (this.dataSource == null) {
|
||||
throw new IllegalArgumentException("Property 'dataSource' is required");
|
||||
@@ -117,14 +118,17 @@ public abstract class AbstractDataFieldMaxValueIncrementer implements DataFieldM
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int nextIntValue() throws DataAccessException {
|
||||
return (int) getNextKey();
|
||||
}
|
||||
|
||||
@Override
|
||||
public long nextLongValue() throws DataAccessException {
|
||||
return getNextKey();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String nextStringValue() throws DataAccessException {
|
||||
String s = Long.toString(getNextKey());
|
||||
int len = s.length();
|
||||
|
||||
@@ -33,22 +33,27 @@ import java.sql.SQLException;
|
||||
*/
|
||||
public abstract class AbstractLobHandler implements LobHandler {
|
||||
|
||||
@Override
|
||||
public byte[] getBlobAsBytes(ResultSet rs, String columnName) throws SQLException {
|
||||
return getBlobAsBytes(rs, rs.findColumn(columnName));
|
||||
}
|
||||
|
||||
@Override
|
||||
public InputStream getBlobAsBinaryStream(ResultSet rs, String columnName) throws SQLException {
|
||||
return getBlobAsBinaryStream(rs, rs.findColumn(columnName));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getClobAsString(ResultSet rs, String columnName) throws SQLException {
|
||||
return getClobAsString(rs, rs.findColumn(columnName));
|
||||
}
|
||||
|
||||
@Override
|
||||
public InputStream getClobAsAsciiStream(ResultSet rs, String columnName) throws SQLException {
|
||||
return getClobAsAsciiStream(rs, rs.findColumn(columnName));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Reader getClobAsCharacterStream(ResultSet rs, String columnName) throws SQLException {
|
||||
return getClobAsCharacterStream(rs, rs.findColumn(columnName));
|
||||
}
|
||||
|
||||
@@ -113,6 +113,7 @@ public class DefaultLobHandler extends AbstractLobHandler {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public byte[] getBlobAsBytes(ResultSet rs, int columnIndex) throws SQLException {
|
||||
logger.debug("Returning BLOB as bytes");
|
||||
if (this.wrapAsLob) {
|
||||
@@ -124,6 +125,7 @@ public class DefaultLobHandler extends AbstractLobHandler {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public InputStream getBlobAsBinaryStream(ResultSet rs, int columnIndex) throws SQLException {
|
||||
logger.debug("Returning BLOB as binary stream");
|
||||
if (this.wrapAsLob) {
|
||||
@@ -135,6 +137,7 @@ public class DefaultLobHandler extends AbstractLobHandler {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getClobAsString(ResultSet rs, int columnIndex) throws SQLException {
|
||||
logger.debug("Returning CLOB as string");
|
||||
if (this.wrapAsLob) {
|
||||
@@ -146,6 +149,7 @@ public class DefaultLobHandler extends AbstractLobHandler {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public InputStream getClobAsAsciiStream(ResultSet rs, int columnIndex) throws SQLException {
|
||||
logger.debug("Returning CLOB as ASCII stream");
|
||||
if (this.wrapAsLob) {
|
||||
@@ -157,6 +161,7 @@ public class DefaultLobHandler extends AbstractLobHandler {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Reader getClobAsCharacterStream(ResultSet rs, int columnIndex) throws SQLException {
|
||||
logger.debug("Returning CLOB as character stream");
|
||||
if (this.wrapAsLob) {
|
||||
@@ -168,6 +173,7 @@ public class DefaultLobHandler extends AbstractLobHandler {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public LobCreator getLobCreator() {
|
||||
return new DefaultLobCreator();
|
||||
}
|
||||
@@ -179,6 +185,7 @@ public class DefaultLobHandler extends AbstractLobHandler {
|
||||
*/
|
||||
protected class DefaultLobCreator implements LobCreator {
|
||||
|
||||
@Override
|
||||
public void setBlobAsBytes(PreparedStatement ps, int paramIndex, byte[] content)
|
||||
throws SQLException {
|
||||
|
||||
@@ -207,6 +214,7 @@ public class DefaultLobHandler extends AbstractLobHandler {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBlobAsBinaryStream(
|
||||
PreparedStatement ps, int paramIndex, InputStream binaryStream, int contentLength)
|
||||
throws SQLException {
|
||||
@@ -236,6 +244,7 @@ public class DefaultLobHandler extends AbstractLobHandler {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setClobAsString(PreparedStatement ps, int paramIndex, String content)
|
||||
throws SQLException {
|
||||
|
||||
@@ -264,6 +273,7 @@ public class DefaultLobHandler extends AbstractLobHandler {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setClobAsAsciiStream(
|
||||
PreparedStatement ps, int paramIndex, InputStream asciiStream, int contentLength)
|
||||
throws SQLException {
|
||||
@@ -295,6 +305,7 @@ public class DefaultLobHandler extends AbstractLobHandler {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setClobAsCharacterStream(
|
||||
PreparedStatement ps, int paramIndex, Reader characterStream, int contentLength)
|
||||
throws SQLException {
|
||||
@@ -324,6 +335,7 @@ public class DefaultLobHandler extends AbstractLobHandler {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() {
|
||||
// nothing to do here
|
||||
}
|
||||
|
||||
@@ -46,6 +46,7 @@ public class JtaLobCreatorSynchronization implements Synchronization {
|
||||
this.lobCreator = lobCreator;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void beforeCompletion() {
|
||||
// Close the LobCreator early if possible, to avoid issues with strict JTA
|
||||
// implementations that issue warnings when doing JDBC operations after
|
||||
@@ -54,6 +55,7 @@ public class JtaLobCreatorSynchronization implements Synchronization {
|
||||
this.lobCreator.close();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterCompletion(int status) {
|
||||
if (!this.beforeCompletionCalled) {
|
||||
// beforeCompletion not called before (probably because of JTA rollback).
|
||||
|
||||
@@ -135,6 +135,7 @@ public interface LobCreator extends Closeable {
|
||||
* been executed or the affected O/R mapping sessions have been flushed.
|
||||
* Otherwise, the database resources for the temporary BLOBs might stay allocated.
|
||||
*/
|
||||
@Override
|
||||
void close();
|
||||
|
||||
}
|
||||
|
||||
@@ -211,6 +211,7 @@ public class OracleLobHandler extends AbstractLobHandler {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public byte[] getBlobAsBytes(ResultSet rs, int columnIndex) throws SQLException {
|
||||
logger.debug("Returning Oracle BLOB as bytes");
|
||||
Blob blob = rs.getBlob(columnIndex);
|
||||
@@ -220,6 +221,7 @@ public class OracleLobHandler extends AbstractLobHandler {
|
||||
return retVal;
|
||||
}
|
||||
|
||||
@Override
|
||||
public InputStream getBlobAsBinaryStream(ResultSet rs, int columnIndex) throws SQLException {
|
||||
logger.debug("Returning Oracle BLOB as binary stream");
|
||||
Blob blob = rs.getBlob(columnIndex);
|
||||
@@ -229,6 +231,7 @@ public class OracleLobHandler extends AbstractLobHandler {
|
||||
return retVal;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getClobAsString(ResultSet rs, int columnIndex) throws SQLException {
|
||||
logger.debug("Returning Oracle CLOB as string");
|
||||
Clob clob = rs.getClob(columnIndex);
|
||||
@@ -238,6 +241,7 @@ public class OracleLobHandler extends AbstractLobHandler {
|
||||
return retVal;
|
||||
}
|
||||
|
||||
@Override
|
||||
public InputStream getClobAsAsciiStream(ResultSet rs, int columnIndex) throws SQLException {
|
||||
logger.debug("Returning Oracle CLOB as ASCII stream");
|
||||
Clob clob = rs.getClob(columnIndex);
|
||||
@@ -247,6 +251,7 @@ public class OracleLobHandler extends AbstractLobHandler {
|
||||
return retVal;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Reader getClobAsCharacterStream(ResultSet rs, int columnIndex) throws SQLException {
|
||||
logger.debug("Returning Oracle CLOB as character stream");
|
||||
Clob clob = rs.getClob(columnIndex);
|
||||
@@ -256,6 +261,7 @@ public class OracleLobHandler extends AbstractLobHandler {
|
||||
return retVal;
|
||||
}
|
||||
|
||||
@Override
|
||||
public LobCreator getLobCreator() {
|
||||
return new OracleLobCreator();
|
||||
}
|
||||
@@ -368,11 +374,13 @@ public class OracleLobHandler extends AbstractLobHandler {
|
||||
|
||||
private final List createdLobs = new LinkedList();
|
||||
|
||||
@Override
|
||||
public void setBlobAsBytes(PreparedStatement ps, int paramIndex, final byte[] content)
|
||||
throws SQLException {
|
||||
|
||||
if (content != null) {
|
||||
Blob blob = (Blob) createLob(ps, false, new LobCallback() {
|
||||
@Override
|
||||
public void populateLob(Object lob) throws Exception {
|
||||
Method methodToInvoke = lob.getClass().getMethod("getBinaryOutputStream");
|
||||
OutputStream out = (OutputStream) methodToInvoke.invoke(lob);
|
||||
@@ -390,12 +398,14 @@ public class OracleLobHandler extends AbstractLobHandler {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBlobAsBinaryStream(
|
||||
PreparedStatement ps, int paramIndex, final InputStream binaryStream, int contentLength)
|
||||
throws SQLException {
|
||||
|
||||
if (binaryStream != null) {
|
||||
Blob blob = (Blob) createLob(ps, false, new LobCallback() {
|
||||
@Override
|
||||
public void populateLob(Object lob) throws Exception {
|
||||
Method methodToInvoke = lob.getClass().getMethod("getBinaryOutputStream", (Class[]) null);
|
||||
OutputStream out = (OutputStream) methodToInvoke.invoke(lob, (Object[]) null);
|
||||
@@ -413,11 +423,13 @@ public class OracleLobHandler extends AbstractLobHandler {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setClobAsString(PreparedStatement ps, int paramIndex, final String content)
|
||||
throws SQLException {
|
||||
|
||||
if (content != null) {
|
||||
Clob clob = (Clob) createLob(ps, true, new LobCallback() {
|
||||
@Override
|
||||
public void populateLob(Object lob) throws Exception {
|
||||
Method methodToInvoke = lob.getClass().getMethod("getCharacterOutputStream", (Class[]) null);
|
||||
Writer writer = (Writer) methodToInvoke.invoke(lob, (Object[]) null);
|
||||
@@ -435,12 +447,14 @@ public class OracleLobHandler extends AbstractLobHandler {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setClobAsAsciiStream(
|
||||
PreparedStatement ps, int paramIndex, final InputStream asciiStream, int contentLength)
|
||||
throws SQLException {
|
||||
|
||||
if (asciiStream != null) {
|
||||
Clob clob = (Clob) createLob(ps, true, new LobCallback() {
|
||||
@Override
|
||||
public void populateLob(Object lob) throws Exception {
|
||||
Method methodToInvoke = lob.getClass().getMethod("getAsciiOutputStream", (Class[]) null);
|
||||
OutputStream out = (OutputStream) methodToInvoke.invoke(lob, (Object[]) null);
|
||||
@@ -458,12 +472,14 @@ public class OracleLobHandler extends AbstractLobHandler {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setClobAsCharacterStream(
|
||||
PreparedStatement ps, int paramIndex, final Reader characterStream, int contentLength)
|
||||
throws SQLException {
|
||||
|
||||
if (characterStream != null) {
|
||||
Clob clob = (Clob) createLob(ps, true, new LobCallback() {
|
||||
@Override
|
||||
public void populateLob(Object lob) throws Exception {
|
||||
Method methodToInvoke = lob.getClass().getMethod("getCharacterOutputStream", (Class[]) null);
|
||||
Writer writer = (Writer) methodToInvoke.invoke(lob, (Object[]) null);
|
||||
@@ -554,6 +570,7 @@ public class OracleLobHandler extends AbstractLobHandler {
|
||||
/**
|
||||
* Free all temporary BLOBs and CLOBs created by this creator.
|
||||
*/
|
||||
@Override
|
||||
public void close() {
|
||||
try {
|
||||
for (Iterator it = this.createdLobs.iterator(); it.hasNext();) {
|
||||
|
||||
@@ -49,47 +49,58 @@ class PassThroughBlob implements Blob {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public long length() throws SQLException {
|
||||
return this.contentLength;
|
||||
}
|
||||
|
||||
@Override
|
||||
public InputStream getBinaryStream() throws SQLException {
|
||||
return (this.content != null ? new ByteArrayInputStream(this.content) : this.binaryStream);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public InputStream getBinaryStream(long pos, long length) throws SQLException {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public OutputStream setBinaryStream(long pos) throws SQLException {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public byte[] getBytes(long pos, int length) throws SQLException {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int setBytes(long pos, byte[] bytes) throws SQLException {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int setBytes(long pos, byte[] bytes, int offset, int len) throws SQLException {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public long position(byte pattern[], long start) throws SQLException {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public long position(Blob pattern, long start) throws SQLException {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void truncate(long len) throws SQLException {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void free() throws SQLException {
|
||||
// no-op
|
||||
}
|
||||
|
||||
@@ -64,10 +64,12 @@ class PassThroughClob implements Clob {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public long length() throws SQLException {
|
||||
return this.contentLength;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Reader getCharacterStream() throws SQLException {
|
||||
try {
|
||||
if (this.content != null) {
|
||||
@@ -85,6 +87,7 @@ class PassThroughClob implements Clob {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public InputStream getAsciiStream() throws SQLException {
|
||||
try {
|
||||
if (this.content != null) {
|
||||
@@ -107,42 +110,52 @@ class PassThroughClob implements Clob {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Reader getCharacterStream(long pos, long length) throws SQLException {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Writer setCharacterStream(long pos) throws SQLException {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public OutputStream setAsciiStream(long pos) throws SQLException {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getSubString(long pos, int length) throws SQLException {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int setString(long pos, String str) throws SQLException {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int setString(long pos, String str, int offset, int len) throws SQLException {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public long position(String searchstr, long start) throws SQLException {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public long position(Clob searchstr, long start) throws SQLException {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void truncate(long len) throws SQLException {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void free() throws SQLException {
|
||||
// no-op
|
||||
}
|
||||
|
||||
@@ -61,6 +61,7 @@ public abstract class NativeJdbcExtractorAdapter implements NativeJdbcExtractor
|
||||
/**
|
||||
* Return {@code false} by default.
|
||||
*/
|
||||
@Override
|
||||
public boolean isNativeConnectionNecessaryForNativeStatements() {
|
||||
return false;
|
||||
}
|
||||
@@ -68,6 +69,7 @@ public abstract class NativeJdbcExtractorAdapter implements NativeJdbcExtractor
|
||||
/**
|
||||
* Return {@code false} by default.
|
||||
*/
|
||||
@Override
|
||||
public boolean isNativeConnectionNecessaryForNativePreparedStatements() {
|
||||
return false;
|
||||
}
|
||||
@@ -75,6 +77,7 @@ public abstract class NativeJdbcExtractorAdapter implements NativeJdbcExtractor
|
||||
/**
|
||||
* Return {@code false} by default.
|
||||
*/
|
||||
@Override
|
||||
public boolean isNativeConnectionNecessaryForNativeCallableStatements() {
|
||||
return false;
|
||||
}
|
||||
@@ -91,6 +94,7 @@ public abstract class NativeJdbcExtractorAdapter implements NativeJdbcExtractor
|
||||
* @see org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy
|
||||
* @see org.springframework.jdbc.datasource.LazyConnectionDataSourceProxy
|
||||
*/
|
||||
@Override
|
||||
public Connection getNativeConnection(Connection con) throws SQLException {
|
||||
if (con == null) {
|
||||
return null;
|
||||
@@ -128,6 +132,7 @@ public abstract class NativeJdbcExtractorAdapter implements NativeJdbcExtractor
|
||||
* @see #getNativeConnection
|
||||
* @see Statement#getConnection
|
||||
*/
|
||||
@Override
|
||||
public Connection getNativeConnectionFromStatement(Statement stmt) throws SQLException {
|
||||
if (stmt == null) {
|
||||
return null;
|
||||
@@ -138,6 +143,7 @@ public abstract class NativeJdbcExtractorAdapter implements NativeJdbcExtractor
|
||||
/**
|
||||
* Not able to unwrap: return passed-in Statement.
|
||||
*/
|
||||
@Override
|
||||
public Statement getNativeStatement(Statement stmt) throws SQLException {
|
||||
return stmt;
|
||||
}
|
||||
@@ -145,6 +151,7 @@ public abstract class NativeJdbcExtractorAdapter implements NativeJdbcExtractor
|
||||
/**
|
||||
* Not able to unwrap: return passed-in PreparedStatement.
|
||||
*/
|
||||
@Override
|
||||
public PreparedStatement getNativePreparedStatement(PreparedStatement ps) throws SQLException {
|
||||
return ps;
|
||||
}
|
||||
@@ -152,6 +159,7 @@ public abstract class NativeJdbcExtractorAdapter implements NativeJdbcExtractor
|
||||
/**
|
||||
* Not able to unwrap: return passed-in CallableStatement.
|
||||
*/
|
||||
@Override
|
||||
public CallableStatement getNativeCallableStatement(CallableStatement cs) throws SQLException {
|
||||
return cs;
|
||||
}
|
||||
@@ -159,6 +167,7 @@ public abstract class NativeJdbcExtractorAdapter implements NativeJdbcExtractor
|
||||
/**
|
||||
* Not able to unwrap: return passed-in ResultSet.
|
||||
*/
|
||||
@Override
|
||||
public ResultSet getNativeResultSet(ResultSet rs) throws SQLException {
|
||||
return rs;
|
||||
}
|
||||
|
||||
@@ -125,6 +125,7 @@ public class ResultSetWrappingSqlRowSet implements SqlRowSet {
|
||||
/**
|
||||
* @see java.sql.ResultSetMetaData#getCatalogName(int)
|
||||
*/
|
||||
@Override
|
||||
public final SqlRowSetMetaData getMetaData() {
|
||||
return this.rowSetMetaData;
|
||||
}
|
||||
@@ -132,6 +133,7 @@ public class ResultSetWrappingSqlRowSet implements SqlRowSet {
|
||||
/**
|
||||
* @see java.sql.ResultSet#findColumn(String)
|
||||
*/
|
||||
@Override
|
||||
public int findColumn(String columnLabel) throws InvalidResultSetAccessException {
|
||||
Integer columnIndex = this.columnLabelMap.get(columnLabel);
|
||||
if (columnIndex != null) {
|
||||
@@ -153,6 +155,7 @@ public class ResultSetWrappingSqlRowSet implements SqlRowSet {
|
||||
/**
|
||||
* @see java.sql.ResultSet#getBigDecimal(int)
|
||||
*/
|
||||
@Override
|
||||
public BigDecimal getBigDecimal(int columnIndex) throws InvalidResultSetAccessException {
|
||||
try {
|
||||
return this.resultSet.getBigDecimal(columnIndex);
|
||||
@@ -165,6 +168,7 @@ public class ResultSetWrappingSqlRowSet implements SqlRowSet {
|
||||
/**
|
||||
* @see java.sql.ResultSet#getBigDecimal(String)
|
||||
*/
|
||||
@Override
|
||||
public BigDecimal getBigDecimal(String columnLabel) throws InvalidResultSetAccessException {
|
||||
return getBigDecimal(findColumn(columnLabel));
|
||||
}
|
||||
@@ -172,6 +176,7 @@ public class ResultSetWrappingSqlRowSet implements SqlRowSet {
|
||||
/**
|
||||
* @see java.sql.ResultSet#getBoolean(int)
|
||||
*/
|
||||
@Override
|
||||
public boolean getBoolean(int columnIndex) throws InvalidResultSetAccessException {
|
||||
try {
|
||||
return this.resultSet.getBoolean(columnIndex);
|
||||
@@ -184,6 +189,7 @@ public class ResultSetWrappingSqlRowSet implements SqlRowSet {
|
||||
/**
|
||||
* @see java.sql.ResultSet#getBoolean(String)
|
||||
*/
|
||||
@Override
|
||||
public boolean getBoolean(String columnLabel) throws InvalidResultSetAccessException {
|
||||
return getBoolean(findColumn(columnLabel));
|
||||
}
|
||||
@@ -191,6 +197,7 @@ public class ResultSetWrappingSqlRowSet implements SqlRowSet {
|
||||
/**
|
||||
* @see java.sql.ResultSet#getByte(int)
|
||||
*/
|
||||
@Override
|
||||
public byte getByte(int columnIndex) throws InvalidResultSetAccessException {
|
||||
try {
|
||||
return this.resultSet.getByte(columnIndex);
|
||||
@@ -203,6 +210,7 @@ public class ResultSetWrappingSqlRowSet implements SqlRowSet {
|
||||
/**
|
||||
* @see java.sql.ResultSet#getByte(String)
|
||||
*/
|
||||
@Override
|
||||
public byte getByte(String columnLabel) throws InvalidResultSetAccessException {
|
||||
return getByte(findColumn(columnLabel));
|
||||
}
|
||||
@@ -210,6 +218,7 @@ public class ResultSetWrappingSqlRowSet implements SqlRowSet {
|
||||
/**
|
||||
* @see java.sql.ResultSet#getDate(int, java.util.Calendar)
|
||||
*/
|
||||
@Override
|
||||
public Date getDate(int columnIndex, Calendar cal) throws InvalidResultSetAccessException {
|
||||
try {
|
||||
return this.resultSet.getDate(columnIndex, cal);
|
||||
@@ -222,6 +231,7 @@ public class ResultSetWrappingSqlRowSet implements SqlRowSet {
|
||||
/**
|
||||
* @see java.sql.ResultSet#getDate(int)
|
||||
*/
|
||||
@Override
|
||||
public Date getDate(int columnIndex) throws InvalidResultSetAccessException {
|
||||
try {
|
||||
return this.resultSet.getDate(columnIndex);
|
||||
@@ -233,6 +243,7 @@ public class ResultSetWrappingSqlRowSet implements SqlRowSet {
|
||||
/**
|
||||
* @see java.sql.ResultSet#getDate(String, java.util.Calendar)
|
||||
*/
|
||||
@Override
|
||||
public Date getDate(String columnLabel, Calendar cal) throws InvalidResultSetAccessException {
|
||||
return getDate(findColumn(columnLabel), cal);
|
||||
}
|
||||
@@ -240,6 +251,7 @@ public class ResultSetWrappingSqlRowSet implements SqlRowSet {
|
||||
/**
|
||||
* @see java.sql.ResultSet#getDate(String)
|
||||
*/
|
||||
@Override
|
||||
public Date getDate(String columnLabel) throws InvalidResultSetAccessException {
|
||||
return getDate(findColumn(columnLabel));
|
||||
}
|
||||
@@ -247,6 +259,7 @@ public class ResultSetWrappingSqlRowSet implements SqlRowSet {
|
||||
/**
|
||||
* @see java.sql.ResultSet#getDouble(int)
|
||||
*/
|
||||
@Override
|
||||
public double getDouble(int columnIndex) throws InvalidResultSetAccessException {
|
||||
try {
|
||||
return this.resultSet.getDouble(columnIndex);
|
||||
@@ -259,6 +272,7 @@ public class ResultSetWrappingSqlRowSet implements SqlRowSet {
|
||||
/**
|
||||
* @see java.sql.ResultSet#getDouble(String)
|
||||
*/
|
||||
@Override
|
||||
public double getDouble(String columnLabel) throws InvalidResultSetAccessException {
|
||||
return getDouble(findColumn(columnLabel));
|
||||
}
|
||||
@@ -266,6 +280,7 @@ public class ResultSetWrappingSqlRowSet implements SqlRowSet {
|
||||
/**
|
||||
* @see java.sql.ResultSet#getFloat(int)
|
||||
*/
|
||||
@Override
|
||||
public float getFloat(int columnIndex) throws InvalidResultSetAccessException {
|
||||
try {
|
||||
return this.resultSet.getFloat(columnIndex);
|
||||
@@ -278,12 +293,14 @@ public class ResultSetWrappingSqlRowSet implements SqlRowSet {
|
||||
/**
|
||||
* @see java.sql.ResultSet#getFloat(String)
|
||||
*/
|
||||
@Override
|
||||
public float getFloat(String columnLabel) throws InvalidResultSetAccessException {
|
||||
return getFloat(findColumn(columnLabel));
|
||||
}
|
||||
/**
|
||||
* @see java.sql.ResultSet#getInt(int)
|
||||
*/
|
||||
@Override
|
||||
public int getInt(int columnIndex) throws InvalidResultSetAccessException {
|
||||
try {
|
||||
return this.resultSet.getInt(columnIndex);
|
||||
@@ -296,6 +313,7 @@ public class ResultSetWrappingSqlRowSet implements SqlRowSet {
|
||||
/**
|
||||
* @see java.sql.ResultSet#getInt(String)
|
||||
*/
|
||||
@Override
|
||||
public int getInt(String columnLabel) throws InvalidResultSetAccessException {
|
||||
return getInt(findColumn(columnLabel));
|
||||
}
|
||||
@@ -303,6 +321,7 @@ public class ResultSetWrappingSqlRowSet implements SqlRowSet {
|
||||
/**
|
||||
* @see java.sql.ResultSet#getLong(int)
|
||||
*/
|
||||
@Override
|
||||
public long getLong(int columnIndex) throws InvalidResultSetAccessException {
|
||||
try {
|
||||
return this.resultSet.getLong(columnIndex);
|
||||
@@ -315,6 +334,7 @@ public class ResultSetWrappingSqlRowSet implements SqlRowSet {
|
||||
/**
|
||||
* @see java.sql.ResultSet#getLong(String)
|
||||
*/
|
||||
@Override
|
||||
public long getLong(String columnLabel) throws InvalidResultSetAccessException {
|
||||
return getLong(findColumn(columnLabel));
|
||||
}
|
||||
@@ -322,6 +342,7 @@ public class ResultSetWrappingSqlRowSet implements SqlRowSet {
|
||||
/**
|
||||
* @see java.sql.ResultSet#getObject(int, java.util.Map)
|
||||
*/
|
||||
@Override
|
||||
public Object getObject(int i, Map<String, Class<?>> map) throws InvalidResultSetAccessException {
|
||||
try {
|
||||
return this.resultSet.getObject(i, map);
|
||||
@@ -334,6 +355,7 @@ public class ResultSetWrappingSqlRowSet implements SqlRowSet {
|
||||
/**
|
||||
* @see java.sql.ResultSet#getObject(int)
|
||||
*/
|
||||
@Override
|
||||
public Object getObject(int columnIndex) throws InvalidResultSetAccessException {
|
||||
try {
|
||||
return this.resultSet.getObject(columnIndex);
|
||||
@@ -346,6 +368,7 @@ public class ResultSetWrappingSqlRowSet implements SqlRowSet {
|
||||
/**
|
||||
* @see java.sql.ResultSet#getObject(String, java.util.Map)
|
||||
*/
|
||||
@Override
|
||||
public Object getObject(String columnLabel, Map<String, Class<?>> map) throws InvalidResultSetAccessException {
|
||||
return getObject(findColumn(columnLabel), map);
|
||||
}
|
||||
@@ -353,6 +376,7 @@ public class ResultSetWrappingSqlRowSet implements SqlRowSet {
|
||||
/**
|
||||
* @see java.sql.ResultSet#getObject(String)
|
||||
*/
|
||||
@Override
|
||||
public Object getObject(String columnLabel) throws InvalidResultSetAccessException {
|
||||
return getObject(findColumn(columnLabel));
|
||||
}
|
||||
@@ -360,6 +384,7 @@ public class ResultSetWrappingSqlRowSet implements SqlRowSet {
|
||||
/**
|
||||
* @see java.sql.ResultSet#getShort(int)
|
||||
*/
|
||||
@Override
|
||||
public short getShort(int columnIndex) throws InvalidResultSetAccessException {
|
||||
try {
|
||||
return this.resultSet.getShort(columnIndex);
|
||||
@@ -372,6 +397,7 @@ public class ResultSetWrappingSqlRowSet implements SqlRowSet {
|
||||
/**
|
||||
* @see java.sql.ResultSet#getShort(String)
|
||||
*/
|
||||
@Override
|
||||
public short getShort(String columnLabel) throws InvalidResultSetAccessException {
|
||||
return getShort(findColumn(columnLabel));
|
||||
}
|
||||
@@ -379,6 +405,7 @@ public class ResultSetWrappingSqlRowSet implements SqlRowSet {
|
||||
/**
|
||||
* @see java.sql.ResultSet#getString(int)
|
||||
*/
|
||||
@Override
|
||||
public String getString(int columnIndex) throws InvalidResultSetAccessException {
|
||||
try {
|
||||
return this.resultSet.getString(columnIndex);
|
||||
@@ -391,6 +418,7 @@ public class ResultSetWrappingSqlRowSet implements SqlRowSet {
|
||||
/**
|
||||
* @see java.sql.ResultSet#getString(String)
|
||||
*/
|
||||
@Override
|
||||
public String getString(String columnLabel) throws InvalidResultSetAccessException {
|
||||
return getString(findColumn(columnLabel));
|
||||
}
|
||||
@@ -398,6 +426,7 @@ public class ResultSetWrappingSqlRowSet implements SqlRowSet {
|
||||
/**
|
||||
* @see java.sql.ResultSet#getTime(int, java.util.Calendar)
|
||||
*/
|
||||
@Override
|
||||
public Time getTime(int columnIndex, Calendar cal) throws InvalidResultSetAccessException {
|
||||
try {
|
||||
return this.resultSet.getTime(columnIndex, cal);
|
||||
@@ -410,6 +439,7 @@ public class ResultSetWrappingSqlRowSet implements SqlRowSet {
|
||||
/**
|
||||
* @see java.sql.ResultSet#getTime(int)
|
||||
*/
|
||||
@Override
|
||||
public Time getTime(int columnIndex) throws InvalidResultSetAccessException {
|
||||
try {
|
||||
return this.resultSet.getTime(columnIndex);
|
||||
@@ -422,6 +452,7 @@ public class ResultSetWrappingSqlRowSet implements SqlRowSet {
|
||||
/**
|
||||
* @see java.sql.ResultSet#getTime(String, java.util.Calendar)
|
||||
*/
|
||||
@Override
|
||||
public Time getTime(String columnLabel, Calendar cal) throws InvalidResultSetAccessException {
|
||||
return getTime(findColumn(columnLabel), cal);
|
||||
}
|
||||
@@ -429,6 +460,7 @@ public class ResultSetWrappingSqlRowSet implements SqlRowSet {
|
||||
/**
|
||||
* @see java.sql.ResultSet#getTime(String)
|
||||
*/
|
||||
@Override
|
||||
public Time getTime(String columnLabel) throws InvalidResultSetAccessException {
|
||||
return getTime(findColumn(columnLabel));
|
||||
}
|
||||
@@ -436,6 +468,7 @@ public class ResultSetWrappingSqlRowSet implements SqlRowSet {
|
||||
/**
|
||||
* @see java.sql.ResultSet#getTimestamp(int, java.util.Calendar)
|
||||
*/
|
||||
@Override
|
||||
public Timestamp getTimestamp(int columnIndex, Calendar cal) throws InvalidResultSetAccessException {
|
||||
try {
|
||||
return this.resultSet.getTimestamp(columnIndex, cal);
|
||||
@@ -448,6 +481,7 @@ public class ResultSetWrappingSqlRowSet implements SqlRowSet {
|
||||
/**
|
||||
* @see java.sql.ResultSet#getTimestamp(int)
|
||||
*/
|
||||
@Override
|
||||
public Timestamp getTimestamp(int columnIndex) throws InvalidResultSetAccessException {
|
||||
try {
|
||||
return this.resultSet.getTimestamp(columnIndex);
|
||||
@@ -460,6 +494,7 @@ public class ResultSetWrappingSqlRowSet implements SqlRowSet {
|
||||
/**
|
||||
* @see java.sql.ResultSet#getTimestamp(String, java.util.Calendar)
|
||||
*/
|
||||
@Override
|
||||
public Timestamp getTimestamp(String columnLabel, Calendar cal) throws InvalidResultSetAccessException {
|
||||
return getTimestamp(findColumn(columnLabel), cal);
|
||||
}
|
||||
@@ -467,6 +502,7 @@ public class ResultSetWrappingSqlRowSet implements SqlRowSet {
|
||||
/**
|
||||
* @see java.sql.ResultSet#getTimestamp(String)
|
||||
*/
|
||||
@Override
|
||||
public Timestamp getTimestamp(String columnLabel) throws InvalidResultSetAccessException {
|
||||
return getTimestamp(findColumn(columnLabel));
|
||||
}
|
||||
@@ -477,6 +513,7 @@ public class ResultSetWrappingSqlRowSet implements SqlRowSet {
|
||||
/**
|
||||
* @see java.sql.ResultSet#absolute(int)
|
||||
*/
|
||||
@Override
|
||||
public boolean absolute(int row) throws InvalidResultSetAccessException {
|
||||
try {
|
||||
return this.resultSet.absolute(row);
|
||||
@@ -489,6 +526,7 @@ public class ResultSetWrappingSqlRowSet implements SqlRowSet {
|
||||
/**
|
||||
* @see java.sql.ResultSet#afterLast()
|
||||
*/
|
||||
@Override
|
||||
public void afterLast() throws InvalidResultSetAccessException {
|
||||
try {
|
||||
this.resultSet.afterLast();
|
||||
@@ -501,6 +539,7 @@ public class ResultSetWrappingSqlRowSet implements SqlRowSet {
|
||||
/**
|
||||
* @see java.sql.ResultSet#beforeFirst()
|
||||
*/
|
||||
@Override
|
||||
public void beforeFirst() throws InvalidResultSetAccessException {
|
||||
try {
|
||||
this.resultSet.beforeFirst();
|
||||
@@ -513,6 +552,7 @@ public class ResultSetWrappingSqlRowSet implements SqlRowSet {
|
||||
/**
|
||||
* @see java.sql.ResultSet#first()
|
||||
*/
|
||||
@Override
|
||||
public boolean first() throws InvalidResultSetAccessException {
|
||||
try {
|
||||
return this.resultSet.first();
|
||||
@@ -525,6 +565,7 @@ public class ResultSetWrappingSqlRowSet implements SqlRowSet {
|
||||
/**
|
||||
* @see java.sql.ResultSet#getRow()
|
||||
*/
|
||||
@Override
|
||||
public int getRow() throws InvalidResultSetAccessException {
|
||||
try {
|
||||
return this.resultSet.getRow();
|
||||
@@ -537,6 +578,7 @@ public class ResultSetWrappingSqlRowSet implements SqlRowSet {
|
||||
/**
|
||||
* @see java.sql.ResultSet#isAfterLast()
|
||||
*/
|
||||
@Override
|
||||
public boolean isAfterLast() throws InvalidResultSetAccessException {
|
||||
try {
|
||||
return this.resultSet.isAfterLast();
|
||||
@@ -549,6 +591,7 @@ public class ResultSetWrappingSqlRowSet implements SqlRowSet {
|
||||
/**
|
||||
* @see java.sql.ResultSet#isBeforeFirst()
|
||||
*/
|
||||
@Override
|
||||
public boolean isBeforeFirst() throws InvalidResultSetAccessException {
|
||||
try {
|
||||
return this.resultSet.isBeforeFirst();
|
||||
@@ -561,6 +604,7 @@ public class ResultSetWrappingSqlRowSet implements SqlRowSet {
|
||||
/**
|
||||
* @see java.sql.ResultSet#isFirst()
|
||||
*/
|
||||
@Override
|
||||
public boolean isFirst() throws InvalidResultSetAccessException {
|
||||
try {
|
||||
return this.resultSet.isFirst();
|
||||
@@ -573,6 +617,7 @@ public class ResultSetWrappingSqlRowSet implements SqlRowSet {
|
||||
/**
|
||||
* @see java.sql.ResultSet#isLast()
|
||||
*/
|
||||
@Override
|
||||
public boolean isLast() throws InvalidResultSetAccessException {
|
||||
try {
|
||||
return this.resultSet.isLast();
|
||||
@@ -585,6 +630,7 @@ public class ResultSetWrappingSqlRowSet implements SqlRowSet {
|
||||
/**
|
||||
* @see java.sql.ResultSet#last()
|
||||
*/
|
||||
@Override
|
||||
public boolean last() throws InvalidResultSetAccessException {
|
||||
try {
|
||||
return this.resultSet.last();
|
||||
@@ -597,6 +643,7 @@ public class ResultSetWrappingSqlRowSet implements SqlRowSet {
|
||||
/**
|
||||
* @see java.sql.ResultSet#next()
|
||||
*/
|
||||
@Override
|
||||
public boolean next() throws InvalidResultSetAccessException {
|
||||
try {
|
||||
return this.resultSet.next();
|
||||
@@ -609,6 +656,7 @@ public class ResultSetWrappingSqlRowSet implements SqlRowSet {
|
||||
/**
|
||||
* @see java.sql.ResultSet#previous()
|
||||
*/
|
||||
@Override
|
||||
public boolean previous() throws InvalidResultSetAccessException {
|
||||
try {
|
||||
return this.resultSet.previous();
|
||||
@@ -621,6 +669,7 @@ public class ResultSetWrappingSqlRowSet implements SqlRowSet {
|
||||
/**
|
||||
* @see java.sql.ResultSet#relative(int)
|
||||
*/
|
||||
@Override
|
||||
public boolean relative(int rows) throws InvalidResultSetAccessException {
|
||||
try {
|
||||
return this.resultSet.relative(rows);
|
||||
@@ -633,6 +682,7 @@ public class ResultSetWrappingSqlRowSet implements SqlRowSet {
|
||||
/**
|
||||
* @see java.sql.ResultSet#wasNull()
|
||||
*/
|
||||
@Override
|
||||
public boolean wasNull() throws InvalidResultSetAccessException {
|
||||
try {
|
||||
return this.resultSet.wasNull();
|
||||
|
||||
@@ -55,6 +55,7 @@ public class ResultSetWrappingSqlRowSetMetaData implements SqlRowSetMetaData {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String getCatalogName(int column) throws InvalidResultSetAccessException {
|
||||
try {
|
||||
return this.resultSetMetaData.getCatalogName(column);
|
||||
@@ -64,6 +65,7 @@ public class ResultSetWrappingSqlRowSetMetaData implements SqlRowSetMetaData {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getColumnClassName(int column) throws InvalidResultSetAccessException {
|
||||
try {
|
||||
return this.resultSetMetaData.getColumnClassName(column);
|
||||
@@ -73,6 +75,7 @@ public class ResultSetWrappingSqlRowSetMetaData implements SqlRowSetMetaData {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getColumnCount() throws InvalidResultSetAccessException {
|
||||
try {
|
||||
return this.resultSetMetaData.getColumnCount();
|
||||
@@ -82,6 +85,7 @@ public class ResultSetWrappingSqlRowSetMetaData implements SqlRowSetMetaData {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String[] getColumnNames() throws InvalidResultSetAccessException {
|
||||
if (this.columnNames == null) {
|
||||
this.columnNames = new String[getColumnCount()];
|
||||
@@ -92,6 +96,7 @@ public class ResultSetWrappingSqlRowSetMetaData implements SqlRowSetMetaData {
|
||||
return this.columnNames;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getColumnDisplaySize(int column) throws InvalidResultSetAccessException {
|
||||
try {
|
||||
return this.resultSetMetaData.getColumnDisplaySize(column);
|
||||
@@ -101,6 +106,7 @@ public class ResultSetWrappingSqlRowSetMetaData implements SqlRowSetMetaData {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getColumnLabel(int column) throws InvalidResultSetAccessException {
|
||||
try {
|
||||
return this.resultSetMetaData.getColumnLabel(column);
|
||||
@@ -110,6 +116,7 @@ public class ResultSetWrappingSqlRowSetMetaData implements SqlRowSetMetaData {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getColumnName(int column) throws InvalidResultSetAccessException {
|
||||
try {
|
||||
return this.resultSetMetaData.getColumnName(column);
|
||||
@@ -119,6 +126,7 @@ public class ResultSetWrappingSqlRowSetMetaData implements SqlRowSetMetaData {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getColumnType(int column) throws InvalidResultSetAccessException {
|
||||
try {
|
||||
return this.resultSetMetaData.getColumnType(column);
|
||||
@@ -128,6 +136,7 @@ public class ResultSetWrappingSqlRowSetMetaData implements SqlRowSetMetaData {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getColumnTypeName(int column) throws InvalidResultSetAccessException {
|
||||
try {
|
||||
return this.resultSetMetaData.getColumnTypeName(column);
|
||||
@@ -137,6 +146,7 @@ public class ResultSetWrappingSqlRowSetMetaData implements SqlRowSetMetaData {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getPrecision(int column) throws InvalidResultSetAccessException {
|
||||
try {
|
||||
return this.resultSetMetaData.getPrecision(column);
|
||||
@@ -146,6 +156,7 @@ public class ResultSetWrappingSqlRowSetMetaData implements SqlRowSetMetaData {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getScale(int column) throws InvalidResultSetAccessException {
|
||||
try {
|
||||
return this.resultSetMetaData.getScale(column);
|
||||
@@ -155,6 +166,7 @@ public class ResultSetWrappingSqlRowSetMetaData implements SqlRowSetMetaData {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getSchemaName(int column) throws InvalidResultSetAccessException {
|
||||
try {
|
||||
return this.resultSetMetaData.getSchemaName(column);
|
||||
@@ -164,6 +176,7 @@ public class ResultSetWrappingSqlRowSetMetaData implements SqlRowSetMetaData {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTableName(int column) throws InvalidResultSetAccessException {
|
||||
try {
|
||||
return this.resultSetMetaData.getTableName(column);
|
||||
@@ -173,6 +186,7 @@ public class ResultSetWrappingSqlRowSetMetaData implements SqlRowSetMetaData {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isCaseSensitive(int column) throws InvalidResultSetAccessException {
|
||||
try {
|
||||
return this.resultSetMetaData.isCaseSensitive(column);
|
||||
@@ -182,6 +196,7 @@ public class ResultSetWrappingSqlRowSetMetaData implements SqlRowSetMetaData {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isCurrency(int column) throws InvalidResultSetAccessException {
|
||||
try {
|
||||
return this.resultSetMetaData.isCurrency(column);
|
||||
@@ -191,6 +206,7 @@ public class ResultSetWrappingSqlRowSetMetaData implements SqlRowSetMetaData {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSigned(int column) throws InvalidResultSetAccessException {
|
||||
try {
|
||||
return this.resultSetMetaData.isSigned(column);
|
||||
|
||||
@@ -50,35 +50,43 @@ public class Jdbc4SqlXmlHandler implements SqlXmlHandler {
|
||||
// Convenience methods for accessing XML content
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
@Override
|
||||
public String getXmlAsString(ResultSet rs, String columnName) throws SQLException {
|
||||
return rs.getSQLXML(columnName).getString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getXmlAsString(ResultSet rs, int columnIndex) throws SQLException {
|
||||
return rs.getSQLXML(columnIndex).getString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public InputStream getXmlAsBinaryStream(ResultSet rs, String columnName) throws SQLException {
|
||||
return rs.getSQLXML(columnName).getBinaryStream();
|
||||
}
|
||||
|
||||
@Override
|
||||
public InputStream getXmlAsBinaryStream(ResultSet rs, int columnIndex) throws SQLException {
|
||||
return rs.getSQLXML(columnIndex).getBinaryStream();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Reader getXmlAsCharacterStream(ResultSet rs, String columnName) throws SQLException {
|
||||
return rs.getSQLXML(columnName).getCharacterStream();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Reader getXmlAsCharacterStream(ResultSet rs, int columnIndex) throws SQLException {
|
||||
return rs.getSQLXML(columnIndex).getCharacterStream();
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("unchecked")
|
||||
public Source getXmlAsSource(ResultSet rs, String columnName, Class sourceClass) throws SQLException {
|
||||
return rs.getSQLXML(columnName).getSource(sourceClass != null ? sourceClass : DOMSource.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("unchecked")
|
||||
public Source getXmlAsSource(ResultSet rs, int columnIndex, Class sourceClass) throws SQLException {
|
||||
return rs.getSQLXML(columnIndex).getSource(sourceClass != null ? sourceClass : DOMSource.class);
|
||||
@@ -89,6 +97,7 @@ public class Jdbc4SqlXmlHandler implements SqlXmlHandler {
|
||||
// Convenience methods for building XML content
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
@Override
|
||||
public SqlXmlValue newSqlXmlValue(final String value) {
|
||||
return new AbstractJdbc4SqlXmlValue() {
|
||||
@Override
|
||||
@@ -98,6 +107,7 @@ public class Jdbc4SqlXmlHandler implements SqlXmlHandler {
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public SqlXmlValue newSqlXmlValue(final XmlBinaryStreamProvider provider) {
|
||||
return new AbstractJdbc4SqlXmlValue() {
|
||||
@Override
|
||||
@@ -107,6 +117,7 @@ public class Jdbc4SqlXmlHandler implements SqlXmlHandler {
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public SqlXmlValue newSqlXmlValue(final XmlCharacterStreamProvider provider) {
|
||||
return new AbstractJdbc4SqlXmlValue() {
|
||||
@Override
|
||||
@@ -116,6 +127,7 @@ public class Jdbc4SqlXmlHandler implements SqlXmlHandler {
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public SqlXmlValue newSqlXmlValue(final Class resultClass, final XmlResultProvider provider) {
|
||||
return new AbstractJdbc4SqlXmlValue() {
|
||||
@Override
|
||||
@@ -126,6 +138,7 @@ public class Jdbc4SqlXmlHandler implements SqlXmlHandler {
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public SqlXmlValue newSqlXmlValue(final Document document) {
|
||||
return new AbstractJdbc4SqlXmlValue() {
|
||||
@Override
|
||||
@@ -143,6 +156,7 @@ public class Jdbc4SqlXmlHandler implements SqlXmlHandler {
|
||||
|
||||
private SQLXML xmlObject;
|
||||
|
||||
@Override
|
||||
public void setValue(PreparedStatement ps, int paramIndex) throws SQLException {
|
||||
this.xmlObject = ps.getConnection().createSQLXML();
|
||||
try {
|
||||
@@ -154,6 +168,7 @@ public class Jdbc4SqlXmlHandler implements SqlXmlHandler {
|
||||
ps.setSQLXML(paramIndex, this.xmlObject);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cleanup() {
|
||||
try {
|
||||
this.xmlObject.free();
|
||||
|
||||
Reference in New Issue
Block a user