From b5c832c8a3b02ede25b19df946e7c49cbfdde68a Mon Sep 17 00:00:00 2001 From: Andrei Isvoran Date: Wed, 20 Sep 2023 12:31:39 +0300 Subject: [PATCH] RED-7185 - Error message when adjusting the Justification --- .../DossierTemplatePersistenceService.java | 17 ++++++++++++++++ .../LegalBasisMappingPersistenceService.java | 20 +++++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierTemplatePersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierTemplatePersistenceService.java index 1c459bb35..755b4fb97 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierTemplatePersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierTemplatePersistenceService.java @@ -40,11 +40,15 @@ public class DossierTemplatePersistenceService { private final TypeRepository typeRepository; + private final int MAX_NAME_LENGTH = 255; + private final int MAX_DESCRIPTION_LENGTH = 4000; + @Transactional public DossierTemplateEntity createOrUpdateDossierTemplate(CreateOrUpdateDossierTemplateRequest createOrUpdateDossierRequest) { if (createOrUpdateDossierRequest.getDossierTemplateId() != null) { + validateDossierTemplate(createOrUpdateDossierRequest.getName(), createOrUpdateDossierRequest.getDescription()); Optional dossierTemplate = dossierTemplateRepository.findById(createOrUpdateDossierRequest.getDossierTemplateId()); if (dossierTemplate.isPresent()) { @@ -66,6 +70,7 @@ public class DossierTemplatePersistenceService { throw new ConflictException("DossierTemplate name must be set"); } validateDossierTemplateNameIsUnique(createOrUpdateDossierRequest.getName()); + validateDossierTemplate(createOrUpdateDossierRequest.getName(), createOrUpdateDossierRequest.getDescription()); DossierTemplateEntity dossierTemplate = new DossierTemplateEntity(); dossierTemplate.setId(UUID.randomUUID().toString()); // order is important @@ -90,6 +95,18 @@ public class DossierTemplatePersistenceService { } } + private void validateDossierTemplate(String name, String description) { + + if (name.length() > MAX_NAME_LENGTH) { + throw new BadRequestException(String.format("The name is too long (%s), max length %s", name.length(), MAX_NAME_LENGTH)); + } + + if (!StringUtils.isEmpty(description) && description.length() > MAX_DESCRIPTION_LENGTH) { + throw new BadRequestException(String.format("The description is too long (%s), max length %s", description.length(), MAX_DESCRIPTION_LENGTH)); + } + + } + @Transactional public boolean isDossierTemplateNameNotUnique(String templateName) { 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 419124d2e..c0df1aec6 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 @@ -13,6 +13,7 @@ import org.springframework.stereotype.Service; import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.LegalBasisEntity; import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.LegalBasisMappingEntity; +import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.LegalBasisMappingRepository; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.legalbasis.LegalBasis; @@ -24,6 +25,9 @@ public class LegalBasisMappingPersistenceService { private final LegalBasisMappingRepository legalBasisMappingRepository; + private final int MAX_NAME_LENGTH = 255; + private final int MAX_LEGAL_BASIS_LENGTH = 4000; + @Transactional public void deleteLegalBasis(String dossierTemplateId, List legalBasisNames) { @@ -65,6 +69,7 @@ public class LegalBasisMappingPersistenceService { @Transactional public void addOrUpdateLegalBasis(String dossierTemplateId, LegalBasis legalBasis) { + validateLegalBasis(legalBasis); var mapping = getLegalBasisMappingOrCreate(dossierTemplateId); mapping.getLegalBasis().stream().filter(l -> l.getName().equals(legalBasis.getName())).findAny().ifPresentOrElse(existingBasis -> { @@ -79,6 +84,21 @@ public class LegalBasisMappingPersistenceService { } + private void validateLegalBasis(LegalBasis legalBasis) { + + 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)); + } + + if (legalBasis.getDescription().length() > MAX_LEGAL_BASIS_LENGTH) { + throw new BadRequestException(String.format("The description is too long (%s), max length %s", legalBasis.getDescription().length(), MAX_LEGAL_BASIS_LENGTH)); + } + + if (legalBasis.getReason().length() > MAX_LEGAL_BASIS_LENGTH) { + throw new BadRequestException(String.format("The legal basis is too long (%s), max length %s", legalBasis.getReason().length(), MAX_LEGAL_BASIS_LENGTH)); + } + } + @Transactional public void setLegalBasisMapping(String dossierTemplateId, List legalBasisMapping) { -- 2.47.2