/*
- * Copyright © 2020 Damyan Ivanov.
+ * Copyright © 2021 Damyan Ivanov.
* This file is part of MoLe.
* MoLe is free software: you can distribute it and/or modify it
* under the term of the GNU General Public License as published by
public class TransactionAccumulator {
private final ArrayList<TransactionListItem> list = new ArrayList<>();
- private final MainModel model;
+ private final String boldAccountName;
private SimpleDate earliestDate, latestDate;
- private SimpleDate lastDate = SimpleDate.today();
- private boolean done;
- public TransactionAccumulator(MainModel model) {
- this.model = model;
+ private SimpleDate lastDate;
+ private int transactionCount = 0;
+ public TransactionAccumulator(String boldAccountName) {
+ this.boldAccountName = boldAccountName;
+
+ list.add(new TransactionListItem()); // head item
+ }
+ public void put(LedgerTransaction transaction) {
+ put(transaction, transaction.getDate());
}
public void put(LedgerTransaction transaction, SimpleDate date) {
- if (done)
- throw new IllegalStateException("Can't put new items after done()");
+ transactionCount++;
// first item
- if (null == latestDate) {
- list.add(new TransactionListItem());
+ if (null == latestDate)
latestDate = date;
- list.add(new TransactionListItem(date, SimpleDate.today().month != date.month));
- }
earliestDate = date;
if (!date.equals(lastDate)) {
+ if (lastDate == null)
+ lastDate = SimpleDate.today();
boolean showMonth = date.month != lastDate.month || date.year != lastDate.year;
list.add(new TransactionListItem(date, showMonth));
}
- list.add(new TransactionListItem(transaction));
+ list.add(new TransactionListItem(transaction, boldAccountName));
lastDate = date;
}
- public void done() {
- done = true;
- model.setDisplayedTransactions(list);
+ public void publishResults(MainModel model) {
+ model.setDisplayedTransactions(list, transactionCount);
model.setFirstTransactionDate(earliestDate);
model.setLastTransactionDate(latestDate);
}