Pull request #439: RED-4166: Bugfix, delete fileAttributes if overwrite file

Merge in RED/persistence-service from RED-4166 to master

* commit '91039f7acc402895d5cc4930f639421a1b0a6495':
  RED-4166: Bugfix, delete fileAttributes if overwrite file
This commit is contained in:
Philipp Schramm 2022-06-13 11:22:45 +02:00
commit 9a3833e8eb
2 changed files with 62 additions and 21 deletions

View File

@ -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);
}

View File

@ -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<FileAttributeConfig> 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<FileAttributeConfig> 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<String> 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);