package org.prevayler.demos.scalability.jdbc;
import org.prevayler.demos.scalability.*;
import java.sql.*;
class JDBCTransactionConnection extends JDBCScalabilityConnection implements TransactionConnection {
private final PreparedStatement updateStatement;
private final PreparedStatement deleteStatement;
JDBCTransactionConnection( Connection connection){
super(connection);
updateStatement=prepare("update " + table() + " set NAME=?,STRING1=?,BIGDECIMAL1=?,BIGDECIMAL2=?,DATE1=?,DATE2=? where ID=?");
deleteStatement=prepare("delete from " + table() + " where ID=?");
}
protected String table(){
return "TRANSACTION_TEST";
}
public void performTransaction( Record recordToInsert, Record recordToUpdate, long idToDelete){
insert(recordToInsert);
update(recordToUpdate);
delete(idToDelete);
try {
connection.commit();
}
catch ( SQLException sqlx) {
dealWithSQLException(sqlx,"commiting transaction");
}
}
private void update( Record recordToUpdate){
try {
updateStatement.setString(1,recordToUpdate.getName());
updateStatement.setString(2,recordToUpdate.getString1());
updateStatement.setBigDecimal(3,recordToUpdate.getBigDecimal1());
updateStatement.setBigDecimal(4,recordToUpdate.getBigDecimal2());
updateStatement.setDate(5,new java.sql.Date(recordToUpdate.getDate1().getTime()));
updateStatement.setDate(6,new java.sql.Date(recordToUpdate.getDate2().getTime()));
updateStatement.setLong(7,recordToUpdate.getId());
updateStatement.execute();
}
catch ( SQLException sqlx) {
dealWithSQLException(sqlx,"updating record");
}
}
private void delete( long idToDelete){
try {
deleteStatement.setLong(1,idToDelete);
deleteStatement.execute();
}
catch ( SQLException sqlx) {
dealWithSQLException(sqlx,"deleting record");
}
}
}