diff --git a/src/main/java/org/hostsharing/hsadminng/domain/Asset.java b/src/main/java/org/hostsharing/hsadminng/domain/Asset.java index f0d1cfd1..db985858 100644 --- a/src/main/java/org/hostsharing/hsadminng/domain/Asset.java +++ b/src/main/java/org/hostsharing/hsadminng/domain/Asset.java @@ -24,6 +24,7 @@ public class Asset implements Serializable { private static final long serialVersionUID = 1L; public static final String ENTITY_NAME = "asset"; + public static final String ENTITY_TYPE_ID = "customer.asset"; @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequenceGenerator") diff --git a/src/main/java/org/hostsharing/hsadminng/domain/Customer.java b/src/main/java/org/hostsharing/hsadminng/domain/Customer.java index 55276b75..aefb1fcf 100644 --- a/src/main/java/org/hostsharing/hsadminng/domain/Customer.java +++ b/src/main/java/org/hostsharing/hsadminng/domain/Customer.java @@ -22,6 +22,8 @@ public class Customer implements Serializable { private static final long serialVersionUID = 1L; + public static final String ENTITY_TYPE_ID = "customer.Customer"; + @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequenceGenerator") @SequenceGenerator(name = "sequenceGenerator") diff --git a/src/main/java/org/hostsharing/hsadminng/domain/Membership.java b/src/main/java/org/hostsharing/hsadminng/domain/Membership.java index f940ab32..36cbdc00 100644 --- a/src/main/java/org/hostsharing/hsadminng/domain/Membership.java +++ b/src/main/java/org/hostsharing/hsadminng/domain/Membership.java @@ -23,6 +23,7 @@ public class Membership implements Serializable { private static final long serialVersionUID = 1L; public static final String ENTITY_NAME = "membership"; + public static final String ENTITY_TYPE_ID = "customer.Membership"; @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequenceGenerator") diff --git a/src/main/java/org/hostsharing/hsadminng/domain/SepaMandate.java b/src/main/java/org/hostsharing/hsadminng/domain/SepaMandate.java index bc0ef38c..16b849d9 100644 --- a/src/main/java/org/hostsharing/hsadminng/domain/SepaMandate.java +++ b/src/main/java/org/hostsharing/hsadminng/domain/SepaMandate.java @@ -20,6 +20,8 @@ public class SepaMandate implements Serializable { private static final long serialVersionUID = 1L; + public static final String ENTITY_TYPE_ID = "customer.SepaMandate"; + @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequenceGenerator") @SequenceGenerator(name = "sequenceGenerator") diff --git a/src/main/java/org/hostsharing/hsadminng/domain/Share.java b/src/main/java/org/hostsharing/hsadminng/domain/Share.java index b8032f4d..3aa6e10c 100644 --- a/src/main/java/org/hostsharing/hsadminng/domain/Share.java +++ b/src/main/java/org/hostsharing/hsadminng/domain/Share.java @@ -23,6 +23,7 @@ public class Share implements Serializable { private static final long serialVersionUID = 1L; public static final String ENTITY_NAME = "share"; + public static final String ENTITY_TYPE_ID = "customer.share"; @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequenceGenerator") diff --git a/src/main/java/org/hostsharing/hsadminng/service/accessfilter/EntityTypeId.java b/src/main/java/org/hostsharing/hsadminng/service/accessfilter/EntityTypeId.java new file mode 100644 index 00000000..3ba2792d --- /dev/null +++ b/src/main/java/org/hostsharing/hsadminng/service/accessfilter/EntityTypeId.java @@ -0,0 +1,20 @@ +// Licensed under Apache-2.0 +package org.hostsharing.hsadminng.service.accessfilter; + +import java.lang.annotation.*; + +/** + * Specifies the entityTypeId to be used in UserRoleAssignment. + */ +@Documented +@Target({ ElementType.FIELD, ElementType.TYPE_USE }) +@Retention(RetentionPolicy.RUNTIME) +public @interface EntityTypeId { + + /** + * The ID of the entity type, max length: 32. + * + * Pattern: "module.Entity", e.g. "customer.Membership" + */ + String value(); +} 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 8fb08e80..6616c68f 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,7 @@ // Licensed under Apache-2.0 package org.hostsharing.hsadminng.service.dto; +import org.hostsharing.hsadminng.domain.Asset; import org.hostsharing.hsadminng.domain.enumeration.AssetAction; import org.hostsharing.hsadminng.service.AssetService; import org.hostsharing.hsadminng.service.MembershipService; @@ -20,6 +21,7 @@ import javax.validation.constraints.Size; /** * A DTO for the Asset entity. */ +@EntityTypeId(Asset.ENTITY_TYPE_ID) public class AssetDTO implements Serializable, AccessMappings { @SelfId(resolver = AssetService.class) 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 e34813b2..bcb73875 100644 --- a/src/main/java/org/hostsharing/hsadminng/service/dto/CustomerDTO.java +++ b/src/main/java/org/hostsharing/hsadminng/service/dto/CustomerDTO.java @@ -1,6 +1,7 @@ // Licensed under Apache-2.0 package org.hostsharing.hsadminng.service.dto; +import org.hostsharing.hsadminng.domain.Customer; import org.hostsharing.hsadminng.domain.enumeration.CustomerKind; import org.hostsharing.hsadminng.domain.enumeration.VatRegion; import org.hostsharing.hsadminng.service.CustomerService; @@ -17,6 +18,7 @@ import javax.validation.constraints.*; /** * A DTO for the Customer entity. */ +@EntityTypeId(Customer.ENTITY_TYPE_ID) public class CustomerDTO implements AccessMappings, FluentBuilder { @SelfId(resolver = CustomerService.class) 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 389d9ea4..5fb9ee31 100644 --- a/src/main/java/org/hostsharing/hsadminng/service/dto/MembershipDTO.java +++ b/src/main/java/org/hostsharing/hsadminng/service/dto/MembershipDTO.java @@ -1,6 +1,7 @@ // Licensed under Apache-2.0 package org.hostsharing.hsadminng.service.dto; +import org.hostsharing.hsadminng.domain.Membership; import org.hostsharing.hsadminng.service.CustomerService; import org.hostsharing.hsadminng.service.MembershipService; import org.hostsharing.hsadminng.service.accessfilter.*; @@ -17,6 +18,7 @@ import javax.validation.constraints.Size; /** * A DTO for the Membership entity. */ +@EntityTypeId(Membership.ENTITY_TYPE_ID) public class MembershipDTO implements AccessMappings, FluentBuilder { @SelfId(resolver = MembershipService.class) diff --git a/src/main/java/org/hostsharing/hsadminng/service/dto/SepaMandateDTO.java b/src/main/java/org/hostsharing/hsadminng/service/dto/SepaMandateDTO.java index 0795a713..5fb29c37 100644 --- a/src/main/java/org/hostsharing/hsadminng/service/dto/SepaMandateDTO.java +++ b/src/main/java/org/hostsharing/hsadminng/service/dto/SepaMandateDTO.java @@ -1,6 +1,7 @@ // Licensed under Apache-2.0 package org.hostsharing.hsadminng.service.dto; +import org.hostsharing.hsadminng.domain.SepaMandate; import org.hostsharing.hsadminng.service.CustomerService; import org.hostsharing.hsadminng.service.SepaMandateService; import org.hostsharing.hsadminng.service.accessfilter.*; @@ -17,6 +18,7 @@ import javax.validation.constraints.Size; /** * A DTO for the SepaMandate entity. */ +@EntityTypeId(SepaMandate.ENTITY_TYPE_ID) public class SepaMandateDTO implements AccessMappings, FluentBuilder { @SelfId(resolver = SepaMandateService.class) 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 2fe9841e..deac9f30 100644 --- a/src/main/java/org/hostsharing/hsadminng/service/dto/ShareDTO.java +++ b/src/main/java/org/hostsharing/hsadminng/service/dto/ShareDTO.java @@ -1,6 +1,7 @@ // Licensed under Apache-2.0 package org.hostsharing.hsadminng.service.dto; +import org.hostsharing.hsadminng.domain.Share; import org.hostsharing.hsadminng.domain.enumeration.ShareAction; import org.hostsharing.hsadminng.service.MembershipService; import org.hostsharing.hsadminng.service.ShareService; @@ -19,6 +20,7 @@ import javax.validation.constraints.Size; /** * A DTO for the Share entity. */ +@EntityTypeId(Share.ENTITY_TYPE_ID) public class ShareDTO implements Serializable, AccessMappings { @SelfId(resolver = ShareService.class)