From 4ad0d5d9541338acf10f0b47f709b91e9f0b5648 Mon Sep 17 00:00:00 2001 From: Michael Hoennig Date: Fri, 26 Apr 2019 17:15:39 +0200 Subject: [PATCH 01/22] @AccessFrom in AssetDTO and AssetMapper with improved membershipDisplayReference --- .../hsadminng/service/AssetService.java | 7 +++- .../hsadminng/service/dto/AssetDTO.java | 33 +++++++++++++++++-- .../hsadminng/service/mapper/AssetMapper.java | 20 ++++++++++- src/main/resources/config/application-dev.yml | 3 ++ .../web/rest/AssetResourceIntTest.java | 8 ++--- 5 files changed, 63 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/hostsharing/hsadminng/service/AssetService.java b/src/main/java/org/hostsharing/hsadminng/service/AssetService.java index bc15e0b3..a375241c 100644 --- a/src/main/java/org/hostsharing/hsadminng/service/AssetService.java +++ b/src/main/java/org/hostsharing/hsadminng/service/AssetService.java @@ -11,6 +11,7 @@ import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.persistence.EntityManager; import java.util.Optional; /** @@ -26,8 +27,10 @@ public class AssetService { private final AssetMapper assetMapper; private final AssetValidator assetValidator; + private final EntityManager em; - public AssetService(AssetRepository assetRepository, AssetMapper assetMapper, AssetValidator assetValidator ) { + public AssetService(final EntityManager em, final AssetRepository assetRepository, final AssetMapper assetMapper, final AssetValidator assetValidator) { + this.em = em; this.assetRepository = assetRepository; this.assetMapper = assetMapper; this.assetValidator = assetValidator; @@ -44,6 +47,8 @@ public class AssetService { assetValidator.validate(assetDTO); Asset asset = assetMapper.toEntity(assetDTO); asset = assetRepository.save(asset); + em.flush(); + em.refresh(asset); return assetMapper.toDto(asset); } diff --git a/src/main/java/org/hostsharing/hsadminng/service/dto/AssetDTO.java b/src/main/java/org/hostsharing/hsadminng/service/dto/AssetDTO.java index d52a535a..d78c34b3 100644 --- a/src/main/java/org/hostsharing/hsadminng/service/dto/AssetDTO.java +++ b/src/main/java/org/hostsharing/hsadminng/service/dto/AssetDTO.java @@ -1,6 +1,10 @@ package org.hostsharing.hsadminng.service.dto; import org.hostsharing.hsadminng.domain.enumeration.AssetAction; +import org.hostsharing.hsadminng.service.CustomerService; +import org.hostsharing.hsadminng.service.accessfilter.*; +import org.springframework.boot.jackson.JsonComponent; +import org.springframework.context.ApplicationContext; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; @@ -12,28 +16,37 @@ import java.util.Objects; /** * A DTO for the Asset entity. */ -public class AssetDTO implements Serializable { +public class AssetDTO implements Serializable, AccessMappings { + @SelfId(resolver = CustomerService.class) + @AccessFor(read = Role.ANY_CUSTOMER_USER) private Long id; @NotNull + @AccessFor(init = Role.ADMIN, update = Role.ADMIN, read = {Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT}) private LocalDate documentDate; @NotNull + @AccessFor(init = Role.ADMIN, update = Role.ADMIN, read = {Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT}) private LocalDate valueDate; @NotNull + @AccessFor(init = Role.ADMIN, update = Role.ADMIN, read = {Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT}) private AssetAction action; @NotNull + @AccessFor(init = Role.ADMIN, update = Role.ADMIN, read = {Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT}) private BigDecimal amount; @Size(max = 160) + @AccessFor(init = Role.ADMIN, update = Role.ADMIN, read = Role.ADMIN) private String remark; - + @ParentId(resolver = CustomerService.class) + @AccessFor(init = Role.ADMIN, update = Role.ADMIN, read = {Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT}) private Long membershipId; + @AccessFor(init=Role.ANYBODY, update=Role.ANYBODY, read = {Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT}) private String membershipDisplayReference; public Long getId() { @@ -134,4 +147,20 @@ public class AssetDTO implements Serializable { ", membership='" + getMembershipDisplayReference() + "'" + "}"; } + + @JsonComponent + public static class AssetJsonSerializer extends JsonSerializerWithAccessFilter { + + public AssetJsonSerializer(final ApplicationContext ctx) { + super(ctx); + } + } + + @JsonComponent + public static class AssetJsonDeserializer extends JsonDeserializerWithAccessFilter { + + public AssetJsonDeserializer(final ApplicationContext ctx) { + super(ctx); + } + } } diff --git a/src/main/java/org/hostsharing/hsadminng/service/mapper/AssetMapper.java b/src/main/java/org/hostsharing/hsadminng/service/mapper/AssetMapper.java index 40399960..e4e4a530 100644 --- a/src/main/java/org/hostsharing/hsadminng/service/mapper/AssetMapper.java +++ b/src/main/java/org/hostsharing/hsadminng/service/mapper/AssetMapper.java @@ -1,9 +1,15 @@ package org.hostsharing.hsadminng.service.mapper; import org.hostsharing.hsadminng.domain.Asset; +import org.hostsharing.hsadminng.domain.Customer; +import org.hostsharing.hsadminng.domain.Membership; import org.hostsharing.hsadminng.service.dto.AssetDTO; +import org.mapstruct.AfterMapping; import org.mapstruct.Mapper; import org.mapstruct.Mapping; +import org.mapstruct.MappingTarget; + +import java.util.Objects; /** * Mapper for the entity Asset and its DTO AssetDTO. @@ -12,9 +18,21 @@ import org.mapstruct.Mapping; public interface AssetMapper extends EntityMapper { @Mapping(source = "membership.id", target = "membershipId") - @Mapping(source = "membership.admissionDocumentDate", target = "membershipDisplayReference") + @Mapping(target = "membershipDisplayReference", ignore = true) AssetDTO toDto(Asset asset); + @AfterMapping + default void setMembershipDisplayReference(final @MappingTarget AssetDTO dto, final Asset entity) { + // TODO: rather use method extracted from MembershipMaper.setMembershipDisplayReference() to avoid duplicate code + final Membership membership = entity.getMembership(); + final Customer customer = membership.getCustomer(); + dto.setMembershipDisplayReference(customer.getReference() + + ":" + customer.getPrefix() + + " [" + customer.getName() + "] " + + membership.getAdmissionDocumentDate().toString() + " - " + + Objects.toString(membership.getCancellationDocumentDate(), "")); + } + @Mapping(source = "membershipId", target = "membership") Asset toEntity(AssetDTO assetDTO); diff --git a/src/main/resources/config/application-dev.yml b/src/main/resources/config/application-dev.yml index 502ea108..8e53af01 100644 --- a/src/main/resources/config/application-dev.yml +++ b/src/main/resources/config/application-dev.yml @@ -37,7 +37,10 @@ spring: indent-output: true datasource: type: com.zaxxer.hikari.HikariDataSource + # H2 in memory: url: jdbc:h2:mem:hsadminng;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE + # H2 in file: + # url: jdbc:h2:~/.hsadminng.h2db;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE username: hsadminNg password: hikari: diff --git a/src/test/java/org/hostsharing/hsadminng/web/rest/AssetResourceIntTest.java b/src/test/java/org/hostsharing/hsadminng/web/rest/AssetResourceIntTest.java index ae7212be..83b0726c 100644 --- a/src/test/java/org/hostsharing/hsadminng/web/rest/AssetResourceIntTest.java +++ b/src/test/java/org/hostsharing/hsadminng/web/rest/AssetResourceIntTest.java @@ -54,8 +54,8 @@ public class AssetResourceIntTest { private static final AssetAction DEFAULT_ACTION = AssetAction.PAYMENT; private static final AssetAction UPDATED_ACTION = AssetAction.HANDOVER; - private static final BigDecimal DEFAULT_AMOUNT = new BigDecimal(1); - private static final BigDecimal UPDATED_AMOUNT = new BigDecimal(2); + private static final BigDecimal DEFAULT_AMOUNT = new BigDecimal("1.00"); + private static final BigDecimal UPDATED_AMOUNT = new BigDecimal("2.00"); private static final String DEFAULT_REMARK = "AAAAAAAAAA"; private static final String UPDATED_REMARK = "BBBBBBBBBB"; @@ -283,7 +283,7 @@ public class AssetResourceIntTest { .andExpect(jsonPath("$.[*].valueDate").value(hasItem(DEFAULT_VALUE_DATE.toString()))) .andExpect(jsonPath("$.[*].action").value(hasItem(DEFAULT_ACTION.toString()))) .andExpect(jsonPath("$.[*].amount").value(hasItem(DEFAULT_AMOUNT.intValue()))) - .andExpect(jsonPath("$.[*].remark").value(hasItem(DEFAULT_REMARK.toString()))); + .andExpect(jsonPath("$.[*].remark").value(hasItem(DEFAULT_REMARK))); } @Test @@ -301,7 +301,7 @@ public class AssetResourceIntTest { .andExpect(jsonPath("$.valueDate").value(DEFAULT_VALUE_DATE.toString())) .andExpect(jsonPath("$.action").value(DEFAULT_ACTION.toString())) .andExpect(jsonPath("$.amount").value(DEFAULT_AMOUNT.intValue())) - .andExpect(jsonPath("$.remark").value(DEFAULT_REMARK.toString())); + .andExpect(jsonPath("$.remark").value(DEFAULT_REMARK)); } @Test From da5b6676073b6ee418efbc00655da1dc15e540ec Mon Sep 17 00:00:00 2001 From: Michael Hoennig Date: Fri, 26 Apr 2019 17:42:30 +0200 Subject: [PATCH 02/22] MembershipDTO JSonSerializerWithAccessFilter proper membershipDisplayReference --- .../hsadminng/service/dto/MembershipDTO.java | 36 ++++++++++++++++--- .../service/mapper/MembershipMapper.java | 22 ++++++++++-- .../asset/asset-update.component.html | 2 +- .../app/shared/model/membership.model.ts | 4 ++- 4 files changed, 55 insertions(+), 9 deletions(-) diff --git a/src/main/java/org/hostsharing/hsadminng/service/dto/MembershipDTO.java b/src/main/java/org/hostsharing/hsadminng/service/dto/MembershipDTO.java index 2286a064..a705ba7c 100644 --- a/src/main/java/org/hostsharing/hsadminng/service/dto/MembershipDTO.java +++ b/src/main/java/org/hostsharing/hsadminng/service/dto/MembershipDTO.java @@ -2,10 +2,9 @@ package org.hostsharing.hsadminng.service.dto; import org.hostsharing.hsadminng.service.CustomerService; import org.hostsharing.hsadminng.service.MembershipService; -import org.hostsharing.hsadminng.service.accessfilter.AccessFor; -import org.hostsharing.hsadminng.service.accessfilter.ParentId; -import org.hostsharing.hsadminng.service.accessfilter.Role; -import org.hostsharing.hsadminng.service.accessfilter.SelfId; +import org.hostsharing.hsadminng.service.accessfilter.*; +import org.springframework.boot.jackson.JsonComponent; +import org.springframework.context.ApplicationContext; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; @@ -16,7 +15,7 @@ import java.util.Objects; /** * A DTO for the Membership entity. */ -public class MembershipDTO extends FluentBuilder implements Serializable { +public class MembershipDTO extends FluentBuilder implements Serializable, AccessMappings { @SelfId(resolver = MembershipService.class) @AccessFor(read = {Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT}) @@ -47,6 +46,9 @@ public class MembershipDTO extends FluentBuilder implements Seria @AccessFor(init = Role.ADMIN, read = {Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT}) private String customerPrefix; + @AccessFor(read = {Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT}) + private String membershipDisplayReference; + public Long getId() { return id; } @@ -111,6 +113,14 @@ public class MembershipDTO extends FluentBuilder implements Seria this.customerPrefix = customerPrefix; } + private String getMembershipDisplayReference() { + return membershipDisplayReference; + } + + public void setMembershipDisplayReference(final String membershipDisplayReference) { + this.membershipDisplayReference = membershipDisplayReference; + } + @Override public boolean equals(Object o) { if (this == o) { @@ -145,4 +155,20 @@ public class MembershipDTO extends FluentBuilder implements Seria ", customer='" + getCustomerPrefix() + "'" + "}"; } + + @JsonComponent + public static class MembershipJsonSerializer extends JsonSerializerWithAccessFilter { + + public MembershipJsonSerializer(final ApplicationContext ctx) { + super(ctx); + } + } + + @JsonComponent + public static class MembershipJsonDeserializer extends JsonDeserializerWithAccessFilter { + + public MembershipJsonDeserializer(final ApplicationContext ctx) { + super(ctx); + } + } } diff --git a/src/main/java/org/hostsharing/hsadminng/service/mapper/MembershipMapper.java b/src/main/java/org/hostsharing/hsadminng/service/mapper/MembershipMapper.java index 02a45ace..ed779cbe 100644 --- a/src/main/java/org/hostsharing/hsadminng/service/mapper/MembershipMapper.java +++ b/src/main/java/org/hostsharing/hsadminng/service/mapper/MembershipMapper.java @@ -1,9 +1,14 @@ package org.hostsharing.hsadminng.service.mapper; -import org.hostsharing.hsadminng.domain.*; +import org.hostsharing.hsadminng.domain.Customer; +import org.hostsharing.hsadminng.domain.Membership; import org.hostsharing.hsadminng.service.dto.MembershipDTO; +import org.mapstruct.AfterMapping; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.MappingTarget; -import org.mapstruct.*; +import java.util.Objects; /** * Mapper for the entity Membership and its DTO MembershipDTO. @@ -13,8 +18,21 @@ public interface MembershipMapper extends EntityMapperMembership
diff --git a/src/main/webapp/app/shared/model/membership.model.ts b/src/main/webapp/app/shared/model/membership.model.ts index 27bc7e7a..ffdca230 100644 --- a/src/main/webapp/app/shared/model/membership.model.ts +++ b/src/main/webapp/app/shared/model/membership.model.ts @@ -13,6 +13,7 @@ export interface IMembership { assets?: IAsset[]; customerPrefix?: string; customerId?: number; + membershipDisplayReference?: string; } export class Membership implements IMembership { @@ -26,6 +27,7 @@ export class Membership implements IMembership { public shares?: IShare[], public assets?: IAsset[], public customerPrefix?: string, - public customerId?: number + public customerId?: number, + public membershipDisplayReference?: string ) {} } From a86e4d7afb9d0e73eed08b4f1160911a4ec9dd36 Mon Sep 17 00:00:00 2001 From: Michael Hoennig Date: Fri, 26 Apr 2019 19:35:07 +0200 Subject: [PATCH 03/22] Fix AssetResourceIntTest BigDecimal scaling problem --- .../hsadminng/web/rest/AssetResourceIntTest.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/test/java/org/hostsharing/hsadminng/web/rest/AssetResourceIntTest.java b/src/test/java/org/hostsharing/hsadminng/web/rest/AssetResourceIntTest.java index 83b0726c..dcbc8a13 100644 --- a/src/test/java/org/hostsharing/hsadminng/web/rest/AssetResourceIntTest.java +++ b/src/test/java/org/hostsharing/hsadminng/web/rest/AssetResourceIntTest.java @@ -54,8 +54,8 @@ public class AssetResourceIntTest { private static final AssetAction DEFAULT_ACTION = AssetAction.PAYMENT; private static final AssetAction UPDATED_ACTION = AssetAction.HANDOVER; - private static final BigDecimal DEFAULT_AMOUNT = new BigDecimal("1.00"); - private static final BigDecimal UPDATED_AMOUNT = new BigDecimal("2.00"); + private static final BigDecimal DEFAULT_AMOUNT = new BigDecimal("1"); + private static final BigDecimal UPDATED_AMOUNT = new BigDecimal("2"); private static final String DEFAULT_REMARK = "AAAAAAAAAA"; private static final String UPDATED_REMARK = "BBBBBBBBBB"; @@ -168,7 +168,7 @@ public class AssetResourceIntTest { assertThat(testAsset.getDocumentDate()).isEqualTo(DEFAULT_DOCUMENT_DATE); assertThat(testAsset.getValueDate()).isEqualTo(DEFAULT_VALUE_DATE); assertThat(testAsset.getAction()).isEqualTo(DEFAULT_ACTION); - assertThat(testAsset.getAmount()).isEqualTo(DEFAULT_AMOUNT); + assertThat(testAsset.getAmount()).isEqualTo(DEFAULT_AMOUNT.setScale(2)); assertThat(testAsset.getRemark()).isEqualTo(DEFAULT_REMARK); } From d81b71cd3a19da402c6eba82966e45963da7f80d Mon Sep 17 00:00:00 2001 From: Michael Hoennig Date: Fri, 26 Apr 2019 22:11:49 +0200 Subject: [PATCH 04/22] better display labels and less columns in tables (deliberately not yet in SepaMandate*) --- .../hsadminng/service/AssetService.java | 7 +- .../hsadminng/service/MembershipService.java | 9 +- .../hsadminng/service/ShareService.java | 8 +- .../hsadminng/service/dto/AssetDTO.java | 12 +- .../hsadminng/service/dto/CustomerDTO.java | 11 ++ .../hsadminng/service/dto/MembershipDTO.java | 29 ++- .../hsadminng/service/dto/ShareDTO.java | 12 +- .../hsadminng/service/mapper/AssetMapper.java | 17 +- .../service/mapper/CustomerMapper.java | 20 ++- .../service/mapper/MembershipMapper.java | 20 ++- .../hsadminng/service/mapper/ShareMapper.java | 9 +- .../asset/asset-detail.component.html | 4 +- .../asset/asset-update.component.html | 2 +- .../app/entities/asset/asset.component.html | 6 +- .../customer/customer-detail.component.html | 2 +- .../entities/customer/customer.component.html | 24 +-- .../membership-detail.component.html | 4 +- .../membership-update.component.html | 2 +- .../membership/membership.component.html | 6 +- .../share/share-detail.component.html | 4 +- .../share/share-update.component.html | 2 +- .../app/entities/share/share.component.html | 6 +- .../webapp/app/shared/model/asset.model.ts | 6 +- .../webapp/app/shared/model/customer.model.ts | 4 +- .../app/shared/model/membership.model.ts | 6 +- .../webapp/app/shared/model/share.model.ts | 4 +- .../service/AssetServiceUnitTest.java | 167 ++++++++++++++++++ .../service/ShareServiceUnitTest.java | 12 +- .../service/dto/CustomerDTOUnitTest.java | 11 +- .../service/dto/ShareDTOUnitTest.java | 2 +- .../web/rest/MembershipResourceIntTest.java | 10 +- 31 files changed, 320 insertions(+), 118 deletions(-) create mode 100644 src/test/java/org/hostsharing/hsadminng/service/AssetServiceUnitTest.java diff --git a/src/main/java/org/hostsharing/hsadminng/service/AssetService.java b/src/main/java/org/hostsharing/hsadminng/service/AssetService.java index a375241c..d568aea6 100644 --- a/src/main/java/org/hostsharing/hsadminng/service/AssetService.java +++ b/src/main/java/org/hostsharing/hsadminng/service/AssetService.java @@ -4,6 +4,7 @@ import org.hostsharing.hsadminng.domain.Asset; import org.hostsharing.hsadminng.repository.AssetRepository; import org.hostsharing.hsadminng.service.dto.AssetDTO; import org.hostsharing.hsadminng.service.mapper.AssetMapper; +import org.hostsharing.hsadminng.web.rest.errors.BadRequestAlertException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.data.domain.Page; @@ -23,11 +24,12 @@ public class AssetService { private final Logger log = LoggerFactory.getLogger(AssetService.class); + private final EntityManager em; + private final AssetRepository assetRepository; private final AssetMapper assetMapper; private final AssetValidator assetValidator; - private final EntityManager em; public AssetService(final EntityManager em, final AssetRepository assetRepository, final AssetMapper assetMapper, final AssetValidator assetValidator) { this.em = em; @@ -86,6 +88,7 @@ public class AssetService { */ public void delete(Long id) { log.debug("Request to delete Asset : {}", id); - assetRepository.deleteById(id); + + throw new BadRequestAlertException("Asset transactions are immutable", Asset.ENTITY_NAME, "assetTransactionImmutable"); } } diff --git a/src/main/java/org/hostsharing/hsadminng/service/MembershipService.java b/src/main/java/org/hostsharing/hsadminng/service/MembershipService.java index 473f5d7e..82e365d2 100644 --- a/src/main/java/org/hostsharing/hsadminng/service/MembershipService.java +++ b/src/main/java/org/hostsharing/hsadminng/service/MembershipService.java @@ -12,6 +12,7 @@ import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.persistence.EntityManager; import java.util.Optional; /** @@ -23,15 +24,19 @@ public class MembershipService implements IdToDtoResolver { private final Logger log = LoggerFactory.getLogger(MembershipService.class); + private final EntityManager em; + private final MembershipValidator membershipValidator; private final MembershipRepository membershipRepository; private final MembershipMapper membershipMapper; - public MembershipService(final MembershipValidator membershipValidator, + public MembershipService(final EntityManager em, + final MembershipValidator membershipValidator, final MembershipRepository membershipRepository, final MembershipMapper membershipMapper) { + this.em = em; this.membershipValidator = membershipValidator; this.membershipRepository = membershipRepository; this.membershipMapper = membershipMapper; @@ -50,6 +55,8 @@ public class MembershipService implements IdToDtoResolver { Membership membership = membershipMapper.toEntity(membershipDTO); membership = membershipRepository.save(membership); + em.flush(); + em.refresh(membership); return membershipMapper.toDto(membership); } diff --git a/src/main/java/org/hostsharing/hsadminng/service/ShareService.java b/src/main/java/org/hostsharing/hsadminng/service/ShareService.java index c9ff868b..4fbc8bec 100644 --- a/src/main/java/org/hostsharing/hsadminng/service/ShareService.java +++ b/src/main/java/org/hostsharing/hsadminng/service/ShareService.java @@ -12,6 +12,7 @@ import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.persistence.EntityManager; import java.util.Optional; /** @@ -23,13 +24,16 @@ public class ShareService implements IdToDtoResolver { private final Logger log = LoggerFactory.getLogger(ShareService.class); + private final EntityManager em; + private final ShareRepository shareRepository; private final ShareMapper shareMapper; private final ShareValidator shareValidator; - public ShareService(ShareRepository shareRepository, ShareMapper shareMapper, ShareValidator shareValidator) { + public ShareService(final EntityManager em, final ShareRepository shareRepository, final ShareMapper shareMapper, final ShareValidator shareValidator) { + this.em = em; this.shareRepository = shareRepository; this.shareMapper = shareMapper; this.shareValidator = shareValidator; @@ -48,6 +52,8 @@ public class ShareService implements IdToDtoResolver { Share share = shareMapper.toEntity(shareDTO); share = shareRepository.save(share); + em.flush(); + em.refresh(share); return shareMapper.toDto(share); } diff --git a/src/main/java/org/hostsharing/hsadminng/service/dto/AssetDTO.java b/src/main/java/org/hostsharing/hsadminng/service/dto/AssetDTO.java index d78c34b3..3d64d4e2 100644 --- a/src/main/java/org/hostsharing/hsadminng/service/dto/AssetDTO.java +++ b/src/main/java/org/hostsharing/hsadminng/service/dto/AssetDTO.java @@ -47,7 +47,7 @@ public class AssetDTO implements Serializable, AccessMappings { private Long membershipId; @AccessFor(init=Role.ANYBODY, update=Role.ANYBODY, read = {Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT}) - private String membershipDisplayReference; + private String membershipDisplayLabel; public Long getId() { return id; @@ -105,12 +105,12 @@ public class AssetDTO implements Serializable, AccessMappings { this.membershipId = membershipId; } - public String getMembershipDisplayReference() { - return membershipDisplayReference; + public String getMembershipDisplayLabel() { + return membershipDisplayLabel; } - public void setMembershipDisplayReference(String membershipDisplayReference) { - this.membershipDisplayReference = membershipDisplayReference; + public void setMembershipDisplayLabel(String membershipDisplayLabel) { + this.membershipDisplayLabel = membershipDisplayLabel; } @Override @@ -144,7 +144,7 @@ public class AssetDTO implements Serializable, AccessMappings { ", amount=" + getAmount() + ", remark='" + getRemark() + "'" + ", membership=" + getMembershipId() + - ", membership='" + getMembershipDisplayReference() + "'" + + ", membership='" + getMembershipDisplayLabel() + "'" + "}"; } diff --git a/src/main/java/org/hostsharing/hsadminng/service/dto/CustomerDTO.java b/src/main/java/org/hostsharing/hsadminng/service/dto/CustomerDTO.java index c1b42b75..85908ac9 100644 --- a/src/main/java/org/hostsharing/hsadminng/service/dto/CustomerDTO.java +++ b/src/main/java/org/hostsharing/hsadminng/service/dto/CustomerDTO.java @@ -85,6 +85,9 @@ public class CustomerDTO extends FluentBuilder implements AccessMap @AccessFor(init = Role.ADMIN, update = Role.SUPPORTER, read = Role.SUPPORTER) private String remark; + @AccessFor(init=Role.ANYBODY, update=Role.ANYBODY, read = Role.ANY_CUSTOMER_USER) + private String displayLabel; + public Long getId() { return id; } @@ -213,6 +216,14 @@ public class CustomerDTO extends FluentBuilder implements AccessMap this.remark = remark; } + public String getDisplayLabel() { + return displayLabel; + } + + public void setDisplayLabel(final String displayLabel) { + this.displayLabel = displayLabel; + } + @Override public boolean equals(Object o) { if (this == o) { diff --git a/src/main/java/org/hostsharing/hsadminng/service/dto/MembershipDTO.java b/src/main/java/org/hostsharing/hsadminng/service/dto/MembershipDTO.java index a705ba7c..f96a964d 100644 --- a/src/main/java/org/hostsharing/hsadminng/service/dto/MembershipDTO.java +++ b/src/main/java/org/hostsharing/hsadminng/service/dto/MembershipDTO.java @@ -25,18 +25,18 @@ public class MembershipDTO extends FluentBuilder implements Seria @AccessFor(init = Role.ADMIN, read = {Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT}) private LocalDate admissionDocumentDate; - @AccessFor(init = Role.ADMIN, read = {Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT}) + @AccessFor(init = Role.ADMIN, update = Role.ADMIN, read = {Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT}) private LocalDate cancellationDocumentDate; @NotNull @AccessFor(init = Role.ADMIN, read = {Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT}) private LocalDate memberFromDate; - @AccessFor(init = Role.ADMIN, read = {Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT}) + @AccessFor(init = Role.ADMIN, update = Role.ADMIN, read = {Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT}) private LocalDate memberUntilDate; @Size(max = 160) - @AccessFor(init = Role.ADMIN, read = Role.SUPPORTER) + @AccessFor(init = Role.ADMIN,update = Role.ADMIN, read = Role.SUPPORTER) private String remark; @ParentId(resolver = CustomerService.class) @@ -46,8 +46,11 @@ public class MembershipDTO extends FluentBuilder implements Seria @AccessFor(init = Role.ADMIN, read = {Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT}) private String customerPrefix; - @AccessFor(read = {Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT}) - private String membershipDisplayReference; + @AccessFor(init = Role.ANYBODY, update = Role.ANYBODY, read = Role.FINANCIAL_CONTACT) + private String displayLabel; + + @AccessFor(init = Role.ANYBODY, update = Role.ANYBODY, read = Role.FINANCIAL_CONTACT) + private String customerDisplayLabel; public Long getId() { return id; @@ -113,12 +116,20 @@ public class MembershipDTO extends FluentBuilder implements Seria this.customerPrefix = customerPrefix; } - private String getMembershipDisplayReference() { - return membershipDisplayReference; + public String getDisplayLabel() { + return displayLabel; } - public void setMembershipDisplayReference(final String membershipDisplayReference) { - this.membershipDisplayReference = membershipDisplayReference; + public void setDisplayLabel(final String displayLabel) { + this.displayLabel = displayLabel; + } + + public String getCustomerDisplayLabel() { + return customerDisplayLabel; + } + + public void setCustomerDisplayLabel(final String customerDisplayLabel) { + this.customerDisplayLabel = customerDisplayLabel; } @Override diff --git a/src/main/java/org/hostsharing/hsadminng/service/dto/ShareDTO.java b/src/main/java/org/hostsharing/hsadminng/service/dto/ShareDTO.java index cb61e088..8bd1daa4 100644 --- a/src/main/java/org/hostsharing/hsadminng/service/dto/ShareDTO.java +++ b/src/main/java/org/hostsharing/hsadminng/service/dto/ShareDTO.java @@ -48,7 +48,7 @@ public class ShareDTO implements Serializable { private Long membershipId; @AccessFor(read = {Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT}) - private String membershipDisplayReference; + private String membershipDisplayLabel; public Long getId() { return id; @@ -106,12 +106,12 @@ public class ShareDTO implements Serializable { this.membershipId = membershipId; } - public String getMembershipDisplayReference() { - return membershipDisplayReference; + public String getMembershipDisplayLabel() { + return membershipDisplayLabel; } - public void setMembershipDisplayReference(String membershipDisplayReference) { - this.membershipDisplayReference = membershipDisplayReference; + public void setMembershipDisplayLabel(String membershipDisplayLabel) { + this.membershipDisplayLabel = membershipDisplayLabel; } @Override @@ -145,7 +145,7 @@ public class ShareDTO implements Serializable { ", quantity=" + getQuantity() + ", remark='" + getRemark() + "'" + ", membership=" + getMembershipId() + - ", membership='" + getMembershipDisplayReference() + "'" + + ", membership='" + getMembershipDisplayLabel() + "'" + "}"; } } diff --git a/src/main/java/org/hostsharing/hsadminng/service/mapper/AssetMapper.java b/src/main/java/org/hostsharing/hsadminng/service/mapper/AssetMapper.java index e4e4a530..293d87e8 100644 --- a/src/main/java/org/hostsharing/hsadminng/service/mapper/AssetMapper.java +++ b/src/main/java/org/hostsharing/hsadminng/service/mapper/AssetMapper.java @@ -1,16 +1,12 @@ package org.hostsharing.hsadminng.service.mapper; import org.hostsharing.hsadminng.domain.Asset; -import org.hostsharing.hsadminng.domain.Customer; -import org.hostsharing.hsadminng.domain.Membership; import org.hostsharing.hsadminng.service.dto.AssetDTO; import org.mapstruct.AfterMapping; import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.MappingTarget; -import java.util.Objects; - /** * Mapper for the entity Asset and its DTO AssetDTO. */ @@ -18,19 +14,12 @@ import java.util.Objects; public interface AssetMapper extends EntityMapper { @Mapping(source = "membership.id", target = "membershipId") - @Mapping(target = "membershipDisplayReference", ignore = true) + @Mapping(target = "membershipDisplayLabel", ignore = true) AssetDTO toDto(Asset asset); @AfterMapping - default void setMembershipDisplayReference(final @MappingTarget AssetDTO dto, final Asset entity) { - // TODO: rather use method extracted from MembershipMaper.setMembershipDisplayReference() to avoid duplicate code - final Membership membership = entity.getMembership(); - final Customer customer = membership.getCustomer(); - dto.setMembershipDisplayReference(customer.getReference() - + ":" + customer.getPrefix() - + " [" + customer.getName() + "] " - + membership.getAdmissionDocumentDate().toString() + " - " - + Objects.toString(membership.getCancellationDocumentDate(), "")); + default void setMembershipDisplayLabel(final @MappingTarget AssetDTO dto, final Asset entity) { + dto.setMembershipDisplayLabel(MembershipMapper.displayLabel(entity.getMembership())); } @Mapping(source = "membershipId", target = "membership") diff --git a/src/main/java/org/hostsharing/hsadminng/service/mapper/CustomerMapper.java b/src/main/java/org/hostsharing/hsadminng/service/mapper/CustomerMapper.java index 6c9c204a..ced8f394 100644 --- a/src/main/java/org/hostsharing/hsadminng/service/mapper/CustomerMapper.java +++ b/src/main/java/org/hostsharing/hsadminng/service/mapper/CustomerMapper.java @@ -1,9 +1,11 @@ package org.hostsharing.hsadminng.service.mapper; -import org.hostsharing.hsadminng.domain.*; +import org.hostsharing.hsadminng.domain.Customer; import org.hostsharing.hsadminng.service.dto.CustomerDTO; - -import org.mapstruct.*; +import org.mapstruct.AfterMapping; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.MappingTarget; /** * Mapper for the entity Customer and its DTO CustomerDTO. @@ -11,6 +13,18 @@ import org.mapstruct.*; @Mapper(componentModel = "spring", uses = {}) public interface CustomerMapper extends EntityMapper { + static String displayLabel(Customer customer) { + return customer.getName() + + " [" + customer.getReference() + ":" + customer.getPrefix() +"]"; + } + + @Mapping(target = "displayLabel", ignore = true) + CustomerDTO toDto(Customer customer); + + @AfterMapping + default void setDisplayLabel(final @MappingTarget CustomerDTO dto, final Customer entity) { + dto.setDisplayLabel(displayLabel(entity)); + } @Mapping(target = "memberships", ignore = true) @Mapping(target = "sepamandates", ignore = true) diff --git a/src/main/java/org/hostsharing/hsadminng/service/mapper/MembershipMapper.java b/src/main/java/org/hostsharing/hsadminng/service/mapper/MembershipMapper.java index ed779cbe..ef2e5a47 100644 --- a/src/main/java/org/hostsharing/hsadminng/service/mapper/MembershipMapper.java +++ b/src/main/java/org/hostsharing/hsadminng/service/mapper/MembershipMapper.java @@ -16,21 +16,25 @@ import java.util.Objects; @Mapper(componentModel = "spring", uses = {CustomerMapper.class}) public interface MembershipMapper extends EntityMapper { + static String displayLabel(final Membership entity) { + final Customer customer = entity.getCustomer(); + return CustomerMapper.displayLabel(customer) + " " + + Objects.toString(entity.getAdmissionDocumentDate(), "") + " - " + + Objects.toString(entity.getCancellationDocumentDate(), "..."); + } + @Mapping(source = "customer.id", target = "customerId") @Mapping(source = "customer.prefix", target = "customerPrefix") - @Mapping(target = "membershipDisplayReference", ignore = true) + @Mapping(target = "displayLabel", ignore = true) + @Mapping(target = "customerDisplayLabel", ignore = true) MembershipDTO toDto(Membership membership); // TODO BLOG HOWTO: multi-field display reference for selection lists // also change the filed in the option list in *-update.html @AfterMapping - default void setMembershipDisplayReference(final @MappingTarget MembershipDTO dto, final Membership entity) { - final Customer customer = entity.getCustomer(); - dto.setMembershipDisplayReference(customer.getReference() - + ":" + customer.getPrefix() - + " [" + customer.getName() + "] " - + entity.getAdmissionDocumentDate().toString() + " - " - + Objects.toString(entity.getCancellationDocumentDate(), "")); + default void setMembershipDisplayLabel(final @MappingTarget MembershipDTO dto, final Membership entity) { + dto.setDisplayLabel(displayLabel(entity)); + dto.setCustomerDisplayLabel(CustomerMapper.displayLabel(entity.getCustomer())); } @Mapping(target = "shares", ignore = true) diff --git a/src/main/java/org/hostsharing/hsadminng/service/mapper/ShareMapper.java b/src/main/java/org/hostsharing/hsadminng/service/mapper/ShareMapper.java index 775ca7be..80ddc52b 100644 --- a/src/main/java/org/hostsharing/hsadminng/service/mapper/ShareMapper.java +++ b/src/main/java/org/hostsharing/hsadminng/service/mapper/ShareMapper.java @@ -2,8 +2,10 @@ package org.hostsharing.hsadminng.service.mapper; import org.hostsharing.hsadminng.domain.Share; import org.hostsharing.hsadminng.service.dto.ShareDTO; +import org.mapstruct.AfterMapping; import org.mapstruct.Mapper; import org.mapstruct.Mapping; +import org.mapstruct.MappingTarget; /** * Mapper for the entity Share and its DTO ShareDTO. @@ -12,9 +14,14 @@ import org.mapstruct.Mapping; public interface ShareMapper extends EntityMapper { @Mapping(source = "membership.id", target = "membershipId") - @Mapping(source = "membership.admissionDocumentDate", target = "membershipDisplayReference") + @Mapping(target = "membershipDisplayLabel", ignore = true) ShareDTO toDto(Share share); + @AfterMapping + default void setMembershipDisplayLabel(final @MappingTarget ShareDTO dto, final Share entity) { + dto.setMembershipDisplayLabel(MembershipMapper.displayLabel(entity.getMembership())); + } + @Mapping(source = "membershipId", target = "membership") Share toEntity(ShareDTO shareDTO); diff --git a/src/main/webapp/app/entities/asset/asset-detail.component.html b/src/main/webapp/app/entities/asset/asset-detail.component.html index d31955d3..d092b737 100644 --- a/src/main/webapp/app/entities/asset/asset-detail.component.html +++ b/src/main/webapp/app/entities/asset/asset-detail.component.html @@ -1,7 +1,7 @@
-

Asset {{asset.id}}

+

Asset: #{{asset.id}} - {{asset.membershipDisplayLabel}}


@@ -28,7 +28,7 @@
Membership
diff --git a/src/main/webapp/app/entities/asset/asset-update.component.html b/src/main/webapp/app/entities/asset/asset-update.component.html index c11e140a..951db0b4 100644 --- a/src/main/webapp/app/entities/asset/asset-update.component.html +++ b/src/main/webapp/app/entities/asset/asset-update.component.html @@ -89,7 +89,7 @@
diff --git a/src/main/webapp/app/entities/asset/asset.component.html b/src/main/webapp/app/entities/asset/asset.component.html index 29ac04a6..8472107d 100644 --- a/src/main/webapp/app/entities/asset/asset.component.html +++ b/src/main/webapp/app/entities/asset/asset.component.html @@ -19,8 +19,7 @@ Value Date Action Amount - Remark - Membership + Membership @@ -31,10 +30,9 @@ {{asset.valueDate | date:'mediumDate'}} {{asset.action}} {{asset.amount}} - {{asset.remark}} diff --git a/src/main/webapp/app/entities/customer/customer-detail.component.html b/src/main/webapp/app/entities/customer/customer-detail.component.html index 93c22ade..3a74ce9e 100644 --- a/src/main/webapp/app/entities/customer/customer-detail.component.html +++ b/src/main/webapp/app/entities/customer/customer-detail.component.html @@ -1,7 +1,7 @@
-

Customer {{customer.id}}

+

Customer: {{customer.displayLabel}}


diff --git a/src/main/webapp/app/entities/customer/customer.component.html b/src/main/webapp/app/entities/customer/customer.component.html index afb4fb12..c655cc04 100644 --- a/src/main/webapp/app/entities/customer/customer.component.html +++ b/src/main/webapp/app/entities/customer/customer.component.html @@ -18,18 +18,7 @@ Reference Prefix Name - Kind - Birth Date - Birth Place - Registration Court - Registration Number - Vat Region - Vat Number - Contractual Salutation - Contractual Address - Billing Salutation - Billing Address - Remark + Kind @@ -40,17 +29,6 @@ {{customer.prefix}} {{customer.name}} {{customer.kind}} - {{customer.birthDate | date:'mediumDate'}} - {{customer.birthPlace}} - {{customer.registrationCourt}} - {{customer.registrationNumber}} - {{customer.vatRegion}} - {{customer.vatNumber}} - {{customer.contractualSalutation}} - {{customer.contractualAddress}} - {{customer.billingSalutation}} - {{customer.billingAddress}} - {{customer.remark}}