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 b8ab2a0d..d5b6cba1 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 @@ -1465,6 +1465,72 @@ public class RedactionIntegrationTest extends RulesIntegrationTest { .get().getState(), EntryState.REMOVED); } + @Test + @SneakyThrows + public void testReAddingSameManualRedaction() { + + String pdfFile = "files/syngenta/CustomerFiles/SinglePages/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 @@ -1703,6 +1769,7 @@ public class RedactionIntegrationTest extends RulesIntegrationTest { ManualRedactionEntry manualRedactionEntry2 = new ManualRedactionEntry(); manualRedactionEntry2.setAnnotationId(id); manualRedactionEntry2.setFileId("fileId"); + manualRedactionEntry2.setUser("test"); manualRedactionEntry2.setType("manual"); manualRedactionEntry2.setRectangle(false); manualRedactionEntry2.setRequestDate(OffsetDateTime.now());