From e5271c928e2df5ff2e6fb94bf092835f69c1f581 Mon Sep 17 00:00:00 2001 From: yhampe Date: Wed, 4 Sep 2024 10:28:14 +0200 Subject: [PATCH 1/2] RED-9958:Several problems after technical_name refactoring changed it so name and technical name are unique, rest is optional --- .../LegalBasisMappingPersistenceService.java | 51 +++++++++++++------ 1 file changed, 35 insertions(+), 16 deletions(-) diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/LegalBasisMappingPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/LegalBasisMappingPersistenceService.java index b96649cee..bfbc30de7 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/LegalBasisMappingPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/LegalBasisMappingPersistenceService.java @@ -5,6 +5,7 @@ import static com.knecon.fforesight.databasetenantcommons.providers.utils.MagicC import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Optional; import java.util.stream.Collectors; import org.springframework.stereotype.Service; @@ -58,7 +59,6 @@ public class LegalBasisMappingPersistenceService { return legalBasisMappingRepository.findById(dossierTemplateId) .orElseGet(() -> { - // create on get if not present var lbm = new LegalBasisMappingEntity(); lbm.setDossierTemplateId(dossierTemplateId); lbm.setLegalBasis(new ArrayList<>()); @@ -72,27 +72,42 @@ public class LegalBasisMappingPersistenceService { @Transactional public void addOrUpdateLegalBasis(String dossierTemplateId, LegalBasis legalBasis) { - validateLegalBasis(legalBasis); var mapping = getLegalBasisMappingOrCreate(dossierTemplateId); - mapping.getLegalBasis() + Optional existingBasisByTechnicalName = mapping.getLegalBasis() .stream() .filter(l -> l.getTechnicalName().equals(legalBasis.getTechnicalName())) - .findAny().ifPresentOrElse(existingBasis -> { - existingBasis.setReason(legalBasis.getReason()); - existingBasis.setDescription(legalBasis.getDescription()); - existingBasis.setName(legalBasis.getName()); - }, - () -> mapping.getLegalBasis() - .add(LegalBasisEntity.builder() - .name(legalBasis.getName()) - .description(legalBasis.getDescription()) - .reason(legalBasis.getReason()) - .technicalName(legalBasis.getTechnicalName()) - .build())); + .findAny(); + Optional existingBasisByName = mapping.getLegalBasis() + .stream() + .filter(l -> l.getName().equals(legalBasis.getName())) + .findAny(); + + if (existingBasisByTechnicalName.isPresent() && existingBasisByName.isPresent()) { + LegalBasisEntity existingBasis = existingBasisByTechnicalName.get(); + existingBasis.setDescription(legalBasis.getDescription()); + existingBasis.setReason(legalBasis.getReason()); + } else if (existingBasisByTechnicalName.isPresent()) { + LegalBasisEntity existingBasis = existingBasisByTechnicalName.get(); + existingBasis.setName(legalBasis.getName()); + existingBasis.setDescription(legalBasis.getDescription()); + existingBasis.setReason(legalBasis.getReason()); + } else if (existingBasisByName.isPresent()) { + LegalBasisEntity existingBasis = existingBasisByName.get(); + existingBasis.setTechnicalName(legalBasis.getTechnicalName()); + existingBasis.setDescription(legalBasis.getDescription()); + existingBasis.setReason(legalBasis.getReason()); + } else { + mapping.getLegalBasis() + .add(LegalBasisEntity.builder() + .name(legalBasis.getName()) + .description(legalBasis.getDescription()) + .reason(legalBasis.getReason()) + .technicalName(legalBasis.getTechnicalName()) + .build()); + } mapping.setVersion(mapping.getVersion() + 1); - legalBasisMappingRepository.save(mapping); } @@ -103,6 +118,10 @@ public class LegalBasisMappingPersistenceService { throw new BadRequestException("The technical name cannot be empty!"); } + if (legalBasis.getName() == null || legalBasis.getName().isEmpty()) { + throw new BadRequestException("The name cannot be empty!"); + } + if (legalBasis.getName().length() > MAX_NAME_LENGTH) { throw new BadRequestException(String.format("The name is too long (%s), max length %s", legalBasis.getName().length(), MAX_NAME_LENGTH)); } From 0d4c0058623025ea8e8ef999dd1c904af970810e Mon Sep 17 00:00:00 2001 From: yhampe Date: Wed, 4 Sep 2024 11:57:50 +0200 Subject: [PATCH 2/2] RED-9958:Several problems after technical_name refactoring changed it so name and technical name are unique, rest is optional --- .../v1/api/external/resource/LegalBasisMappingResource.java | 2 +- .../persistence/LegalBasisMappingPersistenceService.java | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/LegalBasisMappingResource.java b/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/LegalBasisMappingResource.java index 1066fc41c..667a833cd 100644 --- a/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/LegalBasisMappingResource.java +++ b/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/LegalBasisMappingResource.java @@ -50,7 +50,7 @@ public interface LegalBasisMappingResource { @ResponseBody @ResponseStatus(value = HttpStatus.OK) @GetMapping(value = LEGAL_BASIS_PATH + DOSSIER_TEMPLATE_PATH_VARIABLE, produces = MediaType.APPLICATION_JSON_VALUE) - @Operation(summary = "Set the mapping between legal basis and redaction reason.", description = "None") + @Operation(summary = "Get all legal basis mapping in dossier template.", description = "None") @ApiResponses(value = {@ApiResponse(responseCode = "200", description = "OK")}) List getLegalBasisMapping(@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId); diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/LegalBasisMappingPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/LegalBasisMappingPersistenceService.java index bfbc30de7..ea32e21bb 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/LegalBasisMappingPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/LegalBasisMappingPersistenceService.java @@ -18,9 +18,11 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemp import jakarta.transaction.Transactional; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; @Service @RequiredArgsConstructor +@Slf4j public class LegalBasisMappingPersistenceService { private final LegalBasisMappingRepository legalBasisMappingRepository;