From f0caa836d46491c90a340eb31d129b91254eb9fb Mon Sep 17 00:00:00 2001 From: Andrei Isvoran Date: Fri, 22 Sep 2023 11:41:56 +0200 Subject: [PATCH] RED-7185 - Error message when adjusting the Justification --- .../DossierTemplatePersistenceService.java | 14 ++++++++++++++ .../LegalBasisMappingPersistenceService.java | 19 ++++++++++++++++++- .../LegalBasisChangePersistenceService.java | 11 ++++++++++- .../db/changelog/db.changelog-tenant.yaml | 2 ++ .../tenant/45-modify-section-length.yaml | 9 +++++++++ 5 files changed, 53 insertions(+), 2 deletions(-) create mode 100644 persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/tenant/45-modify-section-length.yaml 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 079b2b529..7b264650c 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 @@ -32,11 +32,14 @@ public class DossierTemplatePersistenceService { private final LegalBasisMappingPersistenceService legalBasisMappingPersistenceService; private final RulesPersistenceService rulesPersistenceService; + 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()) { @@ -58,6 +61,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 @@ -73,6 +77,16 @@ 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)); + } + } public DossierTemplateStatus computeDossierTemplateStatus(DossierTemplateEntity dossierTemplate) { 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 7c74457dd..044bd2a20 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 @@ -12,6 +12,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.model.dossiertemplate.legalbasis.LegalBasis; @@ -23,6 +24,8 @@ 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) { @@ -36,10 +39,10 @@ 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 -> { @@ -54,6 +57,20 @@ 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) { diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/annotations/LegalBasisChangePersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/annotations/LegalBasisChangePersistenceService.java index 4c6bff0e9..d8f0b463a 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/annotations/LegalBasisChangePersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/annotations/LegalBasisChangePersistenceService.java @@ -7,11 +7,13 @@ import java.util.stream.Collectors; import javax.transaction.Transactional; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.AnnotationEntityId; import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ManualLegalBasisChangeEntity; +import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException; import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.LegalBasisChangeRepository; import com.iqser.red.service.persistence.service.v1.api.model.annotations.AnnotationStatus; @@ -24,12 +26,13 @@ import lombok.RequiredArgsConstructor; public class LegalBasisChangePersistenceService { private final LegalBasisChangeRepository legalBasisChangeRepository; - + private final int SECTION_MAX_LENGTH = 1024; public ManualLegalBasisChangeEntity insert(String fileId, LegalBasisChangeRequest legalBasisChangeRequest) { ManualLegalBasisChangeEntity manualLegalBasisChange = new ManualLegalBasisChangeEntity(); manualLegalBasisChange.setId(new AnnotationEntityId(legalBasisChangeRequest.getAnnotationId(), fileId)); + checkSection(legalBasisChangeRequest.getSection()); BeanUtils.copyProperties(legalBasisChangeRequest, manualLegalBasisChange); manualLegalBasisChange.setRequestDate(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS)); @@ -41,6 +44,12 @@ public class LegalBasisChangePersistenceService { } + private void checkSection(String section) { + + if (!StringUtils.isEmpty(section) && section.length() > SECTION_MAX_LENGTH) { + throw new BadRequestException(String.format("The section is too long (%s), max length %s", section.length(), SECTION_MAX_LENGTH)); + } + } @Transactional public void hardDelete(String fileId, String annotationId) { diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/db.changelog-tenant.yaml b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/db.changelog-tenant.yaml index 89cd55cdb..b1df74bf4 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/db.changelog-tenant.yaml +++ b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/db.changelog-tenant.yaml @@ -113,3 +113,5 @@ databaseChangeLog: file: db/changelog/tenant/sql/43-add-applied-redaction-color.sql - include: file: db/changelog/tenant/sql/45-unique-dossier-name.sql + - include: + file: db/changelog/tenant/45-modify-section-length.yaml diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/tenant/45-modify-section-length.yaml b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/tenant/45-modify-section-length.yaml new file mode 100644 index 000000000..ceef6e0b1 --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/tenant/45-modify-section-length.yaml @@ -0,0 +1,9 @@ +databaseChangeLog: + - changeSet: + id: modify-section-length + author: aisvoran + changes: + - modifyDataType: + columnName: section + newDataType: VARCHAR(1024) + tableName: manual_legal_basis_change \ No newline at end of file