diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/RedactionChangeLogService.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/RedactionChangeLogService.java index 516c0487..ff3315f2 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/RedactionChangeLogService.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/RedactionChangeLogService.java @@ -50,7 +50,13 @@ public class RedactionChangeLogService { .equals(ChangeType.REMOVED)) .collect(Collectors.toList()); - Set added = new HashSet<>(currentRedactionLog.getRedactionLogEntry()); + Set added = new HashSet<>(currentRedactionLog.getRedactionLogEntry().stream() + .filter(entry -> entry.getChanges().isEmpty() || !entry.getChanges() + .get(entry.getChanges().size() - 1) + .getType() + .equals(ChangeType.REMOVED)) + .collect(Collectors.toList())); + added.removeAll(notRemovedPreviousEntries); Set removed = new HashSet<>(notRemovedPreviousEntries); 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 292bfc87..41595cc4 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 @@ -850,6 +850,51 @@ public class RedactionIntegrationTest { System.out.println("Output file:" + outputFileName); } + @Test + public void testChangeComputation() throws IOException { + + String fileName = "files/new/test1S1T1.pdf"; + String outputFileName = OsUtils.getTemporaryDirectory() + "/Annotated.pdf"; + + ClassPathResource pdfFileResource = new ClassPathResource(fileName); + AnalyzeRequest request = prepareStorage(pdfFileResource.getInputStream()); + + analyzeService.analyzeDocumentStructure(new StructureAnalyzeRequest(request.getDossierId(), request.getFileId())); + analyzeService.analyze(request); + + dictionary.get(AUTHOR).add("report"); + reanlysisVersions.put("report", 2L); + when(dictionaryClient.getVersion(TEST_DOSSIER_TEMPLATE_ID)).thenReturn(2L); + when(dictionaryClient.getDictionaryForType(AUTHOR +":" + TEST_DOSSIER_TEMPLATE_ID)).thenReturn(getDictionaryResponse(AUTHOR, false)); + analyzeService.reanalyze(request); + + dictionary.get(AUTHOR).add("assessment report"); + reanlysisVersions.put("assessment report", 3L); + when(dictionaryClient.getVersion(TEST_DOSSIER_TEMPLATE_ID)).thenReturn(3L); + when(dictionaryClient.getDictionaryForType(AUTHOR +":" + TEST_DOSSIER_TEMPLATE_ID)).thenReturn(getDictionaryResponse(AUTHOR, false)); + analyzeService.reanalyze(request); + + when(dictionaryClient.getVersion(TEST_DOSSIER_TEMPLATE_ID)).thenReturn(3L); + when(dictionaryClient.getDictionaryForType(AUTHOR +":" + TEST_DOSSIER_TEMPLATE_ID)).thenReturn(getDictionaryResponse(AUTHOR, false)); + analyzeService.reanalyze(request); + + var redactionLog = redactionStorageService.getRedactionLog(TEST_DOSSIER_ID, TEST_FILE_ID); + + var changes = redactionLog.getRedactionLogEntry().stream().filter(entry -> + entry.getValue() != null && entry.getValue().equals("report")) + .findFirst().get().getChanges(); + + assertThat(changes.size()).isEqualTo(2); + + AnnotateResponse annotateResponse = redactionController.annotate(AnnotateRequest.builder() + .dossierId(TEST_DOSSIER_ID) + .fileId(TEST_FILE_ID) + .build()); + + try (FileOutputStream fileOutputStream = new FileOutputStream(outputFileName)) { + fileOutputStream.write(annotateResponse.getDocument()); + } + } @Test public void redactionTest() throws IOException { diff --git a/redaction-service-v1/redaction-service-server-v1/src/test/resources/files/new/test1S1T1.pdf b/redaction-service-v1/redaction-service-server-v1/src/test/resources/files/new/test1S1T1.pdf new file mode 100644 index 00000000..fc6ce0a1 Binary files /dev/null and b/redaction-service-v1/redaction-service-server-v1/src/test/resources/files/new/test1S1T1.pdf differ