hotfix: fix rule creating endless loop with dossier-redactions
This commit is contained in:
parent
3bc11b7d33
commit
25762e71b7
@ -1,4 +1,4 @@
|
|||||||
package com.iqser.red.service.redaction.v1.server.layoutparsing.classification.adapter;
|
package com.iqser.red.service.redaction.v1.server.redaction.adapter;
|
||||||
|
|
||||||
import static java.lang.String.format;
|
import static java.lang.String.format;
|
||||||
import static java.util.stream.Collectors.groupingBy;
|
import static java.util.stream.Collectors.groupingBy;
|
||||||
@ -58,9 +58,10 @@ public class CustomEntityCreationAdapter {
|
|||||||
public List<RedactionEntity> createRedactionEntities(Set<ManualRedactionEntry> manualRedactionEntries, SemanticNode node) {
|
public List<RedactionEntity> createRedactionEntities(Set<ManualRedactionEntry> manualRedactionEntries, SemanticNode node) {
|
||||||
|
|
||||||
List<EntityIdentifier> entityIdentifiers = manualRedactionEntries.stream()
|
List<EntityIdentifier> entityIdentifiers = manualRedactionEntries.stream()
|
||||||
.filter(manualRedactionEntry -> !manualRedactionEntry.isAddToDictionary() || !manualRedactionEntry.isAddToDossierDictionary())
|
.filter(manualRedactionEntry -> !(manualRedactionEntry.isAddToDictionary() || manualRedactionEntry.isAddToDossierDictionary()))
|
||||||
.map(EntityIdentifier::fromManualRedactionEntry)
|
.map(EntityIdentifier::fromManualRedactionEntry)
|
||||||
.toList();
|
.toList();
|
||||||
|
|
||||||
return toRedactionEntity(entityIdentifiers, node);
|
return toRedactionEntity(entityIdentifiers, node);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -204,10 +205,21 @@ public class CustomEntityCreationAdapter {
|
|||||||
|
|
||||||
private double calculateDistance(Rectangle2D rectangle, Rectangle2D rectangle2D) {
|
private double calculateDistance(Rectangle2D rectangle, Rectangle2D rectangle2D) {
|
||||||
|
|
||||||
return Math.abs(rectangle.getMinX() - rectangle2D.getMinX()) //
|
// mirrored coordinates safe comparison
|
||||||
+ Math.abs(rectangle.getMinY() - rectangle2D.getMinY()) //
|
double minX1 = Math.min(rectangle.getMinX(), rectangle.getMaxX());
|
||||||
+ Math.abs(rectangle.getMaxX() - rectangle2D.getMaxX()) //
|
double minY1 = Math.min(rectangle.getMinY(), rectangle.getMaxY());
|
||||||
+ Math.abs(rectangle.getMaxY() - rectangle2D.getMaxY());
|
double maxX1 = Math.max(rectangle.getMinX(), rectangle.getMaxX());
|
||||||
|
double maxY1 = Math.max(rectangle.getMinY(), rectangle.getMaxY());
|
||||||
|
|
||||||
|
double minX2 = Math.min(rectangle2D.getMinX(), rectangle2D.getMaxX());
|
||||||
|
double minY2 = Math.min(rectangle2D.getMinY(), rectangle2D.getMaxY());
|
||||||
|
double maxX2 = Math.max(rectangle2D.getMinX(), rectangle2D.getMaxX());
|
||||||
|
double maxY2 = Math.max(rectangle2D.getMinY(), rectangle2D.getMaxY());
|
||||||
|
|
||||||
|
return Math.abs(minX1 - minX2) //
|
||||||
|
+ Math.abs(minY1 - minY2) //
|
||||||
|
+ Math.abs(maxX1 - maxX2) //
|
||||||
|
+ Math.abs(maxY1 - maxY2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -11,9 +11,8 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.AnalyzeRequ
|
|||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.FileAttribute;
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.FileAttribute;
|
||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.ManualRedactionEntry;
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.ManualRedactionEntry;
|
||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.Engine;
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.Engine;
|
||||||
import com.iqser.red.service.redaction.v1.server.layoutparsing.classification.adapter.CustomEntityCreationAdapter;
|
import com.iqser.red.service.redaction.v1.server.redaction.adapter.CustomEntityCreationAdapter;
|
||||||
import com.iqser.red.service.redaction.v1.server.layoutparsing.document.graph.entity.EntityType;
|
import com.iqser.red.service.redaction.v1.server.layoutparsing.document.graph.entity.EntityType;
|
||||||
import com.iqser.red.service.redaction.v1.server.layoutparsing.document.graph.entity.RedactionEntity;
|
|
||||||
import com.iqser.red.service.redaction.v1.server.layoutparsing.document.graph.nodes.Document;
|
import com.iqser.red.service.redaction.v1.server.layoutparsing.document.graph.nodes.Document;
|
||||||
import com.iqser.red.service.redaction.v1.server.layoutparsing.document.graph.nodes.SemanticNode;
|
import com.iqser.red.service.redaction.v1.server.layoutparsing.document.graph.nodes.SemanticNode;
|
||||||
import com.iqser.red.service.redaction.v1.server.layoutparsing.document.services.EntityCreationService;
|
import com.iqser.red.service.redaction.v1.server.layoutparsing.document.services.EntityCreationService;
|
||||||
|
|||||||
@ -5,11 +5,8 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
|
|||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
import org.drools.io.ClassPathResource;
|
import org.drools.io.ClassPathResource;
|
||||||
@ -27,10 +24,9 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemp
|
|||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.RedactionLog;
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.RedactionLog;
|
||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.RedactionLogEntry;
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.RedactionLogEntry;
|
||||||
import com.iqser.red.service.redaction.v1.model.StructureAnalyzeRequest;
|
import com.iqser.red.service.redaction.v1.model.StructureAnalyzeRequest;
|
||||||
import com.iqser.red.service.redaction.v1.server.layoutparsing.classification.adapter.CustomEntityCreationAdapter;
|
import com.iqser.red.service.redaction.v1.server.redaction.adapter.CustomEntityCreationAdapter;
|
||||||
import com.iqser.red.service.redaction.v1.server.layoutparsing.document.data.DocumentData;
|
import com.iqser.red.service.redaction.v1.server.layoutparsing.document.data.DocumentData;
|
||||||
import com.iqser.red.service.redaction.v1.server.layoutparsing.document.data.mapper.DocumentGraphMapper;
|
import com.iqser.red.service.redaction.v1.server.layoutparsing.document.data.mapper.DocumentGraphMapper;
|
||||||
import com.iqser.red.service.redaction.v1.server.layoutparsing.document.graph.entity.RedactionEntity;
|
|
||||||
import com.iqser.red.service.redaction.v1.server.layoutparsing.document.graph.nodes.Document;
|
import com.iqser.red.service.redaction.v1.server.layoutparsing.document.graph.nodes.Document;
|
||||||
import com.iqser.red.service.redaction.v1.server.redaction.service.RedactionLogCreatorService;
|
import com.iqser.red.service.redaction.v1.server.redaction.service.RedactionLogCreatorService;
|
||||||
import com.knecon.fforesight.tenantcommons.TenantContext;
|
import com.knecon.fforesight.tenantcommons.TenantContext;
|
||||||
|
|||||||
@ -451,7 +451,6 @@ rule "ETC.5.0: Ignore dossier_redaction entries if confidentiality is not 'confi
|
|||||||
$dossierRedaction: RedactionEntity(type == "dossier_redaction")
|
$dossierRedaction: RedactionEntity(type == "dossier_redaction")
|
||||||
then
|
then
|
||||||
$dossierRedaction.ignore("ETC.5.0", "Ignore dossier redactions, when not confidential");
|
$dossierRedaction.ignore("ETC.5.0", "Ignore dossier redactions, when not confidential");
|
||||||
update($dossierRedaction);
|
|
||||||
$dossierRedaction.getIntersectingNodes().forEach(node -> update(node));
|
$dossierRedaction.getIntersectingNodes().forEach(node -> update(node));
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@ -792,7 +792,6 @@ rule "ETC.5.0: Ignore dossier_redaction entries if confidentiality is not 'confi
|
|||||||
$dossierRedaction: RedactionEntity(type == "dossier_redaction")
|
$dossierRedaction: RedactionEntity(type == "dossier_redaction")
|
||||||
then
|
then
|
||||||
$dossierRedaction.ignore("ETC.5.0", "Ignore dossier redactions, when not confidential");
|
$dossierRedaction.ignore("ETC.5.0", "Ignore dossier redactions, when not confidential");
|
||||||
update($dossierRedaction);
|
|
||||||
$dossierRedaction.getIntersectingNodes().forEach(node -> update(node));
|
$dossierRedaction.getIntersectingNodes().forEach(node -> update(node));
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user