From ce6cd9aeb35c0ad2a83ed86ede1d5650a105b4bc Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Sat, 1 Dec 2018 22:05:10 +0100
Subject: [PATCH] Fixed #348 - delete database results in error

---
 .../budgetmaster/entities/Tag.java            |  6 ++--
 .../services/TransactionService.java          | 30 ++++++++++++-------
 2 files changed, 23 insertions(+), 13 deletions(-)

diff --git a/src/main/java/de/deadlocker8/budgetmaster/entities/Tag.java b/src/main/java/de/deadlocker8/budgetmaster/entities/Tag.java
index dfcc5de84..86a4afd4c 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/entities/Tag.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/entities/Tag.java
@@ -62,7 +62,10 @@ public class Tag
 	@Override
 	public String toString()
 	{
-		return "Tag{ID=" + ID +	", name='" + name + '}';
+		return "Tag{" +
+				"ID=" + ID +
+				", name='" + name + '\'' +
+				'}';
 	}
 
 	@Override
@@ -78,7 +81,6 @@ public class Tag
 	@Override
 	public int hashCode()
 	{
-
 		return Objects.hash(ID, name);
 	}
 }
\ No newline at end of file
diff --git a/src/main/java/de/deadlocker8/budgetmaster/services/TransactionService.java b/src/main/java/de/deadlocker8/budgetmaster/services/TransactionService.java
index 767cfdbfc..f65eb4169 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/services/TransactionService.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/services/TransactionService.java
@@ -112,16 +112,21 @@ public class TransactionService implements Resetable
 	{
 		if(isDeletable(ID))
 		{
-			Transaction transactionToDelete = transactionRepository.findOne(ID);
-			// handle repeating transactions
-			if(transactionToDelete.getRepeatingOption() != null)
-			{
-				repeatingOptionRepository.delete(transactionToDelete.getRepeatingOption().getID());
-			}
-			else
-			{
-				transactionRepository.delete(ID);
-			}
+			deleteTransactionInRepo(ID);
+		}
+	}
+
+	private void deleteTransactionInRepo(Integer ID)
+	{
+		Transaction transactionToDelete = transactionRepository.findOne(ID);
+		// handle repeating transactions
+		if(transactionToDelete.getRepeatingOption() != null)
+		{
+			repeatingOptionRepository.delete(transactionToDelete.getRepeatingOption().getID());
+		}
+		else
+		{
+			transactionRepository.delete(ID);
 		}
 	}
 
@@ -134,7 +139,10 @@ public class TransactionService implements Resetable
 	@Override
 	public void deleteAll()
 	{
-		transactionRepository.deleteAll();
+		for(Transaction transaction : transactionRepository.findAll())
+		{
+			deleteTransactionInRepo(transaction.getID());
+		}
 	}
 
 	@Override
-- 
GitLab