acoliver    02/04/17 15:21:17

  Modified:    src/java/org/apache/poi/hssf/dev BiffViewer.java
               src/java/org/apache/poi/hssf/record FormulaRecord.java
                        RecordFactory.java
  Log:
  Formula changes. . Disable for 1.5...alow compile in if desired.
  
  Revision  Changes    Path
  1.12      +5 -0      jakarta-poi/src/java/org/apache/poi/hssf/dev/BiffViewer.java
  
  Index: BiffViewer.java
  ===================================================================
  RCS file: /home/cvs/jakarta-poi/src/java/org/apache/poi/hssf/dev/BiffViewer.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- BiffViewer.java   14 Apr 2002 13:54:00 -0000      1.11
  +++ BiffViewer.java   17 Apr 2002 22:21:16 -0000      1.12
  @@ -630,6 +630,11 @@
               case LinkedDataRecord.sid:
                   retval = new LinkedDataRecord(rectype, size, data);
                   break;
  +                
  +            case FormulaRecord.sid:
  +                retval = new FormulaRecord(rectype, size, data);
  +                break;
  +                
   
               default :
                   retval = new UnknownRecord(rectype, size, data);
  
  
  
  1.4       +29 -3     
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.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- FormulaRecord.java        11 Feb 2002 10:45:50 -0000      1.3
  +++ FormulaRecord.java        17 Apr 2002 22:21:16 -0000      1.4
  @@ -77,8 +77,12 @@
       extends Record
       implements CellValueRecordInterface, Comparable
   {
  +    
  +    public static final boolean EXPERIMENTAL_FORMULA_SUPPORT_ENABLED=false;
  +    
       public static final short sid =
           0x06;   // docs say 406...because of a bug Microsoft support site article 
#Q184647)
  +    
       private short             field_1_row;
       private short             field_2_column;
       private short             field_3_xf;
  @@ -87,6 +91,9 @@
       private int               field_6_zero;
       private short             field_7_expression_len;
       private Stack             field_8_parsed_expr;
  +    
  +    private byte[]            all_data; //if formula support is not enabled then
  +                                        //we'll just store/reserialize
   
       /** Creates new FormulaRecord */
   
  @@ -126,6 +133,7 @@
   
       protected void fillFields(byte [] data, short size, int offset)
       {
  +        if (EXPERIMENTAL_FORMULA_SUPPORT_ENABLED) {
           field_1_row            = LittleEndian.getShort(data, 0 + offset);
           field_2_column         = LittleEndian.getShort(data, 2 + offset);
           field_3_xf             = LittleEndian.getShort(data, 4 + offset);
  @@ -133,9 +141,16 @@
           field_5_options        = LittleEndian.getShort(data, 14 + offset);
           field_6_zero           = LittleEndian.getInt(data, 16 + offset);
           field_7_expression_len = LittleEndian.getShort(data, 20 + offset);
  +        field_8_parsed_expr    = getParsedExpressionTokens(data, size,
  +                                 offset);
  +        
  +        } else {
  +            all_data = new byte[size+4];
  +            LittleEndian.putShort(all_data,0,sid);
  +            LittleEndian.putShort(all_data,2,size);
  +            System.arraycopy(data,offset,all_data,4,size);
  +        }
   
  -        // field_8_parsed_expr    = getParsedExpressionTokens(data, size,
  -        // offset);
       }
   
       private Stack getParsedExpressionTokens(byte [] data, short size,
  @@ -332,6 +347,7 @@
   
       public int serialize(int offset, byte [] data)
       {
  +        if (EXPERIMENTAL_FORMULA_SUPPORT_ENABLED) {
           int ptgSize = getTotalPtgSize();
   
           LittleEndian.putShort(data, 0 + offset, sid);
  @@ -343,6 +359,9 @@
           LittleEndian.putShort(data, 18 + offset, getOptions());
           LittleEndian.putInt(data, 20 + offset, field_6_zero);
           LittleEndian.putShort(data, 24 + offset, getExpressionLength());
  +        } else {
  +            System.arraycopy(all_data,0,data,offset,all_data.length);
  +        }
   
           // serializePtgs(data, 26+offset);
           return getRecordSize();
  @@ -350,7 +369,14 @@
   
       public int getRecordSize()
       {
  -        return 0;
  +        int retval =0;
  +        
  +        if (EXPERIMENTAL_FORMULA_SUPPORT_ENABLED) {
  +            retval = getTotalPtgSize() + 28;
  +        } else {
  +            retval =all_data.length;
  +        }
  +        return retval;
   
           // return getTotalPtgSize() + 28;
       }
  
  
  
  1.6       +62 -27    
jakarta-poi/src/java/org/apache/poi/hssf/record/RecordFactory.java
  
  Index: RecordFactory.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-poi/src/java/org/apache/poi/hssf/record/RecordFactory.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- RecordFactory.java        10 Apr 2002 12:48:00 -0000      1.5
  +++ RecordFactory.java        17 Apr 2002 22:21:16 -0000      1.6
  @@ -77,33 +77,68 @@
   public class RecordFactory
   {
       private static int           NUM_RECORDS = 10000;
  -    private static final Class[] records     = new Class[]
  -    {
  -        BOFRecord.class, InterfaceHdrRecord.class, MMSRecord.class,
  -        InterfaceEndRecord.class, WriteAccessRecord.class,
  -        CodepageRecord.class, DSFRecord.class, TabIdRecord.class,
  -        FnGroupCountRecord.class, WindowProtectRecord.class,
  -        ProtectRecord.class, PasswordRecord.class, ProtectionRev4Record.class,
  -        PasswordRev4Record.class, WindowOneRecord.class, BackupRecord.class,
  -        HideObjRecord.class, DateWindow1904Record.class,
  -        PrecisionRecord.class, RefreshAllRecord.class, BookBoolRecord.class,
  -        FontRecord.class, FormatRecord.class, ExtendedFormatRecord.class,
  -        StyleRecord.class, UseSelFSRecord.class, BoundSheetRecord.class,
  -        CountryRecord.class, SSTRecord.class, ExtSSTRecord.class,
  -        EOFRecord.class, IndexRecord.class, CalcModeRecord.class,
  -        CalcCountRecord.class, RefModeRecord.class, IterationRecord.class,
  -        DeltaRecord.class, SaveRecalcRecord.class, PrintHeadersRecord.class,
  -        PrintGridlinesRecord.class, GridsetRecord.class, GutsRecord.class,
  -        DefaultRowHeightRecord.class, WSBoolRecord.class, HeaderRecord.class,
  -        FooterRecord.class, HCenterRecord.class, VCenterRecord.class,
  -        PrintSetupRecord.class, DefaultColWidthRecord.class,
  -        DimensionsRecord.class, RowRecord.class, LabelSSTRecord.class,
  -        RKRecord.class, NumberRecord.class, DBCellRecord.class,
  -        WindowTwoRecord.class, SelectionRecord.class, ContinueRecord.class,
  -        LabelRecord.class, BlankRecord.class, ColumnInfoRecord.class,
  -        MulRKRecord.class, MulBlankRecord.class, MergeCellsRecord.class,
  -        FormulaRecord.class, BoolErrRecord.class
  -    };
  +    private static final Class[] records;
  +    
  +    static {
  +        if (FormulaRecord.EXPERIMENTAL_FORMULA_SUPPORT_ENABLED) {
  +            records = new Class[]
  +            {
  +                BOFRecord.class, InterfaceHdrRecord.class, MMSRecord.class,
  +                InterfaceEndRecord.class, WriteAccessRecord.class,
  +                CodepageRecord.class, DSFRecord.class, TabIdRecord.class,
  +                FnGroupCountRecord.class, WindowProtectRecord.class,
  +                ProtectRecord.class, PasswordRecord.class, 
ProtectionRev4Record.class,
  +                PasswordRev4Record.class, WindowOneRecord.class, BackupRecord.class,
  +                HideObjRecord.class, DateWindow1904Record.class,
  +                PrecisionRecord.class, RefreshAllRecord.class, BookBoolRecord.class,
  +                FontRecord.class, FormatRecord.class, ExtendedFormatRecord.class,
  +                StyleRecord.class, UseSelFSRecord.class, BoundSheetRecord.class,
  +                CountryRecord.class, SSTRecord.class, ExtSSTRecord.class,
  +                EOFRecord.class, IndexRecord.class, CalcModeRecord.class,
  +                CalcCountRecord.class, RefModeRecord.class, IterationRecord.class,
  +                DeltaRecord.class, SaveRecalcRecord.class, PrintHeadersRecord.class,
  +                PrintGridlinesRecord.class, GridsetRecord.class, GutsRecord.class,
  +                DefaultRowHeightRecord.class, WSBoolRecord.class, 
HeaderRecord.class,
  +                FooterRecord.class, HCenterRecord.class, VCenterRecord.class,
  +                PrintSetupRecord.class, DefaultColWidthRecord.class,
  +                DimensionsRecord.class, RowRecord.class, LabelSSTRecord.class,
  +                RKRecord.class, NumberRecord.class, DBCellRecord.class,
  +                WindowTwoRecord.class, SelectionRecord.class, ContinueRecord.class,
  +                LabelRecord.class, BlankRecord.class, ColumnInfoRecord.class,
  +                MulRKRecord.class, MulBlankRecord.class, MergeCellsRecord.class,
  +                FormulaRecord.class, BoolErrRecord.class
  +            };
  +        } else {
  +            records = new Class[]
  +            {
  +                BOFRecord.class, InterfaceHdrRecord.class, MMSRecord.class,
  +                InterfaceEndRecord.class, WriteAccessRecord.class,
  +                CodepageRecord.class, DSFRecord.class, TabIdRecord.class,
  +                FnGroupCountRecord.class, WindowProtectRecord.class,
  +                ProtectRecord.class, PasswordRecord.class, 
ProtectionRev4Record.class,
  +                PasswordRev4Record.class, WindowOneRecord.class, BackupRecord.class,
  +                HideObjRecord.class, DateWindow1904Record.class,
  +                PrecisionRecord.class, RefreshAllRecord.class, BookBoolRecord.class,
  +                FontRecord.class, FormatRecord.class, ExtendedFormatRecord.class,
  +                StyleRecord.class, UseSelFSRecord.class, BoundSheetRecord.class,
  +                CountryRecord.class, SSTRecord.class, ExtSSTRecord.class,
  +                EOFRecord.class, IndexRecord.class, CalcModeRecord.class,
  +                CalcCountRecord.class, RefModeRecord.class, IterationRecord.class,
  +                DeltaRecord.class, SaveRecalcRecord.class, PrintHeadersRecord.class,
  +                PrintGridlinesRecord.class, GridsetRecord.class, GutsRecord.class,
  +                DefaultRowHeightRecord.class, WSBoolRecord.class, 
HeaderRecord.class,
  +                FooterRecord.class, HCenterRecord.class, VCenterRecord.class,
  +                PrintSetupRecord.class, DefaultColWidthRecord.class,
  +                DimensionsRecord.class, RowRecord.class, LabelSSTRecord.class,
  +                RKRecord.class, NumberRecord.class, DBCellRecord.class,
  +                WindowTwoRecord.class, SelectionRecord.class, ContinueRecord.class,
  +                LabelRecord.class, BlankRecord.class, ColumnInfoRecord.class,
  +                MulRKRecord.class, MulBlankRecord.class, MergeCellsRecord.class,
  +                BoolErrRecord.class
  +            };
  +            
  +        }
  +    }
       private static Map           recordsMap  = recordsToMap(records);
   
       /**
  
  
  


Reply via email to