Log entries and manual redaction require one position per line

This commit is contained in:
Thierry Göckel 2020-09-29 13:54:32 +02:00
parent 74e63ca292
commit f5790bccab
5 changed files with 37 additions and 25 deletions

View File

@ -1,5 +1,8 @@
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;
@ -12,7 +15,7 @@ public class ManualRedactionEntry {
private String type;
private String value;
private String reason;
private Rectangle position;
private List<Rectangle> positions = new ArrayList<>();
private String section;
private int sectionNumber;

View File

@ -1,5 +1,8 @@
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;
@ -20,7 +23,8 @@ public class RedactionLogEntry {
private String section;
private float[] color;
private Rectangle position;
@Builder.Default
private List<Rectangle> positions = new ArrayList<>();
private int sectionNumber;
private boolean manual;

View File

@ -213,10 +213,11 @@ public class EntityRedactionService {
for (TextBlock textBlock : textBlocks) {
for (ManualRedactionEntry manualRedactionEntry : manualRedactions.getEntriesToAdd()) {
Rectangle rectangle = manualRedactionEntry.getPosition();
if (textBlock.contains(rectangle)) {
manualRedactionEntry.setSection(section);
manualRedactionEntry.setSectionNumber(sectionNumber);
for (Rectangle rectangle : manualRedactionEntry.getPositions()) {
if (textBlock.contains(rectangle)) {
manualRedactionEntry.setSection(section);
manualRedactionEntry.setSectionNumber(sectionNumber);
}
}
}
}

View File

@ -76,7 +76,11 @@ public class AnnotationHighlightService {
return manualRedactionPages;
}
manualRedactions.getEntriesToAdd().forEach(entry -> manualRedactionPages.add(entry.getPosition().getPage()));
manualRedactions.getEntriesToAdd().forEach(entry -> {
entry.getPositions().forEach(pos -> {
manualRedactionPages.add(pos.getPage());
});
});
return manualRedactionPages;
}
@ -111,7 +115,7 @@ public class AnnotationHighlightService {
.stream()
.flatMap(seq -> seq.getTextPositions().stream())
.collect(Collectors.toList()), page)) {
redactionLogEntry.setPosition(rectangle);
redactionLogEntry.getPositions().add(rectangle);
annotations.add(createAnnotation(rectangle, entityPositionSequence.getId(),
createAnnotationContent(entity), getColor(entity), !flatRedaction && !isHint(entity)));
}
@ -159,19 +163,24 @@ public class AnnotationHighlightService {
RedactionLogEntry redactionLogEntry = createRedactionLogEntry(manualRedactionEntry, id);
Rectangle rectangle = manualRedactionEntry.getPosition();
boolean foundOnPage = false;
for (Rectangle rectangle : manualRedactionEntry.getPositions()) {
if (page != rectangle.getPage()) {
continue;
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);
}
PDAnnotationTextMarkup highlight = createAnnotation(rectangle, id,
createAnnotationContent(manualRedactionEntry), getColor(manualRedactionEntry
.getType()), true);
annotations.add(highlight);
redactionLogEntry.setPosition(rectangle);
classifiedDoc.getRedactionLogEntities().add(redactionLogEntry);
}
}

View File

@ -325,12 +325,7 @@ public class RedactionIntegrationTest {
manualRedactionEntry.setType("name");
manualRedactionEntry.setValue("O'Loughlin C.K.");
manualRedactionEntry.setReason("Manual Redaction");
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);
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)));
manualRedactions.getEntriesToAdd().add(manualRedactionEntry);