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:
@@ -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);
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user