From 39bc86e79827eb581b5c9422a52ec658d953bd7e Mon Sep 17 00:00:00 2001 From: Safak Date: Mon, 9 Dec 2024 16:27:48 +0100 Subject: [PATCH] Bugfix in getTransactionsSorted and getTransactionsByType in PrivateBank.java --- src/main/java/bank/PrivateBank.java | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/main/java/bank/PrivateBank.java b/src/main/java/bank/PrivateBank.java index a9bedbb..d485414 100644 --- a/src/main/java/bank/PrivateBank.java +++ b/src/main/java/bank/PrivateBank.java @@ -221,7 +221,7 @@ public class PrivateBank implements Bank, JsonSerializer, JsonDeser // 2 setting as incoming transfer else if (transaction instanceof IncomingTransfer) { - if (((IncomingTransfer) transaction).getSender().equals("") || ((IncomingTransfer) transaction).getRecipient().equals("")) + if (((IncomingTransfer) transaction).getSender().isEmpty() || ((IncomingTransfer) transaction).getRecipient().isEmpty()) throw new TransactionAttributeException("Transfer without sender or recipient"); else if (((IncomingTransfer) transaction).getRecipient().equals(account)) @@ -232,7 +232,7 @@ public class PrivateBank implements Bank, JsonSerializer, JsonDeser // 3 setting as outgoing transfer else if (transaction instanceof OutgoingTransfer) { - if (((OutgoingTransfer) transaction).getSender().equals("") || ((OutgoingTransfer) transaction).getRecipient().equals("")) + if (((OutgoingTransfer) transaction).getSender().isEmpty() || ((OutgoingTransfer) transaction).getRecipient().isEmpty()) throw new TransactionAttributeException("Transfer without sender or recipient"); else if (((OutgoingTransfer) transaction).getSender().equals(account)) @@ -332,8 +332,16 @@ public class PrivateBank implements Bank, JsonSerializer, JsonDeser */ @Override public List getTransactionsSorted(String account, boolean asc) { - List transactions = this.accountsToTransactions.get(account); - transactions.sort(Comparator.comparingDouble(Transaction::calculate)); + List transactions = new ArrayList<>(this.accountsToTransactions.get(account)); + + if (transactions == null || transactions.isEmpty()) + return new ArrayList<>(); + + if (asc) + transactions.sort(Comparator.comparingDouble(Transaction::calculate)); + else + transactions.sort(Comparator.comparingDouble(Transaction::calculate).reversed()); + return transactions; } @@ -346,7 +354,7 @@ public class PrivateBank implements Bank, JsonSerializer, JsonDeser */ @Override public List getTransactionsByType(String account, boolean positive) { - List transactions = this.accountsToTransactions.get(account); + List transactions = new ArrayList<>(this.accountsToTransactions.get(account)); if (positive) transactions.removeIf(transaction -> transaction.calculate() >= 0); else @@ -359,7 +367,7 @@ public class PrivateBank implements Bank, JsonSerializer, JsonDeser * * @throws IOException if an error occurs while deserializing */ - public void readAccounts() throws IOException, java.io.IOException, AccountAlreadyExistsException, TransactionAlreadyExistException, AccountDoesNotExistException, TransactionAttributeException { + public void readAccounts() throws IOException, java.io.IOException, AccountAlreadyExistsException, TransactionAlreadyExistException, TransactionAttributeException { /* 1. JSONs einlesen 2. for each Transaction