Skip to content
Snippets Groups Projects
Commit 62d1116a authored by Robert Goldmann's avatar Robert Goldmann
Browse files

#598 - added database version 6 to database parser

parent 23876821
No related branches found
No related tags found
No related merge requests found
......@@ -5,6 +5,7 @@ import com.google.gson.JsonParser;
import de.deadlocker8.budgetmaster.database.model.BackupDatabase;
import de.deadlocker8.budgetmaster.database.model.v4.BackupDatabase_v4;
import de.deadlocker8.budgetmaster.database.model.v5.BackupDatabase_v5;
import de.deadlocker8.budgetmaster.database.model.v6.BackupDatabase_v6;
import de.thecodelabs.utils.util.Localization;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......@@ -50,6 +51,13 @@ public class DatabaseParser
importedDatabase = parsedDatabase;
}
if(version == 6)
{
BackupDatabase_v6 parsedDatabase = new DatabaseParser_v6(jsonString).parseDatabaseFromJSON();
LOGGER.debug(MessageFormat.format("Parsed database with {0} transactions, {1} categories, {2} accounts, {3} templates {4} charts and {5} images", parsedDatabase.getTransactions().size(), parsedDatabase.getCategories().size(), parsedDatabase.getAccounts().size(), parsedDatabase.getTemplates().size(), parsedDatabase.getCharts().size(), parsedDatabase.getImages().size()));
importedDatabase = parsedDatabase;
}
if(importedDatabase == null)
{
throw new IllegalArgumentException(Localization.getString("error.database.import.unknown.version"));
......
package de.deadlocker8.budgetmaster.database;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import de.deadlocker8.budgetmaster.database.model.v5.BackupCategory_v5;
import de.deadlocker8.budgetmaster.database.model.v5.BackupChart_v5;
import de.deadlocker8.budgetmaster.database.model.v5.BackupImage_v5;
import de.deadlocker8.budgetmaster.database.model.v6.BackupAccount_v6;
import de.deadlocker8.budgetmaster.database.model.v6.BackupDatabase_v6;
import de.deadlocker8.budgetmaster.database.model.v6.BackupTemplate_v6;
import de.deadlocker8.budgetmaster.database.model.v6.BackupTransaction_v6;
public class DatabaseParser_v6
{
private final String jsonString;
private BackupDatabase_v6 database;
public DatabaseParser_v6(String json)
{
this.jsonString = json;
this.database = new BackupDatabase_v6();
}
public BackupDatabase_v6 parseDatabaseFromJSON() throws IllegalArgumentException
{
database = new BackupDatabase_v6();
final JsonObject root = JsonParser.parseString(jsonString).getAsJsonObject();
database.setImages(BackupItemParser.parseItems(root.get("images").getAsJsonArray(), BackupImage_v5.class));
database.setAccounts(BackupItemParser.parseItems(root.get("accounts").getAsJsonArray(), BackupAccount_v6.class));
database.setCategories(BackupItemParser.parseItems(root.get("categories").getAsJsonArray(), BackupCategory_v5.class));
database.setTransactions(BackupItemParser.parseItems(root.get("transactions").getAsJsonArray(), BackupTransaction_v6.class));
database.setTemplates(BackupItemParser.parseItems(root.get("templates").getAsJsonArray(), BackupTemplate_v6.class));
database.setCharts(BackupItemParser.parseItems(root.get("charts").getAsJsonArray(), BackupChart_v5.class));
return database;
}
}
\ No newline at end of file
......@@ -47,6 +47,16 @@ public class DatabaseParserTest
Localization.load();
}
@Test
public void test_v6() throws URISyntaxException, IOException
{
String json = new String(Files.readAllBytes(Paths.get(getClass().getClassLoader().getResource("DatabaseParser_v6Test.json").toURI())));
DatabaseParser importer = new DatabaseParser(json);
final InternalDatabase database = importer.parseDatabaseFromJSON();
assertThat(database.getTransactions())
.hasSize(4);
}
@Test
public void test_v5() throws URISyntaxException, IOException
{
......
This diff is collapsed.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment