From c16f583ce1fb16bcdf714ff0661feaccaaf0037f Mon Sep 17 00:00:00 2001 From: lmaldacker Date: Wed, 10 Feb 2021 14:17:26 +0100 Subject: [PATCH] Adjust rule Do not redact genitive CBI_author --- .../v1/server/redaction/model/Section.java | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) 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 ae3762b2..00271a2e 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 @@ -139,6 +139,33 @@ public class Section { }); } + public void dismissByRegEx(String type, String pattern, boolean patternCaseInsensitive, int group, int ruleNumber, String reason) { + + Pattern compiledPattern = Patterns.getCompiledPattern(pattern, patternCaseInsensitive); + + Set expanded = new HashSet<>(); + for (Entity entity : entities) { + + if (!entity.getType().equals(type) || entity.getTextAfter() == null) { + continue; + } + + Matcher matcher = compiledPattern.matcher(entity.getTextAfter()); + + while (matcher.find()) { + String match = matcher.group(group); + if (StringUtils.isNotBlank(match)) { + entity.setRedaction(false); + entity.setMatchedRule(ruleNumber); + entity.setRedactionReason(reason); + } + } + } + + EntitySearchUtils.addEntitiesWithHigherRank(entities, expanded, dictionary); + EntitySearchUtils.removeEntitiesContainedInLarger(entities); + } + public void redactIfPrecededBy(String prefix, String type, int ruleNumber, String reason, String legalBasis) {