From 0aaafa41ea2e6ac1862c0f512a1e831e855f797b Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Mon, 15 Jan 2024 14:02:59 +0100 Subject: [PATCH] RED-7232: Error 500 occurs when entering long text in Dossier States - Status Name Field * validate status name field on dossier status persistence --- .../persistence/DossierStatusPersistenceService.java | 12 +++++++++--- .../DossierTemplatePersistenceService.java | 4 ++-- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierStatusPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierStatusPersistenceService.java index 2ddbff1c7..6dcbc67a4 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierStatusPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierStatusPersistenceService.java @@ -30,6 +30,8 @@ public class DossierStatusPersistenceService { private final DossierStatusRepository dossierStatusRepository; private final DossierTemplatePersistenceService dossierTemplatePersistenceService; + private final static int MAX_STATUS_NAME_LENGTH = 255; + @Transactional public DossierStatusEntity createOrUpdateDossierStatus(CreateOrUpdateDossierStatusRequest createOrUpdateDossierStatusRequest) { @@ -41,7 +43,7 @@ public class DossierStatusPersistenceService { if (createOrUpdateDossierStatusRequest.getDossierStatusId() != null) { //update Optional dossierStatus = dossierStatusRepository.findById(createOrUpdateDossierStatusRequest.getDossierStatusId()); if (dossierStatus.isPresent()) { - validateDossierTemplateNameIsUnique(createOrUpdateDossierStatusRequest.getName(), + validateDossierStatusForTemplate(createOrUpdateDossierStatusRequest.getName(), createOrUpdateDossierStatusRequest.getDossierTemplateId(), createOrUpdateDossierStatusRequest.getDossierStatusId()); if (createOrUpdateDossierStatusRequest.getRank() != dossierStatus.get().getRank() && dossierStatusRepository.getDuplicateRanks(dossierStatus.get() @@ -55,7 +57,7 @@ public class DossierStatusPersistenceService { throw new NotFoundException(String.format(DOSSIER_STATUS_NOT_FOUND_MESSAGE, createOrUpdateDossierStatusRequest.getDossierStatusId())); } } else { - validateDossierTemplateNameIsUnique(createOrUpdateDossierStatusRequest.getName(), createOrUpdateDossierStatusRequest.getDossierTemplateId(), null); + validateDossierStatusForTemplate(createOrUpdateDossierStatusRequest.getName(), createOrUpdateDossierStatusRequest.getDossierTemplateId(), null); DossierStatusEntity dossierStatus = new DossierStatusEntity(); dossierStatus.setId(UUID.randomUUID().toString()); BeanUtils.copyProperties(createOrUpdateDossierStatusRequest, dossierStatus); @@ -72,7 +74,11 @@ public class DossierStatusPersistenceService { } - private void validateDossierTemplateNameIsUnique(String dossierStatusName, String dossierTemplateId, String dossierStatusId) { + private void validateDossierStatusForTemplate(String dossierStatusName, String dossierTemplateId, String dossierStatusId) { + + if (!StringUtils.isEmpty(dossierStatusName) && dossierStatusName.length() > MAX_STATUS_NAME_LENGTH) { + throw new BadRequestException(String.format("The name is too long (%s), max length %s", dossierStatusName.length(), MAX_STATUS_NAME_LENGTH)); + } getAllDossierStatusForTemplate(dossierTemplateId).forEach(existing -> { if (existing.getName().equals(dossierStatusName) && !existing.getId().equals(dossierStatusId)) { 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 b69d253d9..21b588091 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,8 +40,8 @@ public class DossierTemplatePersistenceService { private final TypeRepository typeRepository; - private final int MAX_NAME_LENGTH = 255; - private final int MAX_DESCRIPTION_LENGTH = 4000; + private final static int MAX_NAME_LENGTH = 255; + private final static int MAX_DESCRIPTION_LENGTH = 4000; @Transactional