RED-3834 - On saving attribute values, blank strings should be normalized to null

- when setting file / dossier attributes, blank strings are be normalized to null
- update junit tests
This commit is contained in:
devplant 2022-04-13 12:38:21 +03:00
parent c3944cf274
commit 035d2d591d
6 changed files with 37 additions and 8 deletions

View File

@ -25,14 +25,15 @@ public class DossierAttributePersistenceService {
DossierAttributeEntity dossierAttribute = new DossierAttributeEntity();
dossierAttribute.setId(new DossierAttributeEntity.DossierAttributeEntityId(dossierId, dossierAttributeId));
dossierAttribute.setValue(dossierAttributeValue);
dossierAttribute.setValue(dossierAttributeValue != null && dossierAttributeValue.trim().isEmpty()? null: dossierAttributeValue);
dossierAttributeRepository.saveAndFlush(dossierAttribute);
}
@Transactional
public void updateDossierAttribute(String dossierId, String dossierAttributeId, String dossierAttributeValue) {
dossierAttributeRepository.updateDossierAttribute(new DossierAttributeEntity.DossierAttributeEntityId(dossierId, dossierAttributeId), dossierAttributeValue);
dossierAttributeRepository.updateDossierAttribute(new DossierAttributeEntity.DossierAttributeEntityId(dossierId, dossierAttributeId),
(dossierAttributeValue != null && dossierAttributeValue.trim().isEmpty()) ? null: dossierAttributeValue);
}

View File

@ -328,7 +328,7 @@ public class FileStatusPersistenceService {
.findAny().map(FileAttributeConfigEntity::getId)
.orElseThrow(() -> new BadRequestException("Invalid File Attribute Id")));
fa.setFileAttributeId(id);
fa.setValue(entry.getValue());
fa.setValue((entry.getValue()!= null && entry.getValue().trim().isEmpty())? null : entry.getValue());
return fa;
}).collect(Collectors.toList());
}

View File

@ -48,4 +48,6 @@ databaseChangeLog:
- include:
file: db/changelog/20-add-index-information-table.yaml
- include:
file: db/changelog/21-added-auto-hide-skipped-to-entities.changelog.yaml
file: db/changelog/21-added-auto-hide-skipped-to-entities.changelog.yaml
- include:
file: db/changelog/sql/22-update-file-dossier-attributes.sql

View File

@ -0,0 +1,2 @@
update file_attribute set value = null where trim(value) = '';
update dossier_attribute set value = null where trim(value) = '';

View File

@ -77,20 +77,27 @@ public class DossierAttributeTest extends AbstractPersistenceServerServiceTest {
dossierAttributes.add(DossierAttribute.builder().dossierAttributeConfigId(configId).dossierId(dossier.getId()).value("lorem ipsum").build());
dossierAttributeClient.setDossierAttributes(dossier.getId(), dossierAttributes);
var loadedAttributeValues = dossierAttributeClient.getDossierAttributes(dossier.getId());
assertThat(loadedAttributeValues).isNotEmpty();
var firstAttribute = loadedAttributeValues.iterator().next();
assertThat(firstAttribute.getValue()).isEqualTo("lorem ipsum");
firstAttribute.setValue("test");
dossierAttributeClient.addOrUpdateDossierAttribute(dossier.getId(), firstAttribute);
firstAttribute.setValue(" ");
dossierAttributeClient.addOrUpdateDossierAttribute(dossier.getId(), firstAttribute);
loadedAttributeValues = dossierAttributeClient.getDossierAttributes(dossier.getId());
assertThat(loadedAttributeValues).isNotEmpty();
firstAttribute = loadedAttributeValues.iterator().next();
assertThat(firstAttribute.getValue()).isEqualTo("test");
assertThat(firstAttribute.getValue()).isNull();
firstAttribute.setValue(null);
dossierAttributeClient.addOrUpdateDossierAttribute(dossier.getId(), firstAttribute);
loadedAttributeValues = dossierAttributeClient.getDossierAttributes(dossier.getId());
assertThat(loadedAttributeValues).isNotEmpty();
firstAttribute = loadedAttributeValues.iterator().next();
assertThat(firstAttribute.getValue()).isNull();
dossierAttributeClient.deleteDossierAttribute(dossier.getId(), firstAttribute.getDossierAttributeConfigId());
loadedAttributeValues = dossierAttributeClient.getDossierAttributes(dossier.getId());

View File

@ -3,6 +3,7 @@ package com.iqser.red.service.peristence.v1.server.integration.tests;
import static org.assertj.core.api.Assertions.assertThat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@ -133,6 +134,22 @@ public class FileAttributeTest extends AbstractPersistenceServerServiceTest {
assertThat(fileAttributes.size()).isEqualTo(1);
assertThat(fileAttributes.entrySet().iterator().next().getValue()).isEqualTo("Lorem Ipsum");
fileAttributeClient.setFileAttributes(dossier.getId(), file.getId(), Map.of(updated.getId(), " "));
fileAttributes = fileClient.getFileStatus(dossier.getId(), file.getId())
.getFileAttributes();
assertThat(fileAttributes.size()).isEqualTo(1);
assertThat(fileAttributes.entrySet().iterator().next().getValue()).isNull();
Map<String, String> fileAttributesWithNullValue = new HashMap<>();
fileAttributesWithNullValue.put(updated.getId(), null);
fileAttributeClient.setFileAttributes(dossier.getId(), file.getId(), fileAttributesWithNullValue);
fileAttributes = fileClient.getFileStatus(dossier.getId(), file.getId())
.getFileAttributes();
assertThat(fileAttributes.size()).isEqualTo(1);
assertThat(fileAttributes.entrySet().iterator().next().getValue()).isNull();
var request = new ImportCsvRequest();
request.setCsvFile(IOUtils.toByteArray(new ClassPathResource("files/test.csv").getInputStream()));
fileAttributeClient.importCsv(dossier.getId(), request);