diff --git a/src/main/java/de/deadlocker8/budgetmaster/database/model/v4/BackupAccount_v4.java b/src/main/java/de/deadlocker8/budgetmaster/database/model/v4/BackupAccount_v4.java new file mode 100644 index 0000000000000000000000000000000000000000..1bb6d4aa6a148ce62897f1b6832c792cc6e53fd1 --- /dev/null +++ b/src/main/java/de/deadlocker8/budgetmaster/database/model/v4/BackupAccount_v4.java @@ -0,0 +1,87 @@ +package de.deadlocker8.budgetmaster.database.model.v4; + +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.v5.BackupAccount_v5; + +import java.util.Objects; + +public class BackupAccount_v4 implements Upgradeable<BackupAccount_v5> +{ + private Integer ID; + private String name; + private AccountType type; + + public BackupAccount_v4() + { + } + + public BackupAccount_v4(Integer ID, String name, AccountType type) + { + this.ID = ID; + this.name = name; + this.type = type; + } + + public Integer getID() + { + return ID; + } + + public void setID(Integer ID) + { + this.ID = ID; + } + + public String getName() + { + return name; + } + + public void setName(String name) + { + this.name = name; + } + + + public AccountType getType() + { + return type; + } + + public void setType(AccountType type) + { + this.type = type; + } + + @Override + public boolean equals(Object o) + { + if(this == o) return true; + if(o == null || getClass() != o.getClass()) return false; + BackupAccount_v4 that = (BackupAccount_v4) o; + return Objects.equals(ID, that.ID) && Objects.equals(name, that.name) && type == that.type; + } + + @Override + public int hashCode() + { + return Objects.hash(ID, name, type); + } + + @Override + public String toString() + { + return "BackupAccount_v4{" + + "ID=" + ID + + ", name='" + name + '\'' + + ", type=" + type + + '}'; + } + + public BackupAccount_v5 upgrade() + { + return new BackupAccount_v5(ID, name, AccountState.FULL_ACCESS, type, null); + } +} diff --git a/src/main/java/de/deadlocker8/budgetmaster/database/model/v4/BackupCategory_v4.java b/src/main/java/de/deadlocker8/budgetmaster/database/model/v4/BackupCategory_v4.java new file mode 100644 index 0000000000000000000000000000000000000000..d54af3e74c578eaa653873deded9d5e90bb733b1 --- /dev/null +++ b/src/main/java/de/deadlocker8/budgetmaster/database/model/v4/BackupCategory_v4.java @@ -0,0 +1,98 @@ +package de.deadlocker8.budgetmaster.database.model.v4; + +import de.deadlocker8.budgetmaster.categories.CategoryType; +import de.deadlocker8.budgetmaster.database.model.Upgradeable; +import de.deadlocker8.budgetmaster.database.model.v5.BackupCategory_v5; + +import java.util.Objects; + +public class BackupCategory_v4 implements Upgradeable<BackupCategory_v5> +{ + private Integer ID; + private String name; + private String color; + private CategoryType type; + + public BackupCategory_v4() + { + } + + public BackupCategory_v4(Integer ID, String name, String color, CategoryType type) + { + this.ID = ID; + this.name = name; + this.color = color; + this.type = type; + } + + public Integer getID() + { + return ID; + } + + public void setID(Integer ID) + { + this.ID = ID; + } + + public String getName() + { + return name; + } + + public void setName(String name) + { + this.name = name; + } + + public String getColor() + { + return color; + } + + public void setColor(String color) + { + this.color = color; + } + + public CategoryType getType() + { + return type; + } + + public void setType(CategoryType type) + { + this.type = type; + } + + @Override + public boolean equals(Object o) + { + if(this == o) return true; + if(o == null || getClass() != o.getClass()) return false; + BackupCategory_v4 that = (BackupCategory_v4) o; + return Objects.equals(ID, that.ID) && Objects.equals(name, that.name) && Objects.equals(color, that.color) && type == that.type; + } + + @Override + public int hashCode() + { + return Objects.hash(ID, name, color, type); + } + + @Override + public String toString() + { + return "BackupCategory_v4{" + + "ID=" + ID + + ", name='" + name + '\'' + + ", color='" + color + '\'' + + ", type=" + type + + '}'; + } + + public BackupCategory_v5 upgrade() + { + return new BackupCategory_v5(ID, name, color, type, null); + } +} diff --git a/src/main/java/de/deadlocker8/budgetmaster/database/model/v4/BackupDatabase_v4.java b/src/main/java/de/deadlocker8/budgetmaster/database/model/v4/BackupDatabase_v4.java new file mode 100644 index 0000000000000000000000000000000000000000..7d23f29c336cd494d321fbb7441b9bfd53530f73 --- /dev/null +++ b/src/main/java/de/deadlocker8/budgetmaster/database/model/v4/BackupDatabase_v4.java @@ -0,0 +1,109 @@ +package de.deadlocker8.budgetmaster.database.model.v4; + +import de.deadlocker8.budgetmaster.database.Database; +import de.deadlocker8.budgetmaster.database.model.BackupDatabase; +import de.deadlocker8.budgetmaster.database.model.Upgradeable; +import de.deadlocker8.budgetmaster.database.model.v5.BackupAccount_v5; +import de.deadlocker8.budgetmaster.database.model.v5.BackupCategory_v5; +import de.deadlocker8.budgetmaster.database.model.v5.BackupDatabase_v5; + +import java.util.ArrayList; +import java.util.List; + +public class BackupDatabase_v4 implements BackupDatabase +{ + private final int VERSION = 4; + + private List<BackupCategory_v4> categories; + private List<BackupAccount_v4> accounts; + private List<BackupTransaction_v4> transactions; + private List<BackupTemplate_v4> templates; + + public BackupDatabase_v4() + { + } + + public BackupDatabase_v4(List<BackupCategory_v4> categories, List<BackupAccount_v4> accounts, List<BackupTransaction_v4> transactions, List<BackupTemplate_v4> templates) + { + this.categories = categories; + this.accounts = accounts; + this.transactions = transactions; + this.templates = templates; + } + + public List<BackupCategory_v4> getCategories() + { + return categories; + } + + public void setCategories(List<BackupCategory_v4> categories) + { + this.categories = categories; + } + + public List<BackupAccount_v4> getAccounts() + { + return accounts; + } + + public void setAccounts(List<BackupAccount_v4> accounts) + { + this.accounts = accounts; + } + + public List<BackupTransaction_v4> getTransactions() + { + return transactions; + } + + public void setTransactions(List<BackupTransaction_v4> transactions) + { + this.transactions = transactions; + } + + public List<BackupTemplate_v4> getTemplates() + { + return templates; + } + + public void setTemplates(List<BackupTemplate_v4> templates) + { + this.templates = templates; + } + + @Override + public int getVersion() + { + return this.VERSION; + } + + public BackupDatabase upgrade() + { + final BackupDatabase_v5 upgradedDatabase = new BackupDatabase_v5(); + + upgradedDatabase.setCategories(upgradeItems(categories)); + upgradedDatabase.setAccounts(upgradeItems(accounts)); + upgradedDatabase.setTransactions(upgradeItems(transactions)); + upgradedDatabase.setTemplates(upgradeItems(templates)); + upgradedDatabase.setCharts(new ArrayList<>()); + upgradedDatabase.setImages(new ArrayList<>()); + + return upgradedDatabase; + } + + private <T> List<T> upgradeItems(List<? extends Upgradeable<T>> items) + { + List<T> upgradedItems = new ArrayList<>(); + for(Upgradeable<T> item : items) + { + upgradedItems.add(item.upgrade()); + } + return upgradedItems; + } + + @Override + public Database convert() + { + return null; + } +} diff --git a/src/main/java/de/deadlocker8/budgetmaster/database/model/v4/BackupTemplate_v4.java b/src/main/java/de/deadlocker8/budgetmaster/database/model/v4/BackupTemplate_v4.java new file mode 100644 index 0000000000000000000000000000000000000000..e7d351cfc9a0377473197aa11d280879a0a984f8 --- /dev/null +++ b/src/main/java/de/deadlocker8/budgetmaster/database/model/v4/BackupTemplate_v4.java @@ -0,0 +1,170 @@ +package de.deadlocker8.budgetmaster.database.model.v4; + +import de.deadlocker8.budgetmaster.database.model.Upgradeable; +import de.deadlocker8.budgetmaster.database.model.v5.BackupAccount_v5; +import de.deadlocker8.budgetmaster.database.model.v5.BackupCategory_v5; +import de.deadlocker8.budgetmaster.database.model.v5.BackupTemplate_v5; +import de.deadlocker8.budgetmaster.tags.Tag; + +import java.util.List; +import java.util.Objects; + +public class BackupTemplate_v4 implements BackupTransactionBase_v4, Upgradeable<BackupTemplate_v5> +{ + private String templateName; + private Integer amount; + private Boolean isExpenditure; + private BackupAccount_v4 account; + private BackupCategory_v4 category; + private String name; + private String description; + private List<Tag> tags; + private BackupAccount_v4 transferAccount; + + public BackupTemplate_v4() + { + } + + public String getTemplateName() + { + return templateName; + } + + public void setTemplateName(String templateName) + { + this.templateName = templateName; + } + + public Integer getAmount() + { + return amount; + } + + public void setAmount(Integer amount) + { + this.amount = amount; + } + + public Boolean getExpenditure() + { + return isExpenditure; + } + + public void setExpenditure(Boolean expenditure) + { + isExpenditure = expenditure; + } + + public BackupAccount_v4 getAccount() + { + return account; + } + + public void setAccount(BackupAccount_v4 account) + { + this.account = account; + } + + public BackupCategory_v4 getCategory() + { + return category; + } + + public void setCategory(BackupCategory_v4 category) + { + this.category = category; + } + + public String getName() + { + return name; + } + + public void setName(String name) + { + this.name = name; + } + + public String getDescription() + { + return description; + } + + public void setDescription(String description) + { + this.description = description; + } + + public List<Tag> getTags() + { + return tags; + } + + public void setTags(List<Tag> tags) + { + this.tags = tags; + } + + public BackupAccount_v4 getTransferAccount() + { + return transferAccount; + } + + public void setTransferAccount(BackupAccount_v4 transferAccount) + { + this.transferAccount = transferAccount; + } + + @Override + public boolean equals(Object o) + { + if(this == o) return true; + if(o == null || getClass() != o.getClass()) return false; + BackupTemplate_v4 that = (BackupTemplate_v4) o; + return Objects.equals(templateName, that.templateName) && Objects.equals(amount, that.amount) && Objects.equals(isExpenditure, that.isExpenditure) && Objects.equals(account, that.account) && Objects.equals(category, that.category) && Objects.equals(name, that.name) && Objects.equals(description, that.description) && Objects.equals(tags, that.tags) && Objects.equals(transferAccount, that.transferAccount); + } + + @Override + public int hashCode() + { + return Objects.hash(templateName, amount, isExpenditure, account, category, name, description, tags, transferAccount); + } + + @Override + public String toString() + { + return "BackupTemplate_v4{templateName='" + templateName + '\'' + + ", amount=" + amount + + ", isExpenditure=" + isExpenditure + + ", account=" + account + + ", category=" + category + + ", name='" + name + '\'' + + ", description='" + description + '\'' + + ", tags=" + tags + + ", transferAccount=" + transferAccount + + '}'; + } + + public BackupTemplate_v5 upgrade() + { + BackupAccount_v5 upgradedAccount = null; + if(account != null) + { + upgradedAccount = account.upgrade(); + } + + BackupCategory_v5 upgradedCategory = null; + if(category != null) + { + upgradedCategory = category.upgrade(); + } + + BackupAccount_v5 upgradedTransferAccount = null; + if(transferAccount != null) + { + upgradedTransferAccount = transferAccount.upgrade(); + } + + return new BackupTemplate_v5(templateName, amount, isExpenditure, upgradedAccount, upgradedCategory, name, description, null, tags, upgradedTransferAccount); + } +} diff --git a/src/main/java/de/deadlocker8/budgetmaster/database/model/v4/BackupTransactionBase_v4.java b/src/main/java/de/deadlocker8/budgetmaster/database/model/v4/BackupTransactionBase_v4.java new file mode 100644 index 0000000000000000000000000000000000000000..58274b0f45a0086895f90c936661ecd09b2729df --- /dev/null +++ b/src/main/java/de/deadlocker8/budgetmaster/database/model/v4/BackupTransactionBase_v4.java @@ -0,0 +1,10 @@ +package de.deadlocker8.budgetmaster.database.model.v4; + +public interface BackupTransactionBase_v4 +{ + Integer getAmount(); + + Boolean getExpenditure(); + + void setExpenditure(Boolean isExpenditure); +} diff --git a/src/main/java/de/deadlocker8/budgetmaster/database/model/v4/BackupTransaction_v4.java b/src/main/java/de/deadlocker8/budgetmaster/database/model/v4/BackupTransaction_v4.java new file mode 100644 index 0000000000000000000000000000000000000000..efbca7711a65382b13fde6d58c3d99207b693c83 --- /dev/null +++ b/src/main/java/de/deadlocker8/budgetmaster/database/model/v4/BackupTransaction_v4.java @@ -0,0 +1,173 @@ +package de.deadlocker8.budgetmaster.database.model.v4; + +import de.deadlocker8.budgetmaster.database.model.Upgradeable; +import de.deadlocker8.budgetmaster.database.model.v5.BackupAccount_v5; +import de.deadlocker8.budgetmaster.database.model.v5.BackupCategory_v5; +import de.deadlocker8.budgetmaster.database.model.v5.BackupTransaction_v5; +import de.deadlocker8.budgetmaster.tags.Tag; + +import java.util.List; +import java.util.Objects; + +public class BackupTransaction_v4 implements BackupTransactionBase_v4, Upgradeable<BackupTransaction_v5> +{ + private Integer amount; + private Boolean isExpenditure; + private String date; + private BackupAccount_v4 account; + private BackupCategory_v4 category; + private String name; + private String description; + private List<Tag> tags; + private BackupRepeatingOption_v4 repeatingOption; + private BackupAccount_v4 transferAccount; + + public BackupTransaction_v4() + { + } + + public Integer getAmount() + { + return amount; + } + + public void setAmount(Integer amount) + { + this.amount = amount; + } + + public Boolean getExpenditure() + { + return isExpenditure; + } + + public void setExpenditure(Boolean expenditure) + { + isExpenditure = expenditure; + } + + public String getDate() + { + return date; + } + + public void setDate(String date) + { + this.date = date; + } + + public BackupAccount_v4 getAccount() + { + return account; + } + + public void setAccount(BackupAccount_v4 account) + { + this.account = account; + } + + public BackupCategory_v4 getCategory() + { + return category; + } + + public void setCategory(BackupCategory_v4 category) + { + this.category = category; + } + + public String getName() + { + return name; + } + + public void setName(String name) + { + this.name = name; + } + + public String getDescription() + { + return description; + } + + public void setDescription(String description) + { + this.description = description; + } + + public List<Tag> getTags() + { + return tags; + } + + public void setTags(List<Tag> tags) + { + this.tags = tags; + } + + public BackupRepeatingOption_v4 getRepeatingOption() + { + return repeatingOption; + } + + public void setRepeatingOption(BackupRepeatingOption_v4 repeatingOption) + { + this.repeatingOption = repeatingOption; + } + + public BackupAccount_v4 getTransferAccount() + { + return transferAccount; + } + + public void setTransferAccount(BackupAccount_v4 transferAccount) + { + this.transferAccount = transferAccount; + } + + @Override + public boolean equals(Object o) + { + if(this == o) return true; + if(o == null || getClass() != o.getClass()) return false; + BackupTransaction_v4 that = (BackupTransaction_v4) o; + return Objects.equals(amount, that.amount) && Objects.equals(isExpenditure, that.isExpenditure) && Objects.equals(date, that.date) && Objects.equals(account, that.account) && Objects.equals(category, that.category) && Objects.equals(name, that.name) && Objects.equals(description, that.description) && Objects.equals(tags, that.tags) && Objects.equals(repeatingOption, that.repeatingOption) && Objects.equals(transferAccount, that.transferAccount); + } + + @Override + public int hashCode() + { + return Objects.hash(amount, isExpenditure, date, account, category, name, description, tags, repeatingOption, transferAccount); + } + + @Override + public String toString() + { + return "BackupTransaction_v4{amount=" + amount + + ", isExpenditure=" + isExpenditure + + ", date=" + date + + ", account=" + account + + ", category=" + category + + ", name='" + name + '\'' + + ", description='" + description + '\'' + + ", tags=" + tags + + ", repeatingOption=" + repeatingOption + + ", transferAccount=" + transferAccount + + '}'; + } + + public BackupTransaction_v5 upgrade() + { + BackupAccount_v5 upgradedAccount = account.upgrade(); + BackupCategory_v5 upgradedCategory = category.upgrade(); + + BackupAccount_v5 upgradedTransferAccount = null; + if(transferAccount != null) + { + upgradedTransferAccount = transferAccount.upgrade(); + } + + return new BackupTransaction_v5(amount, isExpenditure, date, upgradedAccount, upgradedCategory, name, description, tags, repeatingOption, upgradedTransferAccount); + } +}