From 91039f7acc402895d5cc4930f639421a1b0a6495 Mon Sep 17 00:00:00 2001 From: Philipp Schramm Date: Mon, 13 Jun 2022 11:19:15 +0200 Subject: [PATCH] RED-4166: Bugfix, delete fileAttributes if overwrite file --- .../FileStatusPersistenceService.java | 12 ++++ .../v1/server/integration/tests/FileTest.java | 71 +++++++++++++------ 2 files changed, 62 insertions(+), 21 deletions(-) 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 b529625ed..b6425f981 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 @@ -24,7 +24,9 @@ import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.do import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.WorkflowStatus; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +@Slf4j @Service @RequiredArgsConstructor public class FileStatusPersistenceService { @@ -194,6 +196,14 @@ public class FileStatusPersistenceService { } + @Transactional + public void deleteFileAttributes(String fileId) { + + fileAttributesRepository.deleteByFileId(fileId); + + } + + public FileEntity getStatus(String fileId) { return fileRepository.findById(fileId).orElseThrow(() -> new NotFoundException("Unknown file=" + fileId)); @@ -336,6 +346,8 @@ public class FileStatusPersistenceService { countUpdate = fileRepository.overwriteFile(fileId, filename, uploader, ProcessingStatus.UNPROCESSED, WorkflowStatus.NEW, OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS), OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS)); } + deleteFileAttributes(fileId); + if (countUpdate == 0) { throw new NotFoundException("Unknown file=" + fileId); } diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileTest.java index a92bb3fa3..96fde2939 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileTest.java @@ -1,36 +1,43 @@ package com.iqser.red.service.peristence.v1.server.integration.tests; +import static org.assertj.core.api.Assertions.assertThat; + +import java.time.OffsetDateTime; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import org.junit.Test; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; + import com.google.common.collect.Sets; -import com.iqser.red.service.peristence.v1.server.integration.client.*; +import com.iqser.red.service.peristence.v1.server.integration.client.DossierClient; +import com.iqser.red.service.peristence.v1.server.integration.client.FileAttributeClient; +import com.iqser.red.service.peristence.v1.server.integration.client.FileAttributeConfigClient; +import com.iqser.red.service.peristence.v1.server.integration.client.FileClient; +import com.iqser.red.service.peristence.v1.server.integration.client.ManualRedactionClient; +import com.iqser.red.service.peristence.v1.server.integration.client.RedactionLogClient; +import com.iqser.red.service.peristence.v1.server.integration.client.UploadClient; +import com.iqser.red.service.peristence.v1.server.integration.client.ViewedPagesClient; import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider; import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; import com.iqser.red.service.peristence.v1.server.integration.service.FileTesterAndProvider; import com.iqser.red.service.peristence.v1.server.integration.service.TypeProvider; import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; -import com.iqser.red.service.peristence.v1.server.service.FileManagementStorageService; -import com.iqser.red.service.persistence.service.v1.api.model.annotations.*; +import com.iqser.red.service.persistence.service.v1.api.model.annotations.AddRedactionRequest; +import com.iqser.red.service.persistence.service.v1.api.model.annotations.AnnotationStatus; +import com.iqser.red.service.persistence.service.v1.api.model.annotations.ForceRedactionRequest; +import com.iqser.red.service.persistence.service.v1.api.model.annotations.ImageRecategorizationRequest; +import com.iqser.red.service.persistence.service.v1.api.model.annotations.LegalBasisChangeRequest; +import com.iqser.red.service.persistence.service.v1.api.model.annotations.RemoveRedactionRequest; import com.iqser.red.service.persistence.service.v1.api.model.common.JSONPrimitive; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.CreateOrUpdateDossierRequest; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.AddFileRequest; -import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileType; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileAttributeConfig; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.WorkflowStatus; -import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type.DictionaryEntryType; -import com.iqser.red.service.redaction.v1.model.RedactionLog; -import com.iqser.red.service.redaction.v1.model.RedactionLogEntry; -import com.iqser.red.service.redaction.v1.model.SectionGrid; - -import org.junit.Test; -import org.mockito.Mockito; -import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.annotation.Autowired; - -import java.time.OffsetDateTime; -import java.util.Collections; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -import static org.assertj.core.api.Assertions.assertThat; public class FileTest extends AbstractPersistenceServerServiceTest { @@ -64,6 +71,12 @@ public class FileTest extends AbstractPersistenceServerServiceTest { @Autowired private RedactionLogClient redactionLogClient; + @Autowired + private FileAttributeClient fileAttributeClient; + + @Autowired + private FileAttributeConfigClient fileAttributeConfigClient; + @Test public void testFileSoftDeleteReupload() { @@ -106,19 +119,35 @@ public class FileTest extends AbstractPersistenceServerServiceTest { fileClient.setStatusUnderApproval(dossier.getId(), file.getId(), "1"); fileClient.toggleAutomaticAnalysis(dossier.getId(), file.getId(), true); + + List configs = new ArrayList<>(); + configs.add(FileAttributeConfig.builder().csvColumnHeader("Name").primaryAttribute(true).label("Name").build()); + configs.add(FileAttributeConfig.builder() + .csvColumnHeader("Attribute A") + .primaryAttribute(true) + .label("Attribute A") + .build()); + List loadedConfig = fileAttributeConfigClient.setFileAttributesConfig(dossier.getDossierTemplateId(), configs); + fileAttributeClient.setFileAttributes(dossier.getId(), file.getId(), Map.of(loadedConfig.get(0).getId(), "123")); + loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId()); assertThat(loadedFile.isExcludedFromAutomaticAnalysis()).isTrue(); + assertThat(loadedFile.getFileAttributes()).size().isEqualTo(1); + assertThat(loadedFile.getFileAttributes()).isEqualTo(Map.of(loadedConfig.get(0).getId(), "123")); viewedPagesClient.addPage(file.getId(), "1", 1); var viewedPages = viewedPagesClient.getViewedPages(file.getId(), "1"); assertThat(viewedPages.size()).isEqualTo(1); + + AddFileRequest upload = new AddFileRequest(filename, file.getId(), dossier.getId(), "1"); JSONPrimitive uploadResult = uploadClient.upload(upload, false); loadedFile = fileClient.getFileStatus(dossier.getId(), uploadResult.getValue()); assertThat(loadedFile.isExcludedFromAutomaticAnalysis()).isFalse(); + assertThat(loadedFile.getFileAttributes()).size().isEqualTo(0); viewedPages = viewedPagesClient.getViewedPages(file.getId(), "1"); assertThat(viewedPages.size()).isEqualTo(0);