From 12344d57b2dd004c184b394a74a03ee86af86048 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominique=20Eifl=C3=A4nder?= Date: Thu, 21 Dec 2023 13:42:25 +0100 Subject: [PATCH] RED-8106: Make documentdata serializable --- .../internal/api/data/redaction/DocumentData.java | 4 +++- .../internal/api/data/redaction/DocumentPage.java | 4 +++- .../api/data/redaction/DocumentPositionData.java | 4 +++- .../api/data/redaction/DocumentStructure.java | 13 +++++++------ .../api/data/redaction/DocumentTextData.java | 4 +++- .../internal/api/data/redaction/NodeType.java | 3 ++- 6 files changed, 21 insertions(+), 11 deletions(-) diff --git a/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/data/redaction/DocumentData.java b/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/data/redaction/DocumentData.java index b6cb371..036fb12 100644 --- a/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/data/redaction/DocumentData.java +++ b/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/data/redaction/DocumentData.java @@ -1,5 +1,7 @@ package com.knecon.fforesight.service.layoutparser.internal.api.data.redaction; +import java.io.Serializable; + import io.swagger.v3.oas.annotations.media.Schema; import lombok.AccessLevel; import lombok.AllArgsConstructor; @@ -12,7 +14,7 @@ import lombok.experimental.FieldDefaults; @AllArgsConstructor @FieldDefaults(makeFinal = true, level = AccessLevel.PRIVATE) @Schema(description = "Object containing the complete document layout parsing information. It is split into 4 categories, structure, text, positions and pages: " + "The document tree structure of SemanticNodes such as Section, Paragraph, Headline, etc. " + "The text, which is stored as separate blocks of data. " + "The text positions, which are also stored as separate blocks. The Blocks are equal to the text blocks in length and order. " + "The page information.") -public class DocumentData { +public class DocumentData implements Serializable { @Schema(description = "Contains information about the document's pages.") DocumentPage[] documentPages; diff --git a/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/data/redaction/DocumentPage.java b/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/data/redaction/DocumentPage.java index c3f8558..97703cd 100644 --- a/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/data/redaction/DocumentPage.java +++ b/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/data/redaction/DocumentPage.java @@ -1,5 +1,7 @@ package com.knecon.fforesight.service.layoutparser.internal.api.data.redaction; +import java.io.Serializable; + import io.swagger.v3.oas.annotations.media.Schema; import lombok.AccessLevel; import lombok.AllArgsConstructor; @@ -14,7 +16,7 @@ import lombok.experimental.FieldDefaults; @AllArgsConstructor @FieldDefaults(level = AccessLevel.PRIVATE) @Schema(description = "Object containing information about the document's pages.") -public class DocumentPage { +public class DocumentPage implements Serializable { @Schema(description = "The page number, starting with 1.") int number; diff --git a/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/data/redaction/DocumentPositionData.java b/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/data/redaction/DocumentPositionData.java index 25bcd03..4114575 100644 --- a/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/data/redaction/DocumentPositionData.java +++ b/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/data/redaction/DocumentPositionData.java @@ -1,5 +1,7 @@ package com.knecon.fforesight.service.layoutparser.internal.api.data.redaction; +import java.io.Serializable; + import io.swagger.v3.oas.annotations.media.Schema; import lombok.AccessLevel; import lombok.AllArgsConstructor; @@ -14,7 +16,7 @@ import lombok.experimental.FieldDefaults; @AllArgsConstructor @FieldDefaults(level = AccessLevel.PRIVATE) @Schema(description = "Object containing text positional information of a specific text block. A document is split into multiple text blocks, which are supposed to be read in order. Every text block can only occur on a single page.") -public class DocumentPositionData { +public class DocumentPositionData implements Serializable { @Schema(description = "Identifier of the text block.") Long id; diff --git a/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/data/redaction/DocumentStructure.java b/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/data/redaction/DocumentStructure.java index 6852896..01440cb 100644 --- a/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/data/redaction/DocumentStructure.java +++ b/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/data/redaction/DocumentStructure.java @@ -1,6 +1,7 @@ package com.knecon.fforesight.service.layoutparser.internal.api.data.redaction; import java.awt.geom.Rectangle2D; +import java.io.Serializable; import java.util.Arrays; import java.util.List; import java.util.Map; @@ -20,14 +21,13 @@ import lombok.experimental.FieldDefaults; @AllArgsConstructor @FieldDefaults(level = AccessLevel.PRIVATE) @Schema(description = "Object containing information about the parsed tree structure of the SemanticNodes, such as Section, Paragraph, Headline etc inside of the document.") -public class DocumentStructure { +public class DocumentStructure implements Serializable { @Schema(description = "The root EntryData represents the Document.") EntryData root; - @Schema(description = "Object containing the extra field names, a table has in its properties field.") - public static class TableProperties { + public static class TableProperties implements Serializable { public static final String NUMBER_OF_ROWS = "numberOfRows"; public static final String NUMBER_OF_COLS = "numberOfCols"; @@ -35,7 +35,7 @@ public class DocumentStructure { } @Schema(description = "Object containing the extra field names, an Image has in its properties field.") - public static class ImageProperties { + public static class ImageProperties implements Serializable { public static final String TRANSPARENT = "transparent"; public static final String IMAGE_TYPE = "imageType"; @@ -45,7 +45,7 @@ public class DocumentStructure { } @Schema(description = "Object containing the extra field names, a table cell has in its properties field.") - public static class TableCellProperties { + public static class TableCellProperties implements Serializable { public static final String B_BOX = "bBox"; public static final String ROW = "row"; @@ -56,6 +56,7 @@ public class DocumentStructure { public static final String RECTANGLE_DELIMITER = ";"; + public static Rectangle2D parseRectangle2D(String bBox) { List floats = Arrays.stream(bBox.split(RECTANGLE_DELIMITER)).map(Float::parseFloat).toList(); @@ -100,7 +101,7 @@ public class DocumentStructure { @AllArgsConstructor @FieldDefaults(level = AccessLevel.PRIVATE) @Schema(description = "Object containing information of a SemanticNode and also structuring the layout with children.") - public static class EntryData { + public static class EntryData implements Serializable { @Schema(description = "Type of the semantic node.", allowableValues = {"DOCUMENT", "SECTION", "PARAGRAPH", "HEADLINE", "TABLE", "TABLE_CELL", "HEADER", "FOOTER", "IMAGE"}) NodeType type; diff --git a/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/data/redaction/DocumentTextData.java b/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/data/redaction/DocumentTextData.java index 3abf3b5..ac26445 100644 --- a/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/data/redaction/DocumentTextData.java +++ b/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/data/redaction/DocumentTextData.java @@ -1,5 +1,7 @@ package com.knecon.fforesight.service.layoutparser.internal.api.data.redaction; +import java.io.Serializable; + import io.swagger.v3.oas.annotations.media.Schema; import lombok.AccessLevel; import lombok.AllArgsConstructor; @@ -14,7 +16,7 @@ import lombok.experimental.FieldDefaults; @AllArgsConstructor @FieldDefaults(level = AccessLevel.PRIVATE) @Schema(description = "Object containing text information of a specific text block. A document is split into multiple text blocks, which are supposed to be read in order. Every text block can only occur on a single page.") -public class DocumentTextData { +public class DocumentTextData implements Serializable { @Schema(description = "Identifier of the text block.") Long id; diff --git a/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/data/redaction/NodeType.java b/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/data/redaction/NodeType.java index 7b92adb..e0d08fd 100644 --- a/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/data/redaction/NodeType.java +++ b/layoutparser-service/layoutparser-service-internal-api/src/main/java/com/knecon/fforesight/service/layoutparser/internal/api/data/redaction/NodeType.java @@ -1,8 +1,9 @@ package com.knecon.fforesight.service.layoutparser.internal.api.data.redaction; +import java.io.Serializable; import java.util.Locale; -public enum NodeType { +public enum NodeType implements Serializable { DOCUMENT, SECTION, HEADLINE,