diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/DossierTemplateImportService.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/DossierTemplateImportService.java index 487bd42ca..566a482aa 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/DossierTemplateImportService.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/DossierTemplateImportService.java @@ -178,6 +178,14 @@ public class DossierTemplateImportService { } }); + // set legal basis + if (CollectionUtils.isNotEmpty(request.getLegalBases())) { + legalBasisMappingPersistenceService.setLegalBasisMapping(dossierTemplateId, request.getLegalBases()); + } else { // delete existing + var existingLegalBasis = legalBasisMappingPersistenceService.getLegalBasisMapping(dossierTemplateId).stream().map(LegalBasisEntity::getName).collect(Collectors.toList()); + legalBasisMappingPersistenceService.deleteLegalBasis(dossierTemplateId, existingLegalBasis); + } + } else { // creates new dossier template if (StringUtils.isEmpty(dossierTemplateMeta.getName())) { @@ -253,11 +261,12 @@ public class DossierTemplateImportService { reportTemplateService.uploadTemplate(reportRequest); }); } + // set legal basis + if (CollectionUtils.isNotEmpty(request.getLegalBases())) { + legalBasisMappingPersistenceService.setLegalBasisMapping(dossierTemplateId, request.getLegalBases()); + } } - // set legal basis - if (CollectionUtils.isNotEmpty(request.getLegalBases())) { - legalBasisMappingPersistenceService.setLegalBasisMapping(dossierTemplateId, request.getLegalBases()); - } + // file attribute general configuration if(request.getFileAttributesGeneralConfiguration() != null) { diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateTest.java index 37893239d..2a5c8c073 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateTest.java @@ -7,6 +7,7 @@ import com.iqser.red.service.peristence.v1.server.integration.service.DossierTes import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.peristence.v1.server.service.export.ExportDownloadMessageReceiver; import com.iqser.red.service.peristence.v1.server.utils.StorageIdUtils; +import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.LegalBasisEntity; import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierTemplateEntity; import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.ReportTemplateEntity; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.*; @@ -34,6 +35,7 @@ import org.springframework.beans.factory.annotation.Autowired; import java.nio.charset.StandardCharsets; import java.time.OffsetDateTime; import java.util.*; +import java.util.stream.Collectors; import static com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter.convert; import static org.assertj.core.api.Assertions.as; @@ -370,6 +372,51 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest { assertThat(statuses.get(0).getStatus()).isEqualTo(DownloadStatusValue.READY); } + @SneakyThrows + @Test + public void testExportAndImportDossierTemplateWithJustificationsNotPresent() { + var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate(); + + var existingLegalBasis = legalBasisClient.getLegalBasisMapping(dossierTemplate.getId()); + assertThat(existingLegalBasis.size()).isEqualTo(1); + + // delete justifications for export + legalBasisClient.deleteLegalBasis(dossierTemplate.getId(), existingLegalBasis.stream().map(LegalBasis::getName).collect(Collectors.toList())); + existingLegalBasis = legalBasisClient.getLegalBasisMapping(dossierTemplate.getId()); + assertThat(existingLegalBasis.isEmpty()).isTrue(); + + dossierTemplateClient.prepareExportDownload(ExportDownloadRequest.builder() + .userId("1") + .dossierTemplateId(dossierTemplate.getId()) + .build()); + var statuses = downloadClient.getDownloadStatus("1"); + assertThat(statuses).isNotEmpty(); + + + String storageId = StorageIdUtils.getStorageId("1", dossierTemplate.getId()); + dossierTemplateClient.createExportDownload("1", storageId); + + statuses = downloadClient.getDownloadStatus("1"); + assertThat(statuses).isNotEmpty(); + assertThat(statuses.get(0).getStatus()).isEqualTo(DownloadStatusValue.READY); + + // add new justifications + legalBasisClient.setLegalBasisMapping(dossierTemplate.getId(), List.of(new LegalBasis("nameAgain", "description", "reason"))); + existingLegalBasis = legalBasisClient.getLegalBasisMapping(dossierTemplate.getId()); + assertThat(existingLegalBasis.size()).isEqualTo(1); + + ImportDossierTemplateRequest request1 = ImportDossierTemplateRequest.builder() + .dossierTemplateId(dossierTemplate.getId()) + .updateExistingDossierTemplate(true) + .userId("1") + .archive(storageService.getObject(storageId).getInputStream().readAllBytes()) + .build(); + + dossierTemplateClient.importDossierTemplate(request1); + existingLegalBasis = legalBasisClient.getLegalBasisMapping(dossierTemplate.getId()); + assertThat(existingLegalBasis.isEmpty()).isTrue(); + } + @Test @SneakyThrows public void testImportDossierTemplateUpdateExisting() {