From 17e3e02768d2e2dbe26fd5519ec3f01dde067d40 Mon Sep 17 00:00:00 2001 From: tobias <thinkdifferent055@gmail.com> Date: Sun, 25 Aug 2019 17:09:21 +0200 Subject: [PATCH] Fixed #477 - error while deleting default account with transactions --- .../budgetmaster/accounts/AccountService.java | 10 +++++----- .../transactions/TransactionRepository.java | 2 ++ .../transactions/TransactionService.java | 12 ++++++++++++ .../unit/database/DatabaseImportTest.java | 6 ++++++ 4 files changed, 25 insertions(+), 5 deletions(-) diff --git a/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountService.java b/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountService.java index 675ff4d24..2b8671db7 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountService.java +++ b/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountService.java @@ -3,7 +3,7 @@ package de.deadlocker8.budgetmaster.accounts; import de.deadlocker8.budgetmaster.authentication.User; import de.deadlocker8.budgetmaster.authentication.UserRepository; import de.deadlocker8.budgetmaster.services.Resetable; -import de.deadlocker8.budgetmaster.transactions.TransactionRepository; +import de.deadlocker8.budgetmaster.transactions.TransactionService; import de.deadlocker8.budgetmaster.utils.Strings; import de.thecodelabs.utils.util.Localization; import org.slf4j.Logger; @@ -19,14 +19,14 @@ public class AccountService implements Resetable { private final Logger LOGGER = LoggerFactory.getLogger(this.getClass()); private AccountRepository accountRepository; - private TransactionRepository transactionRepository; + private TransactionService transactionService; private UserRepository userRepository; @Autowired - public AccountService(AccountRepository accountRepository, TransactionRepository transactionRepository, UserRepository userRepository) + public AccountService(AccountRepository accountRepository, TransactionService transactionService, UserRepository userRepository) { this.accountRepository = accountRepository; - this.transactionRepository = transactionRepository; + this.transactionService = transactionService; this.userRepository = userRepository; createDefaults(); @@ -47,7 +47,7 @@ public class AccountService implements Resetable public void deleteAccount(int ID) { Account accountToDelete = accountRepository.findOne(ID); - transactionRepository.delete(accountToDelete.getReferringTransactions()); + transactionService.deleteTransactionsWithAccount(accountToDelete); accountToDelete.setReferringTransactions(new ArrayList<>()); List<Account> accounts = accountRepository.findAll(); diff --git a/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionRepository.java b/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionRepository.java index 3510a0040..0e03741b5 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionRepository.java +++ b/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionRepository.java @@ -31,4 +31,6 @@ public interface TransactionRepository extends JpaRepository<Transaction, Intege @Query(value = "SELECT SUM(t.amount) FROM `transaction` as t WHERE t.transfer_account_id = ?1 AND t.date BETWEEN ?2 AND ?3", nativeQuery = true) Integer getRestForTransferDestination(int accountID, String startDate, String endDate); + + List<Transaction> findAllByTransferAccount(Account account); } \ No newline at end of file diff --git a/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionService.java b/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionService.java index 9bce43ab8..f50a0005c 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionService.java +++ b/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionService.java @@ -167,6 +167,18 @@ public class TransactionService implements Resetable } } + public void deleteTransactionsWithAccount(Account account) { + for(Transaction referringTransaction : account.getReferringTransactions()) + { + deleteTransactionInRepo(referringTransaction.getID()); + } + + for(Transaction referringTransaction : transactionRepository.findAllByTransferAccount(account)) + { + deleteTransactionInRepo(referringTransaction.getID()); + } + } + @Override public void createDefaults() { diff --git a/src/test/java/de/deadlocker8/budgetmaster/unit/database/DatabaseImportTest.java b/src/test/java/de/deadlocker8/budgetmaster/unit/database/DatabaseImportTest.java index 13dccf4e3..459f7df76 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/unit/database/DatabaseImportTest.java +++ b/src/test/java/de/deadlocker8/budgetmaster/unit/database/DatabaseImportTest.java @@ -292,6 +292,12 @@ public class DatabaseImportTest return null; } + @Override + public List<Transaction> findAllByTransferAccount(Account account) + { + return null; + } + @Override public List<Transaction> findAll() { -- GitLab