remove comment iterator

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1895210 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
PJ Fanning 2021-11-20 16:26:55 +00:00
parent 18bb41fb27
commit 3d44f76500
3 changed files with 23 additions and 59 deletions

View File

@ -74,14 +74,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

View File

@ -100,38 +100,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

View File

@ -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());
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);
// 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);
}
}
}
}