RED-3854-"excludedFromAutomaticAnalysis" and viewed pages not reset when file is reuploaded

- reset flag and viewed pages
- update junit test
This commit is contained in:
devplant 2022-04-27 10:24:36 +03:00
parent 4089e9b38b
commit 25619f6109
3 changed files with 47 additions and 6 deletions

View File

@ -121,7 +121,13 @@ public interface FileRepository extends JpaRepository<FileEntity, String> {
@Modifying(clearAutomatically = true)
@Query("update FileEntity f set f.filename = :filename, f.uploader = :uploader, f.processingStatus = :processingStatus, " + "f.workflowStatus = :workflowStatus, f.lastUploaded = :lastUploaded, f.lastUpdated = :lastUpdated, f.fileManipulationDate = :lastUploaded, " + "f.lastOCRTime = null, f.excluded = false, f.lastProcessed = null, f.lastReviewer = null, f.lastApprover = null, " + "f.assignee = null, f.approvalDate = null, f.numberOfAnalyses = 0, f.lastManualChangeDate = null, f.redactionModificationDate = null," + "f.dictionaryVersion = 0, f.dossierDictionaryVersion = 0, f.rulesVersion = 0, f.hasImages = false, " + "f.hasHints = false, f.hasRedactions = false, f.hasSuggestions = false, f.hasUpdates = false, " + "f.deleted = null, f.hardDeletedTime = null, f.hasHighlights = :hasHighlights " + "where f.id = :fileId")
@Query("update FileEntity f set f.filename = :filename, f.uploader = :uploader, f.processingStatus = :processingStatus, "
+ "f.workflowStatus = :workflowStatus, f.lastUploaded = :lastUploaded, f.lastUpdated = :lastUpdated, f.fileManipulationDate = :lastUploaded, "
+ "f.lastOCRTime = null, f.excluded = false, f.lastProcessed = null, f.lastReviewer = null, f.lastApprover = null, "
+ "f.assignee = null, f.approvalDate = null, f.numberOfAnalyses = 0, f.lastManualChangeDate = null, f.redactionModificationDate = null, "
+ "f.dictionaryVersion = 0, f.dossierDictionaryVersion = 0, f.rulesVersion = 0, f.hasImages = false, "
+ "f.hasHints = false, f.hasRedactions = false, f.hasSuggestions = false, f.hasUpdates = false, "
+ "f.deleted = null, f.hardDeletedTime = null, f.hasHighlights = :hasHighlights, f.excludedFromAutomaticAnalysis = false " + "where f.id = :fileId")
int overwriteFile(String fileId, String filename, String uploader, ProcessingStatus processingStatus, WorkflowStatus workflowStatus, OffsetDateTime lastUploaded,
OffsetDateTime lastUpdated, boolean hasHighlights);

View File

@ -10,6 +10,7 @@ import java.util.stream.Collectors;
import javax.transaction.Transactional;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.ViewedPagesPersistenceService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.stereotype.Service;
@ -71,6 +72,7 @@ public class FileStatusService {
private final FileAttributeConfigPersistenceService fileAttributeConfigPersistenceService;
private final FileManagementServiceSettings settings;
private final ReanalysisRequiredStatusService reanalysisRequiredStatusService;
private final ViewedPagesPersistenceService viewedPagesPersistenceService;
@Transactional
public List<FileModel> getAllRelevantStatusesForReanalysisScheduler() {
@ -451,15 +453,17 @@ public class FileStatusService {
}
@Transactional
public void overwriteFile(String dossierId, String fileId, String uploader, String filename, boolean hasHighlights) {
fileStatusPersistenceService.overwriteFile(fileId, uploader, filename, hasHighlights);
wipeFileData(dossierId, fileId);
viewedPagesPersistenceService.deleteForFile(fileId);
setStatusFullReprocess(dossierId, fileId, false, true);
}
@Transactional
public void wipeFileData(String dossierId, String fileId) {
OffsetDateTime now = OffsetDateTime.now();

View File

@ -7,16 +7,13 @@ import java.time.OffsetDateTime;
import java.util.Collections;
import java.util.List;
import com.iqser.red.service.peristence.v1.server.integration.client.DossierClient;
import com.iqser.red.service.peristence.v1.server.integration.client.*;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.CreateOrUpdateDossierRequest;
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.FileClient;
import com.iqser.red.service.peristence.v1.server.integration.client.ManualRedactionClient;
import com.iqser.red.service.peristence.v1.server.integration.client.UploadClient;
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;
@ -60,6 +57,9 @@ public class FileTest extends AbstractPersistenceServerServiceTest {
@Autowired
private DossierClient dossierClient;
@Autowired
private ViewedPagesClient viewedPagesClient;
@Test
public void testEmptyFile() {
@ -100,6 +100,37 @@ public class FileTest extends AbstractPersistenceServerServiceTest {
assertThat(loadedFile.getFilename()).isEqualTo(filename);
}
@Test
public void testFileOverwrite() {
var filename = "test.pdf";
var dossier = dossierTesterAndProvider.provideTestDossier();
var file = fileTesterAndProvider.testAndProvideFile(dossier, filename);
assertThat(fileClient.getDossierStatus(dossier.getId()).size()).isEqualTo(1);
var loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId());
assertThat(loadedFile.getFilename()).isEqualTo(filename);
fileClient.setStatusUnderApproval(dossier.getId(), file.getId(), "1");
fileClient.toggleAutomaticAnalysis(dossier.getId(), file.getId(), true);
loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId());
assertThat(loadedFile.isExcludedFromAutomaticAnalysis()).isTrue();
viewedPagesClient.addPage(file.getId(), "1", 1);
var viewedPages = viewedPagesClient.getViewedPages(file.getId(), "1");
assertThat(viewedPages.size()).isEqualTo(1);
BinaryFileRequest upload = new BinaryFileRequest("test".getBytes(StandardCharsets.UTF_8), filename, dossier.getId(), "1");
JSONPrimitive<String> uploadResult = uploadClient.upload(upload);
loadedFile = fileClient.getFileStatus(dossier.getId(), uploadResult.getValue());
assertThat(loadedFile.isExcludedFromAutomaticAnalysis()).isFalse();
viewedPages = viewedPagesClient.getViewedPages(file.getId(), "1");
assertThat(viewedPages.size()).isEqualTo(0);
}
@Test
public void testFile() {