RED-9139: refactor some code in DocumentGraphMapper

This commit is contained in:
Kilian Schuettler 2024-11-15 15:22:40 +01:00
parent 8769922bf2
commit e8dc37374e

View File

@ -10,7 +10,6 @@ import java.util.HashSet;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.NoSuchElementException;
import com.iqser.red.service.redaction.v1.server.data.DocumentData; import com.iqser.red.service.redaction.v1.server.data.DocumentData;
import com.iqser.red.service.redaction.v1.server.model.document.DocumentTree; import com.iqser.red.service.redaction.v1.server.model.document.DocumentTree;
@ -45,15 +44,15 @@ public class DocumentGraphMapper {
DocumentTree documentTree = new DocumentTree(document); DocumentTree documentTree = new DocumentTree(document);
Context context = new Context(documentData, documentTree); Context context = new Context(documentData, documentTree);
context.pages.addAll(documentData.getDocumentPages().getDocumentPagesList() context.pageData.addAll(documentData.getDocumentPages().getDocumentPagesList()
.stream() .stream()
.map(DocumentGraphMapper::buildPage) .map(DocumentGraphMapper::buildPage)
.toList()); .toList());
context.documentTree.getRoot().getChildren().addAll(buildEntries(documentData.getDocumentStructure().getRoot().getChildrenList(), context)); context.documentTree.getRoot().getChildren().addAll(buildEntries(documentData.getDocumentStructure().getRoot().getChildrenList(), context));
document.setDocumentTree(context.documentTree); document.setDocumentTree(context.documentTree);
document.setPages(new HashSet<>(context.pages)); document.setPages(new HashSet<>(context.pageData));
document.setNumberOfPages(documentData.getDocumentPages().getDocumentPagesCount()); document.setNumberOfPages(documentData.getDocumentPages().getDocumentPagesCount());
document.setTextBlock(document.getTextBlock()); document.setTextBlock(document.getTextBlock());
@ -204,13 +203,10 @@ public class DocumentGraphMapper {
private AtomicTextBlock getAtomicTextBlock(Context context, SemanticNode parent, Long atomicTextBlockId) { private AtomicTextBlock getAtomicTextBlock(Context context, SemanticNode parent, Long atomicTextBlockId) {
return AtomicTextBlock.fromAtomicTextBlockData(context.documentTextDataBlockData.getDocumentTextDataList() return AtomicTextBlock.fromAtomicTextBlockData(context.documentTextData.getDocumentTextData(Math.toIntExact(atomicTextBlockId)),
.get(Math.toIntExact(atomicTextBlockId)), context.documentPositionData.getDocumentPositionData(Math.toIntExact(atomicTextBlockId)),
context.atomicPositionBlockData.getDocumentPositionDataList()
.get(Math.toIntExact(atomicTextBlockId)),
parent, parent,
context.getPage(context.documentTextDataBlockData.getDocumentTextDataList() context.getPage(context.documentTextData.getDocumentTextData(Math.toIntExact(atomicTextBlockId)).getPage()));
.get(Math.toIntExact(atomicTextBlockId)).getPage()));
} }
@ -223,27 +219,26 @@ public class DocumentGraphMapper {
static final class Context { static final class Context {
private final DocumentTree documentTree; private final DocumentTree documentTree;
private final List<Page> pages; private final List<Page> pageData;
private final AllDocumentTextData documentTextDataBlockData; private final AllDocumentTextData documentTextData;
private final AllDocumentPositionData atomicPositionBlockData; private final AllDocumentPositionData documentPositionData;
Context(DocumentData documentData, DocumentTree documentTree) { Context(DocumentData documentData, DocumentTree documentTree) {
this.documentTree = documentTree; this.documentTree = documentTree;
this.pages = new LinkedList<>(); this.pageData = new ArrayList<>();
this.documentTextDataBlockData = documentData.getDocumentTextData(); this.documentTextData = documentData.getDocumentTextData();
this.atomicPositionBlockData = documentData.getDocumentPositionData(); this.documentPositionData = documentData.getDocumentPositionData();
} }
public Page getPage(Long pageIndex) { public Page getPage(Long pageIndex) {
return pages.stream() Page page = pageData.get(Math.toIntExact(pageIndex) - 1);
.filter(page -> page.getNumber() == Math.toIntExact(pageIndex)) assert page.getNumber() == Math.toIntExact(pageIndex);
.findFirst() return page;
.orElseThrow(() -> new NoSuchElementException(String.format("ClassificationPage with number %d not found", pageIndex)));
} }
} }