From 58d1dfcecfd79b4d77194b1f0ac2231f61480e04 Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Sun, 23 May 2021 15:17:02 +0200
Subject: [PATCH] #598 - added upgrade methods for backup models v5 to v6

---
 .../database/model/v5/BackupAccount_v5.java   |  9 ++++-
 .../database/model/v5/BackupTemplate_v5.java  | 35 +++++++++++++++++--
 .../model/v5/BackupTransaction_v5.java        | 16 ++++++++-
 3 files changed, 56 insertions(+), 4 deletions(-)

diff --git a/src/main/java/de/deadlocker8/budgetmaster/database/model/v5/BackupAccount_v5.java b/src/main/java/de/deadlocker8/budgetmaster/database/model/v5/BackupAccount_v5.java
index 2c4b8b52c..d10a40b42 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/database/model/v5/BackupAccount_v5.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/database/model/v5/BackupAccount_v5.java
@@ -2,10 +2,12 @@ package de.deadlocker8.budgetmaster.database.model.v5;
 
 import de.deadlocker8.budgetmaster.accounts.AccountState;
 import de.deadlocker8.budgetmaster.accounts.AccountType;
+import de.deadlocker8.budgetmaster.database.model.Upgradeable;
+import de.deadlocker8.budgetmaster.database.model.v6.BackupAccount_v6;
 
 import java.util.Objects;
 
-public class BackupAccount_v5
+public class BackupAccount_v5 implements Upgradeable<BackupAccount_v6>
 {
 	private Integer ID;
 	private String name;
@@ -103,4 +105,9 @@ public class BackupAccount_v5
 				", icon=" + icon +
 				'}';
 	}
+
+	public BackupAccount_v6 upgrade()
+	{
+		return new BackupAccount_v6(ID, name, accountState, type, icon.getID());
+	}
 }
diff --git a/src/main/java/de/deadlocker8/budgetmaster/database/model/v5/BackupTemplate_v5.java b/src/main/java/de/deadlocker8/budgetmaster/database/model/v5/BackupTemplate_v5.java
index d362f2d18..2b846d174 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/database/model/v5/BackupTemplate_v5.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/database/model/v5/BackupTemplate_v5.java
@@ -1,12 +1,13 @@
 package de.deadlocker8.budgetmaster.database.model.v5;
 
+import de.deadlocker8.budgetmaster.database.model.Upgradeable;
 import de.deadlocker8.budgetmaster.database.model.v4.BackupTag_v4;
-import de.deadlocker8.budgetmaster.tags.Tag;
+import de.deadlocker8.budgetmaster.database.model.v6.BackupTemplate_v6;
 
 import java.util.List;
 import java.util.Objects;
 
-public class BackupTemplate_v5
+public class BackupTemplate_v5 implements Upgradeable<BackupTemplate_v6>
 {
 	private String templateName;
 	private Integer amount;
@@ -168,4 +169,34 @@ public class BackupTemplate_v5
 				", transferAccount=" + transferAccount +
 				'}';
 	}
+
+	@Override
+	public BackupTemplate_v6 upgrade()
+	{
+		Integer accountID = null;
+		if(account != null)
+		{
+			accountID = account.getID();
+		}
+
+		Integer categoryID = null;
+		if(category != null)
+		{
+			categoryID = category.getID();
+		}
+
+		Integer iconID = null;
+		if(icon != null)
+		{
+			iconID = icon.getID();
+		}
+
+		Integer transferAccountID = null;
+		if(transferAccount != null)
+		{
+			transferAccountID = transferAccount.getID();
+		}
+
+		return new BackupTemplate_v6(templateName, amount, isExpenditure, accountID, categoryID, name, description, iconID, tags, transferAccountID);
+	}
 }
diff --git a/src/main/java/de/deadlocker8/budgetmaster/database/model/v5/BackupTransaction_v5.java b/src/main/java/de/deadlocker8/budgetmaster/database/model/v5/BackupTransaction_v5.java
index 5243376b4..d6043623c 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/database/model/v5/BackupTransaction_v5.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/database/model/v5/BackupTransaction_v5.java
@@ -1,12 +1,14 @@
 package de.deadlocker8.budgetmaster.database.model.v5;
 
+import de.deadlocker8.budgetmaster.database.model.Upgradeable;
 import de.deadlocker8.budgetmaster.database.model.v4.BackupRepeatingOption_v4;
 import de.deadlocker8.budgetmaster.database.model.v4.BackupTag_v4;
+import de.deadlocker8.budgetmaster.database.model.v6.BackupTransaction_v6;
 
 import java.util.List;
 import java.util.Objects;
 
-public class BackupTransaction_v5
+public class BackupTransaction_v5 implements Upgradeable<BackupTransaction_v6>
 {
 	private Integer amount;
 	private Boolean isExpenditure;
@@ -168,4 +170,16 @@ public class BackupTransaction_v5
 				", transferAccount=" + transferAccount +
 				'}';
 	}
+
+	@Override
+	public BackupTransaction_v6 upgrade()
+	{
+		Integer transferAccountID = null;
+		if(transferAccount != null)
+		{
+			transferAccountID = transferAccount.getID();
+		}
+
+		return new BackupTransaction_v6(amount, isExpenditure, date, account.getID(), category.getID(), name, description, tags, repeatingOption, transferAccountID);
+	}
 }
-- 
GitLab