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 3f7cfc674f82df228058ca16b334750a0627ec29..82404a5c6cbede56ddb69629ce120841916c72cc 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 6ca6a2b1339f76fbf0a6c2f410f76e3be5cd8dad..37669f7a6fb375a4e5a1ee15e070c2e6f9f359fc 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 445a1158a96585d180ed994bde38ed6230c19dbc..ddd9c705c53784f8386aa3b00caf4f7644ca6ce7 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 1dd44679b2a4ac5060d6fbf59207f207bebb96ab..e1a2083b09039478595f32265ea85294ab2fa3b3 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 c2345dd82943a7921d96e40144034c23c68369d5..b261949a4bcae6468590e0bd9bf601f72a1ef4e0 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 fd37759f299353ba8ac58d7522455631428ef8e1..99adda1982853eff05eb9632dff249c94232c5f6 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 6ceb08eb63f3a8fdc1b026b8574e64a9ab03b968..8ab535cc958b197c16bed97db73db17558fe93aa 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 2a37961b5abc8efb1c91bbb75246404601430956..16eedfa9c6027c23a93f0b41692d5d55d03d8d9d 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": [