From 989eb2145e643ce6479fc8b23bfb13f102c006b3 Mon Sep 17 00:00:00 2001 From: Maverick Studer Date: Fri, 3 May 2024 10:03:07 +0200 Subject: [PATCH] RED-9091: Cannot re-add manual redaction on same position with same reason --- .../EntityFromPrecursorCreationService.java | 2 +- .../v1/server/RedactionIntegrationTest.java | 67 +++++++++++++++++++ 2 files changed, 68 insertions(+), 1 deletion(-) diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/document/EntityFromPrecursorCreationService.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/document/EntityFromPrecursorCreationService.java index 7607a990..4827f9b2 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/document/EntityFromPrecursorCreationService.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/document/EntityFromPrecursorCreationService.java @@ -45,7 +45,7 @@ public class EntityFromPrecursorCreationService { .filter(BaseAnnotation::isLocal) .filter(manualRedactionEntry -> idRemovals.stream() .filter(idRemoval -> idRemoval.getAnnotationId().equals(manualRedactionEntry.getAnnotationId())) - .filter(idRemoval -> idRemoval.getRequestDate().isBefore(manualRedactionEntry.getRequestDate())) + .filter(idRemoval -> idRemoval.getRequestDate().isAfter(manualRedactionEntry.getRequestDate())) .findAny()// .isEmpty()) .map(manualRedactionEntry -> // diff --git a/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/RedactionIntegrationTest.java b/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/RedactionIntegrationTest.java index 03f35edc..c8b1bac8 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/RedactionIntegrationTest.java +++ b/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/RedactionIntegrationTest.java @@ -1451,6 +1451,72 @@ public class RedactionIntegrationTest extends AbstractRedactionIntegrationTest { } + @Test + @SneakyThrows + public void testReAddingSameManualRedaction() { + + String pdfFile = "files/new/test1S1T1.pdf"; + + String manualAddId = UUID.randomUUID().toString(); + List positions = List.of(Rectangle.builder().topLeftX(305.35f).topLeftY(332.5033f).width(71.40744f).height(13.645125f).page(1).build()); + ManualRedactionEntry manualRedactionEntry = getManualRedactionEntry(manualAddId, + positions, + "the manufacturing or production process, including the method and innovative aspects thereof, as well as other technical and industrial specifications inherent to that process or method, except for information which is relevant to the assessment of safety"); + + IdRemoval idRemoval = getIdRemoval(manualAddId); + + AnalyzeRequest request = uploadFileToStorage(pdfFile); + request.setManualRedactions(ManualRedactions.builder().entriesToAdd(Set.of(manualRedactionEntry)).build()); + analyzeDocumentStructure(LayoutParsingType.REDACT_MANAGER, request); + request.setAnalysisNumber(1); + analyzeService.analyze(request); + + var entityLog = redactionStorageService.getEntityLog(TEST_DOSSIER_ID, TEST_FILE_ID); + + assertTrue(entityLog.getEntityLogEntry() + .stream() + .anyMatch(entityLogEntry -> entityLogEntry.getId().equals(manualAddId))); + assertEquals(entityLog.getEntityLogEntry() + .stream() + .filter(entityLogEntry -> entityLogEntry.getId().equals(manualAddId)) + .findFirst() + .get().getState(), EntryState.APPLIED); + + manualRedactionEntry.setProcessedDate(OffsetDateTime.now()); + request.setManualRedactions(ManualRedactions.builder().entriesToAdd(Set.of(manualRedactionEntry)).idsToRemove(Set.of(idRemoval)).build()); + request.setAnalysisNumber(2); + analyzeService.reanalyze(request); + + entityLog = redactionStorageService.getEntityLog(TEST_DOSSIER_ID, TEST_FILE_ID); + + assertTrue(entityLog.getEntityLogEntry() + .stream() + .anyMatch(entityLogEntry -> entityLogEntry.getId().equals(manualAddId))); + assertEquals(entityLog.getEntityLogEntry() + .stream() + .filter(entityLogEntry -> entityLogEntry.getId().equals(manualAddId)) + .findFirst() + .get().getState(), EntryState.REMOVED); + + + manualRedactionEntry.setRequestDate(OffsetDateTime.now()); + idRemoval.setProcessedDate(OffsetDateTime.now()); + request.setManualRedactions(ManualRedactions.builder().entriesToAdd(Set.of(manualRedactionEntry)).idsToRemove(Set.of(idRemoval)).build()); + request.setAnalysisNumber(3); + analyzeService.reanalyze(request); + + entityLog = redactionStorageService.getEntityLog(TEST_DOSSIER_ID, TEST_FILE_ID); + + assertTrue(entityLog.getEntityLogEntry() + .stream() + .anyMatch(entityLogEntry -> entityLogEntry.getId().equals(manualAddId))); + assertEquals(entityLog.getEntityLogEntry() + .stream() + .filter(entityLogEntry -> entityLogEntry.getId().equals(manualAddId)) + .findFirst() + .get().getState(), EntryState.APPLIED); + } + @Test @SneakyThrows public void testResizeWithUpdateDictionaryTrue() { @@ -1519,6 +1585,7 @@ public class RedactionIntegrationTest extends AbstractRedactionIntegrationTest { ManualRedactionEntry manualRedactionEntry2 = new ManualRedactionEntry(); manualRedactionEntry2.setAnnotationId(id); manualRedactionEntry2.setFileId("fileId"); + manualRedactionEntry2.setUser("test"); manualRedactionEntry2.setType("manual"); manualRedactionEntry2.setRectangle(false); manualRedactionEntry2.setRequestDate(OffsetDateTime.now());