All Downloads are FREE. Search and download functionalities are using the official Maven repository.

pro.verron.officestamper.core.StandardComment Maven / Gradle / Ivy

Go to download

Office-stamper is a Java template engine for docx documents, forked from org.wickedsource.docx-stamper

The newest version!
package pro.verron.officestamper.core;

import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
import org.docx4j.wml.CommentRangeEnd;
import org.docx4j.wml.CommentRangeStart;
import org.docx4j.wml.Comments;
import org.docx4j.wml.ContentAccessor;
import org.docx4j.wml.R.CommentReference;
import pro.verron.officestamper.api.Comment;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

/**
 * 

CommentWrapper class.

* * @author Joseph Verron * @author Tom Hombergs * @version ${version} * @since 1.0.2 */ public class StandardComment implements Comment { private final Set children = new HashSet<>(); private final WordprocessingMLPackage document; private Comments.Comment comment; private CommentRangeStart commentRangeStart; private CommentRangeEnd commentRangeEnd; private CommentReference commentReference; /** * Constructs a new StandardComment object. * * @param document the WordprocessingMLPackage document instance */ public StandardComment(WordprocessingMLPackage document) { this.document = document; } /** *

getParent.

* * @return the comment's author. */ @Override public ContentAccessor getParent() { return DocumentUtil.findSmallestCommonParent(getCommentRangeStart(), getCommentRangeEnd()); } /** * @return the elements in the document that are between the comment range anchors. */ @Override public List getElements() { List elements = new ArrayList<>(); boolean startFound = false; boolean endFound = false; var parentElements = getParent().getContent(); for (Object element : parentElements) { startFound = startFound || DocumentUtil.depthElementSearch(getCommentRangeStart(), element); if (startFound && !endFound) elements.add(element); endFound = endFound || DocumentUtil.depthElementSearch(getCommentRangeEnd(), element); } return elements; } /** *

Getter for the field commentRangeEnd.

* * @return a {@link CommentRangeEnd} object */ @Override public CommentRangeEnd getCommentRangeEnd() { return commentRangeEnd; } public void setCommentRangeEnd(CommentRangeEnd commentRangeEnd) { this.commentRangeEnd = commentRangeEnd; } /** *

Getter for the field commentRangeStart.

* * @return a {@link CommentRangeStart} object */ @Override public CommentRangeStart getCommentRangeStart() { return commentRangeStart; } public void setCommentRangeStart(CommentRangeStart commentRangeStart) { this.commentRangeStart = commentRangeStart; } /** *

Getter for the field commentReference.

* * @return a {@link CommentReference} object */ @Override public CommentReference getCommentReference() { return commentReference; } public void setCommentReference(CommentReference commentReference) { this.commentReference = commentReference; } /** *

Getter for the field children.

* * @return a {@link Set} object */ @Override public Set getChildren() { return children; } public void setChildren(Set children) { this.children.addAll(children); } /** *

Getter for the field comment.

* * @return a {@link Comments.Comment} object */ @Override public Comments.Comment getComment() { return comment; } public void setComment(Comments.Comment comment) { this.comment = comment; } @Override public WordprocessingMLPackage getDocument() { return document; } }