From 3566d98f3684e2f136711d6f7ccd3cb0412840f9 Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Sat, 2 Mar 2019 16:36:05 +0100
Subject: [PATCH] big refactoring: classes related to transactions

---
 .../budgetmaster/controller/FilterController.java        | 5 +----
 .../budgetmaster/controller/ReportController.java        | 3 ++-
 .../de/deadlocker8/budgetmaster/database/Database.java   | 2 +-
 .../budgetmaster/database/DatabaseParser_v3.java         | 2 +-
 .../budgetmaster/database/legacy/LegacyParser.java       | 2 +-
 .../budgetmaster/entities/account/Account.java           | 2 +-
 .../budgetmaster/entities/category/Category.java         | 2 +-
 .../de/deadlocker8/budgetmaster/entities/tag/Tag.java    | 2 +-
 .../budgetmaster/entities/tag/TagScheduler.java          | 2 +-
 .../budgetmaster/repeating/RepeatingOption.java          | 2 +-
 .../repeating/RepeatingTransactionUpdater.java           | 6 +++---
 .../budgetmaster/reports/ReportConfiguration.java        | 2 +-
 .../budgetmaster/reports/ReportConfigurationBuilder.java | 2 +-
 .../reports/categoryBudget/CategoryBudgetHandler.java    | 2 +-
 .../budgetmaster/services/AccountService.java            | 2 +-
 .../budgetmaster/services/CategoryService.java           | 2 +-
 .../budgetmaster/services/DatabaseService.java           | 3 ++-
 .../budgetmaster/services/HelpersService.java            | 3 ++-
 .../deadlocker8/budgetmaster/services/ImportService.java | 4 ++--
 .../services/report/ReportGeneratorService.java          | 2 +-
 .../transaction => transactions}/Transaction.java        | 2 +-
 .../TransactionController.java                           | 6 ++----
 .../TransactionRepository.java                           | 4 ++--
 .../{services => transactions}/TransactionService.java   | 9 +++++----
 .../TransactionSpecifications.java                       | 2 +-
 .../TransactionValidator.java                            | 3 +--
 .../transaction => transactions}/Transaction_.java       | 2 +-
 .../budgetmaster/TransactionRepositoryTest.java          | 5 +++--
 .../budgetmaster/database/DatabaseImportTest.java        | 4 ++--
 .../budgetmaster/database/DatabaseParser_v3Test.java     | 2 +-
 .../budgetmaster/database/LegacyParserTest.java          | 2 +-
 31 files changed, 46 insertions(+), 47 deletions(-)
 rename src/main/java/de/deadlocker8/budgetmaster/{entities/transaction => transactions}/Transaction.java (98%)
 rename src/main/java/de/deadlocker8/budgetmaster/{controller => transactions}/TransactionController.java (97%)
 rename src/main/java/de/deadlocker8/budgetmaster/{repositories => transactions}/TransactionRepository.java (89%)
 rename src/main/java/de/deadlocker8/budgetmaster/{services => transactions}/TransactionService.java (95%)
 rename src/main/java/de/deadlocker8/budgetmaster/{entities/transaction => transactions}/TransactionSpecifications.java (97%)
 rename src/main/java/de/deadlocker8/budgetmaster/{validators => transactions}/TransactionValidator.java (85%)
 rename src/main/java/de/deadlocker8/budgetmaster/{entities/transaction => transactions}/Transaction_.java (95%)

diff --git a/src/main/java/de/deadlocker8/budgetmaster/controller/FilterController.java b/src/main/java/de/deadlocker8/budgetmaster/controller/FilterController.java
index 82d02cf1d..d85f32a97 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/controller/FilterController.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/controller/FilterController.java
@@ -4,17 +4,14 @@ import de.deadlocker8.budgetmaster.filter.FilterConfiguration;
 import de.deadlocker8.budgetmaster.services.CategoryService;
 import de.deadlocker8.budgetmaster.services.FilterHelpersService;
 import de.deadlocker8.budgetmaster.services.HelpersService;
-import de.deadlocker8.budgetmaster.services.TransactionService;
+import de.deadlocker8.budgetmaster.transactions.TransactionService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
-import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.ModelAttribute;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.context.request.WebRequest;
 
-import javax.servlet.http.HttpServletRequest;
-
 
 @Controller
 public class FilterController extends BaseController
diff --git a/src/main/java/de/deadlocker8/budgetmaster/controller/ReportController.java b/src/main/java/de/deadlocker8/budgetmaster/controller/ReportController.java
index abfefd06e..a0a0edcd3 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/controller/ReportController.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/controller/ReportController.java
@@ -1,7 +1,7 @@
 package de.deadlocker8.budgetmaster.controller;
 
 import com.itextpdf.text.DocumentException;
-import de.deadlocker8.budgetmaster.entities.transaction.Transaction;
+import de.deadlocker8.budgetmaster.transactions.Transaction;
 import de.deadlocker8.budgetmaster.entities.account.Account;
 import de.deadlocker8.budgetmaster.entities.account.AccountType;
 import de.deadlocker8.budgetmaster.entities.report.ReportColumn;
@@ -15,6 +15,7 @@ import de.deadlocker8.budgetmaster.services.*;
 import de.deadlocker8.budgetmaster.services.report.ReportColumnService;
 import de.deadlocker8.budgetmaster.services.report.ReportGeneratorService;
 import de.deadlocker8.budgetmaster.services.report.ReportSettingsService;
+import de.deadlocker8.budgetmaster.transactions.TransactionService;
 import de.thecodelabs.utils.util.Localization;
 import org.joda.time.DateTime;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/src/main/java/de/deadlocker8/budgetmaster/database/Database.java b/src/main/java/de/deadlocker8/budgetmaster/database/Database.java
index d034bf4f5..c56c52626 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/database/Database.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/database/Database.java
@@ -3,7 +3,7 @@ package de.deadlocker8.budgetmaster.database;
 import com.google.gson.annotations.Expose;
 import de.deadlocker8.budgetmaster.entities.account.Account;
 import de.deadlocker8.budgetmaster.entities.category.Category;
-import de.deadlocker8.budgetmaster.entities.transaction.Transaction;
+import de.deadlocker8.budgetmaster.transactions.Transaction;
 
 import java.util.List;
 
diff --git a/src/main/java/de/deadlocker8/budgetmaster/database/DatabaseParser_v3.java b/src/main/java/de/deadlocker8/budgetmaster/database/DatabaseParser_v3.java
index eb967c16d..a61a4f717 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/database/DatabaseParser_v3.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/database/DatabaseParser_v3.java
@@ -4,7 +4,7 @@ import com.google.gson.*;
 import de.deadlocker8.budgetmaster.entities.account.Account;
 import de.deadlocker8.budgetmaster.entities.category.Category;
 import de.deadlocker8.budgetmaster.entities.tag.Tag;
-import de.deadlocker8.budgetmaster.entities.transaction.Transaction;
+import de.deadlocker8.budgetmaster.transactions.Transaction;
 import de.deadlocker8.budgetmaster.repeating.RepeatingOption;
 import de.deadlocker8.budgetmaster.repeating.endoption.*;
 import de.deadlocker8.budgetmaster.repeating.modifier.*;
diff --git a/src/main/java/de/deadlocker8/budgetmaster/database/legacy/LegacyParser.java b/src/main/java/de/deadlocker8/budgetmaster/database/legacy/LegacyParser.java
index a2271ac2f..3cd746c71 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/database/legacy/LegacyParser.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/database/legacy/LegacyParser.java
@@ -9,7 +9,7 @@ import de.deadlocker8.budgetmaster.entities.account.Account;
 import de.deadlocker8.budgetmaster.entities.account.AccountType;
 import de.deadlocker8.budgetmaster.entities.category.Category;
 import de.deadlocker8.budgetmaster.entities.category.CategoryType;
-import de.deadlocker8.budgetmaster.entities.transaction.Transaction;
+import de.deadlocker8.budgetmaster.transactions.Transaction;
 import de.deadlocker8.budgetmaster.repeating.RepeatingOption;
 import de.deadlocker8.budgetmaster.repeating.endoption.RepeatingEndDate;
 import de.deadlocker8.budgetmaster.repeating.endoption.RepeatingEndNever;
diff --git a/src/main/java/de/deadlocker8/budgetmaster/entities/account/Account.java b/src/main/java/de/deadlocker8/budgetmaster/entities/account/Account.java
index b8e4e7949..085260279 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/entities/account/Account.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/entities/account/Account.java
@@ -1,7 +1,7 @@
 package de.deadlocker8.budgetmaster.entities.account;
 
 import com.google.gson.annotations.Expose;
-import de.deadlocker8.budgetmaster.entities.transaction.Transaction;
+import de.deadlocker8.budgetmaster.transactions.Transaction;
 
 import javax.persistence.*;
 import javax.validation.constraints.NotNull;
diff --git a/src/main/java/de/deadlocker8/budgetmaster/entities/category/Category.java b/src/main/java/de/deadlocker8/budgetmaster/entities/category/Category.java
index e7112e332..2ad786b1b 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/entities/category/Category.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/entities/category/Category.java
@@ -1,7 +1,7 @@
 package de.deadlocker8.budgetmaster.entities.category;
 
 import com.google.gson.annotations.Expose;
-import de.deadlocker8.budgetmaster.entities.transaction.Transaction;
+import de.deadlocker8.budgetmaster.transactions.Transaction;
 import de.thecodelabs.utils.util.ColorUtils;
 import javafx.scene.paint.Color;
 
diff --git a/src/main/java/de/deadlocker8/budgetmaster/entities/tag/Tag.java b/src/main/java/de/deadlocker8/budgetmaster/entities/tag/Tag.java
index dcddf0121..19a2da1f6 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/entities/tag/Tag.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/entities/tag/Tag.java
@@ -1,7 +1,7 @@
 package de.deadlocker8.budgetmaster.entities.tag;
 
 import com.google.gson.annotations.Expose;
-import de.deadlocker8.budgetmaster.entities.transaction.Transaction;
+import de.deadlocker8.budgetmaster.transactions.Transaction;
 
 import javax.persistence.*;
 import javax.validation.constraints.NotNull;
diff --git a/src/main/java/de/deadlocker8/budgetmaster/entities/tag/TagScheduler.java b/src/main/java/de/deadlocker8/budgetmaster/entities/tag/TagScheduler.java
index 96b2c56f0..87838298c 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/entities/tag/TagScheduler.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/entities/tag/TagScheduler.java
@@ -1,7 +1,7 @@
 package de.deadlocker8.budgetmaster.entities.tag;
 
 import de.deadlocker8.budgetmaster.repositories.TagRepository;
-import de.deadlocker8.budgetmaster.repositories.TransactionRepository;
+import de.deadlocker8.budgetmaster.transactions.TransactionRepository;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/src/main/java/de/deadlocker8/budgetmaster/repeating/RepeatingOption.java b/src/main/java/de/deadlocker8/budgetmaster/repeating/RepeatingOption.java
index ef8c48f33..439139f8f 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/repeating/RepeatingOption.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/repeating/RepeatingOption.java
@@ -1,7 +1,7 @@
 package de.deadlocker8.budgetmaster.repeating;
 
 import com.google.gson.annotations.Expose;
-import de.deadlocker8.budgetmaster.entities.transaction.Transaction;
+import de.deadlocker8.budgetmaster.transactions.Transaction;
 import de.deadlocker8.budgetmaster.repeating.endoption.RepeatingEnd;
 import de.deadlocker8.budgetmaster.repeating.modifier.RepeatingModifier;
 import org.joda.time.DateTime;
diff --git a/src/main/java/de/deadlocker8/budgetmaster/repeating/RepeatingTransactionUpdater.java b/src/main/java/de/deadlocker8/budgetmaster/repeating/RepeatingTransactionUpdater.java
index 108908014..4cf89932b 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/repeating/RepeatingTransactionUpdater.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/repeating/RepeatingTransactionUpdater.java
@@ -1,10 +1,10 @@
 package de.deadlocker8.budgetmaster.repeating;
 
-import de.deadlocker8.budgetmaster.entities.transaction.Transaction;
-import de.deadlocker8.budgetmaster.repositories.TransactionRepository;
+import de.deadlocker8.budgetmaster.transactions.Transaction;
+import de.deadlocker8.budgetmaster.transactions.TransactionRepository;
 import de.deadlocker8.budgetmaster.repositories.RepeatingOptionRepository;
 import de.deadlocker8.budgetmaster.services.HelpersService;
-import de.deadlocker8.budgetmaster.services.TransactionService;
+import de.deadlocker8.budgetmaster.transactions.TransactionService;
 import org.joda.time.DateTime;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
diff --git a/src/main/java/de/deadlocker8/budgetmaster/reports/ReportConfiguration.java b/src/main/java/de/deadlocker8/budgetmaster/reports/ReportConfiguration.java
index e202aa597..e36663215 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/reports/ReportConfiguration.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/reports/ReportConfiguration.java
@@ -1,6 +1,6 @@
 package de.deadlocker8.budgetmaster.reports;
 
-import de.deadlocker8.budgetmaster.entities.transaction.Transaction;
+import de.deadlocker8.budgetmaster.transactions.Transaction;
 import de.deadlocker8.budgetmaster.entities.report.ReportSettings;
 import de.deadlocker8.budgetmaster.reports.categoryBudget.CategoryBudget;
 
diff --git a/src/main/java/de/deadlocker8/budgetmaster/reports/ReportConfigurationBuilder.java b/src/main/java/de/deadlocker8/budgetmaster/reports/ReportConfigurationBuilder.java
index 1e8b262a5..2a7618579 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/reports/ReportConfigurationBuilder.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/reports/ReportConfigurationBuilder.java
@@ -1,6 +1,6 @@
 package de.deadlocker8.budgetmaster.reports;
 
-import de.deadlocker8.budgetmaster.entities.transaction.Transaction;
+import de.deadlocker8.budgetmaster.transactions.Transaction;
 import de.deadlocker8.budgetmaster.entities.report.ReportSettings;
 import de.deadlocker8.budgetmaster.reports.categoryBudget.CategoryBudget;
 
diff --git a/src/main/java/de/deadlocker8/budgetmaster/reports/categoryBudget/CategoryBudgetHandler.java b/src/main/java/de/deadlocker8/budgetmaster/reports/categoryBudget/CategoryBudgetHandler.java
index 2e4df3a10..14504115c 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/reports/categoryBudget/CategoryBudgetHandler.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/reports/categoryBudget/CategoryBudgetHandler.java
@@ -1,6 +1,6 @@
 package de.deadlocker8.budgetmaster.reports.categoryBudget;
 
-import de.deadlocker8.budgetmaster.entities.transaction.Transaction;
+import de.deadlocker8.budgetmaster.transactions.Transaction;
 import de.deadlocker8.budgetmaster.entities.category.Category;
 
 import java.util.*;
diff --git a/src/main/java/de/deadlocker8/budgetmaster/services/AccountService.java b/src/main/java/de/deadlocker8/budgetmaster/services/AccountService.java
index 2a0556977..5c9fe2037 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/services/AccountService.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/services/AccountService.java
@@ -5,7 +5,7 @@ import de.deadlocker8.budgetmaster.authentication.UserRepository;
 import de.deadlocker8.budgetmaster.entities.account.Account;
 import de.deadlocker8.budgetmaster.entities.account.AccountType;
 import de.deadlocker8.budgetmaster.repositories.AccountRepository;
-import de.deadlocker8.budgetmaster.repositories.TransactionRepository;
+import de.deadlocker8.budgetmaster.transactions.TransactionRepository;
 import de.deadlocker8.budgetmaster.utils.Strings;
 import de.thecodelabs.utils.util.Localization;
 import org.slf4j.Logger;
diff --git a/src/main/java/de/deadlocker8/budgetmaster/services/CategoryService.java b/src/main/java/de/deadlocker8/budgetmaster/services/CategoryService.java
index 41b8aab94..8aa930959 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/services/CategoryService.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/services/CategoryService.java
@@ -2,7 +2,7 @@ package de.deadlocker8.budgetmaster.services;
 
 import de.deadlocker8.budgetmaster.entities.category.Category;
 import de.deadlocker8.budgetmaster.entities.category.CategoryType;
-import de.deadlocker8.budgetmaster.entities.transaction.Transaction;
+import de.deadlocker8.budgetmaster.transactions.Transaction;
 import de.deadlocker8.budgetmaster.repositories.CategoryRepository;
 import de.deadlocker8.budgetmaster.utils.Strings;
 import de.thecodelabs.utils.util.Localization;
diff --git a/src/main/java/de/deadlocker8/budgetmaster/services/DatabaseService.java b/src/main/java/de/deadlocker8/budgetmaster/services/DatabaseService.java
index b1391f565..08a126aeb 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/services/DatabaseService.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/services/DatabaseService.java
@@ -4,8 +4,9 @@ import com.google.gson.*;
 import de.deadlocker8.budgetmaster.database.Database;
 import de.deadlocker8.budgetmaster.entities.account.Account;
 import de.deadlocker8.budgetmaster.entities.category.Category;
-import de.deadlocker8.budgetmaster.entities.transaction.Transaction;
+import de.deadlocker8.budgetmaster.transactions.Transaction;
 import de.deadlocker8.budgetmaster.repeating.RepeatingOption;
+import de.deadlocker8.budgetmaster.transactions.TransactionService;
 import org.joda.time.DateTime;
 import org.joda.time.format.ISODateTimeFormat;
 import org.slf4j.Logger;
diff --git a/src/main/java/de/deadlocker8/budgetmaster/services/HelpersService.java b/src/main/java/de/deadlocker8/budgetmaster/services/HelpersService.java
index 753356151..d7833340f 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/services/HelpersService.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/services/HelpersService.java
@@ -6,13 +6,14 @@ import de.deadlocker8.budgetmaster.entities.tag.Tag;
 import de.deadlocker8.budgetmaster.entities.account.Account;
 import de.deadlocker8.budgetmaster.entities.account.AccountType;
 import de.deadlocker8.budgetmaster.entities.category.CategoryType;
-import de.deadlocker8.budgetmaster.entities.transaction.Transaction;
+import de.deadlocker8.budgetmaster.transactions.Transaction;
 import de.deadlocker8.budgetmaster.filter.FilterConfiguration;
 import de.deadlocker8.budgetmaster.repeating.modifier.RepeatingModifierType;
 import de.deadlocker8.budgetmaster.repositories.AccountRepository;
 import de.deadlocker8.budgetmaster.repositories.CategoryRepository;
 import de.deadlocker8.budgetmaster.repositories.SettingsRepository;
 import de.deadlocker8.budgetmaster.repositories.TagRepository;
+import de.deadlocker8.budgetmaster.transactions.TransactionService;
 import de.deadlocker8.budgetmaster.update.BudgetMasterUpdateService;
 import de.deadlocker8.budgetmaster.utils.Colors;
 import de.deadlocker8.budgetmaster.utils.LanguageType;
diff --git a/src/main/java/de/deadlocker8/budgetmaster/services/ImportService.java b/src/main/java/de/deadlocker8/budgetmaster/services/ImportService.java
index 50f91605d..6a1325082 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/services/ImportService.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/services/ImportService.java
@@ -6,10 +6,10 @@ import de.deadlocker8.budgetmaster.database.accountmatches.AccountMatchList;
 import de.deadlocker8.budgetmaster.entities.category.Category;
 import de.deadlocker8.budgetmaster.entities.category.CategoryType;
 import de.deadlocker8.budgetmaster.entities.tag.Tag;
-import de.deadlocker8.budgetmaster.entities.transaction.Transaction;
+import de.deadlocker8.budgetmaster.transactions.Transaction;
 import de.deadlocker8.budgetmaster.repositories.CategoryRepository;
 import de.deadlocker8.budgetmaster.repositories.TagRepository;
-import de.deadlocker8.budgetmaster.repositories.TransactionRepository;
+import de.deadlocker8.budgetmaster.transactions.TransactionRepository;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/src/main/java/de/deadlocker8/budgetmaster/services/report/ReportGeneratorService.java b/src/main/java/de/deadlocker8/budgetmaster/services/report/ReportGeneratorService.java
index 3015a0fe5..dd663dc77 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/services/report/ReportGeneratorService.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/services/report/ReportGeneratorService.java
@@ -3,7 +3,7 @@ package de.deadlocker8.budgetmaster.services.report;
 import com.itextpdf.text.*;
 import com.itextpdf.text.pdf.*;
 import de.deadlocker8.budgetmaster.entities.tag.Tag;
-import de.deadlocker8.budgetmaster.entities.transaction.Transaction;
+import de.deadlocker8.budgetmaster.transactions.Transaction;
 import de.deadlocker8.budgetmaster.entities.report.ReportColumn;
 import de.deadlocker8.budgetmaster.reports.*;
 import de.deadlocker8.budgetmaster.reports.categoryBudget.CategoryBudget;
diff --git a/src/main/java/de/deadlocker8/budgetmaster/entities/transaction/Transaction.java b/src/main/java/de/deadlocker8/budgetmaster/transactions/Transaction.java
similarity index 98%
rename from src/main/java/de/deadlocker8/budgetmaster/entities/transaction/Transaction.java
rename to src/main/java/de/deadlocker8/budgetmaster/transactions/Transaction.java
index 2b68a0a72..2d2cfae86 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/entities/transaction/Transaction.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/transactions/Transaction.java
@@ -1,4 +1,4 @@
-package de.deadlocker8.budgetmaster.entities.transaction;
+package de.deadlocker8.budgetmaster.transactions;
 
 import com.google.gson.annotations.Expose;
 import de.deadlocker8.budgetmaster.entities.tag.Tag;
diff --git a/src/main/java/de/deadlocker8/budgetmaster/controller/TransactionController.java b/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionController.java
similarity index 97%
rename from src/main/java/de/deadlocker8/budgetmaster/controller/TransactionController.java
rename to src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionController.java
index d295ec901..de9215669 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/controller/TransactionController.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionController.java
@@ -1,8 +1,8 @@
-package de.deadlocker8.budgetmaster.controller;
+package de.deadlocker8.budgetmaster.transactions;
 
+import de.deadlocker8.budgetmaster.controller.BaseController;
 import de.deadlocker8.budgetmaster.entities.Settings;
 import de.deadlocker8.budgetmaster.entities.tag.Tag;
-import de.deadlocker8.budgetmaster.entities.transaction.Transaction;
 import de.deadlocker8.budgetmaster.filter.FilterConfiguration;
 import de.deadlocker8.budgetmaster.repeating.RepeatingOption;
 import de.deadlocker8.budgetmaster.repeating.RepeatingTransactionUpdater;
@@ -13,9 +13,7 @@ import de.deadlocker8.budgetmaster.repositories.*;
 import de.deadlocker8.budgetmaster.services.AccountService;
 import de.deadlocker8.budgetmaster.services.FilterHelpersService;
 import de.deadlocker8.budgetmaster.services.HelpersService;
-import de.deadlocker8.budgetmaster.services.TransactionService;
 import de.deadlocker8.budgetmaster.utils.ResourceNotFoundException;
-import de.deadlocker8.budgetmaster.validators.TransactionValidator;
 import org.joda.time.DateTime;
 import org.joda.time.format.DateTimeFormat;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/src/main/java/de/deadlocker8/budgetmaster/repositories/TransactionRepository.java b/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionRepository.java
similarity index 89%
rename from src/main/java/de/deadlocker8/budgetmaster/repositories/TransactionRepository.java
rename to src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionRepository.java
index 0c6691ba6..c1ba078fe 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/repositories/TransactionRepository.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionRepository.java
@@ -1,8 +1,8 @@
-package de.deadlocker8.budgetmaster.repositories;
+package de.deadlocker8.budgetmaster.transactions;
 
 import de.deadlocker8.budgetmaster.entities.tag.Tag;
 import de.deadlocker8.budgetmaster.entities.account.Account;
-import de.deadlocker8.budgetmaster.entities.transaction.Transaction;
+import de.deadlocker8.budgetmaster.transactions.Transaction;
 import org.joda.time.DateTime;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
diff --git a/src/main/java/de/deadlocker8/budgetmaster/services/TransactionService.java b/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionService.java
similarity index 95%
rename from src/main/java/de/deadlocker8/budgetmaster/services/TransactionService.java
rename to src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionService.java
index b9d37a6a2..0bab63534 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/services/TransactionService.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionService.java
@@ -1,14 +1,15 @@
-package de.deadlocker8.budgetmaster.services;
+package de.deadlocker8.budgetmaster.transactions;
 
 import de.deadlocker8.budgetmaster.entities.account.Account;
 import de.deadlocker8.budgetmaster.entities.account.AccountType;
 import de.deadlocker8.budgetmaster.entities.category.CategoryType;
-import de.deadlocker8.budgetmaster.entities.transaction.Transaction;
-import de.deadlocker8.budgetmaster.entities.transaction.TransactionSpecifications;
+import de.deadlocker8.budgetmaster.services.Resetable;
+import de.deadlocker8.budgetmaster.transactions.Transaction;
+import de.deadlocker8.budgetmaster.transactions.TransactionSpecifications;
 import de.deadlocker8.budgetmaster.filter.FilterConfiguration;
 import de.deadlocker8.budgetmaster.repositories.CategoryRepository;
 import de.deadlocker8.budgetmaster.repositories.RepeatingOptionRepository;
-import de.deadlocker8.budgetmaster.repositories.TransactionRepository;
+import de.deadlocker8.budgetmaster.transactions.TransactionRepository;
 import de.deadlocker8.budgetmaster.utils.Strings;
 import de.thecodelabs.utils.util.Localization;
 import org.joda.time.DateTime;
diff --git a/src/main/java/de/deadlocker8/budgetmaster/entities/transaction/TransactionSpecifications.java b/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionSpecifications.java
similarity index 97%
rename from src/main/java/de/deadlocker8/budgetmaster/entities/transaction/TransactionSpecifications.java
rename to src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionSpecifications.java
index 8787e58a8..4ad46d0e7 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/entities/transaction/TransactionSpecifications.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionSpecifications.java
@@ -1,4 +1,4 @@
-package de.deadlocker8.budgetmaster.entities.transaction;
+package de.deadlocker8.budgetmaster.transactions;
 
 import de.deadlocker8.budgetmaster.entities.account.Account;
 import org.joda.time.DateTime;
diff --git a/src/main/java/de/deadlocker8/budgetmaster/validators/TransactionValidator.java b/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionValidator.java
similarity index 85%
rename from src/main/java/de/deadlocker8/budgetmaster/validators/TransactionValidator.java
rename to src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionValidator.java
index 76ebbf774..558cdce3a 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/validators/TransactionValidator.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionValidator.java
@@ -1,6 +1,5 @@
-package de.deadlocker8.budgetmaster.validators;
+package de.deadlocker8.budgetmaster.transactions;
 
-import de.deadlocker8.budgetmaster.entities.transaction.Transaction;
 import de.deadlocker8.budgetmaster.utils.Strings;
 import org.springframework.validation.Errors;
 import org.springframework.validation.ValidationUtils;
diff --git a/src/main/java/de/deadlocker8/budgetmaster/entities/transaction/Transaction_.java b/src/main/java/de/deadlocker8/budgetmaster/transactions/Transaction_.java
similarity index 95%
rename from src/main/java/de/deadlocker8/budgetmaster/entities/transaction/Transaction_.java
rename to src/main/java/de/deadlocker8/budgetmaster/transactions/Transaction_.java
index 9a6c2d2f9..eafe89583 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/entities/transaction/Transaction_.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/transactions/Transaction_.java
@@ -1,4 +1,4 @@
-package de.deadlocker8.budgetmaster.entities.transaction;
+package de.deadlocker8.budgetmaster.transactions;
 
 import de.deadlocker8.budgetmaster.entities.tag.Tag;
 import de.deadlocker8.budgetmaster.entities.account.Account;
diff --git a/src/test/java/de/deadlocker8/budgetmaster/TransactionRepositoryTest.java b/src/test/java/de/deadlocker8/budgetmaster/TransactionRepositoryTest.java
index 83dd4c78e..c753811f8 100644
--- a/src/test/java/de/deadlocker8/budgetmaster/TransactionRepositoryTest.java
+++ b/src/test/java/de/deadlocker8/budgetmaster/TransactionRepositoryTest.java
@@ -5,8 +5,9 @@ import de.deadlocker8.budgetmaster.entities.account.AccountType;
 import de.deadlocker8.budgetmaster.entities.category.Category;
 import de.deadlocker8.budgetmaster.entities.category.CategoryType;
 import de.deadlocker8.budgetmaster.entities.tag.Tag;
-import de.deadlocker8.budgetmaster.entities.transaction.Transaction;
-import de.deadlocker8.budgetmaster.entities.transaction.TransactionSpecifications;
+import de.deadlocker8.budgetmaster.transactions.Transaction;
+import de.deadlocker8.budgetmaster.transactions.TransactionRepository;
+import de.deadlocker8.budgetmaster.transactions.TransactionSpecifications;
 import de.deadlocker8.budgetmaster.repeating.RepeatingOption;
 import de.deadlocker8.budgetmaster.repeating.endoption.RepeatingEndAfterXTimes;
 import de.deadlocker8.budgetmaster.repeating.modifier.RepeatingModifierDays;
diff --git a/src/test/java/de/deadlocker8/budgetmaster/database/DatabaseImportTest.java b/src/test/java/de/deadlocker8/budgetmaster/database/DatabaseImportTest.java
index 19317aec1..45ca49d38 100644
--- a/src/test/java/de/deadlocker8/budgetmaster/database/DatabaseImportTest.java
+++ b/src/test/java/de/deadlocker8/budgetmaster/database/DatabaseImportTest.java
@@ -5,10 +5,10 @@ import de.deadlocker8.budgetmaster.entities.account.AccountType;
 import de.deadlocker8.budgetmaster.entities.category.Category;
 import de.deadlocker8.budgetmaster.entities.category.CategoryType;
 import de.deadlocker8.budgetmaster.entities.tag.Tag;
-import de.deadlocker8.budgetmaster.entities.transaction.Transaction;
+import de.deadlocker8.budgetmaster.transactions.Transaction;
 import de.deadlocker8.budgetmaster.repositories.CategoryRepository;
 import de.deadlocker8.budgetmaster.repositories.TagRepository;
-import de.deadlocker8.budgetmaster.repositories.TransactionRepository;
+import de.deadlocker8.budgetmaster.transactions.TransactionRepository;
 import de.deadlocker8.budgetmaster.services.ImportService;
 import org.joda.time.DateTime;
 import org.junit.Test;
diff --git a/src/test/java/de/deadlocker8/budgetmaster/database/DatabaseParser_v3Test.java b/src/test/java/de/deadlocker8/budgetmaster/database/DatabaseParser_v3Test.java
index 7a662d7e1..7addb5c90 100644
--- a/src/test/java/de/deadlocker8/budgetmaster/database/DatabaseParser_v3Test.java
+++ b/src/test/java/de/deadlocker8/budgetmaster/database/DatabaseParser_v3Test.java
@@ -5,7 +5,7 @@ import de.deadlocker8.budgetmaster.entities.account.AccountType;
 import de.deadlocker8.budgetmaster.entities.category.Category;
 import de.deadlocker8.budgetmaster.entities.category.CategoryType;
 import de.deadlocker8.budgetmaster.entities.tag.Tag;
-import de.deadlocker8.budgetmaster.entities.transaction.Transaction;
+import de.deadlocker8.budgetmaster.transactions.Transaction;
 import de.deadlocker8.budgetmaster.repeating.RepeatingOption;
 import de.deadlocker8.budgetmaster.repeating.endoption.RepeatingEndAfterXTimes;
 import de.deadlocker8.budgetmaster.repeating.modifier.RepeatingModifierDays;
diff --git a/src/test/java/de/deadlocker8/budgetmaster/database/LegacyParserTest.java b/src/test/java/de/deadlocker8/budgetmaster/database/LegacyParserTest.java
index 4fd0cd427..5ff56abc3 100644
--- a/src/test/java/de/deadlocker8/budgetmaster/database/LegacyParserTest.java
+++ b/src/test/java/de/deadlocker8/budgetmaster/database/LegacyParserTest.java
@@ -6,7 +6,7 @@ import de.deadlocker8.budgetmaster.entities.account.AccountType;
 import de.deadlocker8.budgetmaster.entities.category.Category;
 import de.deadlocker8.budgetmaster.entities.category.CategoryType;
 import de.deadlocker8.budgetmaster.entities.tag.Tag;
-import de.deadlocker8.budgetmaster.entities.transaction.Transaction;
+import de.deadlocker8.budgetmaster.transactions.Transaction;
 import de.deadlocker8.budgetmaster.repeating.RepeatingOption;
 import de.deadlocker8.budgetmaster.repeating.endoption.RepeatingEndDate;
 import de.deadlocker8.budgetmaster.repeating.endoption.RepeatingEndNever;
-- 
GitLab