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:
commit
a6d3e45b15
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -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());
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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
|
||||||
@ -0,0 +1,2 @@
|
|||||||
|
update file_attribute set value = null where trim(value) = '';
|
||||||
|
update dossier_attribute set value = null where trim(value) = '';
|
||||||
@ -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());
|
||||||
|
|||||||
@ -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);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user