From 559c42154276ea861c09cf29b71d9bb9c17e6e87 Mon Sep 17 00:00:00 2001 From: deiflaender Date: Mon, 24 Aug 2020 14:22:18 +0200 Subject: [PATCH] Made rules for table more stabil and flexible --- .../v1/server/redaction/model/Section.java | 25 +++++++------------ .../service/EntityRedactionService.java | 9 ++++--- .../service/EntityRedactionServiceTest.java | 2 +- .../src/test/resources/drools/rules.drl | 9 +++---- 4 files changed, 20 insertions(+), 25 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 13b2b435..3f4b841c 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 @@ -35,21 +35,11 @@ public class Section { private Map tabularData; - public boolean isVertebrateStudy() { - return tabularData != null - && (tabularData.containsKey("Vertebrate study Y/N") - && tabularData.get("Vertebrate study Y/N").getText().equals("Y") - || tabularData.containsKey("Verte brate study Y/N") - && tabularData.get("Verte brate study Y/N").getText().equals("Y")); - } + public boolean rowEquals(String headerName, String value){ + String cleanHeaderName = headerName.replaceAll("\n", "") + .replaceAll(" ", ""); - - public boolean isNotVertebrateStudy() { - return tabularData != null - && (tabularData.containsKey("Vertebrate study Y/N") - && tabularData.get("Vertebrate study Y/N").getText().equals("N") - || tabularData.containsKey("Verte brate study Y/N") - && tabularData.get("Verte brate study Y/N").getText().equals("N")); + return tabularData != null && tabularData.containsKey(cleanHeaderName) && tabularData.get(cleanHeaderName).getText().equals(value); } @@ -182,7 +172,10 @@ public class Section { public void highlightCell(String cellHeader, int ruleNumber, String type) { - TextBlock value = tabularData.get(cellHeader); + String cleanHeaderName = cellHeader.replaceAll("\n", "") + .replaceAll(" ", ""); + + TextBlock value = tabularData.get(cleanHeaderName); if (value == null) { log.warn("Could not find any data for {}.", cellHeader); } else { @@ -196,4 +189,4 @@ public class Section { } -} \ No newline at end of file +} diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/EntityRedactionService.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/EntityRedactionService.java index 9bfd27cd..b301d600 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/EntityRedactionService.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/EntityRedactionService.java @@ -60,9 +60,12 @@ public class EntityRedactionService { } addSectionToManualRedactions(cell.getTextBlocks(), manualRedactions, table.getHeadline(), sectionNumber); cell.getHeaderCells().forEach(headerCell -> { - String headerName = headerCell.getTextBlocks().get(0).getText() - .replaceAll("\n", " ") - .replaceAll(" ", " "); + + StringBuilder headerBuilder = new StringBuilder(); + headerCell.getTextBlocks().forEach(textBlock -> headerBuilder.append(textBlock.getText())); + String headerName = headerBuilder.toString() + .replaceAll("\n", "") + .replaceAll(" ", ""); tabularData.put(headerName, cell.getTextBlocks().get(0)); }); for (TextBlock textBlock : cell.getTextBlocks()) { diff --git a/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/redaction/service/EntityRedactionServiceTest.java b/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/redaction/service/EntityRedactionServiceTest.java index b8a80ac8..da4ed03b 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/redaction/service/EntityRedactionServiceTest.java +++ b/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/redaction/service/EntityRedactionServiceTest.java @@ -228,7 +228,7 @@ public class EntityRedactionServiceTest { "global Section section\n" + "rule \"9: Redact Authors and Addresses in Reference Table, if it is a Vertebrate study\"\n" + " when\n" + - " Section(isVertebrateStudy())\n" + + " Section(rowEquals(\"Vertebrate study Y/N\", \"Y\"))\n" + " then\n" + " section.redact(\"name\", 9, \"Redacted because row is a vertebrate study\");\n" + " section.redact(\"address\", 9, \"Redacted because rows is a vertebrate study\");\n" + 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 cb7a2002..e461ff8b 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 @@ -93,12 +93,11 @@ rule "7: Redact contact information, if Producer is found" rule "8: Not redacted because Vertebrate Study = N" when - Section(isNotVertebrateStudy()) + Section(rowEquals("Vertebrate study Y/N", "N")) then section.redactNot("name", 8, "Not redacted because row is not a vertebrate study"); section.redactNot("address", 8, "Not redacted because row is not a vertebrate study"); section.highlightCell("Vertebrate study Y/N", 8, "hint_only"); - section.highlightCell("Verte brate study Y/N", 8, "hint_only"); end @@ -110,12 +109,12 @@ rule "9: Redact if must redact entry is found" section.redact("address", 9, "must_redact entry was found."); end + rule "10: Redact Authors and Addresses in Reference Table, if it is a Vertebrate study" when - Section(isVertebrateStudy()) + Section(rowEquals("Vertebrate study Y/N", "Y")) then section.redact("name", 10, "Redacted because row is a vertebrate study"); section.redact("address", 10, "Redacted because row is a vertebrate study"); section.highlightCell("Vertebrate study Y/N", 10, "must_redact"); - section.highlightCell("Verte brate study Y/N", 10, "must_redact"); - end \ No newline at end of file + end