You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@poi.apache.org by dm...@apache.org on 2003/09/06 20:56:29 UTC
cvs commit: jakarta-poi/src/java/org/apache/poi/hssf/model Sheet.java
dmui 2003/09/06 11:56:29
Modified: src/testcases/org/apache/poi/hssf/model Tag: REL_2_BRANCH
SheetTest.java
src/java/org/apache/poi/hssf/model Tag: REL_2_BRANCH
Sheet.java
Log:
Changed merged region tracking to use object pointers rather than
index pointers so we don't have to make sure the indices are up to date.
PR: 22922
Submitted by: xuemin@appresso.com (Xuemin Guan)
CVS: ----------------------------------------------------------------------
CVS: PR:
CVS: If this change addresses a PR in the problem report tracking
CVS: database, then enter the PR number(s) here.
CVS: Obtained from:
CVS: If this change has been taken from another system, such as NCSA,
CVS: then name the system in this line, otherwise delete it.
CVS: Submitted by:
CVS: If this code has been contributed to Apache by someone else; i.e.,
CVS: they sent us a patch or a new module, then include their name/email
CVS: address here. If this is your work then delete this line.
CVS: Reviewed by:
CVS: If we are doing pre-commit code reviews and someone else has
CVS: reviewed your changes, include their name(s) here.
CVS: If you have not had it reviewed then delete this line.
Revision Changes Path
No revision
No revision
1.3.2.1 +26 -7 jakarta-poi/src/testcases/org/apache/poi/hssf/model/SheetTest.java
Index: SheetTest.java
===================================================================
RCS file: /home/cvs/jakarta-poi/src/testcases/org/apache/poi/hssf/model/SheetTest.java,v
retrieving revision 1.3
retrieving revision 1.3.2.1
diff -u -r1.3 -r1.3.2.1
--- SheetTest.java 9 May 2003 12:39:08 -0000 1.3
+++ SheetTest.java 6 Sep 2003 18:56:29 -0000 1.3.2.1
@@ -7,6 +7,7 @@
import junit.framework.TestCase;
import org.apache.poi.hssf.record.ColumnInfoRecord;
+import org.apache.poi.hssf.record.MergeCellsRecord;
import org.apache.poi.hssf.record.RowRecord;
import org.apache.poi.hssf.record.StringRecord;
@@ -71,6 +72,31 @@
assertTrue("Expected " + recordsRemoved + " record to be removed from the starting " + records + ". Currently there are " + sheet.getRecords().size() + " records", records - sheet.getRecords().size() == recordsRemoved);
}
+ /**
+ * Bug: 22922 (Reported by Xuemin Guan)
+ * <p>
+ * Remove mergedregion fails when a sheet loses records after an initial CreateSheet
+ * fills up the records.
+ *
+ */
+ public void testMovingMergedRegion() {
+ List records = new ArrayList();
+
+ MergeCellsRecord merged = new MergeCellsRecord();
+ merged.addArea(0, (short)0, 1, (short)2);
+ records.add(new RowRecord());
+ records.add(new RowRecord());
+ records.add(new RowRecord());
+ records.add(merged);
+
+ Sheet sheet = Sheet.createSheet(records, 0);
+ sheet.records.remove(0);
+
+ //stub object to throw off list INDEX operations
+ sheet.removeMergedRegion(0);
+ assertEquals("Should be no more merged regions", 0, sheet.getNumMergedRegions());
+ }
+
public void testGetMergedRegionAt()
{
//TODO
@@ -146,13 +172,6 @@
assertNotNull("Row [2] was skipped", sheet.getRow(2));
}
-
-
- public static void main(String [] args) {
- System.out
- .println("Testing : "+SheetTest.class.getName());
- junit.textui.TestRunner.run(SheetTest.class);
- }
}
No revision
No revision
1.31.2.7 +5 -11 jakarta-poi/src/java/org/apache/poi/hssf/model/Sheet.java
Index: Sheet.java
===================================================================
RCS file: /home/cvs/jakarta-poi/src/java/org/apache/poi/hssf/model/Sheet.java,v
retrieving revision 1.31.2.6
retrieving revision 1.31.2.7
diff -u -r1.31.2.6 -r1.31.2.7
--- Sheet.java 23 Aug 2003 18:54:28 -0000 1.31.2.6
+++ Sheet.java 6 Sep 2003 18:56:29 -0000 1.31.2.7
@@ -111,8 +111,7 @@
protected WindowTwoRecord windowTwo = null;
protected MergeCellsRecord merged = null;
protected Margin margins[] = null;
- protected ArrayList mergedRecords = new ArrayList();
- protected ArrayList mergedLocs = new ArrayList();
+ protected List mergedRecords = new ArrayList();
protected int numMergedRegions = 0;
protected SelectionRecord selection = null;
private static POILogger log = POILogFactory.getLogger(Sheet.class);
@@ -198,7 +197,6 @@
{
retval.mergedRecords.add(rec);
retval.merged = ( MergeCellsRecord ) rec;
- retval.mergedLocs.add(new Integer(k - offset));
retval.numMergedRegions += retval.merged.getNumAreas();
}
else if (rec.getSid() == ColumnInfoRecord.sid)
@@ -456,8 +454,7 @@
if (merged == null || merged.getNumAreas() == 1027)
{
merged = ( MergeCellsRecord ) createMergedCells();
- mergedRecords.add(merged);
- mergedLocs.add(new Integer(records.size() - 1));
+ mergedRecords.add(merged);
records.add(records.size() - 1, merged);
}
merged.addArea(rowFrom, colFrom, rowTo, colTo);
@@ -498,7 +495,9 @@
numMergedRegions--;
if (rec.getNumAreas() == 0)
{
- mergedRecords.remove(pos);
+ mergedRecords.remove(pos);
+ //get rid of the record from the sheet
+ records.remove(merged);
if (merged == rec) {
//pull up the LAST record for operations when we finally
//support continue records for mergedRegions
@@ -508,11 +507,6 @@
merged = null;
}
}
-
- int removePos = ((Integer) mergedLocs.get(pos)).intValue();
- records.remove(removePos);
- mergedLocs.remove(pos);
-
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: poi-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: poi-dev-help@jakarta.apache.org