From 6638f0cf9e3cf9a81a40ef08216d5e9cbed5d68b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thierry=20G=C3=B6ckel?= Date: Mon, 28 Sep 2020 17:47:55 +0200 Subject: [PATCH] Refactor multiple positions to one --- .../v1/model/ManualRedactionEntry.java | 5 +-- .../redaction/v1/model/RedactionLogEntry.java | 6 +--- .../service/EntityRedactionService.java | 9 +++-- .../service/AnnotationHighlightService.java | 36 +++++++------------ .../v1/server/RedactionIntegrationTest.java | 7 +++- 5 files changed, 25 insertions(+), 38 deletions(-) diff --git a/redaction-service-v1/redaction-service-api-v1/src/main/java/com/iqser/red/service/redaction/v1/model/ManualRedactionEntry.java b/redaction-service-v1/redaction-service-api-v1/src/main/java/com/iqser/red/service/redaction/v1/model/ManualRedactionEntry.java index 06f5c7d8..4d855f60 100644 --- a/redaction-service-v1/redaction-service-api-v1/src/main/java/com/iqser/red/service/redaction/v1/model/ManualRedactionEntry.java +++ b/redaction-service-v1/redaction-service-api-v1/src/main/java/com/iqser/red/service/redaction/v1/model/ManualRedactionEntry.java @@ -1,8 +1,5 @@ package com.iqser.red.service.redaction.v1.model; -import java.util.ArrayList; -import java.util.List; - import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -15,7 +12,7 @@ public class ManualRedactionEntry { private String type; private String value; private String reason; - private List positions = new ArrayList<>(); + private Rectangle position; private String section; private int sectionNumber; diff --git a/redaction-service-v1/redaction-service-api-v1/src/main/java/com/iqser/red/service/redaction/v1/model/RedactionLogEntry.java b/redaction-service-v1/redaction-service-api-v1/src/main/java/com/iqser/red/service/redaction/v1/model/RedactionLogEntry.java index 71697f02..900c73cc 100644 --- a/redaction-service-v1/redaction-service-api-v1/src/main/java/com/iqser/red/service/redaction/v1/model/RedactionLogEntry.java +++ b/redaction-service-v1/redaction-service-api-v1/src/main/java/com/iqser/red/service/redaction/v1/model/RedactionLogEntry.java @@ -1,8 +1,5 @@ package com.iqser.red.service.redaction.v1.model; -import java.util.ArrayList; -import java.util.List; - import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -23,8 +20,7 @@ public class RedactionLogEntry { private String section; private float[] color; - @Builder.Default - private List positions = new ArrayList<>(); + private Rectangle position; private int sectionNumber; private boolean manual; 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 0be28bdc..1e484892 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 @@ -213,11 +213,10 @@ public class EntityRedactionService { for (TextBlock textBlock : textBlocks) { for (ManualRedactionEntry manualRedactionEntry : manualRedactions.getEntriesToAdd()) { - for (Rectangle rectangle : manualRedactionEntry.getPositions()) { - if (textBlock.contains(rectangle)) { - manualRedactionEntry.setSection(section); - manualRedactionEntry.setSectionNumber(sectionNumber); - } + Rectangle rectangle = manualRedactionEntry.getPosition(); + if (textBlock.contains(rectangle)) { + manualRedactionEntry.setSection(section); + manualRedactionEntry.setSectionNumber(sectionNumber); } } } diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/visualization/service/AnnotationHighlightService.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/visualization/service/AnnotationHighlightService.java index 9602ea3a..5c9eb504 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/visualization/service/AnnotationHighlightService.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/visualization/service/AnnotationHighlightService.java @@ -73,11 +73,7 @@ public class AnnotationHighlightService { return manualRedactionPages; } - manualRedactions.getEntriesToAdd().forEach(entry -> { - entry.getPositions().forEach(pos -> { - manualRedactionPages.add(pos.getPage()); - }); - }); + manualRedactions.getEntriesToAdd().forEach(entry -> manualRedactionPages.add(entry.getPosition().getPage())); return manualRedactionPages; } @@ -120,7 +116,7 @@ public class AnnotationHighlightService { .mapToDouble(TextPositionSequence::getWidth) .sum()); rectangle.setPage(page); - redactionLogEntry.getPositions().add(rectangle); + redactionLogEntry.setPosition(rectangle); annotations.add(createAnnotation(rectangle, entityPositionSequence.getId(), createAnnotationContent(entity), getColor(entity), !flatRedaction && !isHint(entity))); } @@ -146,25 +142,19 @@ public class AnnotationHighlightService { RedactionLogEntry redactionLogEntry = createRedactionLogEntry(manualRedactionEntry, id); - boolean foundOnPage = false; - for (Rectangle rectangle : manualRedactionEntry.getPositions()) { + Rectangle rectangle = manualRedactionEntry.getPosition(); - if (page != rectangle.getPage()) { - continue; - } - - foundOnPage = true; - - PDAnnotationTextMarkup highlight = createAnnotation(rectangle, id, - createAnnotationContent(manualRedactionEntry), getColor(manualRedactionEntry - .getType()), true); - annotations.add(highlight); - - redactionLogEntry.getPositions().add(rectangle); - } - if (foundOnPage) { - classifiedDoc.getRedactionLogEntities().add(redactionLogEntry); + if (page != rectangle.getPage()) { + continue; } + + PDAnnotationTextMarkup highlight = createAnnotation(rectangle, id, + createAnnotationContent(manualRedactionEntry), getColor(manualRedactionEntry + .getType()), true); + annotations.add(highlight); + + redactionLogEntry.setPosition(rectangle); + classifiedDoc.getRedactionLogEntities().add(redactionLogEntry); } } 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 6879382d..41411b3e 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 @@ -325,7 +325,12 @@ public class RedactionIntegrationTest { manualRedactionEntry.setType("name"); manualRedactionEntry.setValue("O'Loughlin C.K."); manualRedactionEntry.setReason("Manual Redaction"); - manualRedactionEntry.setPositions(List.of(new Rectangle(new Point(375.61096f, 241.282f), 7.648041f, 43.72262f, 1), new Rectangle(new Point(384.83517f, 241.282f), 7.648041f, 17.043358f, 1))); + Rectangle position = new Rectangle(); + position.setTopLeft(new Point(375.61096f, 241.282f)); + position.setHeight(43.72262f); + position.setWidth(15.296082f); + position.setPage(1); + manualRedactionEntry.setPosition(position); manualRedactions.getEntriesToAdd().add(manualRedactionEntry);