try to make comments table more extensible

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1895105 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
PJ Fanning 2021-11-17 13:08:48 +00:00
parent fd1b5c87cf
commit fa703eccfb
2 changed files with 23 additions and 4 deletions

View File

@ -30,6 +30,7 @@ import org.apache.poi.ooxml.POIXMLDocumentPart;
import org.apache.poi.openxml4j.opc.PackagePart; import org.apache.poi.openxml4j.opc.PackagePart;
import org.apache.poi.ss.util.CellAddress; import org.apache.poi.ss.util.CellAddress;
import org.apache.poi.util.Internal; import org.apache.poi.util.Internal;
import org.apache.poi.util.Removal;
import org.apache.poi.util.Units; import org.apache.poi.util.Units;
import org.apache.poi.xssf.usermodel.XSSFClientAnchor; import org.apache.poi.xssf.usermodel.XSSFClientAnchor;
import org.apache.poi.xssf.usermodel.XSSFComment; import org.apache.poi.xssf.usermodel.XSSFComment;
@ -99,9 +100,12 @@ public class CommentsTable extends POIXMLDocumentPart implements Comments {
/** /**
* Called after the reference is updated, so that * Called after the reference is updated, so that
* we can reflect that in our cache * we can reflect that in our cache
* @param oldReference the comment to remove from the commentRefs map * @param oldReference the comment to remove from the commentRefs map
* @param comment the comment to replace in the commentRefs map * @param comment the comment to replace in the commentRefs map
* @deprecated use {@link #referenceUpdated(CellAddress, XSSFComment)}
*/ */
@Deprecated
@Removal(version = "6.0.0")
public void referenceUpdated(CellAddress oldReference, CTComment comment) { public void referenceUpdated(CellAddress oldReference, CTComment comment) {
if(commentRefs != null) { if(commentRefs != null) {
commentRefs.remove(oldReference); commentRefs.remove(oldReference);
@ -109,6 +113,20 @@ public class CommentsTable extends POIXMLDocumentPart implements Comments {
} }
} }
/**
* Called after the reference is updated, so that
* we can reflect that in our cache
* @param oldReference the comment to remove from the commentRefs map
* @param comment the comment to replace in the commentRefs map
* @since POI 5.2.0
*/
public void referenceUpdated(CellAddress oldReference, XSSFComment comment) {
if(commentRefs != null) {
commentRefs.remove(oldReference);
commentRefs.put(comment.getAddress(), comment.getCTComment());
}
}
@Override @Override
public int getNumberOfComments() { public int getNumberOfComments() {
return comments.getCommentList().sizeOfCommentArray(); return comments.getCommentList().sizeOfCommentArray();

View File

@ -163,7 +163,7 @@ public class XSSFComment implements Comment {
} }
_comment.setRef(address.formatAsString()); _comment.setRef(address.formatAsString());
_comments.referenceUpdated(oldRef, _comment); _comments.referenceUpdated(oldRef, this);
if (_vmlShape != null) { if (_vmlShape != null) {
CTClientData clientData = _vmlShape.getClientDataArray(0); CTClientData clientData = _vmlShape.getClientDataArray(0);
@ -244,8 +244,9 @@ public class XSSFComment implements Comment {
/** /**
* @return the xml bean holding this comment's properties * @return the xml bean holding this comment's properties
* @since POI 5.2.0 (was protected before POI 5.2.0)
*/ */
protected CTComment getCTComment(){ public CTComment getCTComment(){
return _comment; return _comment;
} }