acoliver 02/04/27 17:44:40
Modified: src/java/org/apache/poi/hssf/record FormulaRecord.java
src/java/org/apache/poi/hssf/record/aggregates
ValueRecordsAggregate.java
Log:
Wow... Fixed sizing bug 8592 -- see bug for details. Basically we couldn't
handle variable sized value records (formulas are the only one we do so far).
Now we're a bit less efficient (reiterate through all at the end for size
calculations), but it works and is probably more flexible.
Revision Changes Path
1.7 +2 -2
jakarta-poi/src/java/org/apache/poi/hssf/record/FormulaRecord.java
Index: FormulaRecord.java
===================================================================
RCS file:
/home/cvs/jakarta-poi/src/java/org/apache/poi/hssf/record/FormulaRecord.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- FormulaRecord.java 27 Apr 2002 14:07:52 -0000 1.6
+++ FormulaRecord.java 28 Apr 2002 00:44:40 -0000 1.7
@@ -351,7 +351,7 @@
int ptgSize = getTotalPtgSize();
LittleEndian.putShort(data, 0 + offset, sid);
- LittleEndian.putShort(data, 2 + offset, ( short ) (24 + ptgSize));
+ LittleEndian.putShort(data, 2 + offset, ( short ) (22 + ptgSize));
LittleEndian.putShort(data, 4 + offset, getRow());
LittleEndian.putShort(data, 6 + offset, getColumn());
LittleEndian.putShort(data, 8 + offset, getXFIndex());
@@ -371,7 +371,7 @@
int retval =0;
if (EXPERIMENTAL_FORMULA_SUPPORT_ENABLED) {
- retval = getTotalPtgSize() + 28;
+ retval = getTotalPtgSize() + 26;
} else {
retval =all_data.length;
}
1.4 +14 -6
jakarta-poi/src/java/org/apache/poi/hssf/record/aggregates/ValueRecordsAggregate.java
Index: ValueRecordsAggregate.java
===================================================================
RCS file:
/home/cvs/jakarta-poi/src/java/org/apache/poi/hssf/record/aggregates/ValueRecordsAggregate.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- ValueRecordsAggregate.java 11 Feb 2002 10:45:51 -0000 1.3
+++ ValueRecordsAggregate.java 28 Apr 2002 00:44:40 -0000 1.4
@@ -78,7 +78,7 @@
int firstcell = -1;
int lastcell = -1;
TreeMap records = null;
- int size = 0;
+// int size = 0;
/** Creates a new instance of ValueRecordsAggregate */
@@ -89,7 +89,7 @@
public void insertCell(CellValueRecordInterface cell)
{
- if (records.get(cell) == null)
+/* if (records.get(cell) == null)
{
size += (( Record ) cell).getRecordSize();
}
@@ -97,7 +97,7 @@
{
size += (( Record ) cell).getRecordSize()
- (( Record ) records.get(cell)).getRecordSize();
- }
+ }*/
// XYLocator xy = new XYLocator(cell.getRow(), cell.getColumn());
records.put(cell, cell);
@@ -113,7 +113,7 @@
public void removeCell(CellValueRecordInterface cell)
{
- size -= (( Record ) cell).getRecordSize();
+ // size -= (( Record ) cell).getRecordSize();
// XYLocator xy = new XYLocator(cell.getRow(), cell.getColumn());
records.remove(cell);
@@ -209,9 +209,17 @@
return sid;
}
- public int getRecordSize()
- {
+ public int getRecordSize() {
+
+ int size = 0;
+ Iterator irecs = records.values().iterator();
+
+ while (irecs.hasNext()) {
+ size += (( Record ) irecs.next()).getRecordSize();
+ }
+
return size;
+// return size;
}
public Iterator getIterator()