/**
*
*/
package com.alipay.zdal.test.ut.datasource;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.support.TransactionCallback;
import org.springframework.transaction.support.TransactionTemplate;
import org.springframework.util.Assert;
/**
* @author <a href="mailto:xiang.yangx@alipay.com">Yang Xiang</a>
*
*/
public class SqlUpdater extends SqlExecutor {
private TransactionTemplate transactionTemplate;
public SqlUpdater(JdbcTemplate jdbcTemplate, String sql,
Object[] parametersList, int intervalMillSec) {
super(jdbcTemplate, sql, parametersList, intervalMillSec);
DataSourceTransactionManager tnManager = new DataSourceTransactionManager(
jdbcTemplate.getDataSource());
transactionTemplate = new TransactionTemplate(tnManager);
}
public SqlUpdater(JdbcTemplate jdbcTemplate, String sql,
Object[] parametersList, int intervalMillSec, ConcurrentHashMap<Long, List<Exception>> exceptionCollection) {
super(jdbcTemplate, sql, parametersList, intervalMillSec, exceptionCollection);
DataSourceTransactionManager tnManager = new DataSourceTransactionManager(
jdbcTemplate.getDataSource());
transactionTemplate = new TransactionTemplate(tnManager);
}
@Override
void execute() {
Object result = null;
result = transactionTemplate.execute(new TransactionCallback() {
@Override
public Object doInTransaction(TransactionStatus status) {
try {
int insertResult = jdbcTemplate.update(sql, parametersList);
return insertResult;
} catch (Exception e) {
e.printStackTrace();
status.setRollbackOnly();
}
return 0;
}
});
Assert.isTrue( result != null );
Assert.isTrue( Integer.parseInt(result.toString()) == 1);
}
}