From 035d2d591df6e4c138cc89afa31f0fc72fff1c5d Mon Sep 17 00:00:00 2001 From: devplant Date: Wed, 13 Apr 2022 12:38:21 +0300 Subject: [PATCH] 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 --- .../DossierAttributePersistenceService.java | 5 +++-- .../FileStatusPersistenceService.java | 2 +- .../db/changelog/db.changelog-master.yaml | 4 +++- .../sql/22-update-file-dossier-attributes.sql | 2 ++ .../integration/tests/DossierAttributeTest.java | 15 +++++++++++---- .../integration/tests/FileAttributeTest.java | 17 +++++++++++++++++ 6 files changed, 37 insertions(+), 8 deletions(-) create mode 100644 persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/sql/22-update-file-dossier-attributes.sql diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierAttributePersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierAttributePersistenceService.java index 58f8bb88f..5908b759c 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierAttributePersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierAttributePersistenceService.java @@ -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); } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/FileStatusPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/FileStatusPersistenceService.java index 4fa3046b7..f29956d96 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/FileStatusPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/FileStatusPersistenceService.java @@ -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()); } diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/db.changelog-master.yaml b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/db.changelog-master.yaml index dd4e5dd79..e478406e0 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/db.changelog-master.yaml +++ b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/db.changelog-master.yaml @@ -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 \ No newline at end of file + file: db/changelog/21-added-auto-hide-skipped-to-entities.changelog.yaml + - include: + file: db/changelog/sql/22-update-file-dossier-attributes.sql \ No newline at end of file diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/sql/22-update-file-dossier-attributes.sql b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/sql/22-update-file-dossier-attributes.sql new file mode 100644 index 000000000..f197ef07d --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/main/resources/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) = ''; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierAttributeTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierAttributeTest.java index 42bd4f64f..45510b68f 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierAttributeTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierAttributeTest.java @@ -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()); diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileAttributeTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileAttributeTest.java index 78d8defc5..7db997a8a 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileAttributeTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileAttributeTest.java @@ -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 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);