From 7e31e95d57ae5b2365ede763d30fee221aa2fd11 Mon Sep 17 00:00:00 2001 From: Michael Hoennig Date: Mon, 8 Jan 2024 13:48:31 +0100 Subject: [PATCH] persist shares+assets --- .../HsOfficeCoopAssetsTransactionEntity.java | 3 +- .../HsOfficeCoopSharesTransactionEntity.java | 3 +- .../office/migration/ImportOfficeTables.java | 40 ++++++++++++------- .../migration/asset-transactions.csv | 6 +-- 4 files changed, 32 insertions(+), 20 deletions(-) diff --git a/src/main/java/net/hostsharing/hsadminng/hs/office/coopassets/HsOfficeCoopAssetsTransactionEntity.java b/src/main/java/net/hostsharing/hsadminng/hs/office/coopassets/HsOfficeCoopAssetsTransactionEntity.java index e699fb5c..3342f052 100644 --- a/src/main/java/net/hostsharing/hsadminng/hs/office/coopassets/HsOfficeCoopAssetsTransactionEntity.java +++ b/src/main/java/net/hostsharing/hsadminng/hs/office/coopassets/HsOfficeCoopAssetsTransactionEntity.java @@ -3,6 +3,7 @@ package net.hostsharing.hsadminng.hs.office.coopassets; import lombok.*; import net.hostsharing.hsadminng.errors.DisplayName; import net.hostsharing.hsadminng.hs.office.membership.HsOfficeMembershipEntity; +import net.hostsharing.hsadminng.repository.HasUuid; import net.hostsharing.hsadminng.stringify.Stringify; import net.hostsharing.hsadminng.stringify.Stringifyable; import org.hibernate.annotations.GenericGenerator; @@ -23,7 +24,7 @@ import static net.hostsharing.hsadminng.stringify.Stringify.stringify; @NoArgsConstructor @AllArgsConstructor @DisplayName("CoopAssetsTransaction") -public class HsOfficeCoopAssetsTransactionEntity implements Stringifyable { +public class HsOfficeCoopAssetsTransactionEntity implements Stringifyable, HasUuid { private static Stringify stringify = stringify(HsOfficeCoopAssetsTransactionEntity.class) .withProp(e -> e.getMembership().getMemberNumber()) diff --git a/src/main/java/net/hostsharing/hsadminng/hs/office/coopshares/HsOfficeCoopSharesTransactionEntity.java b/src/main/java/net/hostsharing/hsadminng/hs/office/coopshares/HsOfficeCoopSharesTransactionEntity.java index b5d4979b..9f5aaf80 100644 --- a/src/main/java/net/hostsharing/hsadminng/hs/office/coopshares/HsOfficeCoopSharesTransactionEntity.java +++ b/src/main/java/net/hostsharing/hsadminng/hs/office/coopshares/HsOfficeCoopSharesTransactionEntity.java @@ -3,6 +3,7 @@ package net.hostsharing.hsadminng.hs.office.coopshares; import lombok.*; import net.hostsharing.hsadminng.errors.DisplayName; import net.hostsharing.hsadminng.hs.office.membership.HsOfficeMembershipEntity; +import net.hostsharing.hsadminng.repository.HasUuid; import net.hostsharing.hsadminng.stringify.Stringify; import net.hostsharing.hsadminng.stringify.Stringifyable; @@ -20,7 +21,7 @@ import static net.hostsharing.hsadminng.stringify.Stringify.stringify; @NoArgsConstructor @AllArgsConstructor @DisplayName("CoopShareTransaction") -public class HsOfficeCoopSharesTransactionEntity implements Stringifyable { +public class HsOfficeCoopSharesTransactionEntity implements Stringifyable, HasUuid { private static Stringify stringify = stringify(HsOfficeCoopSharesTransactionEntity.class) .withProp(e -> e.getMembership().getMemberNumber()) diff --git a/src/test/java/net/hostsharing/hsadminng/hs/office/migration/ImportOfficeTables.java b/src/test/java/net/hostsharing/hsadminng/hs/office/migration/ImportOfficeTables.java index 1e13bc6a..dd1894cc 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/office/migration/ImportOfficeTables.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/office/migration/ImportOfficeTables.java @@ -231,11 +231,9 @@ public class ImportOfficeTables extends ContextBasedTest { assertThat(coopAssets.toString()).isEqualToIgnoringWhitespace(""" { 30000=CoopAssetsTransaction(10007, 2000-12-06, DEPOSIT, 1280.00, for subscription A), - 31001=CoopAssetsTransaction(10010, 2000-12-06, DEPOSIT, 18.00, for subscription B), - 31002=CoopAssetsTransaction(10010, 2000-12-06, -18.00, for subscription B), - 31003=CoopAssetsTransaction(10010, 2000-12-06, DEPOSIT, 128.00, for subscription B), + 31000=CoopAssetsTransaction(10010, 2000-12-06, DEPOSIT, 128.00, for subscription B), 32000=CoopAssetsTransaction(10007, 2005-01-10, DEPOSIT, 2560.00, for subscription C), - 33001=CoopAssetsTransaction(10007, 2005-01-10, -512.00, for transfer to 10), + 33001=CoopAssetsTransaction(10007, 2005-01-10, TRANSFER, -512.00, for transfer to 10), 33002=CoopAssetsTransaction(10010, 2005-01-10, ADOPTION, 512.00, for transfer from 7), 34001=CoopAssetsTransaction(10010, 2016-12-31, CLEARING, -8.00, for cancellation D), 34002=CoopAssetsTransaction(10010, 2016-12-31, DISBURSAL, -100.00, for cancellation D), @@ -267,7 +265,11 @@ public class ImportOfficeTables extends ContextBasedTest { sepaMandates.forEach((id, mandate) -> em.persist(mandate)); updateLegacyIds(sepaMandates, "hs_office_sepamandate_legacy_id", "sepa_mandate_id"); - // TODO: coopshares+coopassets + coopShares.forEach((id, shareTransaction) -> em.persist(shareTransaction)); + updateLegacyIds(coopShares, "hs_office_coopsharestransaction_legacy_id", "member_share_id"); + + coopAssets.forEach((id, assetTransaction) -> em.persist(assetTransaction)); + updateLegacyIds(coopShares, "hs_office_coopassetstransaction_legacy_id", "member_asset_id"); em.flush(); } @@ -392,15 +394,25 @@ public class ImportOfficeTables extends ContextBasedTest { .forEach(rec -> { final var member = memberships.get(rec.getInteger("bp_id")); - final var assetTypeMapping = new HashMap() {{ - put("HANDOVER", HsOfficeCoopAssetsTransactionType.TRANSFER); - put("ADOPTION", HsOfficeCoopAssetsTransactionType.ADOPTION); - put("LOSS", HsOfficeCoopAssetsTransactionType.LOSS); - put("CLEARING", HsOfficeCoopAssetsTransactionType.CLEARING); - put("PRESCRIPTION", HsOfficeCoopAssetsTransactionType.LIMITATION); - put("PAYBACK", HsOfficeCoopAssetsTransactionType.DISBURSAL); - put("PAYMENT", HsOfficeCoopAssetsTransactionType.DEPOSIT); - }}; + final var assetTypeMapping = new HashMap() { + { + put("HANDOVER", HsOfficeCoopAssetsTransactionType.TRANSFER); + put("ADOPTION", HsOfficeCoopAssetsTransactionType.ADOPTION); + put("LOSS", HsOfficeCoopAssetsTransactionType.LOSS); + put("CLEARING", HsOfficeCoopAssetsTransactionType.CLEARING); + put("PRESCRIPTION", HsOfficeCoopAssetsTransactionType.LIMITATION); + put("PAYBACK", HsOfficeCoopAssetsTransactionType.DISBURSAL); + put("PAYMENT", HsOfficeCoopAssetsTransactionType.DEPOSIT); + } + + public HsOfficeCoopAssetsTransactionType get(final String key) { + final var value = super.get(key); + if ( value != null ) { + return value; + } + throw new IllegalStateException("no mapping value found for: " + key); + } + }; final var assetTransaction = HsOfficeCoopAssetsTransactionEntity.builder() .membership(member) diff --git a/src/test/resources/migration/asset-transactions.csv b/src/test/resources/migration/asset-transactions.csv index 5b4e10e7..1bde43fd 100644 --- a/src/test/resources/migration/asset-transactions.csv +++ b/src/test/resources/migration/asset-transactions.csv @@ -1,10 +1,8 @@ member_asset_id; bp_id; date; action; amount; comment 30000; 7; 2000-12-06; PAYMENT; 1280.00; for subscription A -31001; 10; 2000-12-06; PAYMENT; 18.00; for subscription B -31002; 10; 2000-12-06; ADJUSTMENT; -18.00; for subscription B -31003; 10; 2000-12-06; PAYMENT; 128.00; for subscription B +31000; 10; 2000-12-06; PAYMENT; 128.00; for subscription B 32000; 7; 2005-01-10; PAYMENT; 2560.00; for subscription C -33001; 7; 2005-01-10; TRANSFER; -512.00; for transfer to 10 +33001; 7; 2005-01-10; HANDOVER; -512.00; for transfer to 10 33002; 10; 2005-01-10; ADOPTION; 512.00; for transfer from 7 34001; 10; 2016-12-31; CLEARING; -8.00; for cancellation D 34002; 10; 2016-12-31; PAYBACK; -100.00; for cancellation D