package uk.org.brindy.android.moneytracker;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.atomic.AtomicLong;
public class ExpensesMgr implements Serializable {
private static final long serialVersionUID = Double.doubleToLongBits(1.4);
private AtomicLong nextID = new AtomicLong(0);
private List<Expense> expenses = new ArrayList<Expense>();
void saveExpense(Expense expense) {
if (0 == expense.getId()) {
expense.setId(nextID.incrementAndGet());
expenses.add(expense);
}
// otherwise, assume we're updating an existing object and do nothing
}
boolean removeExpense(Expense expense) {
return expenses.remove(expense);
}
List<Expense> getAllExpenses() {
Collections.sort(expenses);
return Collections.unmodifiableList(expenses);
}
Expense findExpense(long id) {
for (Expense exp : expenses) {
if (exp.getId() == id) {
return exp;
}
}
return null;
}
void clear() {
expenses.clear();
nextID.set(1);
}
double remaining(double disposable) {
double remaining = disposable;
for (Expense expense : expenses) {
if (expense.isCredit()) {
remaining += expense.getValue();
} else {
remaining -= expense.getValue();
}
}
return remaining;
}
}