From ba977de675efe7c36e393add1295c2f62f7de176 Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Sun, 23 Jun 2024 22:49:30 +0200 Subject: [PATCH] #764 - include new property "endDate" in backup and restore --- .../model/converter/AccountConverter.java | 25 +++++++++++++++++++ .../database/model/v11/BackupAccount_v11.java | 25 ++++++++++++++++--- .../database/model/v7/BackupAccount_v7.java | 2 +- .../unit/database/DatabaseExportTest.java | 2 +- .../unit/database/DatabaseParser_v11Test.java | 3 ++- .../unit/database/ImportServiceTest.java | 2 +- .../resources/DatabaseParser_v11Test.json | 3 ++- .../src/test/resources/ImportServiceTest.json | 3 ++- 8 files changed, 56 insertions(+), 9 deletions(-) diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/database/model/converter/AccountConverter.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/database/model/converter/AccountConverter.java index 3f7cfc674..82404a5c6 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/database/model/converter/AccountConverter.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/database/model/converter/AccountConverter.java @@ -5,6 +5,8 @@ import de.deadlocker8.budgetmaster.database.model.Converter; import de.deadlocker8.budgetmaster.database.model.v11.BackupAccount_v11; import de.deadlocker8.budgetmaster.icon.Icon; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import java.util.List; public class AccountConverter implements Converter<Account, BackupAccount_v11> @@ -32,6 +34,18 @@ public class AccountConverter implements Converter<Account, BackupAccount_v11> account.setAccountState(backupAccount.getAccountState()); account.setType(backupAccount.getType()); account.setIconReference(getItemById(availableIcons, backupAccount.getIconReferenceID())); + + final String endDateString = backupAccount.getEndDate(); + if(endDateString == null) + { + account.setEndDate(null); + } + else + { + final LocalDate date = LocalDate.parse(endDateString, DateTimeFormatter.ofPattern("yyyy-MM-dd")); + account.setEndDate(date); + } + return account; } @@ -50,6 +64,17 @@ public class AccountConverter implements Converter<Account, BackupAccount_v11> account.setAccountState(internalAccount.getAccountState()); account.setType(internalAccount.getType()); + final LocalDate endDate = internalAccount.getEndDate(); + if(endDate == null) + { + account.setEndDate(null); + } + else + { + account.setEndDate(internalAccount.getEndDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); + + } + final Icon icon = internalAccount.getIconReference(); if(icon != null) { diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/database/model/v11/BackupAccount_v11.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/database/model/v11/BackupAccount_v11.java index 6ca6a2b13..37669f7a6 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/database/model/v11/BackupAccount_v11.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/database/model/v11/BackupAccount_v11.java @@ -13,13 +13,14 @@ public class BackupAccount_v11 private AccountState accountState; private AccountType type; private Integer iconReferenceID; + private String endDate; public BackupAccount_v11() { // for GSON } - public BackupAccount_v11(Integer ID, String name, String description, AccountState accountState, AccountType type, Integer iconReferenceID) + public BackupAccount_v11(Integer ID, String name, String description, AccountState accountState, AccountType type, Integer iconReferenceID, String endDate) { this.ID = ID; this.name = name; @@ -27,6 +28,7 @@ public class BackupAccount_v11 this.accountState = accountState; this.type = type; this.iconReferenceID = iconReferenceID; + this.endDate = endDate; } public Integer getID() @@ -89,19 +91,35 @@ public class BackupAccount_v11 this.iconReferenceID = iconReferenceID; } + public String getEndDate() + { + return endDate; + } + + public void setEndDate(String endDate) + { + this.endDate = endDate; + } + @Override public boolean equals(Object o) { if(this == o) return true; if(o == null || getClass() != o.getClass()) return false; BackupAccount_v11 that = (BackupAccount_v11) o; - return Objects.equals(ID, that.ID) && Objects.equals(name, that.name) && Objects.equals(description, that.description) &&accountState == that.accountState && type == that.type && Objects.equals(iconReferenceID, that.iconReferenceID); + return Objects.equals(ID, that.ID) && + Objects.equals(name, that.name) && + Objects.equals(description, that.description) && + accountState == that.accountState && + type == that.type && + Objects.equals(iconReferenceID, that.iconReferenceID) && + Objects.equals(endDate, that.endDate); } @Override public int hashCode() { - return Objects.hash(ID, name, description, accountState, type, iconReferenceID); + return Objects.hash(ID, name, description, accountState, type, iconReferenceID, endDate); } @Override @@ -114,6 +132,7 @@ public class BackupAccount_v11 ", accountState=" + accountState + ", type=" + type + ", iconReferenceID=" + iconReferenceID + + ", endDate=" + endDate + '}'; } } diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/database/model/v7/BackupAccount_v7.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/database/model/v7/BackupAccount_v7.java index 445a1158a..ddd9c705c 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/database/model/v7/BackupAccount_v7.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/database/model/v7/BackupAccount_v7.java @@ -111,6 +111,6 @@ public class BackupAccount_v7 implements Upgradeable<BackupAccount_v11> @Override public BackupAccount_v11 upgrade(List<BackupInfo> backupInfoItems) { - return new BackupAccount_v11(ID, name, "", accountState, type, iconReferenceID); + return new BackupAccount_v11(ID, name, "", accountState, type, iconReferenceID, null); } } diff --git a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/DatabaseExportTest.java b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/DatabaseExportTest.java index 1dd44679b..e1a2083b0 100644 --- a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/DatabaseExportTest.java +++ b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/DatabaseExportTest.java @@ -206,7 +206,7 @@ class DatabaseExportTest Mockito.when(categoryService.getAllEntitiesAsc()).thenReturn(List.of(categoryNone, categoryCustom)); // accounts - Account account1 = new Account("Source_Account_1", "awesome description", AccountType.CUSTOM, null); + Account account1 = new Account("Source_Account_1", "awesome description", AccountType.CUSTOM, LocalDate.of(2024, 6, 30)); account1.setID(2); Account account2 = new Account("Source_Account_2", "", AccountType.CUSTOM, null); account2.setID(3); diff --git a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/DatabaseParser_v11Test.java b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/DatabaseParser_v11Test.java index c2345dd82..b261949a4 100644 --- a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/DatabaseParser_v11Test.java +++ b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/DatabaseParser_v11Test.java @@ -32,6 +32,7 @@ import java.io.IOException; import java.net.URISyntaxException; import java.nio.file.Files; import java.nio.file.Paths; +import java.time.LocalDate; import java.util.ArrayList; import java.util.List; import java.util.Locale; @@ -94,7 +95,7 @@ class DatabaseParser_v11Test DatabaseParser_v11 parser = new DatabaseParser_v11(json); BackupDatabase_v11 database = parser.parseDatabaseFromJSON(); - final BackupAccount_v11 account = new BackupAccount_v11(3, "Second Account", "Lorem Ipsum", AccountState.FULL_ACCESS, AccountType.CUSTOM, 1); + final BackupAccount_v11 account = new BackupAccount_v11(3, "Second Account", "Lorem Ipsum", AccountState.FULL_ACCESS, AccountType.CUSTOM, 1, "2024-07-02"); assertThat(database.getAccounts()).hasSize(3) .contains(account); diff --git a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/ImportServiceTest.java b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/ImportServiceTest.java index fd37759f2..99adda198 100644 --- a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/ImportServiceTest.java +++ b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/ImportServiceTest.java @@ -219,7 +219,7 @@ class ImportServiceTest final Account accountDefault = createAccount(2, "Default Account", "", AccountType.CUSTOM, AccountState.FULL_ACCESS, iconAccountDefault, true, true, null); final Account accountDefaultNew = createAccount(3, "My Default Account", "", AccountType.CUSTOM, AccountState.FULL_ACCESS, iconAccountDefaultNew, false, false, null); final Account accountReadOnly = createAccount(4, "Read-only account", "", AccountType.CUSTOM, AccountState.READ_ONLY, iconAccountReadOnly, false, false, null); - final Account accountSecond = createAccount(5, "Second Account", "Lorem Ipsum", AccountType.CUSTOM, AccountState.FULL_ACCESS, iconAccountSecond, false, false, null); + final Account accountSecond = createAccount(5, "Second Account", "Lorem Ipsum", AccountType.CUSTOM, AccountState.FULL_ACCESS, iconAccountSecond, false, false, LocalDate.of(2024,7,2)); assertThat(accountRepository.findAll()) .hasSize(5) .contains(accountPlaceholder, diff --git a/BudgetMasterServer/src/test/resources/DatabaseParser_v11Test.json b/BudgetMasterServer/src/test/resources/DatabaseParser_v11Test.json index 6ceb08eb6..8ab535cc9 100644 --- a/BudgetMasterServer/src/test/resources/DatabaseParser_v11Test.json +++ b/BudgetMasterServer/src/test/resources/DatabaseParser_v11Test.json @@ -43,7 +43,8 @@ "description": "Lorem Ipsum", "accountState": "FULL_ACCESS", "type": "CUSTOM", - "iconReferenceID": 1 + "iconReferenceID": 1, + "endDate": "2024-07-02" } ], "transactions": [ diff --git a/BudgetMasterServer/src/test/resources/ImportServiceTest.json b/BudgetMasterServer/src/test/resources/ImportServiceTest.json index 2a37961b5..16eedfa9c 100644 --- a/BudgetMasterServer/src/test/resources/ImportServiceTest.json +++ b/BudgetMasterServer/src/test/resources/ImportServiceTest.json @@ -62,7 +62,8 @@ "description": "Lorem Ipsum", "accountState": "FULL_ACCESS", "type": "CUSTOM", - "iconReferenceID": 8 + "iconReferenceID": 8, + "endDate": "2024-07-02" } ], "transactions": [ -- GitLab