From 30865aebbd24375c2bfe4e52995b62fef48f344f Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Sat, 22 May 2021 22:44:26 +0200
Subject: [PATCH] #598 - removed old parsers

---
 .../database/DatabaseParser_v3.java           | 205 --------------
 .../database/legacy/LegacyParser.java         | 255 ------------------
 .../budgetmaster/database/legacy/Tag.java     |  24 --
 .../database/legacy/TagMatch.java             |  36 ---
 .../unit/database/DatabaseParser_v3Test.java  | 204 --------------
 5 files changed, 724 deletions(-)
 delete mode 100644 src/main/java/de/deadlocker8/budgetmaster/database/DatabaseParser_v3.java
 delete mode 100644 src/main/java/de/deadlocker8/budgetmaster/database/legacy/LegacyParser.java
 delete mode 100644 src/main/java/de/deadlocker8/budgetmaster/database/legacy/Tag.java
 delete mode 100644 src/main/java/de/deadlocker8/budgetmaster/database/legacy/TagMatch.java
 delete mode 100644 src/test/java/de/deadlocker8/budgetmaster/unit/database/DatabaseParser_v3Test.java

diff --git a/src/main/java/de/deadlocker8/budgetmaster/database/DatabaseParser_v3.java b/src/main/java/de/deadlocker8/budgetmaster/database/DatabaseParser_v3.java
deleted file mode 100644
index e66c202b7..000000000
--- a/src/main/java/de/deadlocker8/budgetmaster/database/DatabaseParser_v3.java
+++ /dev/null
@@ -1,205 +0,0 @@
-package de.deadlocker8.budgetmaster.database;
-
-import com.google.gson.*;
-import de.deadlocker8.budgetmaster.accounts.Account;
-import de.deadlocker8.budgetmaster.accounts.AccountState;
-import de.deadlocker8.budgetmaster.accounts.AccountType;
-import de.deadlocker8.budgetmaster.categories.Category;
-import de.deadlocker8.budgetmaster.repeating.RepeatingOption;
-import de.deadlocker8.budgetmaster.repeating.endoption.*;
-import de.deadlocker8.budgetmaster.repeating.modifier.RepeatingModifier;
-import de.deadlocker8.budgetmaster.repeating.modifier.RepeatingModifierType;
-import de.deadlocker8.budgetmaster.tags.Tag;
-import de.deadlocker8.budgetmaster.transactions.Transaction;
-import de.thecodelabs.utils.util.Localization;
-import org.joda.time.DateTime;
-import org.joda.time.format.DateTimeFormat;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class DatabaseParser_v3
-{
-	final Logger LOGGER = LoggerFactory.getLogger(this.getClass());
-	private final String jsonString;
-	protected List<Category> categories;
-	protected List<Account> accounts;
-
-	public DatabaseParser_v3(String json)
-	{
-		this.jsonString = json;
-	}
-
-	public Database parseDatabaseFromJSON() throws IllegalArgumentException
-	{
-		JsonObject root = JsonParser.parseString(jsonString).getAsJsonObject();
-		categories = parseCategories(root);
-		accounts = parseAccounts(root);
-		List<Transaction> transactions = parseTransactions(root);
-
-		return new Database(categories, accounts, transactions, new ArrayList<>(), new ArrayList<>(), new ArrayList<>());
-	}
-
-	protected List<Category> parseCategories(JsonObject root)
-	{
-		List<Category> parsedCategories = new ArrayList<>();
-		JsonArray jsonCategories = root.get("categories").getAsJsonArray();
-		for(JsonElement currentCategory : jsonCategories)
-		{
-			Category parsedCategory = new Gson().fromJson(currentCategory, Category.class);
-			parsedCategories.add(parsedCategory);
-		}
-
-		return parsedCategories;
-	}
-
-	protected List<Account> parseAccounts(JsonObject root)
-	{
-		List<Account> parsedAccounts = new ArrayList<>();
-		JsonArray jsonAccounts = root.get("accounts").getAsJsonArray();
-		for(JsonElement currentAccount : jsonAccounts)
-		{
-			final JsonObject accountObject = currentAccount.getAsJsonObject();
-			Integer ID = accountObject.get("ID").getAsInt();
-			String name = accountObject.get("name").getAsString();
-			AccountType accountType = AccountType.valueOf(accountObject.get("type").getAsString());
-
-			AccountState accountState = AccountState.FULL_ACCESS;
-			if(accountObject.has("accountState"))
-			{
-				accountState = AccountState.valueOf(accountObject.get("accountState").getAsString());
-			}
-
-			Account parsedAccount = new Account(name, accountType, null);
-			parsedAccount.setID(ID);
-			parsedAccount.setAccountState(accountState);
-
-			parsedAccounts.add(parsedAccount);
-		}
-
-		return parsedAccounts;
-	}
-
-	protected List<Transaction> parseTransactions(JsonObject root)
-	{
-		List<Transaction> parsedTransactions = new ArrayList<>();
-		JsonArray transactions = root.get("transactions").getAsJsonArray();
-		for(JsonElement currentTransaction : transactions)
-		{
-			int amount = currentTransaction.getAsJsonObject().get("amount").getAsInt();
-			String name = currentTransaction.getAsJsonObject().get("name").getAsString();
-			String description = currentTransaction.getAsJsonObject().get("description").getAsString();
-
-			Transaction transaction = new Transaction();
-			transaction.setAmount(amount);
-			transaction.setName(name);
-			transaction.setDescription(description);
-			transaction.setTags(parseTags(currentTransaction.getAsJsonObject()));
-
-			int categoryID = currentTransaction.getAsJsonObject().get("category").getAsJsonObject().get("ID").getAsInt();
-			transaction.setCategory(getCategoryByID(categoryID));
-
-			int accountID = currentTransaction.getAsJsonObject().get("account").getAsJsonObject().get("ID").getAsInt();
-			transaction.setAccount(getAccountByID(accountID));
-
-			JsonElement transferAccount = currentTransaction.getAsJsonObject().get("transferAccount");
-			if(transferAccount != null)
-			{
-				int transferAccountID = transferAccount.getAsJsonObject().get("ID").getAsInt();
-				transaction.setTransferAccount(getAccountByID(transferAccountID));
-			}
-
-			String date = currentTransaction.getAsJsonObject().get("date").getAsString();
-			DateTime parsedDate = DateTime.parse(date, DateTimeFormat.forPattern("yyyy-MM-dd"));
-			transaction.setDate(parsedDate);
-
-			transaction.setRepeatingOption(parseRepeatingOption(currentTransaction.getAsJsonObject(), parsedDate));
-
-			parsedTransactions.add(transaction);
-		}
-
-		return parsedTransactions;
-	}
-
-	protected RepeatingOption parseRepeatingOption(JsonObject transaction, DateTime startDate)
-	{
-		if(!transaction.has("repeatingOption"))
-		{
-			return null;
-		}
-
-		JsonObject option = transaction.get("repeatingOption").getAsJsonObject();
-
-		JsonObject repeatingModifier = option.get("modifier").getAsJsonObject();
-		String repeatingModifierType = repeatingModifier.get("localizationKey").getAsString();
-
-		RepeatingModifierType type = RepeatingModifierType.getByLocalization(Localization.getString(repeatingModifierType));
-		RepeatingModifier modifier = RepeatingModifier.fromModifierType(type, repeatingModifier.get("quantity").getAsInt());
-
-		JsonObject repeatingEnd = option.get("endOption").getAsJsonObject();
-		String repeatingEndType = repeatingEnd.get("localizationKey").getAsString();
-
-		RepeatingEnd endOption = null;
-		RepeatingEndType endType = RepeatingEndType.getByLocalization(Localization.getString(repeatingEndType));
-		switch(endType)
-		{
-			case NEVER:
-				endOption = new RepeatingEndNever();
-				break;
-			case AFTER_X_TIMES:
-				endOption = new RepeatingEndAfterXTimes(repeatingEnd.get("times").getAsInt());
-				break;
-			case DATE:
-				DateTime endDate = DateTime.parse(repeatingEnd.get("endDate").getAsString(), DateTimeFormat.forPattern("yyyy-MM-dd"));
-				endOption = new RepeatingEndDate(endDate);
-				break;
-		}
-
-		RepeatingOption repeatingOption = new RepeatingOption();
-		repeatingOption.setStartDate(startDate);
-		repeatingOption.setEndOption(endOption);
-		repeatingOption.setModifier(modifier);
-
-		return repeatingOption;
-	}
-
-	protected List<Tag> parseTags(JsonObject transaction)
-	{
-		List<Tag> parsedTags = new ArrayList<>();
-		JsonArray tags = transaction.get("tags").getAsJsonArray();
-		for(JsonElement currentTag : tags)
-		{
-			parsedTags.add(new Gson().fromJson(currentTag, Tag.class));
-		}
-
-		return parsedTags;
-	}
-
-	protected Category getCategoryByID(int ID)
-	{
-		for(Category category : categories)
-		{
-			if(category.getID() == ID)
-			{
-				return category;
-			}
-		}
-
-		return null;
-	}
-
-	protected Account getAccountByID(int ID)
-	{
-		for(Account account : accounts)
-		{
-			if(account.getID() == ID)
-			{
-				return account;
-			}
-		}
-
-		return null;
-	}
-}
\ No newline at end of file
diff --git a/src/main/java/de/deadlocker8/budgetmaster/database/legacy/LegacyParser.java b/src/main/java/de/deadlocker8/budgetmaster/database/legacy/LegacyParser.java
deleted file mode 100644
index 372c8ccd3..000000000
--- a/src/main/java/de/deadlocker8/budgetmaster/database/legacy/LegacyParser.java
+++ /dev/null
@@ -1,255 +0,0 @@
-package de.deadlocker8.budgetmaster.database.legacy;
-
-import com.google.gson.JsonArray;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonObject;
-import com.google.gson.JsonParser;
-import de.deadlocker8.budgetmaster.database.Database;
-import de.deadlocker8.budgetmaster.accounts.Account;
-import de.deadlocker8.budgetmaster.accounts.AccountType;
-import de.deadlocker8.budgetmaster.categories.Category;
-import de.deadlocker8.budgetmaster.categories.CategoryType;
-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;
-import de.deadlocker8.budgetmaster.repeating.modifier.RepeatingModifierDays;
-import de.deadlocker8.budgetmaster.repeating.modifier.RepeatingModifierMonths;
-import org.joda.time.DateTime;
-import org.joda.time.format.DateTimeFormat;
-
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-@SuppressWarnings("deprecation")
-public class LegacyParser
-{
-	private final String DATE_FORMAT = "yyyy-MM-dd";
-
-	private Account account;
-	private String jsonString;
-	private List<Category> categories;
-	private List<Tag> tags;
-	private List<TagMatch> tagMatches;
-	private Category categoryNone;
-
-	public LegacyParser(String json, Category categoryNone)
-	{
-		this.jsonString = json;
-		this.account = new Account("LEGACY_IMPORT", AccountType.CUSTOM);
-		this.categoryNone = categoryNone;
-	}
-
-	public Database parseDatabaseFromJSON()
-	{
-		JsonObject root = JsonParser.parseString(jsonString).getAsJsonObject();
-		categories = new ArrayList<>(parseCategories(root));
-		tags = parseTags(root);
-		tagMatches = parseTagMatches(root);
-		List<Transaction> transactions = parsePayments(root);
-
-		List<Account> accounts = new ArrayList<>();
-		accounts.add(account);
-
-		return new Database(categories, accounts, transactions, new ArrayList<>(), new ArrayList<>(), new ArrayList<>());
-	}
-
-	private Set<Category> parseCategories(JsonObject root)
-	{
-		Set<Category> parsedCategories = new HashSet<>();
-		JsonArray jsonCategories = root.get("categories").getAsJsonArray();
-		for(JsonElement currentCategory : jsonCategories)
-		{
-			int ID = currentCategory.getAsJsonObject().get("ID").getAsInt();
-			String name = currentCategory.getAsJsonObject().get("name").getAsString();
-			String color = currentCategory.getAsJsonObject().get("color").getAsString();
-
-			if(name.equals("NONE") || name.equals("Übertrag")|| name.equals("Rest"))
-			{
-				continue;
-			}
-
-			Category category = new Category(name, color, CategoryType.CUSTOM);
-			category.setID(ID);
-			parsedCategories.add(category);
-		}
-
-		return parsedCategories;
-	}
-
-	private List<Tag> parseTags(JsonObject root)
-	{
-		List<Tag> parsedTags = new ArrayList<>();
-		JsonArray jsonTags = root.get("tags").getAsJsonArray();
-		for(JsonElement currentTag : jsonTags)
-		{
-			int ID = currentTag.getAsJsonObject().get("ID").getAsInt();
-			String name = currentTag.getAsJsonObject().get("name").getAsString();
-
-			parsedTags.add(new Tag(ID, name));
-		}
-
-		return parsedTags;
-	}
-
-	private List<TagMatch> parseTagMatches(JsonObject root)
-	{
-		List<TagMatch> parsedTagMatches = new ArrayList<>();
-		JsonArray jsonTagMatches = root.get("tagMatches").getAsJsonArray();
-		for(JsonElement currentTagMatch : jsonTagMatches)
-		{
-			int tagID = currentTagMatch.getAsJsonObject().get("tagID").getAsInt();
-			int paymentID = currentTagMatch.getAsJsonObject().get("paymentID").getAsInt();
-			int repeatingPaymentID = currentTagMatch.getAsJsonObject().get("repeatingPaymentID").getAsInt();
-
-			parsedTagMatches.add(new TagMatch(getTagByID(tagID).getName(), paymentID, repeatingPaymentID));
-		}
-
-		return parsedTagMatches;
-	}
-
-	private List<Transaction> parsePayments(JsonObject root)
-	{
-		List<Transaction> parsedTransactions = new ArrayList<>();
-		parsedTransactions.addAll(parseNormalPayments(root));
-		parsedTransactions.addAll(parseRepeatingPayments(root));
-
-		return parsedTransactions;
-	}
-
-	private List<Transaction> parseNormalPayments(JsonObject root)
-	{
-		List<Transaction> parsedTransactions = new ArrayList<>();
-		JsonArray payments = root.get("normalPayments").getAsJsonArray();
-		for(JsonElement currentPayment : payments)
-		{
-			int ID = currentPayment.getAsJsonObject().get("ID").getAsInt();
-			int amount = currentPayment.getAsJsonObject().get("amount").getAsInt();
-			String date = currentPayment.getAsJsonObject().get("date").getAsString();
-			int categoryID = currentPayment.getAsJsonObject().get("categoryID").getAsInt();
-			String name = currentPayment.getAsJsonObject().get("name").getAsString();
-			String description = currentPayment.getAsJsonObject().get("description").getAsString();
-
-			Transaction transaction = new Transaction();
-			transaction.setAmount(amount);
-			transaction.setName(name);
-			transaction.setDescription(description);
-			transaction.setCategory(getCategoryByID(categoryID));
-			transaction.setAccount(account);
-			transaction.setRepeatingOption(null);
-			transaction.setTags(getTagsByPaymentID(ID));
-
-			DateTime parsedDate = DateTime.parse(date, DateTimeFormat.forPattern(DATE_FORMAT));
-			transaction.setDate(parsedDate);
-
-			parsedTransactions.add(transaction);
-		}
-
-		return parsedTransactions;
-	}
-
-	private List<Transaction> parseRepeatingPayments(JsonObject root)
-	{
-		List<Transaction> parsedTransactions = new ArrayList<>();
-		JsonArray payments = root.get("repeatingPayments").getAsJsonArray();
-		for(JsonElement currentPayment : payments)
-		{
-			int ID = currentPayment.getAsJsonObject().get("ID").getAsInt();
-			int amount = currentPayment.getAsJsonObject().get("amount").getAsInt();
-			String date = currentPayment.getAsJsonObject().get("date").getAsString();
-			int categoryID = currentPayment.getAsJsonObject().get("categoryID").getAsInt();
-			String name = currentPayment.getAsJsonObject().get("name").getAsString();
-			String description = currentPayment.getAsJsonObject().get("description").getAsString();
-
-			Transaction transaction = new Transaction();
-			transaction.setAmount(amount);
-			transaction.setName(name);
-			transaction.setDescription(description);
-			transaction.setCategory(getCategoryByID(categoryID));
-			transaction.setTags(getTagsByPaymentID(ID));
-			transaction.setAccount(account);
-
-			DateTime parsedDate = DateTime.parse(date, DateTimeFormat.forPattern(DATE_FORMAT));
-			transaction.setDate(parsedDate);
-
-			transaction.setRepeatingOption(parseRepeatingOption(currentPayment.getAsJsonObject(), parsedDate));
-
-			parsedTransactions.add(transaction);
-		}
-
-		return parsedTransactions;
-	}
-
-	private RepeatingOption parseRepeatingOption(JsonObject repeatingPayment, DateTime startDate)
-	{
-		RepeatingOption repeatingOption = new RepeatingOption();
-		repeatingOption.setStartDate(startDate);
-
-		// end option
-		if(repeatingPayment.has("repeatEndDate"))
-		{
-			String repeatEndDate = repeatingPayment.get("repeatEndDate").getAsString();
-			repeatingOption.setEndOption(new RepeatingEndDate(DateTime.parse(repeatEndDate, DateTimeFormat.forPattern(DATE_FORMAT))));
-		}
-		else
-		{
-			repeatingOption.setEndOption(new RepeatingEndNever());
-		}
-
-		// modifier
-		int repeatMonthDay = repeatingPayment.get("repeatMonthDay").getAsInt();
-		if(repeatMonthDay == 0)
-		{
-			int repeatInterval = repeatingPayment.get("repeatInterval").getAsInt();
-			repeatingOption.setModifier(new RepeatingModifierDays(repeatInterval));
-		}
-		else
-		{
-			repeatingOption.setModifier(new RepeatingModifierMonths(1));
-		}
-
-		return repeatingOption;
-	}
-
-	private Category getCategoryByID(int ID)
-	{
-		for(Category category : categories)
-		{
-			if(category.getID() == ID)
-			{
-				return category;
-			}
-		}
-
-		return categoryNone;
-	}
-
-	private Tag getTagByID(int ID)
-	{
-		for(Tag tag : tags)
-		{
-			if(tag.getID() == ID)
-			{
-				return tag;
-			}
-		}
-
-		return null;
-	}
-
-	private List<de.deadlocker8.budgetmaster.tags.Tag> getTagsByPaymentID(int paymentID)
-	{
-		List<de.deadlocker8.budgetmaster.tags.Tag> paymentTags = new ArrayList<>();
-		for(TagMatch tagMatch : tagMatches)
-		{
-			if(tagMatch.getPaymentID() == paymentID)
-			{
-				paymentTags.add(new de.deadlocker8.budgetmaster.tags.Tag(tagMatch.getTagName()));
-			}
-		}
-
-		return paymentTags;
-	}
-}
\ No newline at end of file
diff --git a/src/main/java/de/deadlocker8/budgetmaster/database/legacy/Tag.java b/src/main/java/de/deadlocker8/budgetmaster/database/legacy/Tag.java
deleted file mode 100644
index f33369198..000000000
--- a/src/main/java/de/deadlocker8/budgetmaster/database/legacy/Tag.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package de.deadlocker8.budgetmaster.database.legacy;
-
-@Deprecated
-public class Tag
-{
-	private int ID;
-	private String name;
-
-	public Tag(int ID, String name)
-	{
-		this.ID = ID;
-		this.name = name;
-	}
-
-	public int getID()
-	{
-		return ID;
-	}
-
-	public String getName()
-	{
-		return name;
-	}
-}
\ No newline at end of file
diff --git a/src/main/java/de/deadlocker8/budgetmaster/database/legacy/TagMatch.java b/src/main/java/de/deadlocker8/budgetmaster/database/legacy/TagMatch.java
deleted file mode 100644
index 516e4848c..000000000
--- a/src/main/java/de/deadlocker8/budgetmaster/database/legacy/TagMatch.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package de.deadlocker8.budgetmaster.database.legacy;
-
-@Deprecated
-public class TagMatch
-{
-	private String tagName;
-	private int paymentID;
-	private int repeatingPaymentID;
-
-	public TagMatch(String tagName, int paymentID, int repeatingPaymentID)
-	{
-		this.tagName = tagName;
-		this.paymentID = paymentID;
-		this.repeatingPaymentID = repeatingPaymentID;
-	}
-
-	public String getTagName()
-	{
-		return tagName;
-	}
-
-	public void setTagName(String tagName)
-	{
-		this.tagName = tagName;
-	}
-
-	public int getPaymentID()
-	{
-		return paymentID;
-	}
-
-	public int getRepeatingPaymentID()
-	{
-		return repeatingPaymentID;
-	}
-}
\ No newline at end of file
diff --git a/src/test/java/de/deadlocker8/budgetmaster/unit/database/DatabaseParser_v3Test.java b/src/test/java/de/deadlocker8/budgetmaster/unit/database/DatabaseParser_v3Test.java
deleted file mode 100644
index 8c95337e1..000000000
--- a/src/test/java/de/deadlocker8/budgetmaster/unit/database/DatabaseParser_v3Test.java
+++ /dev/null
@@ -1,204 +0,0 @@
-package de.deadlocker8.budgetmaster.unit.database;
-
-import de.deadlocker8.budgetmaster.accounts.Account;
-import de.deadlocker8.budgetmaster.accounts.AccountType;
-import de.deadlocker8.budgetmaster.categories.Category;
-import de.deadlocker8.budgetmaster.categories.CategoryType;
-import de.deadlocker8.budgetmaster.database.Database;
-import de.deadlocker8.budgetmaster.database.DatabaseParser_v3;
-import de.deadlocker8.budgetmaster.repeating.RepeatingOption;
-import de.deadlocker8.budgetmaster.repeating.endoption.RepeatingEndAfterXTimes;
-import de.deadlocker8.budgetmaster.repeating.modifier.RepeatingModifierDays;
-import de.deadlocker8.budgetmaster.tags.Tag;
-import de.deadlocker8.budgetmaster.transactions.Transaction;
-import de.thecodelabs.utils.util.Localization;
-import de.thecodelabs.utils.util.Localization.LocalizationDelegate;
-import org.joda.time.DateTime;
-import org.joda.time.format.DateTimeFormat;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.IOException;
-import java.net.URISyntaxException;
-import java.nio.file.Files;
-import java.nio.file.Paths;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Locale;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-public class DatabaseParser_v3Test
-{
-	@Before
-	public void before()
-	{
-		Localization.setDelegate(new LocalizationDelegate()
-		{
-			@Override
-			public Locale getLocale()
-			{
-				return Locale.ENGLISH;
-			}
-
-			@Override
-			public String getBaseResource()
-			{
-				return "languages/base";
-			}
-		});
-		Localization.load();
-	}
-
-	@Test
-	public void test_Categories()
-	{
-		try
-		{
-			String json = new String(Files.readAllBytes(Paths.get(getClass().getClassLoader().getResource("DatabaseParser_v3Test.json").toURI())));
-			DatabaseParser_v3 importer = new DatabaseParser_v3(json);
-			Database database = importer.parseDatabaseFromJSON();
-
-			final Category categoryNone = new Category("Keine Kategorie", "#FFFFFF", CategoryType.NONE);
-			categoryNone.setID(1);
-
-			final Category categoryRest = new Category("Übertrag", "#FFFF00", CategoryType.REST);
-			categoryRest.setID(2);
-
-			final Category category3 = new Category("0815", "#ffcc00", CategoryType.CUSTOM);
-			category3.setID(3);
-
-			assertThat(database.getCategories()).hasSize(3)
-					.containsExactlyInAnyOrder(categoryNone, categoryRest, category3);
-		}
-		catch(IOException | URISyntaxException e)
-		{
-			e.printStackTrace();
-		}
-	}
-
-	@Test
-	public void test_Accounts()
-	{
-		try
-		{
-			String json = new String(Files.readAllBytes(Paths.get(getClass().getClassLoader().getResource("DatabaseParser_v3Test.json").toURI())));
-			DatabaseParser_v3 importer = new DatabaseParser_v3(json);
-			Database database = importer.parseDatabaseFromJSON();
-
-			final Account expectedAccount1 = new Account("Placeholder", AccountType.ALL);
-			expectedAccount1.setID(1);
-
-			final Account expectedAccount2 = new Account("Default", AccountType.CUSTOM);
-			expectedAccount2.setID(2);
-
-			final Account expectedAccount3 = new Account("Second Account", AccountType.CUSTOM);
-			expectedAccount3.setID(3);
-
-			assertThat(database.getAccounts()).hasSize(3)
-					.containsExactlyInAnyOrder(expectedAccount1, expectedAccount2, expectedAccount3);
-		}
-		catch(IOException | URISyntaxException e)
-		{
-			e.printStackTrace();
-		}
-	}
-
-	@Test
-	public void test_Transactions()
-	{
-		try
-		{
-			String json = new String(Files.readAllBytes(Paths.get(getClass().getClassLoader().getResource("DatabaseParser_v3Test.json").toURI())));
-			DatabaseParser_v3 importer = new DatabaseParser_v3(json);
-			Database database = importer.parseDatabaseFromJSON();
-
-			Account account1 = new Account("Default", AccountType.CUSTOM);
-			account1.setID(2);
-
-			Account account2 = new Account("Second Account", AccountType.CUSTOM);
-			account2.setID(3);
-
-			Category categoryNone = new Category("Keine Kategorie", "#FFFFFF", CategoryType.NONE);
-			categoryNone.setID(1);
-
-			Category category3 = new Category("0815", "#ffcc00", CategoryType.CUSTOM);
-			category3.setID(3);
-
-			Transaction normalTransaction_1 = new Transaction();
-			normalTransaction_1.setAmount(35000);
-			normalTransaction_1.setDate(DateTime.parse("2018-03-13", DateTimeFormat.forPattern("yyyy-MM-dd")));
-			normalTransaction_1.setCategory(categoryNone);
-			normalTransaction_1.setName("Income");
-			normalTransaction_1.setDescription("Lorem Ipsum");
-			normalTransaction_1.setTags(new ArrayList<>());
-			normalTransaction_1.setAccount(account1);
-
-			Transaction normalTransaction_2 = new Transaction();
-			normalTransaction_2.setAmount(-2000);
-			normalTransaction_2.setDate(DateTime.parse("2018-06-15", DateTimeFormat.forPattern("yyyy-MM-dd")));
-			normalTransaction_2.setName("Simple");
-			normalTransaction_2.setDescription("");
-			normalTransaction_2.setAccount(account2);
-			normalTransaction_2.setCategory(category3);
-
-			List<Tag> tags = new ArrayList<>();
-			Tag tag = new Tag("0815");
-			tag.setID(1);
-			tags.add(tag);
-			normalTransaction_2.setTags(tags);
-
-			Transaction repeatingTransaction_1 = new Transaction();
-			repeatingTransaction_1.setAmount(-12300);
-			DateTime repeatingTransactionDate_1 = DateTime.parse("2018-03-13", DateTimeFormat.forPattern("yyyy-MM-dd"));
-			repeatingTransaction_1.setDate(repeatingTransactionDate_1);
-			repeatingTransaction_1.setCategory(categoryNone);
-			repeatingTransaction_1.setName("Test");
-			repeatingTransaction_1.setDescription("");
-			repeatingTransaction_1.setAccount(account1);
-			RepeatingOption repeatingOption_1 = new RepeatingOption();
-			repeatingOption_1.setModifier(new RepeatingModifierDays(10));
-			repeatingOption_1.setStartDate(repeatingTransactionDate_1);
-			repeatingOption_1.setEndOption(new RepeatingEndAfterXTimes(2));
-			repeatingTransaction_1.setRepeatingOption(repeatingOption_1);
-			repeatingTransaction_1.setTags(new ArrayList<>());
-
-			Transaction repeatingTransaction_2 = new Transaction();
-			repeatingTransaction_2.setAmount(-12300);
-			DateTime repeatingTransactionDate_2 = DateTime.parse("2018-03-23", DateTimeFormat.forPattern("yyyy-MM-dd"));
-			repeatingTransaction_2.setDate(repeatingTransactionDate_2);
-			repeatingTransaction_2.setCategory(categoryNone);
-			repeatingTransaction_2.setName("Test");
-			repeatingTransaction_2.setDescription("");
-			repeatingTransaction_2.setAccount(account1);
-			RepeatingOption repeatingOption_2 = new RepeatingOption();
-			repeatingOption_2.setModifier(new RepeatingModifierDays(10));
-			repeatingOption_2.setStartDate(repeatingTransactionDate_2);
-			repeatingOption_2.setEndOption(new RepeatingEndAfterXTimes(2));
-			repeatingTransaction_2.setRepeatingOption(repeatingOption_2);
-			repeatingTransaction_2.setTags(new ArrayList<>());
-
-			Transaction transferTransaction = new Transaction();
-			transferTransaction.setAmount(-250);
-			transferTransaction.setDate(DateTime.parse("2018-06-15", DateTimeFormat.forPattern("yyyy-MM-dd")));
-			transferTransaction.setName("Transfer");
-			transferTransaction.setDescription("");
-			transferTransaction.setAccount(account2);
-			transferTransaction.setTransferAccount(account1);
-			transferTransaction.setCategory(category3);
-			transferTransaction.setTags(new ArrayList<>());
-
-			assertThat(database.getTransactions()).hasSize(6)
-					.contains(normalTransaction_1,
-							normalTransaction_2,
-							repeatingTransaction_1,
-							repeatingTransaction_2,
-							transferTransaction);
-
-		}
-		catch(IOException | URISyntaxException e)
-		{
-			e.printStackTrace();
-		}
-	}
-}
-- 
GitLab