From 399b29e82e10709bace05af06c665572335d566b Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Wed, 28 Aug 2019 20:53:12 +0200 Subject: [PATCH] Fixed #485 - new default account is not set on deletion of a default account; error when deleting repeating transactions --- .../budgetmaster/accounts/AccountService.java | 12 ++++++------ .../transactions/TransactionService.java | 7 +++++++ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountService.java b/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountService.java index 2b8671db7..77dc5981a 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountService.java +++ b/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountService.java @@ -50,15 +50,15 @@ public class AccountService implements Resetable transactionService.deleteTransactionsWithAccount(accountToDelete); accountToDelete.setReferringTransactions(new ArrayList<>()); - List<Account> accounts = accountRepository.findAll(); - accounts.remove(accountToDelete); - - Account newSelectedAccount = accounts.get(0); - selectAccount(newSelectedAccount.getID()); + // select "all accounts" as selected account + selectAccount(accountRepository.findAllByType(AccountType.ALL).get(0).getID()); + // set new default if necessary if(accountToDelete.isDefault()) { - setAsDefaultAccount(accountRepository.findAllByType(AccountType.CUSTOM).get(0).getID()); + List<Account> accounts = accountRepository.findAllByType(AccountType.CUSTOM); + accounts.remove(accountToDelete); + setAsDefaultAccount(accounts.get(0).getID()); } accountRepository.delete(ID); diff --git a/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionService.java b/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionService.java index f50a0005c..f88181ce1 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionService.java +++ b/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionService.java @@ -23,6 +23,7 @@ import java.util.List; @Service public class TransactionService implements Resetable { + private final Logger LOGGER = LoggerFactory.getLogger(this.getClass()); private TransactionRepository transactionRepository; private RepeatingOptionRepository repeatingOptionRepository; private CategoryRepository categoryRepository; @@ -141,6 +142,12 @@ public class TransactionService implements Resetable private void deleteTransactionInRepo(Integer ID) { Transaction transactionToDelete = transactionRepository.findOne(ID); + if(transactionToDelete == null) + { + LOGGER.debug("Skipping already deleted transaction with ID: " + ID); + return; + } + // handle repeating transactions if(transactionToDelete.getRepeatingOption() == null) { -- GitLab