Pull request #352: Bugfix/RED-3834

Merge in RED/persistence-service from bugfix/RED-3834 to master

* commit '3c5e980e0242e225c98b91f8d60c9affa7524ff5':
  RED-3834 - On saving attribute values, blank strings should be normalized to null
  RED-3834 - On saving attribute values, blank strings should be normalized to null
  RED-3834 - On saving attribute values, blank strings should be normalized to null
This commit is contained in:
Corina Olariu 2022-04-13 13:31:55 +02:00 committed by Timo Bejan
commit a6d3e45b15
6 changed files with 39 additions and 8 deletions

View File

@ -7,6 +7,7 @@ import com.iqser.red.service.persistence.management.v1.processor.service.persist
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierRepository; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierRepository;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.apache.commons.lang3.StringUtils;
import javax.transaction.Transactional; import javax.transaction.Transactional;
import java.util.List; import java.util.List;
@ -25,14 +26,15 @@ public class DossierAttributePersistenceService {
DossierAttributeEntity dossierAttribute = new DossierAttributeEntity(); DossierAttributeEntity dossierAttribute = new DossierAttributeEntity();
dossierAttribute.setId(new DossierAttributeEntity.DossierAttributeEntityId(dossierId, dossierAttributeId)); dossierAttribute.setId(new DossierAttributeEntity.DossierAttributeEntityId(dossierId, dossierAttributeId));
dossierAttribute.setValue(dossierAttributeValue); dossierAttribute.setValue(StringUtils.isBlank(dossierAttributeValue)? null: dossierAttributeValue);
dossierAttributeRepository.saveAndFlush(dossierAttribute); dossierAttributeRepository.saveAndFlush(dossierAttribute);
} }
@Transactional @Transactional
public void updateDossierAttribute(String dossierId, String dossierAttributeId, String dossierAttributeValue) { public void updateDossierAttribute(String dossierId, String dossierAttributeId, String dossierAttributeValue) {
dossierAttributeRepository.updateDossierAttribute(new DossierAttributeEntity.DossierAttributeEntityId(dossierId, dossierAttributeId), dossierAttributeValue); dossierAttributeRepository.updateDossierAttribute(new DossierAttributeEntity.DossierAttributeEntityId(dossierId, dossierAttributeId),
StringUtils.isBlank(dossierAttributeValue) ? null: dossierAttributeValue);
} }

View File

@ -10,6 +10,7 @@ import java.util.stream.Collectors;
import javax.transaction.Transactional; import javax.transaction.Transactional;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileAttributeConfigEntity; import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileAttributeConfigEntity;
@ -328,7 +329,7 @@ public class FileStatusPersistenceService {
.findAny().map(FileAttributeConfigEntity::getId) .findAny().map(FileAttributeConfigEntity::getId)
.orElseThrow(() -> new BadRequestException("Invalid File Attribute Id"))); .orElseThrow(() -> new BadRequestException("Invalid File Attribute Id")));
fa.setFileAttributeId(id); fa.setFileAttributeId(id);
fa.setValue(entry.getValue()); fa.setValue(StringUtils.isBlank(entry.getValue())? null : entry.getValue());
return fa; return fa;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
} }

View File

@ -49,3 +49,5 @@ databaseChangeLog:
file: db/changelog/20-add-index-information-table.yaml file: db/changelog/20-add-index-information-table.yaml
- include: - 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()); dossierAttributes.add(DossierAttribute.builder().dossierAttributeConfigId(configId).dossierId(dossier.getId()).value("lorem ipsum").build());
dossierAttributeClient.setDossierAttributes(dossier.getId(), dossierAttributes); dossierAttributeClient.setDossierAttributes(dossier.getId(), dossierAttributes);
var loadedAttributeValues = dossierAttributeClient.getDossierAttributes(dossier.getId()); var loadedAttributeValues = dossierAttributeClient.getDossierAttributes(dossier.getId());
assertThat(loadedAttributeValues).isNotEmpty(); assertThat(loadedAttributeValues).isNotEmpty();
var firstAttribute = loadedAttributeValues.iterator().next(); var firstAttribute = loadedAttributeValues.iterator().next();
assertThat(firstAttribute.getValue()).isEqualTo("lorem ipsum"); 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()); loadedAttributeValues = dossierAttributeClient.getDossierAttributes(dossier.getId());
assertThat(loadedAttributeValues).isNotEmpty(); assertThat(loadedAttributeValues).isNotEmpty();
firstAttribute = loadedAttributeValues.iterator().next(); 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()); dossierAttributeClient.deleteDossierAttribute(dossier.getId(), firstAttribute.getDossierAttributeConfigId());
loadedAttributeValues = dossierAttributeClient.getDossierAttributes(dossier.getId()); 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 static org.assertj.core.api.Assertions.assertThat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -133,6 +134,22 @@ public class FileAttributeTest extends AbstractPersistenceServerServiceTest {
assertThat(fileAttributes.size()).isEqualTo(1); assertThat(fileAttributes.size()).isEqualTo(1);
assertThat(fileAttributes.entrySet().iterator().next().getValue()).isEqualTo("Lorem Ipsum"); 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(); var request = new ImportCsvRequest();
request.setCsvFile(IOUtils.toByteArray(new ClassPathResource("files/test.csv").getInputStream())); request.setCsvFile(IOUtils.toByteArray(new ClassPathResource("files/test.csv").getInputStream()));
fileAttributeClient.importCsv(dossier.getId(), request); fileAttributeClient.importCsv(dossier.getId(), request);