From 2d2774179f4916ae9b61e3353748be68bf1d840c Mon Sep 17 00:00:00 2001 From: MK13 Date: Wed, 15 May 2019 21:09:03 +0200 Subject: [PATCH] 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. --- .../de/financer/controller/AccountController.java | 8 ++++---- .../financer/controller/TransactionController.java | 4 ++-- .../java/de/financer/util/ControllerUtils.java | 4 ++-- ...rator.java => AccountByTypeByIdComparator.java} | 6 ++++-- .../TransactionByDateByIdDescComparator.java | 14 ++++++++++++++ .../comparator/TransactionByDateComparator.java | 12 ------------ 6 files changed, 26 insertions(+), 22 deletions(-) rename src/main/java/de/financer/util/comparator/{AccountByTypeComparator.java => AccountByTypeByIdComparator.java} (77%) create mode 100644 src/main/java/de/financer/util/comparator/TransactionByDateByIdDescComparator.java delete mode 100644 src/main/java/de/financer/util/comparator/TransactionByDateComparator.java diff --git a/src/main/java/de/financer/controller/AccountController.java b/src/main/java/de/financer/controller/AccountController.java index 6a39e6e..a1633cf 100644 --- a/src/main/java/de/financer/controller/AccountController.java +++ b/src/main/java/de/financer/controller/AccountController.java @@ -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 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 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 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); diff --git a/src/main/java/de/financer/controller/TransactionController.java b/src/main/java/de/financer/controller/TransactionController.java index edce268..da0eb95 100644 --- a/src/main/java/de/financer/controller/TransactionController.java +++ b/src/main/java/de/financer/controller/TransactionController.java @@ -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 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); diff --git a/src/main/java/de/financer/util/ControllerUtils.java b/src/main/java/de/financer/util/ControllerUtils.java index 64ce300..6843801 100644 --- a/src/main/java/de/financer/util/ControllerUtils.java +++ b/src/main/java/de/financer/util/ControllerUtils.java @@ -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()); } diff --git a/src/main/java/de/financer/util/comparator/AccountByTypeComparator.java b/src/main/java/de/financer/util/comparator/AccountByTypeByIdComparator.java similarity index 77% rename from src/main/java/de/financer/util/comparator/AccountByTypeComparator.java rename to src/main/java/de/financer/util/comparator/AccountByTypeByIdComparator.java index 4723d9c..cf63757 100644 --- a/src/main/java/de/financer/util/comparator/AccountByTypeComparator.java +++ b/src/main/java/de/financer/util/comparator/AccountByTypeByIdComparator.java @@ -6,7 +6,7 @@ import de.financer.model.AccountType; import java.util.Comparator; import java.util.Map; -public class AccountByTypeComparator implements Comparator { +public class AccountByTypeByIdComparator implements Comparator { //@formatter:off private static final Map SORT_ORDER = Map.of(AccountType.BANK, 1, AccountType.CASH, 2, @@ -18,6 +18,8 @@ public class AccountByTypeComparator implements Comparator { @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()); } } diff --git a/src/main/java/de/financer/util/comparator/TransactionByDateByIdDescComparator.java b/src/main/java/de/financer/util/comparator/TransactionByDateByIdDescComparator.java new file mode 100644 index 0000000..3ae2a9d --- /dev/null +++ b/src/main/java/de/financer/util/comparator/TransactionByDateByIdDescComparator.java @@ -0,0 +1,14 @@ +package de.financer.util.comparator; + +import de.financer.model.Transaction; + +import java.util.Comparator; + +public class TransactionByDateByIdDescComparator implements Comparator { + @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; + } +} diff --git a/src/main/java/de/financer/util/comparator/TransactionByDateComparator.java b/src/main/java/de/financer/util/comparator/TransactionByDateComparator.java deleted file mode 100644 index c445fc8..0000000 --- a/src/main/java/de/financer/util/comparator/TransactionByDateComparator.java +++ /dev/null @@ -1,12 +0,0 @@ -package de.financer.util.comparator; - -import de.financer.model.Transaction; - -import java.util.Comparator; - -public class TransactionByDateComparator implements Comparator { - @Override - public int compare(Transaction o1, Transaction o2) { - return o1.getDate().compareTo(o2.getDate()) * -1; - } -}