diff --git a/dmp-backend/core/src/main/java/eu/eudat/commons/enums/DescriptionTemplateTypeStatus.java b/dmp-backend/core/src/main/java/eu/eudat/commons/enums/DescriptionTemplateTypeStatus.java index 718809a01..8967908b4 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/commons/enums/DescriptionTemplateTypeStatus.java +++ b/dmp-backend/core/src/main/java/eu/eudat/commons/enums/DescriptionTemplateTypeStatus.java @@ -1,43 +1,28 @@ package eu.eudat.commons.enums; -public enum DescriptionTemplateTypeStatus { +import eu.eudat.data.converters.enums.DatabaseEnum; - SAVED((short) 0), FINALIZED((short) 1), DELETED((short) 99); +import java.util.Map; - private final short value; +public enum DescriptionTemplateTypeStatus implements DatabaseEnum { - DescriptionTemplateTypeStatus(short value) { + Draft((short) 0), + Finalized((short) 1); + + private final Short value; + + DescriptionTemplateTypeStatus(Short value) { this.value = value; } - public short getValue() { + public Short getValue() { return value; } - public static DescriptionTemplateTypeStatus fromInteger(int value) { - switch (value) { - case 0: - return SAVED; - case 1: - return FINALIZED; - case 99: - return DELETED; - default: - throw new RuntimeException("Unsupported Description Template Type Status"); - } - } + private static final Map map = EnumUtils.getEnumValueMap(DescriptionTemplateTypeStatus.class); - public static DescriptionTemplateTypeStatus fromLabel(String value) { - switch (value) { - case "SAVED": - return SAVED; - case "FINALISED": - return FINALIZED; - case "DELETED": - return DELETED; - default: - throw new RuntimeException("Unsupported Description Template Type Status"); - } + public static DescriptionTemplateTypeStatus of(Short i) { + return map.get(i); } } diff --git a/dmp-backend/core/src/main/java/eu/eudat/commons/enums/IsActive.java b/dmp-backend/core/src/main/java/eu/eudat/commons/enums/IsActive.java new file mode 100644 index 000000000..4c94619c5 --- /dev/null +++ b/dmp-backend/core/src/main/java/eu/eudat/commons/enums/IsActive.java @@ -0,0 +1,28 @@ +package eu.eudat.commons.enums; + +import eu.eudat.data.converters.enums.DatabaseEnum; + +import java.util.Map; + +public enum IsActive implements DatabaseEnum { + + Inactive((short)0), + Active( (short)1); + + private final Short value; + + IsActive(Short value) { + this.value = value; + } + + public Short getValue() { + return value; + } + + private static final Map map = EnumUtils.getEnumValueMap(IsActive.class); + + public static IsActive of(Short i) { + return map.get(i); + } + +} diff --git a/dmp-backend/core/src/main/java/eu/eudat/commons/enums/Status.java b/dmp-backend/core/src/main/java/eu/eudat/commons/enums/Status.java deleted file mode 100644 index 406f65f77..000000000 --- a/dmp-backend/core/src/main/java/eu/eudat/commons/enums/Status.java +++ /dev/null @@ -1,29 +0,0 @@ -package eu.eudat.commons.enums; - -import eu.eudat.data.converters.enums.DatabaseEnum; - -import java.util.HashMap; -import java.util.Map; - -public enum Status implements DatabaseEnum { - - Inactive(0), - Active( 1); - - private final Integer value; - - Status(Integer value) { - this.value = value; - } - - public Integer getValue() { - return value; - } - - private static final Map map = EnumUtils.getEnumValueMap(Status.class); - - public static Status of(Integer i) { - return map.get(i); - } - -} diff --git a/dmp-backend/core/src/main/java/eu/eudat/data/CredentialEntity.java b/dmp-backend/core/src/main/java/eu/eudat/data/CredentialEntity.java index 0d42e114a..8c7686853 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/data/CredentialEntity.java +++ b/dmp-backend/core/src/main/java/eu/eudat/data/CredentialEntity.java @@ -1,11 +1,11 @@ package eu.eudat.data; import eu.eudat.commons.enums.ProviderType; -import eu.eudat.commons.enums.Status; +import eu.eudat.commons.enums.IsActive; import eu.eudat.data.converters.DateToUTCConverter; import eu.eudat.data.converters.enums.ProviderTypeConverter; -import eu.eudat.data.converters.enums.StatusConverter; +import eu.eudat.data.converters.enums.IsActiveConverter; import eu.eudat.data.helpers.EntityBinder; import eu.eudat.queryable.queryableentity.DataEntity; import jakarta.persistence.*; @@ -33,9 +33,9 @@ public class CredentialEntity implements DataEntity { public final static String _userId = "userId"; @Column(name = "\"Status\"", nullable = false) - @Convert(converter = StatusConverter.class) - private Status status; - public final static String _status = "status"; + @Convert(converter = IsActiveConverter.class) + private IsActive isActive; + public final static String _isActive = "isActive"; @Column(name = "\"Provider\"", nullable = false) @Convert(converter = ProviderTypeConverter.class) @@ -84,12 +84,12 @@ public class CredentialEntity implements DataEntity { this.userId = userId; } - public Status getStatus() { - return status; + public IsActive getIsActive() { + return isActive; } - public void setStatus(Status status) { - this.status = status; + public void setIsActive(IsActive isActive) { + this.isActive = isActive; } public ProviderType getProvider() { @@ -165,7 +165,7 @@ public class CredentialEntity implements DataEntity { @Override public void update(CredentialEntity entity) { - this.status = entity.status; + this.isActive = entity.isActive; this.publicValue = entity.getPublicValue(); this.email = entity.getEmail(); this.secret = entity.getSecret(); diff --git a/dmp-backend/core/src/main/java/eu/eudat/data/DescriptionTemplateTypeEntity.java b/dmp-backend/core/src/main/java/eu/eudat/data/DescriptionTemplateTypeEntity.java index bbf0a84e7..bf584c74d 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/data/DescriptionTemplateTypeEntity.java +++ b/dmp-backend/core/src/main/java/eu/eudat/data/DescriptionTemplateTypeEntity.java @@ -1,8 +1,10 @@ package eu.eudat.data; -import eu.eudat.commons.enums.Status; +import eu.eudat.commons.enums.DescriptionTemplateTypeStatus; +import eu.eudat.commons.enums.IsActive; +import eu.eudat.data.converters.enums.DescriptionTemplateTypeStatusConverter; +import eu.eudat.data.converters.enums.IsActiveConverter; import jakarta.persistence.*; -import org.hibernate.annotations.GenericGenerator; import java.time.Instant; import java.util.UUID; @@ -28,11 +30,16 @@ public class DescriptionTemplateTypeEntity { private Instant updatedAt; public final static String _updatedAt = "updatedAt"; - @Column(name = "is_active", length = 100, nullable = false) - @Enumerated(EnumType.STRING) - private Status isActive; + @Column(name = "is_active", nullable = false) + @Convert(converter = IsActiveConverter.class) + private IsActive isActive; public final static String _isActive = "isActive"; + @Column(name = "status", nullable = false) + @Convert(converter = DescriptionTemplateTypeStatusConverter.class) + private DescriptionTemplateTypeStatus status; + public final static String _status = "status"; + public UUID getId() { return id; @@ -66,11 +73,19 @@ public class DescriptionTemplateTypeEntity { this.updatedAt = updatedAt; } - public Status getIsActive() { + public IsActive getIsActive() { return isActive; } - public void setIsActive(Status isActive) { + public void setIsActive(IsActive isActive) { this.isActive = isActive; } + + public DescriptionTemplateTypeStatus getStatus() { + return status; + } + + public void setStatus(DescriptionTemplateTypeStatus status) { + this.status = status; + } } diff --git a/dmp-backend/core/src/main/java/eu/eudat/data/converters/enums/DescriptionTemplateTypeStatusConverter.java b/dmp-backend/core/src/main/java/eu/eudat/data/converters/enums/DescriptionTemplateTypeStatusConverter.java new file mode 100644 index 000000000..cc132124f --- /dev/null +++ b/dmp-backend/core/src/main/java/eu/eudat/data/converters/enums/DescriptionTemplateTypeStatusConverter.java @@ -0,0 +1,12 @@ +package eu.eudat.data.converters.enums; + +import eu.eudat.commons.enums.DescriptionTemplateTypeStatus; +import eu.eudat.commons.enums.IsActive; +import jakarta.persistence.Converter; + +@Converter +public class DescriptionTemplateTypeStatusConverter extends DatabaseEnumConverter { + public DescriptionTemplateTypeStatus of(Short i) { + return DescriptionTemplateTypeStatus.of(i); + } +} diff --git a/dmp-backend/core/src/main/java/eu/eudat/data/converters/enums/IsActiveConverter.java b/dmp-backend/core/src/main/java/eu/eudat/data/converters/enums/IsActiveConverter.java new file mode 100644 index 000000000..b88b7f22b --- /dev/null +++ b/dmp-backend/core/src/main/java/eu/eudat/data/converters/enums/IsActiveConverter.java @@ -0,0 +1,11 @@ +package eu.eudat.data.converters.enums; + +import eu.eudat.commons.enums.IsActive; +import jakarta.persistence.Converter; + +@Converter +public class IsActiveConverter extends DatabaseEnumConverter { + public IsActive of(Short i) { + return IsActive.of(i); + } +} diff --git a/dmp-backend/core/src/main/java/eu/eudat/data/converters/enums/StatusConverter.java b/dmp-backend/core/src/main/java/eu/eudat/data/converters/enums/StatusConverter.java deleted file mode 100644 index 88f1db8fa..000000000 --- a/dmp-backend/core/src/main/java/eu/eudat/data/converters/enums/StatusConverter.java +++ /dev/null @@ -1,15 +0,0 @@ -package eu.eudat.data.converters.enums; - -import eu.eudat.commons.enums.ProviderType; -import eu.eudat.commons.enums.Status; -import jakarta.persistence.Converter; - -import java.util.HashMap; -import java.util.Map; - -@Converter -public class StatusConverter extends DatabaseEnumConverter { - public Status of(Integer i) { - return Status.of(i); - } -} diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/DescriptionTemplateType.java b/dmp-backend/core/src/main/java/eu/eudat/model/DescriptionTemplateType.java index c7679284a..e2a1d92b3 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/DescriptionTemplateType.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/DescriptionTemplateType.java @@ -1,9 +1,9 @@ package eu.eudat.model; -import eu.eudat.commons.enums.Status; +import eu.eudat.commons.enums.DescriptionTemplateTypeStatus; +import eu.eudat.commons.enums.IsActive; import java.time.Instant; -import java.util.List; import java.util.UUID; public class DescriptionTemplateType { @@ -21,7 +21,10 @@ public class DescriptionTemplateType { private Instant updatedAt; public final static String _isActive = "isActive"; - private Status isActive; + private IsActive isActive; + + public final static String _status = "status"; + private DescriptionTemplateTypeStatus status; public final static String _hash = "hash"; private String hash; @@ -58,14 +61,22 @@ public class DescriptionTemplateType { this.updatedAt = updatedAt; } - public Status getIsActive() { + public IsActive getIsActive() { return isActive; } - public void setIsActive(Status isActive) { + public void setIsActive(IsActive isActive) { this.isActive = isActive; } + public DescriptionTemplateTypeStatus getStatus() { + return status; + } + + public void setStatus(DescriptionTemplateTypeStatus status) { + this.status = status; + } + public String getHash() { return hash; } diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/builder/DescriptionTemplateTypeBuilder.java b/dmp-backend/core/src/main/java/eu/eudat/model/builder/DescriptionTemplateTypeBuilder.java index 7581b6325..044703435 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/builder/DescriptionTemplateTypeBuilder.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/builder/DescriptionTemplateTypeBuilder.java @@ -52,6 +52,7 @@ public class DescriptionTemplateTypeBuilder extends BaseBuilder { } if (this.statuses != null) { - CriteriaBuilder.In inClause = queryContext.CriteriaBuilder.in(queryContext.Root.get(CredentialEntity._status)); + CriteriaBuilder.In inClause = queryContext.CriteriaBuilder.in(queryContext.Root.get(CredentialEntity._isActive)); for (Short item : this.statuses) inClause.value(item); predicates.add(inClause); diff --git a/dmp-backend/core/src/main/java/eu/eudat/query/DescriptionTemplateTypeQuery.java b/dmp-backend/core/src/main/java/eu/eudat/query/DescriptionTemplateTypeQuery.java index c7928779d..13dbec3ad 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/query/DescriptionTemplateTypeQuery.java +++ b/dmp-backend/core/src/main/java/eu/eudat/query/DescriptionTemplateTypeQuery.java @@ -1,7 +1,8 @@ package eu.eudat.query; import eu.eudat.authorization.AuthorizationFlags; -import eu.eudat.commons.enums.Status; +import eu.eudat.commons.enums.DescriptionTemplateTypeStatus; +import eu.eudat.commons.enums.IsActive; import eu.eudat.commons.scope.user.UserScope; import eu.eudat.data.DescriptionTemplateTypeEntity; import eu.eudat.model.DescriptionTemplateType; @@ -25,7 +26,8 @@ public class DescriptionTemplateTypeQuery extends QueryBase ids; - private Collection isActives; + private Collection isActives; + private Collection statuses; private Collection excludedIds; private EnumSet authorize = EnumSet.of(AuthorizationFlags.None); @@ -49,21 +51,36 @@ public class DescriptionTemplateTypeQuery extends QueryBase values) { + public DescriptionTemplateTypeQuery isActive(Collection values) { this.isActives = values; return this; } + public DescriptionTemplateTypeQuery statuses(DescriptionTemplateTypeStatus value) { + this.statuses = List.of(value); + return this; + } + + public DescriptionTemplateTypeQuery statuses(DescriptionTemplateTypeStatus... value) { + this.statuses = Arrays.asList(value); + return this; + } + + public DescriptionTemplateTypeQuery statuses(Collection values) { + this.statuses = values; + return this; + } + public DescriptionTemplateTypeQuery excludedIds(Collection values) { this.excludedIds = values; return this; @@ -102,7 +119,7 @@ public class DescriptionTemplateTypeQuery extends QueryBase inClause = queryContext.CriteriaBuilder.in(queryContext.Root.get(DescriptionTemplateTypeEntity._isActive)); - for (Status item : this.isActives) inClause.value(item); + CriteriaBuilder.In inClause = queryContext.CriteriaBuilder.in(queryContext.Root.get(DescriptionTemplateTypeEntity._isActive)); + for (IsActive item : this.isActives) inClause.value(item); + predicates.add(inClause); + } + + if (this.statuses != null) { + CriteriaBuilder.In inClause = queryContext.CriteriaBuilder.in(queryContext.Root.get(DescriptionTemplateTypeEntity._status)); + for (DescriptionTemplateTypeStatus item : this.statuses) inClause.value(item); predicates.add(inClause); } if (this.excludedIds != null) { @@ -141,7 +164,8 @@ public class DescriptionTemplateTypeQuery extends QueryBase isActive; + private List isActive; + private List statuses; private List ids; private List excludedIds; @@ -23,11 +25,11 @@ public class DescriptionTemplateTypeLookup extends Lookup { this.like = like; } - public List getIsActive() { + public List getIsActive() { return isActive; } - public void setIsActive(List isActive) { + public void setIsActive(List isActive) { this.isActive = isActive; } @@ -51,6 +53,7 @@ public class DescriptionTemplateTypeLookup extends Lookup { DescriptionTemplateTypeQuery query = queryFactory.query(DescriptionTemplateTypeQuery.class); if (this.like != null) query.like(this.like); if (this.isActive != null) query.isActive(this.isActive); + if (this.statuses != null) query.statuses(this.statuses); if (this.ids != null) query.ids(this.ids); if (this.excludedIds != null) query.excludedIds(this.excludedIds); diff --git a/dmp-backend/core/src/main/java/eu/eudat/service/DescriptionTemplateTypeServiceImpl.java b/dmp-backend/core/src/main/java/eu/eudat/service/DescriptionTemplateTypeServiceImpl.java index e7c9c2970..188ff36fb 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/service/DescriptionTemplateTypeServiceImpl.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/DescriptionTemplateTypeServiceImpl.java @@ -3,7 +3,7 @@ package eu.eudat.service; import eu.eudat.authorization.AuthorizationFlags; import eu.eudat.authorization.Permission; import eu.eudat.commons.JsonHandlingService; -import eu.eudat.commons.enums.Status; +import eu.eudat.commons.enums.IsActive; import eu.eudat.convention.ConventionService; import eu.eudat.data.DescriptionTemplateTypeEntity; import eu.eudat.errorcode.ErrorThesaurusProperties; @@ -13,7 +13,6 @@ import eu.eudat.model.DescriptionTemplateType; import eu.eudat.model.builder.DescriptionTemplateTypeBuilder; import eu.eudat.model.deleter.DescriptionTemplateTypeDeleter; import eu.eudat.model.persist.DescriptionTemplateTypePersist; -import eu.eudat.query.DescriptionTemplateTypeQuery; import gr.cite.commons.web.authz.service.AuthorizationService; import gr.cite.tools.data.builder.BuilderFactory; import gr.cite.tools.data.deleter.DeleterFactory; @@ -93,11 +92,12 @@ public class DescriptionTemplateTypeServiceImpl implements DescriptionTemplateTy } else { data = new DescriptionTemplateTypeEntity(); data.setId(UUID.randomUUID()); - data.setIsActive(Status.Active); + data.setIsActive(IsActive.Active); data.setCreatedAt(Instant.now()); } data.setName(model.getName()); + data.setStatus(model.getStatus()); data.setUpdatedAt(Instant.now()); if (isUpdate) this.entityManager.merge(data); else this.entityManager.persist(data); diff --git a/dmp-backend/web/src/main/java/eu/eudat/interceptors/UserInterceptor.java b/dmp-backend/web/src/main/java/eu/eudat/interceptors/UserInterceptor.java index a488952c0..743281495 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/interceptors/UserInterceptor.java +++ b/dmp-backend/web/src/main/java/eu/eudat/interceptors/UserInterceptor.java @@ -2,7 +2,7 @@ package eu.eudat.interceptors; import eu.eudat.commons.enums.ProviderType; -import eu.eudat.commons.enums.Status; +import eu.eudat.commons.enums.IsActive; import eu.eudat.commons.scope.user.UserScope; import eu.eudat.data.CredentialEntity; import eu.eudat.data.entities.UserInfo; @@ -100,7 +100,7 @@ public class UserInterceptor implements WebRequestInterceptor { credentialQuery.where( credentialCriteriaBuilder.and( credentialCriteriaBuilder.equal(credentialRoot.get(CredentialEntity._externalId), subjectId), - credentialCriteriaBuilder.equal(credentialRoot.get(CredentialEntity._status), Status.Active), + credentialCriteriaBuilder.equal(credentialRoot.get(CredentialEntity._isActive), IsActive.Active), credentialCriteriaBuilder.equal(credentialRoot.get(CredentialEntity._provider), ProviderType.Keycloack) )); @@ -202,7 +202,7 @@ public class UserInterceptor implements WebRequestInterceptor { credentialEntity.setSecret(subjectId); credentialEntity.setCreationTime(new Date()); credentialEntity.setLastUpdateTime(new Date()); - credentialEntity.setStatus(Status.Active); + credentialEntity.setIsActive(IsActive.Active); credentialEntity.setProvider(ProviderType.Keycloack);//TODO: Authn credentialEntity.setExternalId(subjectId); credentialEntity.setEmail(email); diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/builders/entity/CredentialBuilder.java b/dmp-backend/web/src/main/java/eu/eudat/logic/builders/entity/CredentialBuilder.java index cc1177079..379b704e2 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/builders/entity/CredentialBuilder.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/builders/entity/CredentialBuilder.java @@ -1,7 +1,7 @@ package eu.eudat.logic.builders.entity; import eu.eudat.commons.enums.ProviderType; -import eu.eudat.commons.enums.Status; +import eu.eudat.commons.enums.IsActive; import eu.eudat.data.CredentialEntity; import eu.eudat.logic.builders.Builder; import eu.eudat.data.entities.UserInfo; @@ -18,7 +18,7 @@ public class CredentialBuilder extends Builder { private UserInfo userInfo; - private Status status; + private IsActive isActive; private ProviderType provider; @@ -44,8 +44,8 @@ public class CredentialBuilder extends Builder { return this; } - public CredentialBuilder status(Status status) { - this.status = status; + public CredentialBuilder status(IsActive isActive) { + this.isActive = isActive; return this; } @@ -86,7 +86,7 @@ public class CredentialBuilder extends Builder { public CredentialEntity build() { CredentialEntity credential = new CredentialEntity(); - credential.setStatus(status); + credential.setIsActive(isActive); credential.setLastUpdateTime(lastUpdateTime); credential.setCreationTime(creationTime); credential.setProvider(provider);