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()
  
  
  


Reply via email to