RED-7232: Error 500 occurs when entering long text in Dossier States - Status Name Field

* validate status name field on dossier status persistence
This commit is contained in:
maverickstuder 2024-01-15 14:02:59 +01:00
parent 16d182a513
commit 0aaafa41ea
2 changed files with 11 additions and 5 deletions

View File

@ -30,6 +30,8 @@ public class DossierStatusPersistenceService {
private final DossierStatusRepository dossierStatusRepository; private final DossierStatusRepository dossierStatusRepository;
private final DossierTemplatePersistenceService dossierTemplatePersistenceService; private final DossierTemplatePersistenceService dossierTemplatePersistenceService;
private final static int MAX_STATUS_NAME_LENGTH = 255;
@Transactional @Transactional
public DossierStatusEntity createOrUpdateDossierStatus(CreateOrUpdateDossierStatusRequest createOrUpdateDossierStatusRequest) { public DossierStatusEntity createOrUpdateDossierStatus(CreateOrUpdateDossierStatusRequest createOrUpdateDossierStatusRequest) {
@ -41,7 +43,7 @@ public class DossierStatusPersistenceService {
if (createOrUpdateDossierStatusRequest.getDossierStatusId() != null) { //update if (createOrUpdateDossierStatusRequest.getDossierStatusId() != null) { //update
Optional<DossierStatusEntity> dossierStatus = dossierStatusRepository.findById(createOrUpdateDossierStatusRequest.getDossierStatusId()); Optional<DossierStatusEntity> dossierStatus = dossierStatusRepository.findById(createOrUpdateDossierStatusRequest.getDossierStatusId());
if (dossierStatus.isPresent()) { if (dossierStatus.isPresent()) {
validateDossierTemplateNameIsUnique(createOrUpdateDossierStatusRequest.getName(), validateDossierStatusForTemplate(createOrUpdateDossierStatusRequest.getName(),
createOrUpdateDossierStatusRequest.getDossierTemplateId(), createOrUpdateDossierStatusRequest.getDossierTemplateId(),
createOrUpdateDossierStatusRequest.getDossierStatusId()); createOrUpdateDossierStatusRequest.getDossierStatusId());
if (createOrUpdateDossierStatusRequest.getRank() != dossierStatus.get().getRank() && dossierStatusRepository.getDuplicateRanks(dossierStatus.get() 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())); throw new NotFoundException(String.format(DOSSIER_STATUS_NOT_FOUND_MESSAGE, createOrUpdateDossierStatusRequest.getDossierStatusId()));
} }
} else { } else {
validateDossierTemplateNameIsUnique(createOrUpdateDossierStatusRequest.getName(), createOrUpdateDossierStatusRequest.getDossierTemplateId(), null); validateDossierStatusForTemplate(createOrUpdateDossierStatusRequest.getName(), createOrUpdateDossierStatusRequest.getDossierTemplateId(), null);
DossierStatusEntity dossierStatus = new DossierStatusEntity(); DossierStatusEntity dossierStatus = new DossierStatusEntity();
dossierStatus.setId(UUID.randomUUID().toString()); dossierStatus.setId(UUID.randomUUID().toString());
BeanUtils.copyProperties(createOrUpdateDossierStatusRequest, dossierStatus); 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 -> { getAllDossierStatusForTemplate(dossierTemplateId).forEach(existing -> {
if (existing.getName().equals(dossierStatusName) && !existing.getId().equals(dossierStatusId)) { if (existing.getName().equals(dossierStatusName) && !existing.getId().equals(dossierStatusId)) {

View File

@ -40,8 +40,8 @@ public class DossierTemplatePersistenceService {
private final TypeRepository typeRepository; private final TypeRepository typeRepository;
private final int MAX_NAME_LENGTH = 255; private final static int MAX_NAME_LENGTH = 255;
private final int MAX_DESCRIPTION_LENGTH = 4000; private final static int MAX_DESCRIPTION_LENGTH = 4000;
@Transactional @Transactional