git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1674975 13f79535-47bb-0310-9956-ffa450edef68tags/REL_3_12_FINAL
// i.e. when shifting down, start from down and go up, when shifting up, vice-versa | // i.e. when shifting down, start from down and go up, when shifting up, vice-versa | ||||
SortedMap<XSSFComment, Integer> commentsToShift = new TreeMap<XSSFComment, Integer>(new Comparator<XSSFComment>() { | SortedMap<XSSFComment, Integer> commentsToShift = new TreeMap<XSSFComment, Integer>(new Comparator<XSSFComment>() { | ||||
public int compare(XSSFComment o1, XSSFComment o2) { | public int compare(XSSFComment o1, XSSFComment o2) { | ||||
int row1 = new CellReference(o1.getCTComment().getRef()).getRow(); | |||||
int row2 = new CellReference(o2.getCTComment().getRef()).getRow(); | |||||
int row1 = o1.getRow(); | |||||
int row2 = o2.getRow(); | |||||
if(row1 == row2) { | if(row1 == row2) { | ||||
return 0; | |||||
// ordering is not important when row is equal, but don't return zero to still | |||||
// get multiple comments per row into the map | |||||
return o1.hashCode() - o2.hashCode(); | |||||
} | } | ||||
// when shifting down, sort higher row-values first | // when shifting down, sort higher row-values first |
wb.removeSheetAt(sn); | wb.removeSheetAt(sn); | ||||
} | } | ||||
} | } | ||||
public void testBug57828_OnlyOneCommentShiftedInRow() throws IOException { | |||||
XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("57828.xlsx"); | |||||
XSSFSheet sheet = wb.getSheetAt(0); | |||||
Comment comment1 = sheet.getCellComment(2, 1); | |||||
assertNotNull(comment1); | |||||
Comment comment2 = sheet.getCellComment(2, 2); | |||||
assertNotNull(comment2); | |||||
Comment comment3 = sheet.getCellComment(1, 1); | |||||
assertNull("NO comment in (1,1) and it should be null", comment3); | |||||
sheet.shiftRows(2, 2, -1); | |||||
comment3 = sheet.getCellComment(1, 1); | |||||
assertNotNull("Comment in (2,1) moved to (1,1) so its not null now.", comment3); | |||||
comment1 = sheet.getCellComment(2, 1); | |||||
assertNull("No comment currently in (2,1) and hence it is null", comment1); | |||||
comment2 = sheet.getCellComment(1, 2); | |||||
assertNotNull("Comment in (2,2) should have moved as well because of shift rows. But its not", comment2); | |||||
// OutputStream stream = new FileOutputStream("/tmp/57828.xlsx"); | |||||
// try { | |||||
// wb.write(stream); | |||||
// } finally { | |||||
// stream.close(); | |||||
// } | |||||
wb.close(); | |||||
} | |||||
} | } |