From b8317d7027fe395bfecff07424aea7af7d645f6a Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Sat, 22 May 2021 22:20:52 +0200
Subject: [PATCH] #598 - externalized item parsin helper method

---
 .../database/BackupItemParser.java            | 22 ++++++++++++++
 .../database/DatabaseParser_v5.java           | 29 +++++--------------
 2 files changed, 30 insertions(+), 21 deletions(-)
 create mode 100644 src/main/java/de/deadlocker8/budgetmaster/database/BackupItemParser.java

diff --git a/src/main/java/de/deadlocker8/budgetmaster/database/BackupItemParser.java b/src/main/java/de/deadlocker8/budgetmaster/database/BackupItemParser.java
new file mode 100644
index 000000000..c189b88ac
--- /dev/null
+++ b/src/main/java/de/deadlocker8/budgetmaster/database/BackupItemParser.java
@@ -0,0 +1,22 @@
+package de.deadlocker8.budgetmaster.database;
+
+import com.google.gson.Gson;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class BackupItemParser
+{
+	public static <T> List<T> parseItems(JsonArray jsonArray, Class<T> itemType)
+	{
+		List<T> parsedItems = new ArrayList<>();
+		for(JsonElement currentItem : jsonArray)
+		{
+			parsedItems.add(new Gson().fromJson(currentItem, itemType));
+		}
+
+		return parsedItems;
+	}
+}
diff --git a/src/main/java/de/deadlocker8/budgetmaster/database/DatabaseParser_v5.java b/src/main/java/de/deadlocker8/budgetmaster/database/DatabaseParser_v5.java
index c5e86fa87..df94a65f4 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/database/DatabaseParser_v5.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/database/DatabaseParser_v5.java
@@ -1,11 +1,9 @@
 package de.deadlocker8.budgetmaster.database;
 
-import com.google.gson.*;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
 import de.deadlocker8.budgetmaster.database.model.v5.*;
 
-import java.util.ArrayList;
-import java.util.List;
-
 public class DatabaseParser_v5
 {
 	private final String jsonString;
@@ -23,24 +21,13 @@ public class DatabaseParser_v5
 		database = new BackupDatabase_v5();
 
 		final JsonObject root = JsonParser.parseString(jsonString).getAsJsonObject();
-		database.setImages(parseItems(root.get("images").getAsJsonArray(), BackupImage_v5.class));
-		database.setAccounts(parseItems(root.get("accounts").getAsJsonArray(), BackupAccount_v5.class));
-		database.setCategories(parseItems(root.get("categories").getAsJsonArray(), BackupCategory_v5.class));
-		database.setTransactions(parseItems(root.get("transactions").getAsJsonArray(), BackupTransaction_v5.class));
-		database.setTemplates(parseItems(root.get("templates").getAsJsonArray(), BackupTemplate_v5.class));
-		database.setCharts(parseItems(root.get("charts").getAsJsonArray(), BackupChart_v5.class));
+		database.setImages(BackupItemParser.parseItems(root.get("images").getAsJsonArray(), BackupImage_v5.class));
+		database.setAccounts(BackupItemParser.parseItems(root.get("accounts").getAsJsonArray(), BackupAccount_v5.class));
+		database.setCategories(BackupItemParser.parseItems(root.get("categories").getAsJsonArray(), BackupCategory_v5.class));
+		database.setTransactions(BackupItemParser.parseItems(root.get("transactions").getAsJsonArray(), BackupTransaction_v5.class));
+		database.setTemplates(BackupItemParser.parseItems(root.get("templates").getAsJsonArray(), BackupTemplate_v5.class));
+		database.setCharts(BackupItemParser.parseItems(root.get("charts").getAsJsonArray(), BackupChart_v5.class));
 
 		return database;
 	}
-
-	private <T> List<T> parseItems(JsonArray jsonArray, Class<T> itemType)
-	{
-		List<T> parsedItems = new ArrayList<>();
-		for(JsonElement currentItem : jsonArray)
-		{
-			parsedItems.add(new Gson().fromJson(currentItem, itemType));
-		}
-
-		return parsedItems;
-	}
 }
\ No newline at end of file
-- 
GitLab