diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/classification/model/ClassificationFooter.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/classification/model/ClassificationFooter.java index 9eb7b1e9..6e14f087 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/classification/model/ClassificationFooter.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/classification/model/ClassificationFooter.java @@ -2,9 +2,7 @@ package com.iqser.red.service.redaction.v1.server.layoutparsing.classification.m import java.util.List; -import com.fasterxml.jackson.annotation.JsonIgnore; import com.iqser.red.service.redaction.v1.server.layoutparsing.classification.model.text.ClassificationTextBlock; -import com.iqser.red.service.redaction.v1.server.layoutparsing.classification.model.text.SearchableText; import lombok.AllArgsConstructor; import lombok.Data; @@ -15,13 +13,4 @@ public class ClassificationFooter { private List textBlocks; - - @JsonIgnore - public SearchableText getSearchableText() { - - SearchableText searchableText = new SearchableText(); - textBlocks.forEach(block -> searchableText.addAll(block.getSequences())); - return searchableText; - } - } diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/classification/model/ClassificationHeader.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/classification/model/ClassificationHeader.java index 2cb964c1..17659b7f 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/classification/model/ClassificationHeader.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/classification/model/ClassificationHeader.java @@ -2,9 +2,7 @@ package com.iqser.red.service.redaction.v1.server.layoutparsing.classification.m import java.util.List; -import com.fasterxml.jackson.annotation.JsonIgnore; import com.iqser.red.service.redaction.v1.server.layoutparsing.classification.model.text.ClassificationTextBlock; -import com.iqser.red.service.redaction.v1.server.layoutparsing.classification.model.text.SearchableText; import lombok.AllArgsConstructor; import lombok.Data; @@ -15,13 +13,4 @@ public class ClassificationHeader { private List textBlocks; - - @JsonIgnore - public SearchableText getSearchableText() { - - SearchableText searchableText = new SearchableText(); - textBlocks.forEach(block -> searchableText.addAll(block.getSequences())); - return searchableText; - } - } diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/classification/model/ClassificationPage.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/classification/model/ClassificationPage.java index 25ce5b78..d9b38623 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/classification/model/ClassificationPage.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/classification/model/ClassificationPage.java @@ -35,10 +35,4 @@ public class ClassificationPage { private float pageWidth; private float pageHeight; - - public boolean isRotated() { - - return rotation != 0; - } - } diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/classification/model/ClassificationSection.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/classification/model/ClassificationSection.java index bcbfd4e4..5ee7a0a4 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/classification/model/ClassificationSection.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/classification/model/ClassificationSection.java @@ -5,33 +5,19 @@ import java.util.List; import com.iqser.red.service.redaction.v1.server.layoutparsing.classification.model.image.ClassifiedImage; import com.iqser.red.service.redaction.v1.server.layoutparsing.classification.model.table.TablePageBlock; -import com.iqser.red.service.redaction.v1.server.layoutparsing.classification.model.text.ClassificationTextBlock; -import com.iqser.red.service.redaction.v1.server.layoutparsing.classification.model.text.SearchableText; import lombok.Data; import lombok.NoArgsConstructor; @Data @NoArgsConstructor -public class ClassificationSection implements Comparable { +public class ClassificationSection { private List pageBlocks = new ArrayList<>(); private List images = new ArrayList<>(); private String headline; - public SearchableText getSearchableText() { - - SearchableText searchableText = new SearchableText(); - pageBlocks.forEach(block -> { - if (block instanceof ClassificationTextBlock) { - searchableText.addAll(((ClassificationTextBlock) block).getSequences()); - } - }); - return searchableText; - } - - public List getTables() { List tables = new ArrayList<>(); @@ -43,23 +29,4 @@ public class ClassificationSection implements Comparable { return tables; } - - public List getTextBlocks() { - - List textBlocks = new ArrayList<>(); - pageBlocks.forEach(block -> { - if (block instanceof ClassificationTextBlock) { - textBlocks.add((ClassificationTextBlock) block); - } - }); - return textBlocks; - } - - - @Override - public int compareTo(Object o) { - - return 0; - } - } diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/classification/model/text/TextDirection.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/classification/model/text/TextDirection.java index 8b561759..aceb3751 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/classification/model/text/TextDirection.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/classification/model/text/TextDirection.java @@ -1,7 +1,5 @@ package com.iqser.red.service.redaction.v1.server.layoutparsing.classification.model.text; -import java.util.Objects; - import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonValue; @@ -46,18 +44,4 @@ public enum TextDirection { throw new IllegalArgumentException(String.format("A value of %f is not supported by TextDirection", degrees)); } - - - public static TextDirection fromString(String degreesAsString) { - - Objects.requireNonNull(degreesAsString, "Cannot construct a text direction from a null value"); - - String value = degreesAsString.strip(); - - if (degreesAsString.endsWith(VALUE_STRING_SUFFIX)) { - value = degreesAsString.replace(VALUE_STRING_SUFFIX + "$", ""); - } - - return fromDegrees(Float.parseFloat(value)); - } } diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/classification/model/text/UnclassifiedText.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/classification/model/text/UnclassifiedText.java index 4616494f..6eea5674 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/classification/model/text/UnclassifiedText.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/classification/model/text/UnclassifiedText.java @@ -2,8 +2,6 @@ package com.iqser.red.service.redaction.v1.server.layoutparsing.classification.m import java.util.List; -import com.fasterxml.jackson.annotation.JsonIgnore; - import lombok.AllArgsConstructor; import lombok.Data; @@ -13,13 +11,4 @@ public class UnclassifiedText { private List textBlocks; - - @JsonIgnore - public SearchableText getSearchableText() { - - SearchableText searchableText = new SearchableText(); - textBlocks.forEach(block -> searchableText.addAll(block.getSequences())); - return searchableText; - } - } diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/graph/entity/RedactionEntity.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/graph/entity/RedactionEntity.java index 153f50e1..0f3b9f04 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/graph/entity/RedactionEntity.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/layoutparsing/document/graph/entity/RedactionEntity.java @@ -89,6 +89,12 @@ public class RedactionEntity { } + public boolean occursInNode(SemanticNode semanticNode) { + + return intersectingNodes.stream().anyMatch(node -> node.equals(semanticNode)); + } + + public boolean isType(String type) { return this.type.equals(type); diff --git a/redaction-service-v1/redaction-service-server-v1/src/test/resources/drools/prod_syngenta_new.drl b/redaction-service-v1/redaction-service-server-v1/src/test/resources/drools/prod_syngenta_new.drl index b7061637..e47c1c30 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/test/resources/drools/prod_syngenta_new.drl +++ b/redaction-service-v1/redaction-service-server-v1/src/test/resources/drools/prod_syngenta_new.drl @@ -318,6 +318,7 @@ rule "21: Redact Emails by RegEx (Non vertebrate study)" entityCreationService.byRegex("\\b([A-Za-z0-9._%+\\-]+@[A-Za-z0-9.\\-]+\\.[A-Za-z\\-]{1,23}[A-Za-z])\\b", "PII", EntityType.ENTITY, 1, $section) .forEach(emailEntity -> { emailEntity.setRedaction(true); + emailEntity.addEngine(Engine.RULE); emailEntity.setRedactionReason("Found by Email Regex"); emailEntity.setLegalBasis("Article 39(e)(3) of Regulation (EC) No 178/2002"); emailEntity.addMatchedRule(21); @@ -587,17 +588,20 @@ rule "Apply id removals that are valid and not in forced redactions to Image" $entityToBeRemoved: Image($id == id) then $entityToBeRemoved.setIgnored(true); + retract($entityToBeRemoved); end rule "Apply force redaction" salience 128 when - ManualForceRedaction($id: annotationId, status == AnnotationStatus.APPROVED, requestDate != null, $legalBasis: legalBasis) + $forceRedaction: ManualForceRedaction($id: annotationId, status == AnnotationStatus.APPROVED, requestDate != null, $legalBasis: legalBasis) $entityToForce: RedactionEntity(matchesAnnotationId($id)) then $entityToForce.setLegalBasis($legalBasis); $entityToForce.setRedaction(true); $entityToForce.setSkipRemoveEntitiesContainedInLarger(true); + retract($forceRedaction); + update($entityToForce); end rule "Apply image recategorization"