From e5271c928e2df5ff2e6fb94bf092835f69c1f581 Mon Sep 17 00:00:00 2001 From: yhampe Date: Wed, 4 Sep 2024 10:28:14 +0200 Subject: [PATCH] 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)); }