// RegisterComparator package org.javamoney.examples.ez.money.gui.table.comparator; import static org.javamoney.examples.ez.common.utility.CompareHelper.compareAmounts; import static org.javamoney.examples.ez.common.utility.CompareHelper.compareBooleans; import static org.javamoney.examples.ez.money.gui.table.RegisterTable.BALANCE_COLUMN; import static org.javamoney.examples.ez.money.gui.table.RegisterTable.CHECK_NUMBER_COLUMN; import static org.javamoney.examples.ez.money.gui.table.RegisterTable.DATE_COLUMN; import static org.javamoney.examples.ez.money.gui.table.RegisterTable.EXPENSE_COLUMN; import static org.javamoney.examples.ez.money.gui.table.RegisterTable.INCOME_COLUMN; import static org.javamoney.examples.ez.money.gui.table.RegisterTable.LABEL_COLUMN; import static org.javamoney.examples.ez.money.gui.table.RegisterTable.PAYEE_COLUMN; import static org.javamoney.examples.ez.money.utility.TransactionCompareHelper.compareAmounts; import static org.javamoney.examples.ez.money.utility.TransactionCompareHelper.compareCheckNumbers; import static org.javamoney.examples.ez.money.utility.TransactionCompareHelper.compareDates; import static org.javamoney.examples.ez.money.utility.TransactionCompareHelper.compareLabels; import static org.javamoney.examples.ez.money.utility.TransactionCompareHelper.comparePayees; import org.javamoney.examples.ez.money.ApplicationProperties; import org.javamoney.examples.ez.money.model.dynamic.transaction.RegisterTransaction; import org.javamoney.examples.ez.money.model.persisted.transaction.Transaction; import org.javamoney.examples.ez.common.gui.table.DataTableComparator; /** * This class facilitates comparing transactions in a table. */ public final class RegisterComparator extends DataTableComparator<RegisterTransaction> { /** * Constructs a new comparator. */ public RegisterComparator() { super(ApplicationProperties.getRegisterColumnToSort()); setInvertSort(ApplicationProperties.invertSortForRegister()); } /** * This method compares two transactions. * * @param rTrans1 A transaction to compare. * @param rTrans2 A transaction to compare. * * @return The result of comparing two transactions. */ @Override public int compare(RegisterTransaction rTrans1, RegisterTransaction rTrans2) { Transaction trans1 = rTrans1.getTransaction(); Transaction trans2 = rTrans2.getTransaction(); int result = 0; if(getColumn() == BALANCE_COLUMN) { result = compareAmounts(rTrans2.getBalance(), rTrans1.getBalance(), invertSort()); } else if(getColumn() == CHECK_NUMBER_COLUMN) { result = compareCheckNumbers(trans1, trans2, invertSort()); } else if(getColumn() == DATE_COLUMN) { result = compareDates(trans1, trans2, invertSort()); } else if(getColumn() == EXPENSE_COLUMN) { result = compareAmounts(trans1, trans2, invertSort()); } else if(getColumn() == INCOME_COLUMN) { result = compareAmounts(trans2, trans1, invertSort()); } else if(getColumn() == LABEL_COLUMN) { result = compareLabels(trans2, trans1, invertSort()); } else if(getColumn() == PAYEE_COLUMN) { result = comparePayees(trans1, trans2, invertSort()); } else { result = compareBooleans(trans2.isReconciled(), trans1.isReconciled(), invertSort()); } return result; } }