/** * MoneyTransactionRecorder * Memorizza un insieme di transazioni economiche * * @author A. Luchetta * @version 7-Nov-2007 */ public class MoneyTransactionRecorder { private static final String IN = "versamento"; private static final String OUT = "prelevamento"; private static final int INITIAL_SIZE = 1; private MoneyTransaction[] transactions; private int transactionsSize; private double totalMoneyInEuro; public MoneyTransactionRecorder(double initialMoneyInEuro) { transactions = new MoneyTransaction[INITIAL_SIZE]; transactionsSize = 0; totalMoneyInEuro = initialMoneyInEuro; } public MoneyTransactionRecorder() { this(0); } public void addTransaction(String aDate, double someUnits, String aCurrency, double anEuroConversionRate, String direction) { if (transactionsSize >= transactions.length) transactions = resize(transactions, 2 * transactions.length); MoneyTransaction tmp = new MoneyTransaction(aDate, someUnits, aCurrency, anEuroConversionRate, direction); transactions[transactionsSize] = tmp; transactionsSize++; if (direction.equalsIgnoreCase(IN)) totalMoneyInEuro += tmp.getConvertedToEuroUnits(); else if (direction.equalsIgnoreCase(OUT)) totalMoneyInEuro -= tmp.getConvertedToEuroUnits(); else tmp.addComment("Operazione errata: non contabilizzata"); } public double getTotalMoneyInEuro() { return totalMoneyInEuro; } public String toString() { String tmpString = ""; for (int i = 0; i < transactionsSize; i++) tmpString = tmpString + transactions[i] + "\n"; return tmpString; } private static MoneyTransaction[] resize(MoneyTransaction[] mt, int newLength) { MoneyTransaction[] newMt = new MoneyTransaction[newLength]; for (int i = 0; i < mt.length; i++) newMt[i] = mt[i]; return newMt; } }