diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/TypeEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/TypeEntity.java index b72dbbae3..bdbe6b86a 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/TypeEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/TypeEntity.java @@ -60,6 +60,8 @@ public class TypeEntity { private boolean autoHideSkipped; @Column private OffsetDateTime softDeletedTime; + @Column + private boolean experimental; @Column private boolean dossierDictionaryOnly; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DictionaryManagementService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DictionaryManagementService.java index 51ac4103f..3f077a717 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DictionaryManagementService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DictionaryManagementService.java @@ -106,7 +106,8 @@ public class DictionaryManagementService { typeRequest.isHasDictionary(), typeRequest.isSystemManaged(), typeRequest.isAutoHideSkipped(), - typeRequest.isDossierDictionaryOnly()), Type.class, new TypeMapper()); + typeRequest.isDossierDictionaryOnly(), + typeRequest.isExperimental()), Type.class, new TypeMapper()); } @@ -275,8 +276,11 @@ public class DictionaryManagementService { public void checkForDossierTypeExistenceAndCreate(String typeId) { - checkForDossierTypeExistenceAndCreate(typeId,false); + + checkForDossierTypeExistenceAndCreate(typeId, false); } + + public void checkForDossierTypeExistenceAndCreate(String typeId, boolean includeDeleted) { // check for the existence of dossier type and create in case it does not exist if (isDossierTypeId(typeId)) { @@ -289,7 +293,7 @@ public class DictionaryManagementService { log.info("--> " + dossierId + " - " + dossierTemplateId); checkDossierMatchesDossierTemplate(dossierId, dossierTemplateId); // type not found, it should be created based on the info from the dossier template type - var dossierTemplateType = dictionaryPersistenceService.getType(getDosssierTemplateTypeIdFromTypeId(typeId),includeDeleted); + var dossierTemplateType = dictionaryPersistenceService.getType(getDosssierTemplateTypeIdFromTypeId(typeId), includeDeleted); Type dossierDictionaryType = MagicConverter.convert(dossierTemplateType, Type.class); dossierDictionaryType.setVersion(0); dossierDictionaryType.setDossierId(dossierId); diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DictionaryService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DictionaryService.java index dc5945ec8..9f937875e 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DictionaryService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DictionaryService.java @@ -274,6 +274,7 @@ public class DictionaryService { .autoHideSkipped(typeResult.isAutoHideSkipped()) .dossierDictionaryOnly(typeResult.isDossierDictionaryOnly()) .softDeletedTime(typeResult.getSoftDeletedTime()) + .experimental(typeResult.isExperimental()) .build()) .collect(Collectors.toList()); return new TypeResponse(typeValues); @@ -331,6 +332,7 @@ public class DictionaryService { .systemManaged(dictionaryForType.isSystemManaged()) .autoHideSkipped(dictionaryForType.isAutoHideSkipped()) .dossierDictionaryOnly(dictionaryForType.isDossierDictionaryOnly()) + .experimental(dictionaryForType.isExperimental()) .build(); } @@ -392,6 +394,7 @@ public class DictionaryService { .systemManaged(entity.isSystemManaged()) .autoHideSkipped(entity.isAutoHideSkipped()) .dossierDictionaryOnly(entity.isDossierDictionaryOnly()) + .experimental(entity.isExperimental()) .build(); dictionaries.add(dict); }); diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateCloneService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateCloneService.java index 5152fb4fe..c6da3cbe2 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateCloneService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateCloneService.java @@ -174,7 +174,8 @@ public class DossierTemplateCloneService { t.isHasDictionary(), t.isSystemManaged(), t.isAutoHideSkipped(), - t.isDossierDictionaryOnly()); + t.isDossierDictionaryOnly(), + t.isExperimental()); entryPersistenceService.cloneEntries(t.getId(), type.getId()); } } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DictionaryPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DictionaryPersistenceService.java index 98ace9fe9..c516814af 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DictionaryPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DictionaryPersistenceService.java @@ -53,7 +53,8 @@ public class DictionaryPersistenceService { boolean hasDictionary, boolean systemManaged, boolean autoHideSkipped, - boolean dossierDictionaryOnly) { + boolean dossierDictionaryOnly, + boolean experimental) { checkRankAlreadyExists(type, dossierTemplateId, rank, dossierId); @@ -78,6 +79,7 @@ public class DictionaryPersistenceService { .autoHideSkipped(autoHideSkipped) .softDeletedTime(null) .dossierDictionaryOnly(dossierDictionaryOnly) + .experimental(experimental) .build(); return typeRepository.saveAndFlush(t); @@ -90,7 +92,12 @@ public class DictionaryPersistenceService { if (!existingTypesForRank.isEmpty()) { for (var existingTypeValueForRank : existingTypesForRank) { if (!existingTypeValueForRank.isDeleted() && !existingTypeValueForRank.getType().equalsIgnoreCase(type)) { - throw new ConflictException("Rank already exists: " + rank + " on type: " + existingTypeValueForRank.getType() + " type id: " + existingTypeValueForRank.getId()); + throw new ConflictException("Rank already exists: " + + rank + + " on type: " + + existingTypeValueForRank.getType() + + " type id: " + + existingTypeValueForRank.getId()); } } } @@ -298,6 +305,7 @@ public class DictionaryPersistenceService { } + @Transactional public void updateRankForType(String typeId, int newRank) { diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/resources/db/changelog/db.changelog-tenant.yaml b/persistence-service-v1/persistence-service-processor-v1/src/main/resources/db/changelog/db.changelog-tenant.yaml index 2bd9b147d..ceadb70a7 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/resources/db/changelog/db.changelog-tenant.yaml +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/resources/db/changelog/db.changelog-tenant.yaml @@ -199,3 +199,5 @@ databaseChangeLog: file: db/changelog/tenant/sql/207-acl-migration-cleanup.sql - include: file: db/changelog/tenant/125-add-max-size-for-legal-basis-in-manual-legal-basis-change.yaml + - include: + file: db/changelog/tenant/126-add-experimental-flag-to-entity.yaml \ No newline at end of file diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/resources/db/changelog/tenant/126-add-experimental-flag-to-entity.yaml b/persistence-service-v1/persistence-service-processor-v1/src/main/resources/db/changelog/tenant/126-add-experimental-flag-to-entity.yaml new file mode 100644 index 000000000..5f2db6952 --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/resources/db/changelog/tenant/126-add-experimental-flag-to-entity.yaml @@ -0,0 +1,12 @@ +databaseChangeLog: + - changeSet: + id: add-experimental-flag-to-entity + author: dom + changes: + - addColumn: + columns: + - column: + name: experimental + type: BOOLEAN + defaultValueBoolean: false + tableName: entity \ No newline at end of file diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/TypeValue.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/TypeValue.java index 86e22eeb9..f6cf22931 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/TypeValue.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/TypeValue.java @@ -66,6 +66,9 @@ public class TypeValue { @Schema(description = "Flag to indicate the dictionary is on dossier level only") private boolean dossierDictionaryOnly; + @Schema(description = "Flag to indicate if a entity is experimental and should not be show in default mode") + private boolean experimental; + @Schema(description = "Time of soft deletion, will be null if it's not soft deleted") private OffsetDateTime softDeletedTime; diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/dictionary/Dictionary.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/dictionary/Dictionary.java index fad4143d8..c42d9f048 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/dictionary/Dictionary.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/dictionary/Dictionary.java @@ -70,4 +70,7 @@ public class Dictionary { @Schema(description = "Flag to indicate the dictionary is on dossier level only") private boolean dossierDictionaryOnly; + @Schema(description = "Flag to indicate if a entity is experimental and should not be show in default mode") + private boolean experimental; + } diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/dossiertemplate/type/Type.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/dossiertemplate/type/Type.java index c366a4159..59f1d8c39 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/dossiertemplate/type/Type.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/dossiertemplate/type/Type.java @@ -42,6 +42,7 @@ public class Type { private boolean systemManaged; private boolean autoHideSkipped; private OffsetDateTime softDeletedTime; + private boolean experimental; // For auto-mappers