diff options
Diffstat (limited to 'poi-ooxml/src')
3 files changed, 24 insertions, 60 deletions
diff --git a/poi-ooxml/src/main/java/org/apache/poi/xssf/model/Comments.java b/poi-ooxml/src/main/java/org/apache/poi/xssf/model/Comments.java index fe4a3ec8b3..6cbf6f6ccc 100644 --- a/poi-ooxml/src/main/java/org/apache/poi/xssf/model/Comments.java +++ b/poi-ooxml/src/main/java/org/apache/poi/xssf/model/Comments.java @@ -75,14 +75,6 @@ public interface Comments { Iterator<CellAddress> getCellAddresses(); /** - * @param sheet the sheet to check for comments (used to find drawing/shape data for comments) - set to null - * if you don't need the drawing/shape data - * @return iterator of comments - * @since POI 5.2.0 - */ - Iterator<XSSFComment> commentIterator(Sheet sheet); - - /** * Create a new comment and add to the CommentTable. * @param sheet sheet to add comment to * @param clientAnchor the anchor for this comment diff --git a/poi-ooxml/src/main/java/org/apache/poi/xssf/model/CommentsTable.java b/poi-ooxml/src/main/java/org/apache/poi/xssf/model/CommentsTable.java index d9fbde7936..3cf33f22cf 100644 --- a/poi-ooxml/src/main/java/org/apache/poi/xssf/model/CommentsTable.java +++ b/poi-ooxml/src/main/java/org/apache/poi/xssf/model/CommentsTable.java @@ -101,38 +101,6 @@ public class CommentsTable extends POIXMLDocumentPart implements Comments { } /** - * @param sheet the sheet to check for comments (used to find drawing/shape data for comments) - set to null - * if you don't need the drawing/shape data - * @return iterator of comments - * @since POI 5.2.0 - */ - @Override - public Iterator<XSSFComment> commentIterator(Sheet sheet) { - XSSFVMLDrawing vml = getVMLDrawing(sheet, false); - final CommentsTable table = this; - return new Iterator<XSSFComment>() { - private final CTComment[] commentsArray = getCTComments().getCommentList().getCommentArray(); - private int counter = 0; - - @Override - public boolean hasNext() { - return counter < commentsArray.length; - } - - @Override - public XSSFComment next() { - CTComment ctComment = commentsArray[counter++]; - CellAddress cellAddress = new CellAddress(ctComment.getRef()); - CTShape shape = null; - if (vml != null) { - shape = vml.findCommentShape(cellAddress.getRow(), cellAddress.getColumn()); - } - return new XSSFComment(table, ctComment, shape); - } - }; - } - - /** * 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 diff --git a/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java b/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java index ab9ab51b72..66fcbe6499 100644 --- a/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java +++ b/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java @@ -3112,19 +3112,21 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { // is there a change necessary for the current row? if(newrownum != rownum) { - Iterator<XSSFComment> commentIterator = sheetComments.commentIterator(this); - while (commentIterator.hasNext()) { - XSSFComment oldComment = commentIterator.next(); - CellReference ref = new CellReference(oldComment.getRow(), oldComment.getColumn()); + Iterator<CellAddress> commentAddressIterator = sheetComments.getCellAddresses(); + while (commentAddressIterator.hasNext()) { + CellAddress cellAddress = commentAddressIterator.next(); // is this comment part of the current row? - if(ref.getRow() == rownum) { - XSSFComment xssfComment = new XSSFComment(sheetComments, oldComment.getCTComment(), - oldComment.getCTShape()); - - // we should not perform the shifting right here as we would then find - // already shifted comments and would shift them again... - commentsToShift.put(xssfComment, newrownum); + if(cellAddress.getRow() == rownum) { + XSSFComment oldComment = sheetComments.findCellComment(this, cellAddress); + if (oldComment != null) { + XSSFComment xssfComment = new XSSFComment(sheetComments, oldComment.getCTComment(), + oldComment.getCTShape()); + + // we should not perform the shifting right here as we would then find + // already shifted comments and would shift them again... + commentsToShift.put(xssfComment, newrownum); + } } } } @@ -3197,17 +3199,19 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { if (sheetComments != null) { - Iterator<XSSFComment> commentIterator = sheetComments.commentIterator(this); - while (commentIterator.hasNext()) { - XSSFComment oldComment = commentIterator.next(); - CellReference ref = new CellReference(oldComment.getRow(), oldComment.getColumn()); + Iterator<CellAddress> commentAddressIterator = sheetComments.getCellAddresses(); + while (commentAddressIterator.hasNext()) { + CellAddress oldCommentAddress = commentAddressIterator.next(); - int columnIndex =ref.getCol(); + int columnIndex = oldCommentAddress.getColumn(); int newColumnIndex = shiftedRowNum(startColumnIndex, endColumnIndex, n, columnIndex); - if(newColumnIndex != columnIndex){ - XSSFComment xssfComment = new XSSFComment(sheetComments, oldComment.getCTComment(), - vml == null ? null : vml.findCommentShape(ref.getRow(), columnIndex)); - commentsToShift.put(xssfComment, newColumnIndex); + if(newColumnIndex != columnIndex) { + XSSFComment oldComment = sheetComments.findCellComment(this, oldCommentAddress); + if (oldComment != null) { + XSSFComment xssfComment = new XSSFComment(sheetComments, oldComment.getCTComment(), + oldComment.getCTShape()); + commentsToShift.put(xssfComment, newColumnIndex); + } } } } |