]> source.dussan.org Git - poi.git/commitdiff
Reorganized things a bit in preparation for some changes.
authorGlen Stampoultzis <glens@apache.org>
Sun, 14 Apr 2002 13:54:00 +0000 (13:54 +0000)
committerGlen Stampoultzis <glens@apache.org>
Sun, 14 Apr 2002 13:54:00 +0000 (13:54 +0000)
git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@352413 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/poi/hssf/dev/BiffViewer.java

index 52f741ad9ac1440334dc276e0974fc4a1505d3de..8385dc3014f855c25818e05a2c3d56fa7bbd8e4a 100644 (file)
@@ -1,4 +1,3 @@
-
 /* ====================================================================
  * The Apache Software License, Version 1.1
  *
@@ -79,7 +78,7 @@ import java.util.ArrayList;
 
 public class BiffViewer
 {
-    String          filename;
+    String filename;
     private boolean dump;
 
     /**
@@ -88,13 +87,12 @@ public class BiffViewer
      * @param args
      */
 
-    public BiffViewer(String [] args)
+    public BiffViewer(String[] args)
     {
         if (args.length > 0)
         {
-            filename = args[ 0 ];
-        }
-        else
+            filename = args[0];
+        } else
         {
             System.out.println("BIFFVIEWER REQUIRES A FILENAME***");
         }
@@ -110,13 +108,12 @@ public class BiffViewer
     {
         try
         {
-            POIFSFileSystem fs      =
-                new POIFSFileSystem(new FileInputStream(filename));
-            InputStream     stream  =
-                fs.createDocumentInputStream("Workbook");
-            Record[]        records = createRecords(stream, dump);
-        }
-        catch (Exception e)
+            POIFSFileSystem fs =
+                    new POIFSFileSystem(new FileInputStream(filename));
+            InputStream stream =
+                    fs.createDocumentInputStream("Workbook");
+            Record[] records = createRecords(stream, dump);
+        } catch (Exception e)
         {
             e.printStackTrace();
         }
@@ -135,12 +132,12 @@ public class BiffViewer
      *            InputStream
      */
 
-    public static Record [] createRecords(InputStream in, boolean dump)
-        throws RecordFormatException
+    public static Record[] createRecords(InputStream in, boolean dump)
+            throws RecordFormatException
     {
-        ArrayList records     = new ArrayList();
-        Record    last_record = null;
-        int       loc         = 0;
+        ArrayList records = new ArrayList();
+        Record last_record = null;
+        int loc = 0;
 
         try
         {
@@ -151,490 +148,486 @@ public class BiffViewer
             {
                 rectype = LittleEndian.readShort(in);
                 System.out.println("============================================");
-                System.out.println("you are at offset " + loc);
-                loc     += 2;
+                System.out.println("Offset 0x" + Integer.toHexString(loc) + " (" + loc + ")");
+                loc += 2;
                 if (rectype != 0)
                 {
                     short recsize = LittleEndian.readShort(in);
 
                     loc += 2;
-                    byte[] data = new byte[ ( int ) recsize ];
+                    byte[] data = new byte[(int) recsize];
 
                     in.read(data);
                     if ((rectype == WSBoolRecord.sid) && (recsize == 0))
                     {
                         System.out.println(loc);
                     }
-                    loc    += recsize;
+                    loc += recsize;
 //                    offset += 4 + recsize;
                     if (dump)
                     {
-//                        System.out
-//                            .println("fixing to recordize the following");
-                        System.out.println("rectype = 0x"
-                                           + Integer.toHexString(rectype));
-                        System.out.println("recsize = 0x"
-                                           + Integer.toHexString(recsize));
-                        System.out.println(
-                            "--------------------------------------------");
-                        if (data.length > 0)
-                        {
-                            HexDump.dump(data, 0, System.out, 0);
-                        }
-                        else
-                        {
-                            System.out.print("**NO RECORD DATA**");
-                        }
-                        System.out.println();
-                        System.out.println(
-                            "-END----------------------------------------");
+                        dump(rectype, recsize, data);
                     }
                     Record[] recs = createRecord(rectype, recsize,
-                                                 data);   // handle MulRK records
+                            data);   // handle MulRK records
 
-                    if (recs.length > 1)
-                    {
-                        for (int k = 0; k < recs.length; k++)
-                        {
-                            records.add(
-                                recs[ k ]);               // these will be number records
-                            last_record =
-                                recs[ k ];                // do to keep the algorythm homogenous...you can't
-                        }                                 // actually continue a number record anyhow.
+                    Record record = recs[0];
+
+                    if ((record instanceof UnknownRecord)
+                            && !dump)                 // if we didn't already dump
+                    {                                 // just cause dump was on and we're hit an unknow
+                        dumpUnknownRecord(data);
                     }
-                    else
+                    if (record != null)
                     {
-                        Record record = recs[ 0 ];
-
-                        if ((record instanceof UnknownRecord)
-                                && !dump)                 // if we didn't already dump
-                        {                                 // just cause dump was on and we're hit an unknow
-
-                            // record hex dump it!
-                            System.out.println(
-                                "-----UNKNOWN----------------------------------");
-                            if (data.length > 0)
-                            {
-                                HexDump.dump(data, 0, System.out, 0);
-                            }
-                            else
-                            {
-                                System.out.print("**NO RECORD DATA**");
-                            }
-                            System.out.println();
-                            System.out.println(
-                                "-----UNKNOWN----------------------------------");
-                        }
-                        if (record != null)
+                        if (rectype == ContinueRecord.sid)
+                        {
+                            dumpContinueRecord(last_record, dump, data);
+                        } else
                         {
-                            if (rectype == ContinueRecord.sid)
-                            {
-                                if (last_record == null)
-                                {
-                                    throw new RecordFormatException(
-                                        "First record is a ContinueRecord??");
-                                }
-                                if (dump)
-                                {
-                                    System.out.println(
-                                        "-----PRECONTINUED LAST RECORD WOULD SERIALIZE LIKE:");
-                                    byte[] lr = last_record.serialize();
-
-                                    if (lr != null)
-                                    {
-                                        HexDump.dump(last_record.serialize(),
-                                                     0, System.out, 0);
-                                    }
-                                    System.out.println();
-                                    System.out.println(
-                                        "-----PRECONTINUED----------------------------------");
-                                }
-                                last_record.processContinueRecord(data);
-                                if (dump)
-                                {
-                                    System.out.println(
-                                        "-----CONTINUED LAST RECORD WOULD SERIALIZE LIKE:");
-                                    HexDump.dump(last_record.serialize(), 0,
-                                                 System.out, 0);
-                                    System.out.println();
-                                    System.out.println(
-                                        "-----CONTINUED----------------------------------");
-                                }
-                            }
-                            else
-                            {
-                                last_record = record;
-                                records.add(record);
-                            }
+                            last_record = record;
+                            records.add(record);
                         }
                     }
                 }
-            }
-            while (rectype != 0);
-        }
-        catch (IOException e)
+            } while (rectype != 0);
+        } catch (IOException e)
         {
             throw new RecordFormatException("Error reading bytes");
         }
-        Record[] retval = new Record[ records.size() ];
+        Record[] retval = new Record[records.size()];
 
-        retval = ( Record [] ) records.toArray(retval);
+        retval = (Record[]) records.toArray(retval);
         return retval;
     }
 
+    private static void dumpContinueRecord(Record last_record, boolean dump, byte[] data) throws IOException
+    {
+        if (last_record == null)
+        {
+            throw new RecordFormatException(
+                    "First record is a ContinueRecord??");
+        }
+        if (dump)
+        {
+            System.out.println(
+                    "-----PRECONTINUED LAST RECORD WOULD SERIALIZE LIKE:");
+            byte[] lr = last_record.serialize();
+
+            if (lr != null)
+            {
+                HexDump.dump(last_record.serialize(),
+                        0, System.out, 0);
+            }
+            System.out.println();
+            System.out.println(
+                    "-----PRECONTINUED----------------------------------");
+        }
+        last_record.processContinueRecord(data);
+        if (dump)
+        {
+            System.out.println(
+                    "-----CONTINUED LAST RECORD WOULD SERIALIZE LIKE:");
+            HexDump.dump(last_record.serialize(), 0,
+                    System.out, 0);
+            System.out.println();
+            System.out.println(
+                    "-----CONTINUED----------------------------------");
+        }
+    }
+
+    private static void dumpUnknownRecord(byte[] data) throws IOException
+    {
+        // record hex dump it!
+        System.out.println(
+                "-----UNKNOWN----------------------------------");
+        if (data.length > 0)
+        {
+            HexDump.dump(data, 0, System.out, 0);
+        } else
+        {
+            System.out.print("**NO RECORD DATA**");
+        }
+        System.out.println();
+        System.out.println(
+                "-----UNKNOWN----------------------------------");
+    }
+
+    private static void dump(short rectype, short recsize, byte[] data) throws IOException
+    {
+//                        System.out
+//                            .println("fixing to recordize the following");
+        System.out.print("rectype = 0x"
+                + Integer.toHexString(rectype));
+        System.out.println(", recsize = 0x"
+                + Integer.toHexString(recsize));
+        System.out.println(
+                "-BEGIN DUMP---------------------------------");
+        if (data.length > 0)
+        {
+            HexDump.dump(data, 0, System.out, 0);
+        } else
+        {
+            System.out.println("**NO RECORD DATA**");
+        }
+//        System.out.println();
+        System.out.println(
+                "-END DUMP-----------------------------------");
+    }
+
     /**
      * Essentially a duplicate of RecordFactory.  Kept seperate as not to
      * screw up non-debug operations.
      *
      */
 
-    private static Record [] createRecord(short rectype, short size,
-                                          byte [] data)
+    private static Record[] createRecord(short rectype, short size,
+                                         byte[] data)
     {
-        Record   retval     = null;
+        Record retval = null;
         Record[] realretval = null;
 
         // int irectype = rectype;
         switch (rectype)
         {
 
-            case ChartRecord.sid :
+            case ChartRecord.sid:
                 retval = new ChartRecord(rectype, size, data);
                 break;
 
-            case ChartFormatRecord.sid :
+            case ChartFormatRecord.sid:
                 retval = new ChartFormatRecord(rectype, size, data);
                 break;
 
-            case SeriesRecord.sid :
+            case SeriesRecord.sid:
                 retval = new SeriesRecord(rectype, size, data);
                 break;
 
-            case BeginRecord.sid :
+            case BeginRecord.sid:
                 retval = new BeginRecord(rectype, size, data);
                 break;
 
-            case EndRecord.sid :
+            case EndRecord.sid:
                 retval = new EndRecord(rectype, size, data);
                 break;
 
-            case BOFRecord.sid :
+            case BOFRecord.sid:
                 retval = new BOFRecord(rectype, size, data);
                 break;
 
-            case InterfaceHdrRecord.sid :
+            case InterfaceHdrRecord.sid:
                 retval = new InterfaceHdrRecord(rectype, size, data);
                 break;
 
-            case MMSRecord.sid :
+            case MMSRecord.sid:
                 retval = new MMSRecord(rectype, size, data);
                 break;
 
-            case InterfaceEndRecord.sid :
+            case InterfaceEndRecord.sid:
                 retval = new InterfaceEndRecord(rectype, size, data);
                 break;
 
-            case WriteAccessRecord.sid :
+            case WriteAccessRecord.sid:
                 retval = new WriteAccessRecord(rectype, size, data);
                 break;
 
-            case CodepageRecord.sid :
+            case CodepageRecord.sid:
                 retval = new CodepageRecord(rectype, size, data);
                 break;
 
-            case DSFRecord.sid :
+            case DSFRecord.sid:
                 retval = new DSFRecord(rectype, size, data);
                 break;
 
-            case TabIdRecord.sid :
+            case TabIdRecord.sid:
                 retval = new TabIdRecord(rectype, size, data);
                 break;
 
-            case FnGroupCountRecord.sid :
+            case FnGroupCountRecord.sid:
                 retval = new FnGroupCountRecord(rectype, size, data);
                 break;
 
-            case WindowProtectRecord.sid :
+            case WindowProtectRecord.sid:
                 retval = new WindowProtectRecord(rectype, size, data);
                 break;
 
-            case ProtectRecord.sid :
+            case ProtectRecord.sid:
                 retval = new ProtectRecord(rectype, size, data);
                 break;
 
-            case PasswordRecord.sid :
+            case PasswordRecord.sid:
                 retval = new PasswordRecord(rectype, size, data);
                 break;
 
-            case ProtectionRev4Record.sid :
+            case ProtectionRev4Record.sid:
                 retval = new ProtectionRev4Record(rectype, size, data);
                 break;
 
-            case PasswordRev4Record.sid :
+            case PasswordRev4Record.sid:
                 retval = new PasswordRev4Record(rectype, size, data);
                 break;
 
-            case WindowOneRecord.sid :
+            case WindowOneRecord.sid:
                 retval = new WindowOneRecord(rectype, size, data);
                 break;
 
-            case BackupRecord.sid :
+            case BackupRecord.sid:
                 retval = new BackupRecord(rectype, size, data);
                 break;
 
-            case HideObjRecord.sid :
+            case HideObjRecord.sid:
                 retval = new HideObjRecord(rectype, size, data);
                 break;
 
-            case DateWindow1904Record.sid :
+            case DateWindow1904Record.sid:
                 retval = new DateWindow1904Record(rectype, size, data);
                 break;
 
-            case PrecisionRecord.sid :
+            case PrecisionRecord.sid:
                 retval = new PrecisionRecord(rectype, size, data);
                 break;
 
-            case RefreshAllRecord.sid :
+            case RefreshAllRecord.sid:
                 retval = new RefreshAllRecord(rectype, size, data);
                 break;
 
-            case BookBoolRecord.sid :
+            case BookBoolRecord.sid:
                 retval = new BookBoolRecord(rectype, size, data);
                 break;
 
-            case FontRecord.sid :
+            case FontRecord.sid:
                 retval = new FontRecord(rectype, size, data);
                 break;
 
-            case FormatRecord.sid :
+            case FormatRecord.sid:
                 retval = new FormatRecord(rectype, size, data);
                 break;
 
-            case ExtendedFormatRecord.sid :
+            case ExtendedFormatRecord.sid:
                 retval = new ExtendedFormatRecord(rectype, size, data);
                 break;
 
-            case StyleRecord.sid :
+            case StyleRecord.sid:
                 retval = new StyleRecord(rectype, size, data);
                 break;
 
-            case UseSelFSRecord.sid :
+            case UseSelFSRecord.sid:
                 retval = new UseSelFSRecord(rectype, size, data);
                 break;
 
-            case BoundSheetRecord.sid :
+            case BoundSheetRecord.sid:
                 retval = new BoundSheetRecord(rectype, size, data);
                 break;
 
-            case CountryRecord.sid :
+            case CountryRecord.sid:
                 retval = new CountryRecord(rectype, size, data);
                 break;
 
-            case SSTRecord.sid :
+            case SSTRecord.sid:
                 retval = new SSTRecord(rectype, size, data);
                 break;
 
-            case ExtSSTRecord.sid :
+            case ExtSSTRecord.sid:
                 retval = new ExtSSTRecord(rectype, size, data);
                 break;
 
-            case EOFRecord.sid :
+            case EOFRecord.sid:
                 retval = new EOFRecord(rectype, size, data);
                 break;
 
-            case IndexRecord.sid :
+            case IndexRecord.sid:
                 retval = new IndexRecord(rectype, size, data);
                 break;
 
-            case CalcModeRecord.sid :
+            case CalcModeRecord.sid:
                 retval = new CalcModeRecord(rectype, size, data);
                 break;
 
-            case CalcCountRecord.sid :
+            case CalcCountRecord.sid:
                 retval = new CalcCountRecord(rectype, size, data);
                 break;
 
-            case RefModeRecord.sid :
+            case RefModeRecord.sid:
                 retval = new RefModeRecord(rectype, size, data);
                 break;
 
-            case IterationRecord.sid :
+            case IterationRecord.sid:
                 retval = new IterationRecord(rectype, size, data);
                 break;
 
-            case DeltaRecord.sid :
+            case DeltaRecord.sid:
                 retval = new DeltaRecord(rectype, size, data);
                 break;
 
-            case SaveRecalcRecord.sid :
+            case SaveRecalcRecord.sid:
                 retval = new SaveRecalcRecord(rectype, size, data);
                 break;
 
-            case PrintHeadersRecord.sid :
+            case PrintHeadersRecord.sid:
                 retval = new PrintHeadersRecord(rectype, size, data);
                 break;
 
-            case PrintGridlinesRecord.sid :
+            case PrintGridlinesRecord.sid:
                 retval = new PrintGridlinesRecord(rectype, size, data);
                 break;
 
-            case GridsetRecord.sid :
+            case GridsetRecord.sid:
                 retval = new GridsetRecord(rectype, size, data);
                 break;
 
-            case GutsRecord.sid :
+            case GutsRecord.sid:
                 retval = new GutsRecord(rectype, size, data);
                 break;
 
-            case DefaultRowHeightRecord.sid :
+            case DefaultRowHeightRecord.sid:
                 retval = new DefaultRowHeightRecord(rectype, size, data);
                 break;
 
-            case WSBoolRecord.sid :
+            case WSBoolRecord.sid:
                 retval = new WSBoolRecord(rectype, size, data);
                 break;
 
-            case HeaderRecord.sid :
+            case HeaderRecord.sid:
                 retval = new HeaderRecord(rectype, size, data);
                 break;
 
-            case FooterRecord.sid :
+            case FooterRecord.sid:
                 retval = new FooterRecord(rectype, size, data);
                 break;
 
-            case HCenterRecord.sid :
+            case HCenterRecord.sid:
                 retval = new HCenterRecord(rectype, size, data);
                 break;
 
-            case VCenterRecord.sid :
+            case VCenterRecord.sid:
                 retval = new VCenterRecord(rectype, size, data);
                 break;
 
-            case PrintSetupRecord.sid :
+            case PrintSetupRecord.sid:
                 retval = new PrintSetupRecord(rectype, size, data);
                 break;
 
-            case DefaultColWidthRecord.sid :
+            case DefaultColWidthRecord.sid:
                 retval = new DefaultColWidthRecord(rectype, size, data);
                 break;
 
-            case DimensionsRecord.sid :
+            case DimensionsRecord.sid:
                 retval = new DimensionsRecord(rectype, size, data);
                 break;
 
-            case RowRecord.sid :
+            case RowRecord.sid:
                 retval = new RowRecord(rectype, size, data);
                 break;
 
-            case LabelSSTRecord.sid :
+            case LabelSSTRecord.sid:
                 retval = new LabelSSTRecord(rectype, size, data);
                 break;
 
-            case RKRecord.sid :
+            case RKRecord.sid:
                 retval = new RKRecord(rectype, size, data);
                 break;
 
-            case NumberRecord.sid :
+            case NumberRecord.sid:
                 retval = new NumberRecord(rectype, size, data);
                 break;
 
-            case DBCellRecord.sid :
+            case DBCellRecord.sid:
                 retval = new DBCellRecord(rectype, size, data);
                 break;
 
-            case WindowTwoRecord.sid :
+            case WindowTwoRecord.sid:
                 retval = new WindowTwoRecord(rectype, size, data);
                 break;
 
-            case SelectionRecord.sid :
+            case SelectionRecord.sid:
                 retval = new SelectionRecord(rectype, size, data);
                 break;
 
-            case ContinueRecord.sid :
+            case ContinueRecord.sid:
                 retval = new ContinueRecord(rectype, size, data);
                 break;
 
-            case LabelRecord.sid :
+            case LabelRecord.sid:
                 retval = new LabelRecord(rectype, size, data);
                 break;
 
-            case MulRKRecord.sid :
+            case MulRKRecord.sid:
                 retval = new MulRKRecord(rectype, size, data);
                 break;
 
-            case MulBlankRecord.sid :
+            case MulBlankRecord.sid:
                 retval = new MulBlankRecord(rectype, size, data);
                 break;
 
-            case BlankRecord.sid :
+            case BlankRecord.sid:
                 retval = new BlankRecord(rectype, size, data);
                 break;
 
-            case BoolErrRecord.sid :
+            case BoolErrRecord.sid:
                 retval = new BoolErrRecord(rectype, size, data);
                 break;
 
-            case ColumnInfoRecord.sid :
+            case ColumnInfoRecord.sid:
                 retval = new ColumnInfoRecord(rectype, size, data);
                 break;
 
-            case MergeCellsRecord.sid :
+            case MergeCellsRecord.sid:
                 retval = new MergeCellsRecord(rectype, size, data);
                 break;
 
-            case AreaRecord.sid :
+            case AreaRecord.sid:
                 retval = new AreaRecord(rectype, size, data);
                 break;
 
-            case DataFormatRecord.sid :
+            case DataFormatRecord.sid:
                 retval = new DataFormatRecord(rectype, size, data);
                 break;
 
-            case BarRecord.sid :
+            case BarRecord.sid:
                 retval = new BarRecord(rectype, size, data);
                 break;
 
-            case DatRecord.sid :
+            case DatRecord.sid:
                 retval = new DatRecord(rectype, size, data);
                 break;
 
-            case PlotGrowthRecord.sid :
+            case PlotGrowthRecord.sid:
                 retval = new PlotGrowthRecord(rectype, size, data);
                 break;
 
-            case UnitsRecord.sid :
+            case UnitsRecord.sid:
                 retval = new UnitsRecord(rectype, size, data);
                 break;
 
-            case FrameRecord.sid :
+            case FrameRecord.sid:
                 retval = new FrameRecord(rectype, size, data);
                 break;
 
-            case ValueRangeRecord.sid :
+            case ValueRangeRecord.sid:
                 retval = new ValueRangeRecord(rectype, size, data);
                 break;
 
-            case SeriesListRecord.sid :
+            case SeriesListRecord.sid:
                 retval = new SeriesListRecord(rectype, size, data);
                 break;
 
-            case FontBasisRecord.sid :
+            case FontBasisRecord.sid:
                 retval = new FontBasisRecord(rectype, size, data);
                 break;
 
-            case FontIndexRecord.sid :
+            case FontIndexRecord.sid:
                 retval = new FontIndexRecord(rectype, size, data);
                 break;
 
-            case LineFormatRecord.sid :
+            case LineFormatRecord.sid:
                 retval = new LineFormatRecord(rectype, size, data);
                 break;
 
-            case AreaFormatRecord.sid :
+            case AreaFormatRecord.sid:
                 retval = new AreaFormatRecord(rectype, size, data);
                 break;
 
-            case LinkedDataRecord.sid :
+            case LinkedDataRecord.sid:
                 retval = new LinkedDataRecord(rectype, size, data);
                 break;
 
@@ -643,10 +636,10 @@ public class BiffViewer
         }
         if (realretval == null)
         {
-            realretval      = new Record[ 1 ];
-            realretval[ 0 ] = retval;
+            realretval = new Record[1];
+            realretval[0] = retval;
             System.out.println("recordid = 0x" + Integer.toHexString(rectype) + ", size =" + size);
-            System.out.println(realretval[ 0 ].toString());
+            System.out.println(realretval[0].toString());
         }
         return realretval;
     }
@@ -678,34 +671,32 @@ public class BiffViewer
      *
      */
 
-    public static void main(String [] args)
+    public static void main(String[] args)
     {
         try
         {
             BiffViewer viewer = new BiffViewer(args);
 
-            if ((args.length > 1) && args[ 1 ].equals("on"))
+            if ((args.length > 1) && args[1].equals("on"))
             {
                 viewer.setDump(true);
             }
-            if ((args.length > 1) && args[ 1 ].equals("bfd"))
+            if ((args.length > 1) && args[1].equals("bfd"))
             {
-                POIFSFileSystem fs     =
-                    new POIFSFileSystem(new FileInputStream(args[ 0 ]));
-                InputStream     stream =
-                    fs.createDocumentInputStream("Workbook");
-                int             size   = stream.available();
-                byte[]          data   = new byte[ size ];
+                POIFSFileSystem fs =
+                        new POIFSFileSystem(new FileInputStream(args[0]));
+                InputStream stream =
+                        fs.createDocumentInputStream("Workbook");
+                int size = stream.available();
+                byte[] data = new byte[size];
 
                 stream.read(data);
                 HexDump.dump(data, 0, System.out, 0);
-            }
-            else
+            } else
             {
                 viewer.run();
             }
-        }
-        catch (Exception e)
+        } catch (Exception e)
         {
             e.printStackTrace();
         }