mirror of https://github.com/apache/poi.git
Round 2 with removing merged regions. The MergedRecords array would be emptied
when removing all the regions but the merged pointer was still being preserved. Kill the pointer if the record is removed from the list so things are golden again. git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@353166 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
992f457092
commit
72e18903be
|
@ -476,6 +476,10 @@ public class Sheet implements Model
|
||||||
records.remove(removePos);
|
records.remove(removePos);
|
||||||
mergedRecords.remove(pos);
|
mergedRecords.remove(pos);
|
||||||
mergedLocs.remove(pos);
|
mergedLocs.remove(pos);
|
||||||
|
|
||||||
|
//if we're not tracking merged records, kill the pointer to reset the state
|
||||||
|
if (mergedRecords.size() == 0) merged = null;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -276,6 +276,25 @@ public class TestHSSFSheet
|
||||||
assertEquals("Left over region should be starting at row 1", 1, region.getRowFrom());
|
assertEquals("Left over region should be starting at row 1", 1, region.getRowFrom());
|
||||||
|
|
||||||
sheet.removeMergedRegion(0);
|
sheet.removeMergedRegion(0);
|
||||||
|
|
||||||
|
assertEquals("there should be no merged regions left!", 0, sheet.getNumMergedRegions());
|
||||||
|
|
||||||
|
//an, add, remove, get(0) would null pointer
|
||||||
|
sheet.addMergedRegion(region);
|
||||||
|
assertEquals("there should now be one merged region!", 1, sheet.getNumMergedRegions());
|
||||||
|
sheet.removeMergedRegion(0);
|
||||||
|
assertEquals("there should now be zero merged regions!", 0, sheet.getNumMergedRegions());
|
||||||
|
//add it again!
|
||||||
|
region.setRowTo(4);
|
||||||
|
|
||||||
|
sheet.addMergedRegion(region);
|
||||||
|
assertEquals("there should now be one merged region!", 1, sheet.getNumMergedRegions());
|
||||||
|
|
||||||
|
//should exist now!
|
||||||
|
assertTrue("there isn't more than one merged region in there", 1 <= sheet.getNumMergedRegions());
|
||||||
|
region = sheet.getMergedRegionAt(0);
|
||||||
|
assertEquals("the merged row to doesnt match the one we put in ", 4, region.getRowTo());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void main(java.lang.String[] args) {
|
public static void main(java.lang.String[] args) {
|
||||||
|
|
Loading…
Reference in New Issue