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 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<DossierStatusEntity> 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)) {

View File

@ -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