From 4a6777be71178421e8affd7c5bea440b8660ca2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominique=20Eifl=C3=A4nder?= Date: Tue, 23 Apr 2024 12:18:33 +0200 Subject: [PATCH 1/2] RED-8826: Added experimetal flag to entity types --- .../entity/configuration/TypeEntity.java | 2 + .../service/DictionaryManagementService.java | 95 ++++++++----------- .../processor/service/DictionaryService.java | 3 + .../service/DossierTemplateCloneService.java | 38 ++++---- .../DictionaryPersistenceService.java | 4 +- .../db/changelog/db.changelog-tenant.yaml | 2 + .../126-add-experimental-flag-to-entity.yaml | 12 +++ .../v1/api/shared/model/TypeValue.java | 3 + .../shared/model/dictionary/Dictionary.java | 3 + .../model/dossiertemplate/type/Type.java | 1 + 10 files changed, 85 insertions(+), 78 deletions(-) create mode 100644 persistence-service-v1/persistence-service-processor-v1/src/main/resources/db/changelog/tenant/126-add-experimental-flag-to-entity.yaml 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..46b2da1ce 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 @@ -91,22 +91,23 @@ public class DictionaryManagementService { } return MagicConverter.convert(dictionaryPersistenceService.addType(typeRequest.getType(), - typeRequest.getDossierTemplateId(), - color, - recommendationHexColor, - skippedHexColor, - typeRequest.getRank(), - typeRequest.isHint(), - typeRequest.isCaseInsensitive(), - typeRequest.isRecommendation(), - typeRequest.getDescription(), - typeRequest.isAddToDictionaryAction(), - typeRequest.getLabel(), - typeRequest.getDossierId(), - typeRequest.isHasDictionary(), - typeRequest.isSystemManaged(), - typeRequest.isAutoHideSkipped(), - typeRequest.isDossierDictionaryOnly()), Type.class, new TypeMapper()); + typeRequest.getDossierTemplateId(), + color, + recommendationHexColor, + skippedHexColor, + typeRequest.getRank(), + typeRequest.isHint(), + typeRequest.isCaseInsensitive(), + typeRequest.isRecommendation(), + typeRequest.getDescription(), + typeRequest.isAddToDictionaryAction(), + typeRequest.getLabel(), + typeRequest.getDossierId(), + typeRequest.isHasDictionary(), + typeRequest.isSystemManaged(), + typeRequest.isAutoHideSkipped(), + typeRequest.isDossierDictionaryOnly(), + typeRequest.isExperimental()), Type.class, new TypeMapper()); } @@ -132,11 +133,9 @@ public class DictionaryManagementService { List typeResponse = dictionaryPersistenceService.getCumulatedTypes(dossierTemplateId, dossierId, false); for (TypeEntity res : typeResponse) { var dossierTemplateResponse = res.getDossierTemplateId() == null ? res.getDossierTemplate().getId() : res.getDossierTemplateId(); - if (res.getDossierId() != null - && res.getDossierId().equals(dossierId) - && !type.equals(res.getType()) - && dossierTemplateResponse.equals(dossierTemplateId) - && labelToCheck.equals(res.getLabel()) || !type.equals(res.getType()) && dossierTemplateResponse.equals(dossierTemplateId) && labelToCheck.equals(res.getLabel())) { + if (res.getDossierId() != null && res.getDossierId() + .equals(dossierId) && !type.equals(res.getType()) && dossierTemplateResponse.equals(dossierTemplateId) && labelToCheck.equals(res.getLabel()) || !type.equals( + res.getType()) && dossierTemplateResponse.equals(dossierTemplateId) && labelToCheck.equals(res.getLabel())) { throw new ConflictException("Label must be unique."); } } @@ -147,13 +146,10 @@ public class DictionaryManagementService { return dictionaryPersistenceService.getCumulatedTypes(typeRequest.getDossierTemplateId(), typeRequest.getDossierId(), false) .stream() - .anyMatch(typeResult -> typeRequest.getDossierId() != null - && typeResult.getDossierId() != null - && typeRequest.getDossierId().equals(typeResult.getDossierId()) - && typeRequest.getType().equals(typeResult.getType()) - && typeRequest.getDossierTemplateId().equals(typeResult.getDossierTemplateId()) - || typeRequest.getDossierId() == null && typeRequest.getType().equals(typeResult.getType()) && typeRequest.getDossierTemplateId() - .equals(typeResult.getDossierTemplateId())); + .anyMatch(typeResult -> typeRequest.getDossierId() != null && typeResult.getDossierId() != null && typeRequest.getDossierId() + .equals(typeResult.getDossierId()) && typeRequest.getType().equals(typeResult.getType()) && typeRequest.getDossierTemplateId() + .equals(typeResult.getDossierTemplateId()) || typeRequest.getDossierId() == null && typeRequest.getType() + .equals(typeResult.getType()) && typeRequest.getDossierTemplateId().equals(typeResult.getDossierTemplateId())); } @@ -239,9 +235,7 @@ public class DictionaryManagementService { checkForDossierTypeExistenceAndCreate(typeId); - Set cleanEntries = entries.stream() - .map(StringCleaningUtility::cleanString) - .collect(toSet()); + Set cleanEntries = entries.stream().map(StringCleaningUtility::cleanString).collect(toSet()); if (CollectionUtils.isEmpty(entries)) { throw new BadRequestException("Entry list is empty."); @@ -275,8 +269,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 +286,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); @@ -311,13 +308,10 @@ public class DictionaryManagementService { private Set getInvalidEntries(Set entries) { - Predicate isDictionaryEntryNotValid = entry -> DictionaryValidator.validateDictionaryEntry(entry) - .isPresent(); + Predicate isDictionaryEntryNotValid = entry -> DictionaryValidator.validateDictionaryEntry(entry).isPresent(); Predicate isStopword = stopwordService::isStopword; - return entries.stream() - .filter(isDictionaryEntryNotValid.or(isStopword)) - .collect(toSet()); + return entries.stream().filter(isDictionaryEntryNotValid.or(isStopword)).collect(toSet()); } @@ -330,40 +324,25 @@ public class DictionaryManagementService { var currentVersion = getCurrentVersion(typeResult); - List allExistingEntiesFromType = entryPersistenceService.getEntries(typeId, dictionaryEntryType, null) - .stream() - .map(BaseDictionaryEntry::getValue) - .toList(); + List allExistingEntiesFromType = entryPersistenceService.getEntries(typeId, dictionaryEntryType, null).stream().map(BaseDictionaryEntry::getValue).toList(); if (typeResult.isCaseInsensitive()) { // Set existing entries to deleted. - var caseInsensitiveExistingEntries = allExistingEntiesFromType.stream() - .filter(e -> entries.stream() - .anyMatch(e::equalsIgnoreCase)) - .collect(toSet()); + var caseInsensitiveExistingEntries = allExistingEntiesFromType.stream().filter(e -> entries.stream().anyMatch(e::equalsIgnoreCase)).collect(toSet()); entryPersistenceService.deleteEntries(typeId, caseInsensitiveExistingEntries, currentVersion + 1, dictionaryEntryType); // Create new deleted entries for not existing. - var caseInsensitiveNonExistingEntries = entries.stream() - .filter(e -> caseInsensitiveExistingEntries.stream() - .noneMatch(e::equalsIgnoreCase)) - .collect(toSet()); + var caseInsensitiveNonExistingEntries = entries.stream().filter(e -> caseInsensitiveExistingEntries.stream().noneMatch(e::equalsIgnoreCase)).collect(toSet()); entryPersistenceService.addDeleteEntries(typeId, caseInsensitiveNonExistingEntries, currentVersion + 1, dictionaryEntryType); } else { // Set existing entries to deleted. - var caseSensitiveExistingEntries = allExistingEntiesFromType.stream() - .filter(e -> entries.stream() - .anyMatch(e::equals)) - .collect(toSet()); + var caseSensitiveExistingEntries = allExistingEntiesFromType.stream().filter(e -> entries.stream().anyMatch(e::equals)).collect(toSet()); entryPersistenceService.deleteEntries(typeId, new HashSet<>(caseSensitiveExistingEntries), currentVersion + 1, dictionaryEntryType); // Create new deleted entries for not existing. - var nonExistingEntries = entries.stream() - .filter(e -> caseSensitiveExistingEntries.stream() - .noneMatch(e::equals)) - .collect(toSet()); + var nonExistingEntries = entries.stream().filter(e -> caseSensitiveExistingEntries.stream().noneMatch(e::equals)).collect(toSet()); entryPersistenceService.addDeleteEntries(typeId, nonExistingEntries, currentVersion + 1, dictionaryEntryType); } 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..00af767bd 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 @@ -97,7 +97,7 @@ public class DossierTemplateCloneService { cloneLegalBasisMapping(dossierTemplate.getId(), clonedDossierTemplate.getId()); clonedDossierTemplate.setDossierTemplateStatus(DossierTemplateStatus.valueOf(dossierTemplatePersistenceService.computeDossierTemplateStatus(clonedDossierTemplate) - .name())); + .name())); clonedDossierTemplate.setOcrByDefault(cloneDossierTemplateRequest.isOcrByDefault()); clonedDossierTemplate.setRemoveWatermark(cloneDossierTemplateRequest.isRemoveWatermark()); @@ -149,8 +149,7 @@ public class DossierTemplateCloneService { private void cloneLegalBasisMapping(String dossierTemplateId, String clonedDossierTemplateId) { legalBasisMappingPersistenceService.setLegalBasisMapping(clonedDossierTemplateId, - MagicConverter.convert(legalBasisMappingPersistenceService.getLegalBasisMapping(dossierTemplateId), - LegalBasis.class)); + MagicConverter.convert(legalBasisMappingPersistenceService.getLegalBasisMapping(dossierTemplateId), LegalBasis.class)); } @@ -159,22 +158,23 @@ public class DossierTemplateCloneService { var types = dictionaryPersistenceService.getAllTypesForDossierTemplate(dossierTemplateId, false); for (TypeEntity t : types) { var type = dictionaryPersistenceService.addType(t.getType(), - clonedDossierTemplateId, - t.getHexColor(), - t.getRecommendationHexColor(), - t.getSkippedHexColor(), - t.getRank(), - t.isHint(), - t.isCaseInsensitive(), - t.isRecommendation(), - t.getDescription(), - t.isAddToDictionaryAction(), - t.getLabel(), - null, - t.isHasDictionary(), - t.isSystemManaged(), - t.isAutoHideSkipped(), - t.isDossierDictionaryOnly()); + clonedDossierTemplateId, + t.getHexColor(), + t.getRecommendationHexColor(), + t.getSkippedHexColor(), + t.getRank(), + t.isHint(), + t.isCaseInsensitive(), + t.isRecommendation(), + t.getDescription(), + t.isAddToDictionaryAction(), + t.getLabel(), + null, + t.isHasDictionary(), + t.isSystemManaged(), + t.isAutoHideSkipped(), + 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..2039231f8 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); 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 -- 2.47.2 From 01ca31fbbf52a27ad66fe8897d83252edaa662fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominique=20Eifl=C3=A4nder?= Date: Tue, 23 Apr 2024 13:10:11 +0200 Subject: [PATCH 2/2] RED-8826: Fixed old codestyle --- .../service/DictionaryManagementService.java | 89 ++++++++++++------- .../service/DossierTemplateCloneService.java | 39 ++++---- .../DictionaryPersistenceService.java | 8 +- 3 files changed, 84 insertions(+), 52 deletions(-) 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 46b2da1ce..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 @@ -91,23 +91,23 @@ public class DictionaryManagementService { } return MagicConverter.convert(dictionaryPersistenceService.addType(typeRequest.getType(), - typeRequest.getDossierTemplateId(), - color, - recommendationHexColor, - skippedHexColor, - typeRequest.getRank(), - typeRequest.isHint(), - typeRequest.isCaseInsensitive(), - typeRequest.isRecommendation(), - typeRequest.getDescription(), - typeRequest.isAddToDictionaryAction(), - typeRequest.getLabel(), - typeRequest.getDossierId(), - typeRequest.isHasDictionary(), - typeRequest.isSystemManaged(), - typeRequest.isAutoHideSkipped(), - typeRequest.isDossierDictionaryOnly(), - typeRequest.isExperimental()), Type.class, new TypeMapper()); + typeRequest.getDossierTemplateId(), + color, + recommendationHexColor, + skippedHexColor, + typeRequest.getRank(), + typeRequest.isHint(), + typeRequest.isCaseInsensitive(), + typeRequest.isRecommendation(), + typeRequest.getDescription(), + typeRequest.isAddToDictionaryAction(), + typeRequest.getLabel(), + typeRequest.getDossierId(), + typeRequest.isHasDictionary(), + typeRequest.isSystemManaged(), + typeRequest.isAutoHideSkipped(), + typeRequest.isDossierDictionaryOnly(), + typeRequest.isExperimental()), Type.class, new TypeMapper()); } @@ -133,9 +133,11 @@ public class DictionaryManagementService { List typeResponse = dictionaryPersistenceService.getCumulatedTypes(dossierTemplateId, dossierId, false); for (TypeEntity res : typeResponse) { var dossierTemplateResponse = res.getDossierTemplateId() == null ? res.getDossierTemplate().getId() : res.getDossierTemplateId(); - if (res.getDossierId() != null && res.getDossierId() - .equals(dossierId) && !type.equals(res.getType()) && dossierTemplateResponse.equals(dossierTemplateId) && labelToCheck.equals(res.getLabel()) || !type.equals( - res.getType()) && dossierTemplateResponse.equals(dossierTemplateId) && labelToCheck.equals(res.getLabel())) { + if (res.getDossierId() != null + && res.getDossierId().equals(dossierId) + && !type.equals(res.getType()) + && dossierTemplateResponse.equals(dossierTemplateId) + && labelToCheck.equals(res.getLabel()) || !type.equals(res.getType()) && dossierTemplateResponse.equals(dossierTemplateId) && labelToCheck.equals(res.getLabel())) { throw new ConflictException("Label must be unique."); } } @@ -146,10 +148,13 @@ public class DictionaryManagementService { return dictionaryPersistenceService.getCumulatedTypes(typeRequest.getDossierTemplateId(), typeRequest.getDossierId(), false) .stream() - .anyMatch(typeResult -> typeRequest.getDossierId() != null && typeResult.getDossierId() != null && typeRequest.getDossierId() - .equals(typeResult.getDossierId()) && typeRequest.getType().equals(typeResult.getType()) && typeRequest.getDossierTemplateId() - .equals(typeResult.getDossierTemplateId()) || typeRequest.getDossierId() == null && typeRequest.getType() - .equals(typeResult.getType()) && typeRequest.getDossierTemplateId().equals(typeResult.getDossierTemplateId())); + .anyMatch(typeResult -> typeRequest.getDossierId() != null + && typeResult.getDossierId() != null + && typeRequest.getDossierId().equals(typeResult.getDossierId()) + && typeRequest.getType().equals(typeResult.getType()) + && typeRequest.getDossierTemplateId().equals(typeResult.getDossierTemplateId()) + || typeRequest.getDossierId() == null && typeRequest.getType().equals(typeResult.getType()) && typeRequest.getDossierTemplateId() + .equals(typeResult.getDossierTemplateId())); } @@ -235,7 +240,9 @@ public class DictionaryManagementService { checkForDossierTypeExistenceAndCreate(typeId); - Set cleanEntries = entries.stream().map(StringCleaningUtility::cleanString).collect(toSet()); + Set cleanEntries = entries.stream() + .map(StringCleaningUtility::cleanString) + .collect(toSet()); if (CollectionUtils.isEmpty(entries)) { throw new BadRequestException("Entry list is empty."); @@ -308,10 +315,13 @@ public class DictionaryManagementService { private Set getInvalidEntries(Set entries) { - Predicate isDictionaryEntryNotValid = entry -> DictionaryValidator.validateDictionaryEntry(entry).isPresent(); + Predicate isDictionaryEntryNotValid = entry -> DictionaryValidator.validateDictionaryEntry(entry) + .isPresent(); Predicate isStopword = stopwordService::isStopword; - return entries.stream().filter(isDictionaryEntryNotValid.or(isStopword)).collect(toSet()); + return entries.stream() + .filter(isDictionaryEntryNotValid.or(isStopword)) + .collect(toSet()); } @@ -324,25 +334,40 @@ public class DictionaryManagementService { var currentVersion = getCurrentVersion(typeResult); - List allExistingEntiesFromType = entryPersistenceService.getEntries(typeId, dictionaryEntryType, null).stream().map(BaseDictionaryEntry::getValue).toList(); + List allExistingEntiesFromType = entryPersistenceService.getEntries(typeId, dictionaryEntryType, null) + .stream() + .map(BaseDictionaryEntry::getValue) + .toList(); if (typeResult.isCaseInsensitive()) { // Set existing entries to deleted. - var caseInsensitiveExistingEntries = allExistingEntiesFromType.stream().filter(e -> entries.stream().anyMatch(e::equalsIgnoreCase)).collect(toSet()); + var caseInsensitiveExistingEntries = allExistingEntiesFromType.stream() + .filter(e -> entries.stream() + .anyMatch(e::equalsIgnoreCase)) + .collect(toSet()); entryPersistenceService.deleteEntries(typeId, caseInsensitiveExistingEntries, currentVersion + 1, dictionaryEntryType); // Create new deleted entries for not existing. - var caseInsensitiveNonExistingEntries = entries.stream().filter(e -> caseInsensitiveExistingEntries.stream().noneMatch(e::equalsIgnoreCase)).collect(toSet()); + var caseInsensitiveNonExistingEntries = entries.stream() + .filter(e -> caseInsensitiveExistingEntries.stream() + .noneMatch(e::equalsIgnoreCase)) + .collect(toSet()); entryPersistenceService.addDeleteEntries(typeId, caseInsensitiveNonExistingEntries, currentVersion + 1, dictionaryEntryType); } else { // Set existing entries to deleted. - var caseSensitiveExistingEntries = allExistingEntiesFromType.stream().filter(e -> entries.stream().anyMatch(e::equals)).collect(toSet()); + var caseSensitiveExistingEntries = allExistingEntiesFromType.stream() + .filter(e -> entries.stream() + .anyMatch(e::equals)) + .collect(toSet()); entryPersistenceService.deleteEntries(typeId, new HashSet<>(caseSensitiveExistingEntries), currentVersion + 1, dictionaryEntryType); // Create new deleted entries for not existing. - var nonExistingEntries = entries.stream().filter(e -> caseSensitiveExistingEntries.stream().noneMatch(e::equals)).collect(toSet()); + var nonExistingEntries = entries.stream() + .filter(e -> caseSensitiveExistingEntries.stream() + .noneMatch(e::equals)) + .collect(toSet()); entryPersistenceService.addDeleteEntries(typeId, nonExistingEntries, currentVersion + 1, dictionaryEntryType); } 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 00af767bd..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 @@ -97,7 +97,7 @@ public class DossierTemplateCloneService { cloneLegalBasisMapping(dossierTemplate.getId(), clonedDossierTemplate.getId()); clonedDossierTemplate.setDossierTemplateStatus(DossierTemplateStatus.valueOf(dossierTemplatePersistenceService.computeDossierTemplateStatus(clonedDossierTemplate) - .name())); + .name())); clonedDossierTemplate.setOcrByDefault(cloneDossierTemplateRequest.isOcrByDefault()); clonedDossierTemplate.setRemoveWatermark(cloneDossierTemplateRequest.isRemoveWatermark()); @@ -149,7 +149,8 @@ public class DossierTemplateCloneService { private void cloneLegalBasisMapping(String dossierTemplateId, String clonedDossierTemplateId) { legalBasisMappingPersistenceService.setLegalBasisMapping(clonedDossierTemplateId, - MagicConverter.convert(legalBasisMappingPersistenceService.getLegalBasisMapping(dossierTemplateId), LegalBasis.class)); + MagicConverter.convert(legalBasisMappingPersistenceService.getLegalBasisMapping(dossierTemplateId), + LegalBasis.class)); } @@ -158,23 +159,23 @@ public class DossierTemplateCloneService { var types = dictionaryPersistenceService.getAllTypesForDossierTemplate(dossierTemplateId, false); for (TypeEntity t : types) { var type = dictionaryPersistenceService.addType(t.getType(), - clonedDossierTemplateId, - t.getHexColor(), - t.getRecommendationHexColor(), - t.getSkippedHexColor(), - t.getRank(), - t.isHint(), - t.isCaseInsensitive(), - t.isRecommendation(), - t.getDescription(), - t.isAddToDictionaryAction(), - t.getLabel(), - null, - t.isHasDictionary(), - t.isSystemManaged(), - t.isAutoHideSkipped(), - t.isDossierDictionaryOnly(), - t.isExperimental()); + clonedDossierTemplateId, + t.getHexColor(), + t.getRecommendationHexColor(), + t.getSkippedHexColor(), + t.getRank(), + t.isHint(), + t.isCaseInsensitive(), + t.isRecommendation(), + t.getDescription(), + t.isAddToDictionaryAction(), + t.getLabel(), + null, + t.isHasDictionary(), + t.isSystemManaged(), + t.isAutoHideSkipped(), + 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 2039231f8..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 @@ -92,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()); } } } @@ -300,6 +305,7 @@ public class DictionaryPersistenceService { } + @Transactional public void updateRankForType(String typeId, int newRank) { -- 2.47.2