/*
* $Id: CompositeTransaction.java,v 1.1 2007-02-27 12:45:30 eugen Exp $
*
* Copyright (c) 2003 Brockmann Consult GmbH. All right reserved.
* http://www.brockmann-consult.de
*/
package com.bc.util.sql;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.LinkedList;
import java.util.List;
/**
* A transaction which is composed of other transactions.
*/
public class CompositeTransaction implements Transaction {
public CompositeTransaction() {
this.transactions = new LinkedList<Transaction>();
}
public void addTransaction(Transaction transaction) {
transactions.add(transaction);
}
public void removeTransaction(Transaction transaction) {
transactions.remove(transaction);
}
public boolean isUpdate() {
for (int i = 0; i < transactions.size(); i++) {
final Transaction t = transactions.get(i);
if (t.isUpdate()) {
return true;
}
}
return false;
}
/**
* Executes this transactions by delegating the call to all contained transactions.
* Order of execution is order of adding delegates to this transaction.
* @param connection
* @param connection the connection to be used for the transaction
*
* @throws SQLException if a database error occurs
*/
public void execute(Connection connection) throws SQLException {
for (int i = 0; i < transactions.size(); i++) {
final Transaction t = transactions.get(i);
t.execute(connection);
}
}
///////////////////////////////////////////////////////////////////////////
/////// END OF PUBLIC
///////////////////////////////////////////////////////////////////////////
private List<Transaction> transactions;
}