import java.util.ArrayList;
public class TransferManager {
private ArrayList<Transfer> openTransfers;
private int issuedTransfers;
private int performedTransfers;
public TransferManager() {
openTransfers = new ArrayList<Transfer>();
issuedTransfers = 0;
performedTransfers = 0;
}
public void issueTransfer(Account from, Account to, int amount) {
openTransfers.add(new Transfer(from, to, amount));
issuedTransfers++;
}
public void performTransfers() {
for(Transfer transaction : openTransfers) {
transaction.performTransfer();
performedTransfers++;
}
openTransfers.clear();
}
@Override
public String toString() {
return "TransferManager (openTransfers: " + openTransfers.size() + "; issuedTransfers: " + issuedTransfers + "; performedTransfers: " + performedTransfers + ")";
}
private static class Transfer {
private Account from, to;
private int amount;
public Transfer(Account from, Account to, int amount) {
this.from = from;
this.to = to;
this.amount = amount;
}
public void performTransfer() {
from.transfer(-amount);
to.transfer(amount);
}
}
}