From 44c77685a4f778cde81c2b0349d11d07a0655caf Mon Sep 17 00:00:00 2001 From: deiflaender Date: Wed, 1 Dec 2021 11:11:57 +0100 Subject: [PATCH] RED-2862: Added possibility to ignore dictionaries by rule --- .../v1/server/redaction/model/Section.java | 6 +++++ .../v1/server/RedactionIntegrationTest.java | 26 +++++++++++++++++++ .../dictionaries/dossier_redactions.txt | 3 ++- .../src/test/resources/drools/rules.drl | 9 ++++++- 4 files changed, 42 insertions(+), 2 deletions(-) diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/model/Section.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/model/Section.java index 9c909437..d92c01a1 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/model/Section.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/model/Section.java @@ -153,6 +153,7 @@ public class Section { while (matcher.find()) { String match = matcher.group(group); if (StringUtils.isNotBlank(match)) { + expanded.addAll(findEntities(entity.getWord() + match, type, false, entity.isRedaction(), entity.getMatchedRule(), entity .getRedactionReason(), entity.getLegalBasis())); @@ -221,6 +222,11 @@ public class Section { } + public void ignore(String type){ + entities.removeIf(entity -> entity.getType().equals(type)); + } + + public void expandToHintAnnotationByRegEx(String type, String pattern, boolean patternCaseInsensitive, int group, String asType) { 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 deb6c1e6..7f684a1c 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 @@ -782,6 +782,32 @@ public class RedactionIntegrationTest { } + @Test + public void testIgnoreDossierRedactionIfConfidential() throws IOException { + + long start = System.currentTimeMillis(); + + AnalyzeRequest request = prepareStorage("files/new/VV-919901.pdf"); + AnalyzeResult result = reanalyzeService.analyze(request); + + AnnotateResponse annotateResponse = redactionController.annotate(AnnotateRequest.builder() + .dossierId(TEST_DOSSIER_ID) + .fileId(TEST_FILE_ID) + .build()); + + try (FileOutputStream fileOutputStream = new FileOutputStream(getTemporaryDirectory() + "/Annotated.pdf")) { + fileOutputStream.write(annotateResponse.getDocument()); + } + long end = System.currentTimeMillis(); + + System.out.println("duration: " + (end - start)); + System.out.println("numberOfPages: " + result.getNumberOfPages()); + } + + + + + @Test public void testManualRedaction() throws IOException { diff --git a/redaction-service-v1/redaction-service-server-v1/src/test/resources/dictionaries/dossier_redactions.txt b/redaction-service-v1/redaction-service-server-v1/src/test/resources/dictionaries/dossier_redactions.txt index 3840a8ac..da51b157 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/test/resources/dictionaries/dossier_redactions.txt +++ b/redaction-service-v1/redaction-service-server-v1/src/test/resources/dictionaries/dossier_redactions.txt @@ -1 +1,2 @@ -Difenoconazole \ No newline at end of file +Difenoconazole +FENPROPIDIN \ No newline at end of file diff --git a/redaction-service-v1/redaction-service-server-v1/src/test/resources/drools/rules.drl b/redaction-service-v1/redaction-service-server-v1/src/test/resources/drools/rules.drl index 00a81a21..7b4d5dc5 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/test/resources/drools/rules.drl +++ b/redaction-service-v1/redaction-service-server-v1/src/test/resources/drools/rules.drl @@ -344,4 +344,11 @@ rule "29: Redact Dossier Redactions" Section(matchesType("dossier_redactions")) then section.redact("dossier_redactions", 29, "Dossier Redaction found", "Article 39(1)(2) of Regulation (EC) No 178/2002"); - end \ No newline at end of file + end + +rule "30: Ignore dossier_redactions if confidential" + when + Section(!fileAttributeByLabelEqualsIgnoreCase("Confidentiality","confidential") && matchesType("dossier_redactions")); + then + section.ignore("dossier_redactions"); + end \ No newline at end of file