diff --git a/layoutparser-service-image/pom.xml b/layoutparser-service-image/pom.xml index 6107cf7..8283902 100644 --- a/layoutparser-service-image/pom.xml +++ b/layoutparser-service-image/pom.xml @@ -12,6 +12,6 @@ layoutparser-service-image - 1.0.0 + diff --git a/layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/data/AtomicPositionBlockData.java b/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/data/AtomicPositionBlockData.java similarity index 100% rename from layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/data/AtomicPositionBlockData.java rename to layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/data/AtomicPositionBlockData.java diff --git a/layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/data/AtomicTextBlockData.java b/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/data/AtomicTextBlockData.java similarity index 100% rename from layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/data/AtomicTextBlockData.java rename to layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/data/AtomicTextBlockData.java diff --git a/layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/data/DocumentData.java b/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/data/DocumentData.java similarity index 100% rename from layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/data/DocumentData.java rename to layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/data/DocumentData.java diff --git a/layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/data/PageData.java b/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/data/PageData.java similarity index 100% rename from layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/data/PageData.java rename to layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/data/PageData.java diff --git a/layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/data/TableOfContentsData.java b/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/data/TableOfContentsData.java similarity index 77% rename from layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/data/TableOfContentsData.java rename to layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/data/TableOfContentsData.java index 738dd1a..c875969 100644 --- a/layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/data/TableOfContentsData.java +++ b/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/data/TableOfContentsData.java @@ -1,6 +1,5 @@ package com.knecon.fforesight.service.layoutparser.internal.api.data; -import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.stream.Stream; @@ -11,6 +10,7 @@ import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; +import lombok.Getter; import lombok.NoArgsConstructor; import lombok.experimental.FieldDefaults; @@ -31,7 +31,7 @@ public class TableOfContentsData { } EntryData entry = root.subEntries.get(tocId.get(0)); for (int id : tocId.subList(1, tocId.size())) { - entry = entry.subEntries().get(id); + entry = entry.subEntries.get(id); } return entry; } @@ -43,12 +43,6 @@ public class TableOfContentsData { } - private static List getIds(String idsAsString) { - - return Arrays.stream(idsAsString.split("\\.")).map(Integer::valueOf).toList(); - } - - public String toString() { return String.join("\n", streamAllEntries().map(EntryData::toString).toList()); @@ -57,12 +51,23 @@ public class TableOfContentsData { private static Stream flatten(EntryData entry) { - return Stream.concat(Stream.of(entry), entry.subEntries().stream().flatMap(TableOfContentsData::flatten)); + return Stream.concat(Stream.of(entry), entry.subEntries.stream().flatMap(TableOfContentsData::flatten)); } @Builder - public record EntryData(NodeType type, int[] tocId, Long[] atomicBlocks, Long[] pages, Map properties, List subEntries) { + @Getter + @AllArgsConstructor + @FieldDefaults(makeFinal = true, level = AccessLevel.PRIVATE) + public static class EntryData { + + NodeType type; + int[] tocId; + Long[] atomicBlocks; + Long[] pages; + Map properties; + List subEntries; + @Override public String toString() { diff --git a/layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/graph/Boundary.java b/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/graph/Boundary.java similarity index 100% rename from layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/graph/Boundary.java rename to layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/graph/Boundary.java diff --git a/layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/graph/DocumentGraph.java b/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/graph/DocumentGraph.java similarity index 98% rename from layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/graph/DocumentGraph.java rename to layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/graph/DocumentGraph.java index 1803b48..61ec247 100644 --- a/layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/graph/DocumentGraph.java +++ b/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/graph/DocumentGraph.java @@ -77,7 +77,7 @@ public class DocumentGraph implements SemanticNode { private Stream streamAllNodes() { - return tableOfContents.streamAllEntriesInOrder().map(TableOfContents.Entry::node); + return tableOfContents.streamAllEntriesInOrder().map(TableOfContents.Entry::getNode); } diff --git a/layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/graph/TableOfContents.java b/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/graph/TableOfContents.java similarity index 77% rename from layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/graph/TableOfContents.java rename to layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/graph/TableOfContents.java index 14318bf..c2f8fcb 100644 --- a/layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/graph/TableOfContents.java +++ b/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/graph/TableOfContents.java @@ -14,8 +14,12 @@ import com.knecon.fforesight.service.layoutparser.internal.api.graph.nodes.Seman import com.knecon.fforesight.service.layoutparser.internal.api.graph.textblock.TextBlock; import com.knecon.fforesight.service.layoutparser.internal.api.graph.textblock.TextBlockCollector; +import lombok.AccessLevel; +import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; +import lombok.Getter; +import lombok.experimental.FieldDefaults; @Data public class TableOfContents { @@ -31,7 +35,7 @@ public class TableOfContents { public TextBlock buildTextBlock() { - return streamAllEntriesInOrder().map(Entry::node).filter(SemanticNode::isTerminal).map(SemanticNode::getTerminalTextBlock).collect(new TextBlockCollector()); + return streamAllEntriesInOrder().map(Entry::getNode).filter(SemanticNode::isTerminal).map(SemanticNode::getTerminalTextBlock).collect(new TextBlockCollector()); } @@ -49,8 +53,8 @@ public class TableOfContents { Entry parent = getEntryById(parentId); List newId = new LinkedList<>(parentId); - newId.add(parent.children().size()); - parent.children().add(Entry.builder().tocId(newId).node(node).type(nodeType).children(new LinkedList<>()).build()); + newId.add(parent.children.size()); + parent.children.add(Entry.builder().tocId(newId).node(node).type(nodeType).children(new LinkedList<>()).build()); return newId; } @@ -66,7 +70,7 @@ public class TableOfContents { if (id >= entry.children.size() || 0 > id) { return false; } - entry = entry.children().get(id); + entry = entry.children.get(id); } return true; } @@ -86,7 +90,7 @@ public class TableOfContents { public Stream streamChildrenNodes(List tocId) { - return getEntryById(tocId).children().stream().map(Entry::node); + return getEntryById(tocId).children.stream().map(Entry::getNode); } @@ -109,7 +113,7 @@ public class TableOfContents { } Entry entry = root.children.get(tocId.get(0)); for (int id : tocId.subList(1, tocId.size())) { - entry = entry.children().get(id); + entry = entry.children.get(id); } return entry; } @@ -148,17 +152,26 @@ public class TableOfContents { private static Stream flatten(Entry entry) { - return Stream.concat(Stream.of(entry), entry.children().stream().flatMap(TableOfContents::flatten)); + return Stream.concat(Stream.of(entry), entry.children.stream().flatMap(TableOfContents::flatten)); } @Builder - public record Entry(List tocId, NodeType type, SemanticNode node, List children) { + @Getter + @AllArgsConstructor + @FieldDefaults(level = AccessLevel.PRIVATE, makeFinal = true) + public static class Entry { + + List tocId; + NodeType type; + SemanticNode node; + List children; + @Override public String toString() { - return node().toString(); + return node.toString(); } @@ -168,6 +181,13 @@ public class TableOfContents { return Hashing.murmur3_32_fixed().hashString(toString(), StandardCharsets.UTF_8).hashCode(); } + + @Override + public boolean equals(Object o) { + + return o instanceof Entry && o.hashCode() == this.hashCode(); + } + } } diff --git a/layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/graph/entity/EntityNode.java b/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/graph/entity/EntityNode.java similarity index 98% rename from layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/graph/entity/EntityNode.java rename to layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/graph/entity/EntityNode.java index 226d356..286e52d 100644 --- a/layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/graph/entity/EntityNode.java +++ b/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/graph/entity/EntityNode.java @@ -28,7 +28,7 @@ public interface EntityNode { /** * The deepest fully containing node represents the node which is the deepest node in the document tree structure, - * whose boundary also fully contains the boundary of this entity + * whose boundary also fully contains the boundary of this entity. * * @return the deepest fully containing node */ @@ -62,7 +62,7 @@ public interface EntityNode { /** - * removes all occurrences of this node in the graph and resets all graph specific fields + * removes all occurrences of this node in the graph and resets all graph specific fields. */ default void removeFromGraph() { diff --git a/layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/graph/entity/EntityPosition.java b/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/graph/entity/EntityPosition.java similarity index 87% rename from layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/graph/entity/EntityPosition.java rename to layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/graph/entity/EntityPosition.java index 90c1405..4be7d3a 100644 --- a/layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/graph/entity/EntityPosition.java +++ b/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/graph/entity/EntityPosition.java @@ -36,4 +36,10 @@ public class EntityPosition { return Hashing.murmur3_128().hashString(sb.toString(), StandardCharsets.UTF_8).hashCode(); } + @Override + public boolean equals(Object o) { + + return o instanceof EntityPosition && o.hashCode() == this.hashCode(); + } + } diff --git a/layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/graph/nodes/FooterNode.java b/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/graph/nodes/FooterNode.java similarity index 100% rename from layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/graph/nodes/FooterNode.java rename to layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/graph/nodes/FooterNode.java diff --git a/layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/graph/nodes/HeaderNode.java b/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/graph/nodes/HeaderNode.java similarity index 100% rename from layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/graph/nodes/HeaderNode.java rename to layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/graph/nodes/HeaderNode.java diff --git a/layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/graph/nodes/HeadlineNode.java b/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/graph/nodes/HeadlineNode.java similarity index 100% rename from layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/graph/nodes/HeadlineNode.java rename to layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/graph/nodes/HeadlineNode.java diff --git a/layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/graph/nodes/ImageNode.java b/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/graph/nodes/ImageNode.java similarity index 95% rename from layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/graph/nodes/ImageNode.java rename to layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/graph/nodes/ImageNode.java index be1f2fb..c428ed6 100644 --- a/layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/graph/nodes/ImageNode.java +++ b/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/graph/nodes/ImageNode.java @@ -34,10 +34,10 @@ public class ImageNode implements SemanticNode { boolean transparency; Rectangle2D position; - @Builder.Default - boolean redaction = false; - @Builder.Default - boolean ignored = false; + + boolean redaction; + boolean ignored; + @Builder.Default String redactionReason = ""; @Builder.Default @@ -55,7 +55,6 @@ public class ImageNode implements SemanticNode { @EqualsAndHashCode.Exclude Set entities = new HashSet<>(); - @Override public TextBlock buildTextBlock() { diff --git a/layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/graph/nodes/ImageType.java b/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/graph/nodes/ImageType.java similarity index 100% rename from layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/graph/nodes/ImageType.java rename to layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/graph/nodes/ImageType.java diff --git a/layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/graph/nodes/NodeType.java b/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/graph/nodes/NodeType.java similarity index 100% rename from layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/graph/nodes/NodeType.java rename to layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/graph/nodes/NodeType.java diff --git a/layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/graph/nodes/PageNode.java b/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/graph/nodes/PageNode.java similarity index 92% rename from layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/graph/nodes/PageNode.java rename to layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/graph/nodes/PageNode.java index 2e7dddc..f4601c1 100644 --- a/layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/graph/nodes/PageNode.java +++ b/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/graph/nodes/PageNode.java @@ -63,4 +63,9 @@ public class PageNode { return number; } + @Override + public boolean equals(Object o) { + + return o instanceof PageNode && o.hashCode() == this.hashCode(); + } } diff --git a/layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/graph/nodes/ParagraphNode.java b/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/graph/nodes/ParagraphNode.java similarity index 100% rename from layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/graph/nodes/ParagraphNode.java rename to layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/graph/nodes/ParagraphNode.java diff --git a/layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/graph/nodes/SectionNode.java b/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/graph/nodes/SectionNode.java similarity index 100% rename from layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/graph/nodes/SectionNode.java rename to layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/graph/nodes/SectionNode.java diff --git a/layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/graph/nodes/SemanticNode.java b/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/graph/nodes/SemanticNode.java similarity index 97% rename from layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/graph/nodes/SemanticNode.java rename to layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/graph/nodes/SemanticNode.java index 5937555..a5a4ba3 100644 --- a/layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/graph/nodes/SemanticNode.java +++ b/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/graph/nodes/SemanticNode.java @@ -37,7 +37,7 @@ public interface SemanticNode { /** - * Each AtomicTextBlock is assigned a page, so to get the pages this node appears on, it collects the PageNodes from each AtomicTextBlock belonging to this node's ClassificationTextBlock + * Each AtomicTextBlock is assigned a page, so to get the pages this node appears on, it collects the PageNodes from each AtomicTextBlock belonging to this node's ClassificationTextBlock. * * @return Set of PageNodes this node appears on. */ @@ -54,7 +54,7 @@ public interface SemanticNode { /** - * The id is a List of Integers uniquely identifying this node in the TableOfContents + * The id is a List of Integers uniquely identifying this node in the TableOfContents. * * @return the TableOfContents ID */ @@ -62,7 +62,7 @@ public interface SemanticNode { /** - * This should only be used during graph construction + * This should only be used during graph construction. * * @param tocId List of Integers */ @@ -96,7 +96,7 @@ public interface SemanticNode { */ default SemanticNode getParent() { - return getTableOfContents().getParentEntryById(getTocId()).node(); + return getTableOfContents().getParentEntryById(getTocId()).getNode(); } @@ -199,7 +199,7 @@ public interface SemanticNode { /** - * Streams all children located directly underneath this node in the TableOfContents + * Streams all children located directly underneath this node in the TableOfContents. * * @return Stream of all children */ @@ -216,7 +216,7 @@ public interface SemanticNode { */ default Stream streamAllSubNodes() { - return getTableOfContents().streamAllSubEntriesInOrder(getTocId()).map(TableOfContents.Entry::node); + return getTableOfContents().streamAllSubEntriesInOrder(getTocId()).map(TableOfContents.Entry::getNode); } @@ -247,7 +247,7 @@ public interface SemanticNode { /** - * TODO this does not yet work for sections spanning multiple columns + * TODO this does not yet work for sections spanning multiple columns. * * @param bBoxPerPage initial empty BoundingBox * @return The union of the BoundingBoxes of all children diff --git a/layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/graph/nodes/TableCellNode.java b/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/graph/nodes/TableCellNode.java similarity index 100% rename from layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/graph/nodes/TableCellNode.java rename to layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/graph/nodes/TableCellNode.java diff --git a/layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/graph/nodes/TableNode.java b/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/graph/nodes/TableNode.java similarity index 100% rename from layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/graph/nodes/TableNode.java rename to layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/graph/nodes/TableNode.java diff --git a/layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/graph/textblock/AtomicTextBlock.java b/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/graph/textblock/AtomicTextBlock.java similarity index 100% rename from layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/graph/textblock/AtomicTextBlock.java rename to layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/graph/textblock/AtomicTextBlock.java diff --git a/layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/graph/textblock/ConcatenatedTextBlock.java b/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/graph/textblock/ConcatenatedTextBlock.java similarity index 97% rename from layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/graph/textblock/ConcatenatedTextBlock.java rename to layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/graph/textblock/ConcatenatedTextBlock.java index 6f455b7..1b4ab75 100644 --- a/layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/graph/textblock/ConcatenatedTextBlock.java +++ b/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/graph/textblock/ConcatenatedTextBlock.java @@ -54,7 +54,7 @@ public class ConcatenatedTextBlock implements TextBlock { private AtomicTextBlock getAtomicTextBlockByStringIndex(int stringIdx) { - return atomicTextBlocks.stream().filter(textBlock -> (textBlock.getBoundary().contains(stringIdx))).findAny().orElseThrow(IndexOutOfBoundsException::new); + return atomicTextBlocks.stream().filter(textBlock -> textBlock.getBoundary().contains(stringIdx)).findAny().orElseThrow(IndexOutOfBoundsException::new); } diff --git a/layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/graph/textblock/TextBlock.java b/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/graph/textblock/TextBlock.java similarity index 100% rename from layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/graph/textblock/TextBlock.java rename to layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/graph/textblock/TextBlock.java diff --git a/layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/graph/textblock/TextBlockCollector.java b/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/graph/textblock/TextBlockCollector.java similarity index 100% rename from layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/graph/textblock/TextBlockCollector.java rename to layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/graph/textblock/TextBlockCollector.java diff --git a/layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/mapper/DocumentDataMapper.java b/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/mapper/DocumentDataMapper.java similarity index 89% rename from layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/mapper/DocumentDataMapper.java rename to layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/mapper/DocumentDataMapper.java index 85f1be6..13bdf1b 100644 --- a/layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/mapper/DocumentDataMapper.java +++ b/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/mapper/DocumentDataMapper.java @@ -59,25 +59,25 @@ public class DocumentDataMapper { Long[] atomicTextBlocks; - if (entry.node().isTerminal()) { - atomicTextBlocks = toAtomicTextBlockIds(entry.node().getTerminalTextBlock()); + if (entry.getNode().isTerminal()) { + atomicTextBlocks = toAtomicTextBlockIds(entry.getNode().getTerminalTextBlock()); } else { atomicTextBlocks = new Long[]{}; } - Map properties = switch (entry.type()) { - case TABLE -> PropertiesMapper.buildTableProperties((TableNode) entry.node()); - case TABLE_CELL -> PropertiesMapper.buildTableCellProperties((TableCellNode) entry.node()); - case IMAGE -> PropertiesMapper.buildImageProperties((ImageNode) entry.node()); + Map properties = switch (entry.getType()) { + case TABLE -> PropertiesMapper.buildTableProperties((TableNode) entry.getNode()); + case TABLE_CELL -> PropertiesMapper.buildTableCellProperties((TableCellNode) entry.getNode()); + case IMAGE -> PropertiesMapper.buildImageProperties((ImageNode) entry.getNode()); default -> new HashMap<>(); }; return TableOfContentsData.EntryData.builder() - .tocId(toPrimitiveIntArray(entry.tocId())) - .subEntries(entry.children().stream().map(DocumentDataMapper::toEntryData).toList()) - .type(entry.type()) + .tocId(toPrimitiveIntArray(entry.getTocId())) + .subEntries(entry.getChildren().stream().map(DocumentDataMapper::toEntryData).toList()) + .type(entry.getType()) .atomicBlocks(atomicTextBlocks) - .pages(entry.node().getPages().stream().map(PageNode::getNumber).map(Integer::longValue).toArray(Long[]::new)) + .pages(entry.getNode().getPages().stream().map(PageNode::getNumber).map(Integer::longValue).toArray(Long[]::new)) .properties(properties) .build(); } diff --git a/layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/mapper/DocumentGraphMapper.java b/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/mapper/DocumentGraphMapper.java similarity index 89% rename from layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/mapper/DocumentGraphMapper.java rename to layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/mapper/DocumentGraphMapper.java index c2e39f2..d007e82 100644 --- a/layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/mapper/DocumentGraphMapper.java +++ b/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/mapper/DocumentGraphMapper.java @@ -52,7 +52,7 @@ public class DocumentGraphMapper { context.pages.addAll(Arrays.stream(documentData.getPages()).map(DocumentGraphMapper::buildPage).toList()); - context.tableOfContents.getRoot().children().addAll(buildEntries(documentData.getTableOfContents().getRoot().subEntries(), context)); + context.tableOfContents.getRoot().getChildren().addAll(buildEntries(documentData.getTableOfContents().getRoot().getSubEntries(), context)); documentGraph.setTableOfContents(context.tableOfContents); documentGraph.setPages(new HashSet<>(context.pages)); @@ -70,35 +70,35 @@ public class DocumentGraphMapper { for (TableOfContentsData.EntryData entryData : entries) { boolean terminal = isTerminal(entryData); - List pages = Arrays.stream(entryData.pages()).map(pageNumber -> getPage(pageNumber, context)).toList(); + List pages = Arrays.stream(entryData.getPages()).map(pageNumber -> getPage(pageNumber, context)).toList(); - SemanticNode node = switch (entryData.type()) { + SemanticNode node = switch (entryData.getType()) { case SECTION -> buildSection(context); case PARAGRAPH -> buildParagraph(context, terminal); case HEADLINE -> buildHeadline(context, terminal); case HEADER -> buildHeader(context, terminal); case FOOTER -> buildFooter(context, terminal); - case TABLE -> buildTable(context, entryData.properties()); - case TABLE_CELL -> buildTableCell(context, entryData.properties(), terminal); - case IMAGE -> buildImage(context, entryData.properties()); - default -> throw new UnsupportedOperationException("Not yet implemented for type " + entryData.type()); + case TABLE -> buildTable(context, entryData.getProperties()); + case TABLE_CELL -> buildTableCell(context, entryData.getProperties(), terminal); + case IMAGE -> buildImage(context, entryData.getProperties()); + default -> throw new UnsupportedOperationException("Not yet implemented for type " + entryData.getType()); }; if (node.isTerminal()) { - TextBlock textBlock = toTextBlock(entryData.atomicBlocks(), context, node); + TextBlock textBlock = toTextBlock(entryData.getAtomicBlocks(), context, node); node.setTerminalTextBlock(textBlock); } - List tocId = Arrays.stream(entryData.tocId()).boxed().toList(); + List tocId = Arrays.stream(entryData.getTocId()).boxed().toList(); node.setTocId(tocId); - if (entryData.type() == HEADER) { + if (entryData.getType() == HEADER) { pages.forEach(page -> page.setHeader((HeaderNode) node)); - } else if (entryData.type() == FOOTER) { + } else if (entryData.getType() == FOOTER) { pages.forEach(page -> page.setFooter((FooterNode) node)); } else { pages.forEach(page -> page.getMainBody().add(node)); } - newEntries.add(TableOfContents.Entry.builder().tocId(tocId).type(entryData.type()).children(buildEntries(entryData.subEntries(), context)).node(node).build()); + newEntries.add(TableOfContents.Entry.builder().tocId(tocId).type(entryData.getType()).children(buildEntries(entryData.getSubEntries(), context)).node(node).build()); } return newEntries; } @@ -112,7 +112,7 @@ public class DocumentGraphMapper { private static boolean isTerminal(TableOfContentsData.EntryData entryData) { - return entryData.atomicBlocks().length > 0; + return entryData.getAtomicBlocks().length > 0; } diff --git a/layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/mapper/PropertiesMapper.java b/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/mapper/PropertiesMapper.java similarity index 100% rename from layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/mapper/PropertiesMapper.java rename to layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/mapper/PropertiesMapper.java diff --git a/layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/services/EntityEnrichmentService.java b/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/services/EntityEnrichmentService.java similarity index 100% rename from layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/services/EntityEnrichmentService.java rename to layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/services/EntityEnrichmentService.java diff --git a/layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/services/EntityInsertionService.java b/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/services/EntityInsertionService.java similarity index 88% rename from layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/services/EntityInsertionService.java rename to layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/services/EntityInsertionService.java index c4b83c3..5e116da 100644 --- a/layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/services/EntityInsertionService.java +++ b/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/services/EntityInsertionService.java @@ -4,7 +4,6 @@ import java.util.Collections; import java.util.NoSuchElementException; import java.util.Set; -import com.knecon.fforesight.service.layoutparser.internal.api.graph.Boundary; import com.knecon.fforesight.service.layoutparser.internal.api.graph.TableOfContents; import com.knecon.fforesight.service.layoutparser.internal.api.graph.entity.EntityNode; import com.knecon.fforesight.service.layoutparser.internal.api.graph.nodes.PageNode; @@ -54,10 +53,4 @@ public class EntityInsertionService { entity.getIntersectingNodes().forEach(node -> node.getEntities().add(entity)); } - - private static Boundary toLineAfterBoundary(TextBlock textBlock, Boundary boundary) { - - return new Boundary(boundary.end(), textBlock.getNextLinebreak(boundary.end())); - } - } diff --git a/layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/services/RectangleTransformations.java b/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/services/RectangleTransformations.java similarity index 100% rename from layoutparser-service/layoutparser-service-internal-api/src/main/java/com.knecon.fforesight.service.layoutparser.internal.api/services/RectangleTransformations.java rename to layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/services/RectangleTransformations.java diff --git a/layoutparser-service/layoutparser-service-processor/src/main/java/com/knecon/fforesight/service/layoutparser/processor/classification/dto/table/CleanRulings.java b/layoutparser-service/layoutparser-service-processor/src/main/java/com/knecon/fforesight/service/layoutparser/processor/classification/dto/table/CleanRulings.java index b09bf5b..9da8aa0 100644 --- a/layoutparser-service/layoutparser-service-processor/src/main/java/com/knecon/fforesight/service/layoutparser/processor/classification/dto/table/CleanRulings.java +++ b/layoutparser-service/layoutparser-service-processor/src/main/java/com/knecon/fforesight/service/layoutparser/processor/classification/dto/table/CleanRulings.java @@ -2,8 +2,6 @@ package com.knecon.fforesight.service.layoutparser.processor.classification.dto. import java.util.List; -import com.knecon.fforesight.service.layoutparser.processor.classification.dto.table.Ruling; - import lombok.Builder; import lombok.Data; diff --git a/layoutparser-service/layoutparser-service-processor/src/main/java/com/knecon/fforesight/service/layoutparser/processor/factory/ImageSortService.java b/layoutparser-service/layoutparser-service-processor/src/main/java/com/knecon/fforesight/service/layoutparser/processor/factory/ImageSortService.java deleted file mode 100644 index 285bcc5..0000000 --- a/layoutparser-service/layoutparser-service-processor/src/main/java/com/knecon/fforesight/service/layoutparser/processor/factory/ImageSortService.java +++ /dev/null @@ -1,132 +0,0 @@ -package com.knecon.fforesight.service.layoutparser.processor.factory; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Optional; -import java.util.stream.Collectors; - -import org.springframework.stereotype.Service; - -import com.knecon.fforesight.service.layoutparser.processor.classification.dto.AbstractTextContainer; -import com.knecon.fforesight.service.layoutparser.processor.classification.dto.ClassificationDocument; -import com.knecon.fforesight.service.layoutparser.processor.classification.dto.ClassificationSection; -import com.knecon.fforesight.service.layoutparser.processor.classification.dto.image.ClassifiedImage; -import com.knecon.fforesight.service.layoutparser.processor.classification.dto.table.Table; -import com.knecon.fforesight.service.layoutparser.processor.classification.dto.table.TableCell; -import com.knecon.fforesight.service.layoutparser.processor.classification.dto.text.ClassificationTextBlock; - -@Service -public class ImageSortService { - - public SortedImages sortImagesIntoStructure(ClassificationDocument document) { - - SortedImages sortedImages = new SortedImages(new HashMap<>(), new HashMap<>(), new HashMap<>(), new HashMap<>(), new HashMap<>()); - - Map> imagesByPage = document.getSections() - .stream() - .flatMap(section -> section.getImages().stream()) - .distinct() - .collect(Collectors.groupingBy(ClassifiedImage::getPage)); - - for (int pageNumber : imagesByPage.keySet()) { - List textContainersOnPage = document.getSections() - .stream() - .flatMap(section -> section.getPageBlocks().stream()) - .filter(abstractTextContainer -> abstractTextContainer.getPage() == pageNumber) - .toList(); - - List sectionsOnPage = document.getSections() - .stream() - .filter(section -> section.getPageBlocks().stream().anyMatch(block -> block.getPage() == pageNumber)) - .toList(); - - for (ClassifiedImage image : imagesByPage.get(pageNumber)) { - sortImage(textContainersOnPage, sectionsOnPage, image, sortedImages); - } - } - return sortedImages; - } - - - private void sortImage(List textContainersOnPage, List sectionsOnPage, ClassifiedImage image, SortedImages sortedImages) { - - Optional containingTextContainer = getContainingTextContainer(image, textContainersOnPage); - Optional sectionContainingTextContainer = getContainingSection(image, sectionsOnPage); - List containedTextContainers = getContainedTextContainers(image, textContainersOnPage); - List containedSections = getContainedSections(image, sectionsOnPage); - if (containingTextContainer.isPresent()) { - if (sortImageIntoTextContainerOrCell(image, sortedImages, containingTextContainer.get())) { - return; - } - } - } - - - private static boolean sortImageIntoTextContainerOrCell(ClassifiedImage image, SortedImages sortedImages, AbstractTextContainer containingTextContainer) { - - if (containingTextContainer instanceof ClassificationTextBlock) { - sortedImages.containedInTextContainer().computeIfAbsent(containingTextContainer, sortedImage -> new ArrayList<>()).add(image); - return true; - } - if (containingTextContainer instanceof Table) { - Optional containingCell = getContainingCell((Table) containingTextContainer, image); - if (containingCell.isPresent()) { - sortedImages.containedInCell().computeIfAbsent(containingCell.get(), sortedImage -> new ArrayList<>()).add(image); - return true; - } - } - - return false; - } - - - private static Optional getContainingCell(Table table, ClassifiedImage image) { - - return table.getRows().stream().flatMap(List::stream).filter(cell -> cell.contains(image.getPosition())).findFirst(); - } - - - private List getContainedSections(ClassifiedImage image, List sectionsOnPage) { - - return sectionsOnPage.stream() - .filter(section -> image.getPosition().contains(RectangleTransformations.bBoxUnionAbstractTextContainer(section.getPageBlocks() - .stream() - .filter(block -> block.getPage() == image.getPage()) - .toList()))) - .toList(); - } - - - private List getContainedTextContainers(ClassifiedImage image, List textContainersOnPage) { - - return textContainersOnPage.stream().filter(textContainer -> image.getPosition().contains(RectangleTransformations.toRectangle2D(textContainer))).toList(); - } - - - private Optional getContainingSection(ClassifiedImage image, List sectionsOnPage) { - - return sectionsOnPage.stream()// - .filter(section -> // - RectangleTransformations.bBoxUnionAbstractTextContainer(section.getPageBlocks().stream().filter(block -> block.getPage() == image.getPage()).toList())// - .contains(image.getPosition())).findFirst(); - } - - - private Optional getContainingTextContainer(ClassifiedImage image, List textContainersOnPage) { - - return textContainersOnPage.stream().filter(textContainer -> RectangleTransformations.toRectangle2D(textContainer).contains(image.getPosition())).findFirst(); - } - - - public record SortedImages( - Map> containedInCell, - Map> containedInTextContainer, - Map> containedInSection, - Map> containedByImage, - Map> sectionContainedByImage) { - - } - -} diff --git a/layoutparser-service/layoutparser-service-processor/src/main/java/com/knecon/fforesight/service/layoutparser/processor/multitenancy/EncryptionDecryptionService.java b/layoutparser-service/layoutparser-service-processor/src/main/java/com/knecon/fforesight/service/layoutparser/processor/multitenancy/EncryptionDecryptionService.java index dfda46c..a59bd87 100644 --- a/layoutparser-service/layoutparser-service-processor/src/main/java/com/knecon/fforesight/service/layoutparser/processor/multitenancy/EncryptionDecryptionService.java +++ b/layoutparser-service/layoutparser-service-processor/src/main/java/com/knecon/fforesight/service/layoutparser/processor/multitenancy/EncryptionDecryptionService.java @@ -6,6 +6,7 @@ import java.security.SecureRandom; import java.security.spec.KeySpec; import java.util.Base64; +import javax.annotation.PostConstruct; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; @@ -16,7 +17,6 @@ import javax.crypto.spec.SecretKeySpec; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; -import jakarta.annotation.PostConstruct; import lombok.SneakyThrows; @Service diff --git a/layoutparser-service/layoutparser-service-server/pom.xml b/layoutparser-service/layoutparser-service-server/pom.xml index d9372f1..904c47f 100644 --- a/layoutparser-service/layoutparser-service-server/pom.xml +++ b/layoutparser-service/layoutparser-service-server/pom.xml @@ -65,18 +65,54 @@ + + org.apache.maven.plugins + maven-compiler-plugin + + + lombok.launch.AnnotationProcessorHider$AnnotationProcessor + com.dslplatform.json.processor.CompiledJsonAnnotationProcessor + + + + + + + + pl.project13.maven + git-commit-id-plugin + + + + revision + + + true + + true + + + + + + + org.springframework.boot spring-boot-maven-plugin - - - - org.projectlombok - lombok - - - + + + + repackage + + + true + + + + diff --git a/layoutparser-service/layoutparser-service-server/src/main/java/com.knecon.fforesight.service.layoutparser.server/Application.java b/layoutparser-service/layoutparser-service-server/src/main/java/com/knecon/fforesight/service/layoutparser/server/Application.java similarity index 90% rename from layoutparser-service/layoutparser-service-server/src/main/java/com.knecon.fforesight.service.layoutparser.server/Application.java rename to layoutparser-service/layoutparser-service-server/src/main/java/com/knecon/fforesight/service/layoutparser/server/Application.java index 558ad7f..e8b3584 100644 --- a/layoutparser-service/layoutparser-service-server/src/main/java/com.knecon.fforesight.service.layoutparser.server/Application.java +++ b/layoutparser-service/layoutparser-service-server/src/main/java/com/knecon/fforesight/service/layoutparser/server/Application.java @@ -13,9 +13,10 @@ import com.knecon.fforesight.service.layoutparser.processor.LayoutparserServiceP import com.knecon.fforesight.service.layoutparser.processor.multitenancy.AsyncConfig; import com.knecon.fforesight.service.layoutparser.processor.multitenancy.MultiTenancyMessagingConfiguration; import com.knecon.fforesight.service.layoutparser.processor.multitenancy.MultiTenancyWebConfiguration; +import com.knecon.fforesight.service.layoutparser.processor.multitenancy.TenantsClient; @Import({MultiTenancyWebConfiguration.class, AsyncConfig.class, MultiTenancyMessagingConfiguration.class, MetricsConfiguration.class, LayoutparserServiceProcessorConfiguration.class, StorageAutoConfiguration.class}) -@EnableFeignClients +@EnableFeignClients(basePackageClasses = TenantsClient.class) @SpringBootApplication(exclude = {SecurityAutoConfiguration.class, ManagementWebSecurityAutoConfiguration.class}) public class Application { diff --git a/layoutparser-service/layoutparser-service-server/src/test/java/com/knecon/fforesight/service/layoutparser/server/graph/DocumentGraphEntityInsertionTest.java b/layoutparser-service/layoutparser-service-server/src/test/java/com/knecon/fforesight/service/layoutparser/server/graph/DocumentGraphEntityInsertionTest.java index 3e27b20..7dfd8db 100644 --- a/layoutparser-service/layoutparser-service-server/src/test/java/com/knecon/fforesight/service/layoutparser/server/graph/DocumentGraphEntityInsertionTest.java +++ b/layoutparser-service/layoutparser-service-server/src/test/java/com/knecon/fforesight/service/layoutparser/server/graph/DocumentGraphEntityInsertionTest.java @@ -121,8 +121,8 @@ public class DocumentGraphEntityInsertionTest extends BuildDocumentGraphTest { DocumentGraph documentGraph = buildGraph("files/crafted document"); TableNode table = (TableNode) documentGraph.getTableOfContents()// .streamAllEntriesInOrder()// - .filter(entry -> entry.type().equals(NodeType.TABLE))// - .map(TableOfContents.Entry::node)// + .filter(entry -> entry.getType().equals(NodeType.TABLE))// + .map(TableOfContents.Entry::getNode)// .findFirst().orElseThrow(); assertEquals(5, table.getNumberOfCols()); assertEquals(4, table.getNumberOfRows()); @@ -151,9 +151,9 @@ public class DocumentGraphEntityInsertionTest extends BuildDocumentGraphTest { DocumentGraph documentGraph = buildGraph("files/S-Metolachlor_RAR_01_Volume_1_2018-09-06"); TableNode table = (TableNode) documentGraph.getTableOfContents() .streamAllEntriesInOrder() - .filter(entry -> entry.node().getPages().stream().anyMatch(page -> page.getNumber() == 22)) - .filter(entry -> entry.type().equals(NodeType.TABLE)) - .map(TableOfContents.Entry::node) + .filter(entry -> entry.getNode().getPages().stream().anyMatch(page -> page.getNumber() == 22)) + .filter(entry -> entry.getType().equals(NodeType.TABLE)) + .map(TableOfContents.Entry::getNode) .findFirst() .orElseThrow(); assertEquals(5, table.getNumberOfCols()); diff --git a/layoutparser-service/layoutparser-service-server/src/test/java/com/knecon/fforesight/service/layoutparser/server/utils/visualizations/PdfDraw.java b/layoutparser-service/layoutparser-service-server/src/test/java/com/knecon/fforesight/service/layoutparser/server/utils/visualizations/PdfDraw.java index 70b1275..b47b459 100644 --- a/layoutparser-service/layoutparser-service-server/src/test/java/com/knecon/fforesight/service/layoutparser/server/utils/visualizations/PdfDraw.java +++ b/layoutparser-service/layoutparser-service-server/src/test/java/com/knecon/fforesight/service/layoutparser/server/utils/visualizations/PdfDraw.java @@ -138,7 +138,7 @@ public class PdfDraw { private static Options buildStandardOptionsForNodes(TableOfContents.Entry entry) { - return Options.builder().stroke(true).strokeColor(switch (entry.type()) { + return Options.builder().stroke(true).strokeColor(switch (entry.getType()) { case DOCUMENT -> Color.LIGHT_GRAY; case HEADER, FOOTER -> Color.GREEN; case PARAGRAPH -> Color.BLUE; @@ -153,20 +153,20 @@ public class PdfDraw { private static void drawBBoxAndLabelAndNumberOnPage(PDDocument document, TableOfContents.Entry entry, Options options) { - Map rectanglesPerPage = entry.node().getBBox(); + Map rectanglesPerPage = entry.getNode().getBBox(); rectanglesPerPage.forEach((page, rectangle2D) -> { - if (entry.type() == NodeType.SECTION) { + if (entry.getType() == NodeType.SECTION) { rectangle2D = RectangleTransformations.pad(rectangle2D, 10, 10); } drawRectangle2DList(document, page.getNumber(), List.of(rectangle2D), options); - drawText(buildString(entry), document, new Point2D.Double(rectangle2D.getMinX(), rectangle2D.getMaxY() + 2), page.getNumber(), options, entry.type() == NodeType.TABLE_CELL); + drawText(buildString(entry), document, new Point2D.Double(rectangle2D.getMinX(), rectangle2D.getMaxY() + 2), page.getNumber(), options, entry.getType() == NodeType.TABLE_CELL); }); } private static String buildString(TableOfContents.Entry entry) { - return entry.node().getNumberOnPage() + ": " + entry.tocId() + ": " + entry.type().toString(); + return entry.getNode().getNumberOnPage() + ": " + entry.getTocId() + ": " + entry.getType(); } } \ No newline at end of file diff --git a/layoutparser-service/pom.xml b/layoutparser-service/pom.xml index 8c8cc55..b48b83d 100644 --- a/layoutparser-service/pom.xml +++ b/layoutparser-service/pom.xml @@ -4,11 +4,13 @@ 4.0.0 - com.knecon.fforesight - layoutparser - 1.0.0 + com.iqser.red + platform-dependency + 1.17.0 + + com.knecon.fforesight layoutparser-service 1.0.0 @@ -25,10 +27,12 @@ 2.13.2 2.0.7 3.0.0-alpha2 + 1.18.26 3.0.1 2022.0.1 2.15.0-rc2 1.9.9 + UTF-8 diff --git a/pom.xml b/pom.xml index 837b38f..a1764f6 100644 --- a/pom.xml +++ b/pom.xml @@ -3,11 +3,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - - org.springframework.boot - spring-boot-starter-parent - 3.0.1 - com.knecon.fforesight layoutparser