From 6e7b019fe842788247d0ff97950122c4ce456c86 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sun, 28 Aug 2016 21:41:20 +0100 Subject: Add reader for comments.xml --- .../mammoth/internal/documents/Comment.java | 21 ++++++++++++++ .../mammoth/internal/docx/CommentXmlReader.java | 32 ++++++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 src/main/java/org/zwobble/mammoth/internal/documents/Comment.java create mode 100644 src/main/java/org/zwobble/mammoth/internal/docx/CommentXmlReader.java (limited to 'src/main/java') diff --git a/src/main/java/org/zwobble/mammoth/internal/documents/Comment.java b/src/main/java/org/zwobble/mammoth/internal/documents/Comment.java new file mode 100644 index 0000000..f3c76ea --- /dev/null +++ b/src/main/java/org/zwobble/mammoth/internal/documents/Comment.java @@ -0,0 +1,21 @@ +package org.zwobble.mammoth.internal.documents; + +import java.util.List; + +public class Comment { + private final String commentId; + private final List body; + + public Comment(String commentId, List body) { + this.commentId = commentId; + this.body = body; + } + + public String getCommentId() { + return commentId; + } + + public List getBody() { + return body; + } +} diff --git a/src/main/java/org/zwobble/mammoth/internal/docx/CommentXmlReader.java b/src/main/java/org/zwobble/mammoth/internal/docx/CommentXmlReader.java new file mode 100644 index 0000000..4cacf08 --- /dev/null +++ b/src/main/java/org/zwobble/mammoth/internal/docx/CommentXmlReader.java @@ -0,0 +1,32 @@ +package org.zwobble.mammoth.internal.docx; + +import org.zwobble.mammoth.internal.documents.Comment; +import org.zwobble.mammoth.internal.results.InternalResult; +import org.zwobble.mammoth.internal.xml.XmlElement; + +import java.util.List; + +public class CommentXmlReader { + private final BodyXmlReader bodyReader; + + public CommentXmlReader(BodyXmlReader bodyReader) { + this.bodyReader = bodyReader; + } + + public InternalResult> readElement(XmlElement element) { + return InternalResult.flatMap( + element.findChildren("w:comment"), + this::readCommentElement + ); + } + + private InternalResult readCommentElement(XmlElement element) { + String commentId = element.getAttribute("w:id"); + return bodyReader.readElements(element.getChildren()) + .toResult() + .map(children -> new Comment( + commentId, + children + )); + } +} -- cgit v1.2.3