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

View File

@@ -12,7 +12,7 @@ import de.financer.model.AccountStatus;
import de.financer.model.Transaction; import de.financer.model.Transaction;
import de.financer.util.ControllerUtils; import de.financer.util.ControllerUtils;
import de.financer.util.TransactionUtils; 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.collections4.IterableUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
@@ -84,7 +84,7 @@ public class TransactionController {
List<Transaction> transactions = IterableUtils.toList(transactionResponse.getBody()); List<Transaction> transactions = IterableUtils.toList(transactionResponse.getBody());
transactions.sort(new TransactionByDateComparator()); transactions.sort(new TransactionByDateByIdDescComparator());
transactions.stream().forEach((t) -> TransactionUtils.adjustAmount(t, account)); transactions.stream().forEach((t) -> TransactionUtils.adjustAmount(t, account));
model.addAttribute("account", 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.Account;
import de.financer.model.AccountStatus; import de.financer.model.AccountStatus;
import de.financer.model.RecurringTransaction; 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.collections4.IterableUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.ui.Model; import org.springframework.ui.Model;
@@ -28,7 +28,7 @@ public class ControllerUtils {
return IterableUtils.toList(accounts).stream() return IterableUtils.toList(accounts).stream()
.filter((acc) -> AccountStatus.OPEN .filter((acc) -> AccountStatus.OPEN
.equals(acc.getStatus()) || showClosed) .equals(acc.getStatus()) || showClosed)
.sorted(new AccountByTypeComparator()) .sorted(new AccountByTypeByIdComparator())
.collect(Collectors.toList()); .collect(Collectors.toList());
} }

View File

@@ -6,7 +6,7 @@ import de.financer.model.AccountType;
import java.util.Comparator; import java.util.Comparator;
import java.util.Map; import java.util.Map;
public class AccountByTypeComparator implements Comparator<Account> { public class AccountByTypeByIdComparator implements Comparator<Account> {
//@formatter:off //@formatter:off
private static final Map<AccountType, Integer> SORT_ORDER = Map.of(AccountType.BANK, 1, private static final Map<AccountType, Integer> SORT_ORDER = Map.of(AccountType.BANK, 1,
AccountType.CASH, 2, AccountType.CASH, 2,
@@ -18,6 +18,8 @@ public class AccountByTypeComparator implements Comparator<Account> {
@Override @Override
public int compare(Account o1, Account o2) { 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;
}
}