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 e796b16f9fbee6cbcab6dfc903f28367935edb54..c5e86fa870318db466922bed4d479f9a9792e384 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/database/DatabaseParser_v5.java +++ b/src/main/java/de/deadlocker8/budgetmaster/database/DatabaseParser_v5.java @@ -2,15 +2,12 @@ package de.deadlocker8.budgetmaster.database; import com.google.gson.*; import de.deadlocker8.budgetmaster.database.model.v5.*; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import java.util.ArrayList; import java.util.List; public class DatabaseParser_v5 { - final Logger LOGGER = LoggerFactory.getLogger(this.getClass()); private final String jsonString; private BackupDatabase_v5 database; @@ -26,87 +23,24 @@ public class DatabaseParser_v5 database = new BackupDatabase_v5(); final JsonObject root = JsonParser.parseString(jsonString).getAsJsonObject(); - database.setImages(parseImages(root)); - database.setAccounts(parseAccounts(root)); - database.setCategories(parseCategories(root)); - database.setTransactions(parseTransactions(root)); - database.setTemplates(parseTemplates(root)); - database.setCharts(parseCharts(root)); + 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)); return database; } - private List<BackupAccount_v5> parseAccounts(JsonObject root) + private <T> List<T> parseItems(JsonArray jsonArray, Class<T> itemType) { - List<BackupAccount_v5> parsedAccounts = new ArrayList<>(); - JsonArray accounts = root.get("accounts").getAsJsonArray(); - for(JsonElement currentAccount : accounts) + List<T> parsedItems = new ArrayList<>(); + for(JsonElement currentItem : jsonArray) { - parsedAccounts.add(new Gson().fromJson(currentAccount, BackupAccount_v5.class)); + parsedItems.add(new Gson().fromJson(currentItem, itemType)); } - return parsedAccounts; - } - - private List<BackupCategory_v5> parseCategories(JsonObject root) - { - List<BackupCategory_v5> parsedCategories = new ArrayList<>(); - JsonArray jsonCategories = root.get("categories").getAsJsonArray(); - for(JsonElement currentCategory : jsonCategories) - { - parsedCategories.add(new Gson().fromJson(currentCategory, BackupCategory_v5.class)); - } - - return parsedCategories; - } - - private List<BackupTransaction_v5> parseTransactions(JsonObject root) - { - List<BackupTransaction_v5> parsedTransactions = new ArrayList<>(); - JsonArray transactionsToImport = root.get("transactions").getAsJsonArray(); - for(JsonElement currentTransaction : transactionsToImport) - { - parsedTransactions.add(new Gson().fromJson(currentTransaction, BackupTransaction_v5.class)); - } - - return parsedTransactions; - } - - private List<BackupChart_v5> parseCharts(JsonObject root) - { - List<BackupChart_v5> parsedCharts = new ArrayList<>(); - - JsonArray chartsToImport = root.get("charts").getAsJsonArray(); - for(JsonElement currentChart : chartsToImport) - { - parsedCharts.add(new Gson().fromJson(currentChart, BackupChart_v5.class)); - } - - return parsedCharts; - } - - private List<BackupImage_v5> parseImages(JsonObject root) - { - List<BackupImage_v5> parsedImages = new ArrayList<>(); - - JsonArray imagesToImport = root.get("images").getAsJsonArray(); - for(JsonElement currentImage : imagesToImport) - { - parsedImages.add(new Gson().fromJson(currentImage, BackupImage_v5.class)); - } - - return parsedImages; - } - - private List<BackupTemplate_v5> parseTemplates(JsonObject root) - { - final List<BackupTemplate_v5> parsedTemplates = new ArrayList<>(); - final JsonArray templatesToImport = root.get("templates").getAsJsonArray(); - for(JsonElement currentTemplate : templatesToImport) - { - parsedTemplates.add(new Gson().fromJson(currentTemplate, BackupTemplate_v5.class)); - } - - return parsedTemplates; + return parsedItems; } } \ No newline at end of file