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