Adjust sorting order of accounts and transactions

Accounts are primarily sorted by a synthetic sort oder and then by their ID.
Transactions are primarily sorted by their date and then by their ID.
This commit is contained in:
2019-05-15 21:09:03 +02:00
parent fa4d32796a
commit 2d2774179f
6 changed files with 26 additions and 22 deletions

View File

@@ -7,7 +7,7 @@ import de.financer.form.NewAccountForm;
import de.financer.model.*;
import de.financer.util.ControllerUtils;
import de.financer.util.TransactionUtils;
import de.financer.util.comparator.TransactionByDateComparator;
import de.financer.util.comparator.TransactionByDateByIdDescComparator;
import org.apache.commons.collections4.IterableUtils;
import org.apache.commons.lang3.BooleanUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -83,7 +83,7 @@ public class AccountController {
List<Transaction> transactions = IterableUtils.toList(transactionResponse.getBody());
transactions.sort(new TransactionByDateComparator());
transactions.sort(new TransactionByDateByIdDescComparator());
transactions.stream().forEach((t) -> TransactionUtils.adjustAmount(t, account));
model.addAttribute("account", account);
@@ -112,7 +112,7 @@ public class AccountController {
List<Transaction> transactions = IterableUtils.toList(transactionResponse.getBody());
transactions.sort(new TransactionByDateComparator());
transactions.sort(new TransactionByDateByIdDescComparator());
transactions.stream().forEach((t) -> TransactionUtils.adjustAmount(t, account));
model.addAttribute("account", account);
@@ -145,7 +145,7 @@ public class AccountController {
List<Transaction> transactions = IterableUtils.toList(transactionResponse.getBody());
transactions.sort(new TransactionByDateComparator());
transactions.sort(new TransactionByDateByIdDescComparator());
transactions.stream().forEach((t) -> TransactionUtils.adjustAmount(t, account));
model.addAttribute("account", account);

View File

@@ -12,7 +12,7 @@ import de.financer.model.AccountStatus;
import de.financer.model.Transaction;
import de.financer.util.ControllerUtils;
import de.financer.util.TransactionUtils;
import de.financer.util.comparator.TransactionByDateComparator;
import de.financer.util.comparator.TransactionByDateByIdDescComparator;
import org.apache.commons.collections4.IterableUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
@@ -84,7 +84,7 @@ public class TransactionController {
List<Transaction> transactions = IterableUtils.toList(transactionResponse.getBody());
transactions.sort(new TransactionByDateComparator());
transactions.sort(new TransactionByDateByIdDescComparator());
transactions.stream().forEach((t) -> TransactionUtils.adjustAmount(t, account));
model.addAttribute("account", account);

View File

@@ -5,7 +5,7 @@ import de.financer.controller.Function;
import de.financer.model.Account;
import de.financer.model.AccountStatus;
import de.financer.model.RecurringTransaction;
import de.financer.util.comparator.AccountByTypeComparator;
import de.financer.util.comparator.AccountByTypeByIdComparator;
import org.apache.commons.collections4.IterableUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.ui.Model;
@@ -28,7 +28,7 @@ public class ControllerUtils {
return IterableUtils.toList(accounts).stream()
.filter((acc) -> AccountStatus.OPEN
.equals(acc.getStatus()) || showClosed)
.sorted(new AccountByTypeComparator())
.sorted(new AccountByTypeByIdComparator())
.collect(Collectors.toList());
}

View File

@@ -6,7 +6,7 @@ import de.financer.model.AccountType;
import java.util.Comparator;
import java.util.Map;
public class AccountByTypeComparator implements Comparator<Account> {
public class AccountByTypeByIdComparator implements Comparator<Account> {
//@formatter:off
private static final Map<AccountType, Integer> SORT_ORDER = Map.of(AccountType.BANK, 1,
AccountType.CASH, 2,
@@ -18,6 +18,8 @@ public class AccountByTypeComparator implements Comparator<Account> {
@Override
public int compare(Account o1, Account o2) {
return SORT_ORDER.get(o1.getType()).compareTo(SORT_ORDER.get(o2.getType()));
int typeOrder = SORT_ORDER.get(o1.getType()).compareTo(SORT_ORDER.get(o2.getType()));
return typeOrder != 0 ? typeOrder : o1.getId().compareTo(o2.getId());
}
}

View File

@@ -0,0 +1,14 @@
package de.financer.util.comparator;
import de.financer.model.Transaction;
import java.util.Comparator;
public class TransactionByDateByIdDescComparator implements Comparator<Transaction> {
@Override
public int compare(Transaction o1, Transaction o2) {
int dateOrder = o1.getDate().compareTo(o2.getDate()) * -1;
return dateOrder != 0 ? dateOrder : o1.getId().compareTo(o2.getId()) * -1;
}
}

View File

@@ -1,12 +0,0 @@
package de.financer.util.comparator;
import de.financer.model.Transaction;
import java.util.Comparator;
public class TransactionByDateComparator implements Comparator<Transaction> {
@Override
public int compare(Transaction o1, Transaction o2) {
return o1.getDate().compareTo(o2.getDate()) * -1;
}
}