]> source.dussan.org Git - poi.git/commitdiff
Refactoring Record.serialize methods
authorJosh Micich <josh@apache.org>
Tue, 18 Nov 2008 18:49:19 +0000 (18:49 +0000)
committerJosh Micich <josh@apache.org>
Tue, 18 Nov 2008 18:49:19 +0000 (18:49 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@718681 13f79535-47bb-0310-9956-ffa450edef68

94 files changed:
src/java/org/apache/poi/hssf/record/AreaFormatRecord.java
src/java/org/apache/poi/hssf/record/AreaRecord.java
src/java/org/apache/poi/hssf/record/AxisLineFormatRecord.java
src/java/org/apache/poi/hssf/record/AxisOptionsRecord.java
src/java/org/apache/poi/hssf/record/AxisParentRecord.java
src/java/org/apache/poi/hssf/record/AxisRecord.java
src/java/org/apache/poi/hssf/record/AxisUsedRecord.java
src/java/org/apache/poi/hssf/record/BOFRecord.java
src/java/org/apache/poi/hssf/record/BackupRecord.java
src/java/org/apache/poi/hssf/record/BarRecord.java
src/java/org/apache/poi/hssf/record/BeginRecord.java
src/java/org/apache/poi/hssf/record/BlankRecord.java
src/java/org/apache/poi/hssf/record/BookBoolRecord.java
src/java/org/apache/poi/hssf/record/BoolErrRecord.java
src/java/org/apache/poi/hssf/record/BottomMarginRecord.java
src/java/org/apache/poi/hssf/record/CRNCountRecord.java
src/java/org/apache/poi/hssf/record/CalcCountRecord.java
src/java/org/apache/poi/hssf/record/CalcModeRecord.java
src/java/org/apache/poi/hssf/record/CategorySeriesAxisRecord.java
src/java/org/apache/poi/hssf/record/ChartFormatRecord.java
src/java/org/apache/poi/hssf/record/ChartRecord.java
src/java/org/apache/poi/hssf/record/CodepageRecord.java
src/java/org/apache/poi/hssf/record/ColumnInfoRecord.java
src/java/org/apache/poi/hssf/record/CountryRecord.java
src/java/org/apache/poi/hssf/record/DSFRecord.java
src/java/org/apache/poi/hssf/record/DatRecord.java
src/java/org/apache/poi/hssf/record/DataFormatRecord.java
src/java/org/apache/poi/hssf/record/DateWindow1904Record.java
src/java/org/apache/poi/hssf/record/DefaultColWidthRecord.java
src/java/org/apache/poi/hssf/record/DefaultDataLabelTextPropertiesRecord.java
src/java/org/apache/poi/hssf/record/DefaultRowHeightRecord.java
src/java/org/apache/poi/hssf/record/DeltaRecord.java
src/java/org/apache/poi/hssf/record/DimensionsRecord.java
src/java/org/apache/poi/hssf/record/EOFRecord.java
src/java/org/apache/poi/hssf/record/EndRecord.java
src/java/org/apache/poi/hssf/record/ExtendedFormatRecord.java
src/java/org/apache/poi/hssf/record/FilePassRecord.java
src/java/org/apache/poi/hssf/record/FnGroupCountRecord.java
src/java/org/apache/poi/hssf/record/FontBasisRecord.java
src/java/org/apache/poi/hssf/record/FontIndexRecord.java
src/java/org/apache/poi/hssf/record/FrameRecord.java
src/java/org/apache/poi/hssf/record/GridsetRecord.java
src/java/org/apache/poi/hssf/record/GutsRecord.java
src/java/org/apache/poi/hssf/record/HCenterRecord.java
src/java/org/apache/poi/hssf/record/HideObjRecord.java
src/java/org/apache/poi/hssf/record/InterfaceEndRecord.java
src/java/org/apache/poi/hssf/record/InterfaceHdrRecord.java
src/java/org/apache/poi/hssf/record/IterationRecord.java
src/java/org/apache/poi/hssf/record/LabelSSTRecord.java
src/java/org/apache/poi/hssf/record/LeftMarginRecord.java
src/java/org/apache/poi/hssf/record/LegendRecord.java
src/java/org/apache/poi/hssf/record/LineFormatRecord.java
src/java/org/apache/poi/hssf/record/MMSRecord.java
src/java/org/apache/poi/hssf/record/NumberFormatIndexRecord.java
src/java/org/apache/poi/hssf/record/NumberRecord.java
src/java/org/apache/poi/hssf/record/ObjectLinkRecord.java
src/java/org/apache/poi/hssf/record/ObjectProtectRecord.java
src/java/org/apache/poi/hssf/record/PaneRecord.java
src/java/org/apache/poi/hssf/record/PasswordRecord.java
src/java/org/apache/poi/hssf/record/PasswordRev4Record.java
src/java/org/apache/poi/hssf/record/PlotAreaRecord.java
src/java/org/apache/poi/hssf/record/PlotGrowthRecord.java
src/java/org/apache/poi/hssf/record/PrecisionRecord.java
src/java/org/apache/poi/hssf/record/PrintGridlinesRecord.java
src/java/org/apache/poi/hssf/record/PrintHeadersRecord.java
src/java/org/apache/poi/hssf/record/PrintSetupRecord.java
src/java/org/apache/poi/hssf/record/ProtectRecord.java
src/java/org/apache/poi/hssf/record/ProtectionRev4Record.java
src/java/org/apache/poi/hssf/record/RefModeRecord.java
src/java/org/apache/poi/hssf/record/RefreshAllRecord.java
src/java/org/apache/poi/hssf/record/RightMarginRecord.java
src/java/org/apache/poi/hssf/record/RowRecord.java
src/java/org/apache/poi/hssf/record/SCLRecord.java
src/java/org/apache/poi/hssf/record/SaveRecalcRecord.java
src/java/org/apache/poi/hssf/record/ScenarioProtectRecord.java
src/java/org/apache/poi/hssf/record/SeriesChartGroupIndexRecord.java
src/java/org/apache/poi/hssf/record/SeriesIndexRecord.java
src/java/org/apache/poi/hssf/record/SeriesLabelsRecord.java
src/java/org/apache/poi/hssf/record/SeriesRecord.java
src/java/org/apache/poi/hssf/record/SeriesToChartGroupRecord.java
src/java/org/apache/poi/hssf/record/SheetPropertiesRecord.java
src/java/org/apache/poi/hssf/record/TextRecord.java
src/java/org/apache/poi/hssf/record/TickRecord.java
src/java/org/apache/poi/hssf/record/TopMarginRecord.java
src/java/org/apache/poi/hssf/record/UncalcedRecord.java
src/java/org/apache/poi/hssf/record/UnitsRecord.java
src/java/org/apache/poi/hssf/record/UseSelFSRecord.java
src/java/org/apache/poi/hssf/record/VCenterRecord.java
src/java/org/apache/poi/hssf/record/ValueRangeRecord.java
src/java/org/apache/poi/hssf/record/WSBoolRecord.java
src/java/org/apache/poi/hssf/record/WindowOneRecord.java
src/java/org/apache/poi/hssf/record/WindowProtectRecord.java
src/java/org/apache/poi/hssf/record/WindowTwoRecord.java
src/java/org/apache/poi/hssf/record/WriteProtectRecord.java

index 9e3d2ea1101938eb9e3221d929434b6588d51cdc..ef20677a280d24be0ddfa324ea718fd6c845c6d0 100644 (file)
@@ -20,14 +20,14 @@ package org.apache.poi.hssf.record;
 import org.apache.poi.util.BitField;
 import org.apache.poi.util.BitFieldFactory;
 import org.apache.poi.util.HexDump;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * The area format record is used to define the colours and patterns for an area.<p/>
  * 
  * @author Glen Stampoultzis (glens at apache.org)
  */
-public final class AreaFormatRecord extends Record {
+public final class AreaFormatRecord extends StandardRecord {
     public final static short sid = 0x100A;
     
     private static final BitField automatic = BitFieldFactory.getInstance(0x1);
@@ -93,21 +93,13 @@ public final class AreaFormatRecord extends Record {
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte[] data)
-    {
-        int pos = 0;
-
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset, (short)(getRecordSize() - 4));
-
-        LittleEndian.putInt(data, 4 + offset + pos, field_1_foregroundColor);
-        LittleEndian.putInt(data, 8 + offset + pos, field_2_backgroundColor);
-        LittleEndian.putShort(data, 12 + offset + pos, field_3_pattern);
-        LittleEndian.putShort(data, 14 + offset + pos, field_4_formatFlags);
-        LittleEndian.putShort(data, 16 + offset + pos, field_5_forecolorIndex);
-        LittleEndian.putShort(data, 18 + offset + pos, field_6_backcolorIndex);
-
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeInt(field_1_foregroundColor);
+        out.writeInt(field_2_backgroundColor);
+        out.writeShort(field_3_pattern);
+        out.writeShort(field_4_formatFlags);
+        out.writeShort(field_5_forecolorIndex);
+        out.writeShort(field_6_backcolorIndex);
     }
 
     protected int getDataSize() {
index 85f2ea172b78a84d0a19a633a41828e3c75e94c4..82c3ec249d5f56b5a819305a797e8c32b4733f3a 100644 (file)
@@ -20,14 +20,14 @@ package org.apache.poi.hssf.record;
 import org.apache.poi.util.BitField;
 import org.apache.poi.util.BitFieldFactory;
 import org.apache.poi.util.HexDump;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * The area record is used to define a area chart.<p/>
  * 
  * @author Glen Stampoultzis (glens at apache.org)
  */
-public final class AreaRecord extends Record {
+public final class AreaRecord extends StandardRecord {
     public final static short      sid                             = 0x101A;
     private  short      field_1_formatFlags;
     private static final BitField stacked             = BitFieldFactory.getInstance(0x1);
@@ -63,16 +63,8 @@ public final class AreaRecord extends Record {
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte[] data)
-    {
-        int pos = 0;
-
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset, (short)(getRecordSize() - 4));
-
-        LittleEndian.putShort(data, 4 + offset + pos, field_1_formatFlags);
-
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(field_1_formatFlags);
     }
 
     protected int getDataSize() {
index dbcd14e497c333a8a9e96a8ec26f865af1f8c514..400bb1c580590c28b4fe89f8c7e64c9b8e92864c 100644 (file)
 package org.apache.poi.hssf.record;
 
 import org.apache.poi.util.HexDump;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * The axis line format record defines the axis type details.<p/>
  * 
  * @author Glen Stampoultzis (glens at apache.org)
  */
-public final class AxisLineFormatRecord extends Record {
+public final class AxisLineFormatRecord extends StandardRecord {
     public final static short      sid                             = 0x1021;
     private  short      field_1_axisType;
     public final static short       AXIS_TYPE_AXIS_LINE            = 0;
@@ -58,16 +58,8 @@ public final class AxisLineFormatRecord extends Record {
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte[] data)
-    {
-        int pos = 0;
-
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset, (short)(getRecordSize() - 4));
-
-        LittleEndian.putShort(data, 4 + offset + pos, field_1_axisType);
-
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(field_1_axisType);
     }
 
     protected int getDataSize() {
index c630cfe8235b56352c887a4666313738cea14f92..6e7ef699ec4421a8c5dcaa41684e6a00e44d6322 100644 (file)
@@ -20,14 +20,14 @@ package org.apache.poi.hssf.record;
 import org.apache.poi.util.BitField;
 import org.apache.poi.util.BitFieldFactory;
 import org.apache.poi.util.HexDump;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * The axis options record provides unit information and other various tidbits about the axis.<p/>
  * 
  * @author Andrew C. Oliver(acoliver at apache.org)
  */
-public final class AxisOptionsRecord extends Record {
+public final class AxisOptionsRecord extends StandardRecord {
     public final static short sid = 0x1062;
 
     private static final BitField defaultMinimum      = BitFieldFactory.getInstance(0x01);
@@ -122,24 +122,16 @@ public final class AxisOptionsRecord extends Record {
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte[] data)
-    {
-        int pos = 0;
-
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset, (short)(getRecordSize() - 4));
-
-        LittleEndian.putShort(data, 4 + offset + pos, field_1_minimumCategory);
-        LittleEndian.putShort(data, 6 + offset + pos, field_2_maximumCategory);
-        LittleEndian.putShort(data, 8 + offset + pos, field_3_majorUnitValue);
-        LittleEndian.putShort(data, 10 + offset + pos, field_4_majorUnit);
-        LittleEndian.putShort(data, 12 + offset + pos, field_5_minorUnitValue);
-        LittleEndian.putShort(data, 14 + offset + pos, field_6_minorUnit);
-        LittleEndian.putShort(data, 16 + offset + pos, field_7_baseUnit);
-        LittleEndian.putShort(data, 18 + offset + pos, field_8_crossingPoint);
-        LittleEndian.putShort(data, 20 + offset + pos, field_9_options);
-
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(field_1_minimumCategory);
+        out.writeShort(field_2_maximumCategory);
+        out.writeShort(field_3_majorUnitValue);
+        out.writeShort(field_4_majorUnit);
+        out.writeShort(field_5_minorUnitValue);
+        out.writeShort(field_6_minorUnit);
+        out.writeShort(field_7_baseUnit);
+        out.writeShort(field_8_crossingPoint);
+        out.writeShort(field_9_options);
     }
 
     protected int getDataSize() {
index 0f7b8dba310e65b808f7d07ec245776b5b4cbaae..e40e9ae00a821e160de00622bf50d510884c2345 100644 (file)
 package org.apache.poi.hssf.record;
 
 import org.apache.poi.util.HexDump;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * The axis size and location<p/>
  * 
  * @author Glen Stampoultzis (glens at apache.org)
  */
-public final class AxisParentRecord extends Record {
+public final class AxisParentRecord extends StandardRecord {
     public final static short      sid                             = 0x1041;
     private  short      field_1_axisType;
     public final static short       AXIS_TYPE_MAIN                 = 0;
@@ -80,20 +80,12 @@ public final class AxisParentRecord extends Record {
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte[] data)
-    {
-        int pos = 0;
-
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset, (short)(getRecordSize() - 4));
-
-        LittleEndian.putShort(data, 4 + offset + pos, field_1_axisType);
-        LittleEndian.putInt(data, 6 + offset + pos, field_2_x);
-        LittleEndian.putInt(data, 10 + offset + pos, field_3_y);
-        LittleEndian.putInt(data, 14 + offset + pos, field_4_width);
-        LittleEndian.putInt(data, 18 + offset + pos, field_5_height);
-
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(field_1_axisType);
+        out.writeInt(field_2_x);
+        out.writeInt(field_3_y);
+        out.writeInt(field_4_width);
+        out.writeInt(field_5_height);
     }
 
     protected int getDataSize() {
index 2c989ce4269315e4a04e908cf42274699d866029..f12b30b88e901df98880bde18effaad68d5053fe 100644 (file)
 package org.apache.poi.hssf.record;
 
 import org.apache.poi.util.HexDump;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * The axis record defines the type of an axis.<p/>
  * 
  * @author Glen Stampoultzis (glens at apache.org)
  */
-public final class AxisRecord extends Record {
+public final class AxisRecord extends StandardRecord {
     public final static short      sid                             = 0x101d;
     private  short      field_1_axisType;
     public final static short       AXIS_TYPE_CATEGORY_OR_X_AXIS   = 0;
@@ -81,20 +81,12 @@ public final class AxisRecord extends Record {
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte[] data)
-    {
-        int pos = 0;
-
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset, (short)(getRecordSize() - 4));
-
-        LittleEndian.putShort(data, 4 + offset + pos, field_1_axisType);
-        LittleEndian.putInt(data, 6 + offset + pos, field_2_reserved1);
-        LittleEndian.putInt(data, 10 + offset + pos, field_3_reserved2);
-        LittleEndian.putInt(data, 14 + offset + pos, field_4_reserved3);
-        LittleEndian.putInt(data, 18 + offset + pos, field_5_reserved4);
-
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(field_1_axisType);
+        out.writeInt(field_2_reserved1);
+        out.writeInt(field_3_reserved2);
+        out.writeInt(field_4_reserved3);
+        out.writeInt(field_5_reserved4);
     }
 
     protected int getDataSize() {
index 76e6e655144dc73cc1e52065016209be4b11d56a..4e860f1b2c8315d526256dca47a6651409108ba9 100644 (file)
 package org.apache.poi.hssf.record;
 
 import org.apache.poi.util.HexDump;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * The number of axes used on a chart.<p/>
  * 
  * @author Glen Stampoultzis (glens at apache.org)
  */
-public final class AxisUsedRecord extends Record {
+public final class AxisUsedRecord extends StandardRecord {
     public final static short      sid                             = 0x1046;
     private  short      field_1_numAxis;
 
@@ -54,16 +54,8 @@ public final class AxisUsedRecord extends Record {
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte[] data)
-    {
-        int pos = 0;
-
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset, (short)(getRecordSize() - 4));
-
-        LittleEndian.putShort(data, 4 + offset + pos, field_1_numAxis);
-
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(field_1_numAxis);
     }
 
     protected int getDataSize() {
index bd71f532861667b1e1c5065a6e4420c8e6cf4d8c..084227d55ee1fbacf72c46785c150ee401e68e68 100644 (file)
@@ -19,7 +19,7 @@
 
 package org.apache.poi.hssf.record;
 
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * Title: Beginning Of File<P>
@@ -32,8 +32,8 @@ import org.apache.poi.util.LittleEndian;
  * @version 2.0-pre
  */
 
-public class BOFRecord
-    extends Record
+public final class BOFRecord
+    extends StandardRecord
 {
 
     /**
@@ -272,18 +272,13 @@ public class BOFRecord
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte [] data)
-    {
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset,
-                              (( short ) 0x10));   // 16 byte length
-        LittleEndian.putShort(data, 4 + offset, getVersion());
-        LittleEndian.putShort(data, 6 + offset, getType());
-        LittleEndian.putShort(data, 8 + offset, getBuild());
-        LittleEndian.putShort(data, 10 + offset, getBuildYear());
-        LittleEndian.putInt(data, 12 + offset, getHistoryBitMask());
-        LittleEndian.putInt(data, 16 + offset, getRequiredVersion());
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(getVersion());
+        out.writeShort(getType());
+        out.writeShort(getBuild());
+        out.writeShort(getBuildYear());
+        out.writeInt(getHistoryBitMask());
+        out.writeInt(getRequiredVersion());
     }
 
     protected int getDataSize() {
index f2ee6ccf1458a6a056a55ada70a056a38919bbd6..0381b22779c74d097687064a0ec176f8becacb36 100644 (file)
@@ -19,7 +19,7 @@
 
 package org.apache.poi.hssf.record;
 
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * Title:        Backup Record <P>
@@ -30,8 +30,8 @@ import org.apache.poi.util.LittleEndian;
  * @version 2.0-pre
  */
 
-public class BackupRecord
-    extends Record
+public final class BackupRecord
+    extends StandardRecord
 {
     public final static short sid = 0x40;
     private short             field_1_backup;   // = 0;
@@ -78,13 +78,8 @@ public class BackupRecord
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte [] data)
-    {
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset,
-                              (( short ) 0x02));   // 2 bytes (6 total)
-        LittleEndian.putShort(data, 4 + offset, getBackup());
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(getBackup());
     }
 
     protected int getDataSize() {
index 7b62e649eeb15b2b10c3d58bdaa8789cf0168058..4f4aa2f6940d40e8304f919e452d8bb1fea1fa8a 100644 (file)
@@ -20,14 +20,14 @@ package org.apache.poi.hssf.record;
 import org.apache.poi.util.BitField;
 import org.apache.poi.util.BitFieldFactory;
 import org.apache.poi.util.HexDump;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * The bar record is used to define a bar chart.<p/>
  * 
  * @author Glen Stampoultzis (glens at apache.org)
  */
-public final class BarRecord extends Record {
+public final class BarRecord extends StandardRecord {
     public final static short sid = 0x1017;
 
     private static final BitField   horizontal          = BitFieldFactory.getInstance(0x1);
@@ -78,18 +78,10 @@ public final class BarRecord extends Record {
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte[] data)
-    {
-        int pos = 0;
-
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset, (short)(getRecordSize() - 4));
-
-        LittleEndian.putShort(data, 4 + offset + pos, field_1_barSpace);
-        LittleEndian.putShort(data, 6 + offset + pos, field_2_categorySpace);
-        LittleEndian.putShort(data, 8 + offset + pos, field_3_formatFlags);
-
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(field_1_barSpace);
+        out.writeShort(field_2_categorySpace);
+        out.writeShort(field_3_formatFlags);
     }
 
     protected int getDataSize() {
index 94f78f7f8291a7bb71dccdf5f20e9f9065f65796..37d1663ff78b0effd16c59cae082013252460f3a 100644 (file)
@@ -17,7 +17,7 @@
 
 package org.apache.poi.hssf.record;
 
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * The begin record defines the start of a block of records for a (grpahing
@@ -27,7 +27,7 @@ import org.apache.poi.util.LittleEndian;
  *
  * @author Glen Stampoultzis (glens at apache.org)
  */
-public class BeginRecord extends Record {
+public final class BeginRecord extends StandardRecord {
     public static final short sid = 0x1033;
 
     public BeginRecord()
@@ -50,11 +50,7 @@ public class BeginRecord extends Record {
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte [] data)
-    {
-        LittleEndian.putUShort(data, 0 + offset, sid);
-        LittleEndian.putUShort(data, 2 + offset, 0);   // no record info
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
     }
 
     protected int getDataSize() {
index 424f66c4c29ebec50d48b4142c7f5f89c5d8a8df..8c8a28d97a32a4e0e199027f3581c1e7ec0f7509 100644 (file)
@@ -18,7 +18,7 @@
 package org.apache.poi.hssf.record;
 
 import org.apache.poi.util.HexDump;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * Title:        Blank cell record (0x0201) <P>
@@ -28,7 +28,7 @@ import org.apache.poi.util.LittleEndian;
  * @author Jason Height (jheight at chariot dot net dot au)
  * @version 2.0-pre
  */
-public final class BlankRecord extends Record implements CellValueRecordInterface {
+public final class BlankRecord extends StandardRecord implements CellValueRecordInterface {
     public final static short sid = 0x0201;
     private int             field_1_row;
     private short             field_2_col;
@@ -127,21 +127,10 @@ public final class BlankRecord extends Record implements CellValueRecordInterfac
         return sb.toString();
     }
 
-    /**
-     * called by the class that is responsible for writing this sucker.
-     * Subclasses should implement this so that their data is passed back in a
-     * byte array.
-     *
-     * @return byte array containing instance data
-     */
-    public int serialize(int offset, byte [] data)
-    {
-        LittleEndian.putUShort(data, 0 + offset, sid);
-        LittleEndian.putUShort(data, 2 + offset, 6);
-        LittleEndian.putUShort(data, 4 + offset, getRow());
-        LittleEndian.putUShort(data, 6 + offset, getColumn());
-        LittleEndian.putUShort(data, 8 + offset, getXFIndex());
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(getRow());
+        out.writeShort(getColumn());
+        out.writeShort(getXFIndex());
     }
 
     protected int getDataSize() {
index 072f58bec88c3e9535b9ce3186100f736ecbbbe3..652e2ec038f991671c81c82e6efc022893432bfc 100644 (file)
@@ -19,7 +19,7 @@
 
 package org.apache.poi.hssf.record;
 
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * Title:        Save External Links record (BookBool)<P>
@@ -30,8 +30,8 @@ import org.apache.poi.util.LittleEndian;
  * @version 2.0-pre
  */
 
-public class BookBoolRecord
-    extends Record
+public final class BookBoolRecord
+    extends StandardRecord
 {
     public final static short sid = 0xDA;
     private short             field_1_save_link_values;
@@ -78,13 +78,8 @@ public class BookBoolRecord
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte [] data)
-    {
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset,
-                              (( short ) 0x02));   // 2 bytes (6 total)
-        LittleEndian.putShort(data, 4 + offset, field_1_save_link_values);
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(field_1_save_link_values);
     }
 
     protected int getDataSize() {
index e0eb26d5232a922d76f7592076561f0daf788fe0..8813e2f76f2f774f1aa61e32a3b3e25c3c07eeb7 100644 (file)
@@ -18,7 +18,7 @@
 package org.apache.poi.hssf.record;
 
 import org.apache.poi.util.HexDump;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * Creates new BoolErrRecord. (0x0205) <P>
@@ -27,7 +27,7 @@ import org.apache.poi.util.LittleEndian;
  * @author Jason Height (jheight at chariot dot net dot au)
  * @version 2.0-pre
  */
-public final class BoolErrRecord extends Record implements CellValueRecordInterface {
+public final class BoolErrRecord extends StandardRecord implements CellValueRecordInterface {
     public final static short sid = 0x0205;
     private int               field_1_row;
     private short             field_2_column;
@@ -187,23 +187,12 @@ public final class BoolErrRecord extends Record implements CellValueRecordInterf
         return sb.toString();
     }
 
-    /**
-     * called by the class that is responsible for writing this sucker.
-     * Subclasses should implement this so that their data is passed back in a
-     * byte array.
-     * 
-     * @return byte array containing instance data
-     */
-    public int serialize(int offset, byte [] data)
-    {
-        LittleEndian.putUShort(data, 0 + offset, sid);
-        LittleEndian.putUShort(data, 2 + offset, 8);
-        LittleEndian.putUShort(data, 4 + offset, getRow());
-        LittleEndian.putUShort(data, 6 + offset, getColumn());
-        LittleEndian.putUShort(data, 8 + offset, getXFIndex());
-        data[ 10 + offset ] = field_4_bBoolErr;
-        data[ 11 + offset ] = field_5_fError;
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(getRow());
+        out.writeShort(getColumn());
+        out.writeShort(getXFIndex());
+        out.writeByte(field_4_bBoolErr);
+        out.writeByte(field_5_fError);
     }
 
     protected int getDataSize() {
index f0b7f7d2d15c825ba4ec220b9154355dd6a65755..406c45a4643287bee9329fce2b13a0fbc2fb6b4b 100644 (file)
@@ -27,7 +27,7 @@ import org.apache.poi.util.*;
  * 
  * @author Shawn Laubach (slaubach at apache dot org)
  */
-public final class BottomMarginRecord extends Record implements Margin {
+public final class BottomMarginRecord extends StandardRecord implements Margin {
     public final static short sid = 0x29;
     private double field_1_margin;
 
@@ -51,12 +51,8 @@ public final class BottomMarginRecord extends Record implements Margin {
         return buffer.toString();
     }
 
-    public int serialize( int offset, byte[] data )
-    {
-        LittleEndian.putShort( data, 0 + offset, sid );
-        LittleEndian.putShort( data, 2 + offset, (short) ( getRecordSize() - 4 ) );
-        LittleEndian.putDouble( data, 4 + offset, field_1_margin );
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeDouble(field_1_margin);
     }
 
     protected int getDataSize() {
@@ -91,4 +87,4 @@ public final class BottomMarginRecord extends Record implements Margin {
         return rec;
     }
 
-}  // END OF C
\ No newline at end of file
+}  // END OF 
\ No newline at end of file
index f1560deb1b5914f781edf16463e0d12ff3753749..88cebe27035d301da3dff49d62c72b175ddf424e 100755 (executable)
@@ -17,7 +17,7 @@
 
 package org.apache.poi.hssf.record;
 
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 /**
  * XCT - CRN Count <P>
  *
@@ -25,7 +25,7 @@ import org.apache.poi.util.LittleEndian;
  *
  * @author Josh Micich
  */
-public final class CRNCountRecord extends Record {
+public final class CRNCountRecord extends StandardRecord {
        public final static short sid = 0x59;
 
        private static final short DATA_SIZE = 4;
@@ -63,12 +63,9 @@ public final class CRNCountRecord extends Record {
         return sb.toString();
        }
 
-       public int serialize(int offset, byte [] data) {
-               LittleEndian.putShort(data, 0 + offset, sid);
-               LittleEndian.putShort(data, 2 + offset, DATA_SIZE);
-               LittleEndian.putShort(data, 4 + offset, (short)field_1_number_crn_records);
-               LittleEndian.putShort(data, 6 + offset, (short)field_2_sheet_table_index);
-               return getRecordSize();
+       public void serialize(LittleEndianOutput out) {
+               out.writeShort((short)field_1_number_crn_records);
+               out.writeShort((short)field_2_sheet_table_index);
        }
        protected int getDataSize() {
                return DATA_SIZE;
index d2001f68d0896d41ff841f004065783e5d702a52..c36411788f76a51e9f5be612d3f578fccf044279 100644 (file)
@@ -19,7 +19,7 @@
 
 package org.apache.poi.hssf.record;
 
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * Title:        Calc Count Record
@@ -35,8 +35,8 @@ import org.apache.poi.util.LittleEndian;
  * @see org.apache.poi.hssf.record.CalcModeRecord
  */
 
-public class CalcCountRecord
-    extends Record
+public final class CalcCountRecord
+    extends StandardRecord
 {
     public final static short sid = 0xC;
     private short             field_1_iterations;
@@ -81,12 +81,8 @@ public class CalcCountRecord
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte [] data)
-    {
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset, ( short ) 0x2);
-        LittleEndian.putShort(data, 4 + offset, getIterations());
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(getIterations());
     }
 
     protected int getDataSize() {
index 73839d82aae73fc831b0dce864efa6927008bd6b..538856d57c9e99a16d314797e4e15512fcdb1309 100644 (file)
@@ -19,7 +19,7 @@
 
 package org.apache.poi.hssf.record;
 
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * Title:        Calc Mode Record<P>
@@ -33,8 +33,8 @@ import org.apache.poi.util.LittleEndian;
  * @see org.apache.poi.hssf.record.CalcCountRecord
  */
 
-public class CalcModeRecord
-    extends Record
+public final class CalcModeRecord
+    extends StandardRecord
 {
     public final static short sid                     = 0xD;
 
@@ -107,12 +107,8 @@ public class CalcModeRecord
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte [] data)
-    {
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset, ( short ) 0x2);
-        LittleEndian.putShort(data, 4 + offset, getCalcMode());
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(getCalcMode());
     }
 
     protected int getDataSize() {
index ec6a37e51e27876d6df1a6b017c4359f4ab23af4..c52e3de3bff58986bc4bd6aee37fad0be4688335 100644 (file)
@@ -20,14 +20,14 @@ package org.apache.poi.hssf.record;
 import org.apache.poi.util.BitField;
 import org.apache.poi.util.BitFieldFactory;
 import org.apache.poi.util.HexDump;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * This record refers to a category or series axis and is used to specify label/tickmark frequency.<p/>
  * 
  * @author Glen Stampoultzis (glens at apache.org)
  */
-public final class CategorySeriesAxisRecord extends Record {
+public final class CategorySeriesAxisRecord extends StandardRecord {
     public final static short sid = 0x1020;
 
     private static final BitField valueAxisCrossing = BitFieldFactory.getInstance(0x1);
@@ -82,19 +82,11 @@ public final class CategorySeriesAxisRecord extends Record {
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte[] data)
-    {
-        int pos = 0;
-
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset, (short)(getRecordSize() - 4));
-
-        LittleEndian.putShort(data, 4 + offset + pos, field_1_crossingPoint);
-        LittleEndian.putShort(data, 6 + offset + pos, field_2_labelFrequency);
-        LittleEndian.putShort(data, 8 + offset + pos, field_3_tickMarkFrequency);
-        LittleEndian.putShort(data, 10 + offset + pos, field_4_options);
-
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(field_1_crossingPoint);
+        out.writeShort(field_2_labelFrequency);
+        out.writeShort(field_3_tickMarkFrequency);
+        out.writeShort(field_4_options);
     }
 
     protected int getDataSize() {
index b39759fdc43fe4ebfad51eb352701e0d71846a2d..69a8a8281ea77fc46c4dbefa1aaddc36350e067f 100644 (file)
@@ -19,7 +19,7 @@ package org.apache.poi.hssf.record;
 
 import org.apache.poi.util.BitField;
 import org.apache.poi.util.BitFieldFactory;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * Class ChartFormatRecord
@@ -28,7 +28,7 @@ import org.apache.poi.util.LittleEndian;
  * @author Glen Stampoultzis (glens at apache.org)
  * @version %I%, %G%
  */
-public final class ChartFormatRecord extends Record {
+public final class ChartFormatRecord extends StandardRecord {
     public static final short sid = 0x1014;
 
     private static final BitField varyDisplayPattern = BitFieldFactory.getInstance(0x01);
@@ -72,17 +72,12 @@ public final class ChartFormatRecord extends Record {
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte [] data)
-    {
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset,
-                              (( short ) 22));   // 22 byte length
-        LittleEndian.putInt(data, 4 + offset, getXPosition());
-        LittleEndian.putInt(data, 8 + offset, getYPosition());
-        LittleEndian.putInt(data, 12 + offset, getWidth());
-        LittleEndian.putInt(data, 16 + offset, getHeight());
-        LittleEndian.putShort(data, 20 + offset, field5_grbit);
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeInt(getXPosition());
+        out.writeInt(getYPosition());
+        out.writeInt(getWidth());
+        out.writeInt(getHeight());
+        out.writeShort(field5_grbit);
     }
 
     protected int getDataSize() {
index e07cda58e8f10a06e0b216af30e008af55bb6b46..55ccab64077e20ebce7461d2bcf06db8dfc5558b 100644 (file)
 package org.apache.poi.hssf.record;
 
 import org.apache.poi.util.HexDump;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * The chart record is used to define the location and size of a chart.
  * @author Glen Stampoultzis (glens at apache.org)
  */
-public final class ChartRecord extends Record {
+public final class ChartRecord extends StandardRecord {
     public final static short      sid                             = 0x1002;
     private  int        field_1_x;
     private  int        field_2_y;
@@ -71,19 +71,11 @@ public final class ChartRecord extends Record {
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte[] data)
-    {
-        int pos = 0;
-
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset, (short)(getRecordSize() - 4));
-
-        LittleEndian.putInt(data, 4 + offset + pos, field_1_x);
-        LittleEndian.putInt(data, 8 + offset + pos, field_2_y);
-        LittleEndian.putInt(data, 12 + offset + pos, field_3_width);
-        LittleEndian.putInt(data, 16 + offset + pos, field_4_height);
-
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeInt(field_1_x);
+        out.writeInt(field_2_y);
+        out.writeInt(field_3_width);
+        out.writeInt(field_4_height);
     }
 
     protected int getDataSize() {
index 4e61500dbdd6ecb2ce286c786f3588efc2f98ceb..b317ca3369abaecf41b1a4b326000eac5831913d 100644 (file)
@@ -19,7 +19,7 @@
 
 package org.apache.poi.hssf.record;
 
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * Title: Codepage Record<P>
@@ -29,8 +29,8 @@ import org.apache.poi.util.LittleEndian;
  * @version 2.0-pre
  */
 
-public class CodepageRecord
-    extends Record
+public final class CodepageRecord
+    extends StandardRecord
 {
     public final static short sid = 0x42;
     private short             field_1_codepage;   // = 0;
@@ -87,13 +87,8 @@ public class CodepageRecord
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte [] data)
-    {
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset,
-                              (( short ) 0x02));   // 2 bytes (6 total)
-        LittleEndian.putShort(data, 4 + offset, getCodepage());
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(getCodepage());
     }
 
     protected int getDataSize() {
index 5cd4a10431c07b58a73e2a5ffb05c468913f448f..30ce31b1746402e6cc8f2c7f2f49b659f74ad7de 100644 (file)
@@ -18,7 +18,7 @@
 package org.apache.poi.hssf.record;
 
 import org.apache.poi.util.HexDump;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 import org.apache.poi.util.BitField;
 import org.apache.poi.util.BitFieldFactory;
 
@@ -29,7 +29,7 @@ import org.apache.poi.util.BitFieldFactory;
  * @author Andrew C. Oliver (acoliver at apache dot org)
  * @version 2.0-pre
  */
-public final class ColumnInfoRecord extends Record {
+public final class ColumnInfoRecord extends StandardRecord {
     public static final short     sid = 0x7d;
     private int field_1_first_col;
     private int field_2_last_col;
@@ -267,17 +267,13 @@ public final class ColumnInfoRecord extends Record {
         return sid;
     }
 
-    public int serialize(int offset, byte [] data)
-    {
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putUShort(data, 2 + offset, 12);
-        LittleEndian.putUShort(data, 4 + offset, getFirstColumn());
-        LittleEndian.putUShort(data, 6 + offset, getLastColumn());
-        LittleEndian.putUShort(data, 8 + offset, getColumnWidth());
-        LittleEndian.putUShort(data, 10 + offset, getXFIndex());
-        LittleEndian.putUShort(data, 12 + offset, field_5_options);
-        LittleEndian.putUShort(data, 14 + offset, field_6_reserved);   
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(getFirstColumn());
+        out.writeShort(getLastColumn());
+        out.writeShort(getColumnWidth());
+        out.writeShort(getXFIndex());
+        out.writeShort(field_5_options);
+        out.writeShort(field_6_reserved);
     }
 
     protected int getDataSize() {
index c6b3ac454d5f29fe821f175722f59556d2249b96..44181aa3e8bb1f90701c835351b6e8f30f2f6630 100644 (file)
@@ -19,7 +19,7 @@
 
 package org.apache.poi.hssf.record;
 
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * Title:        Country Record (aka WIN.INI country)<P>
@@ -31,8 +31,8 @@ import org.apache.poi.util.LittleEndian;
  * @version 2.0-pre
  */
 
-public class CountryRecord
-    extends Record
+public final class CountryRecord
+    extends StandardRecord
 {
     public final static short sid = 0x8c;
 
@@ -107,14 +107,9 @@ public class CountryRecord
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte [] data)
-    {
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset,
-                              (( short ) 0x04));   // 4 bytes (8 total)
-        LittleEndian.putShort(data, 4 + offset, getDefaultCountry());
-        LittleEndian.putShort(data, 6 + offset, getCurrentCountry());
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(getDefaultCountry());
+        out.writeShort(getCurrentCountry());
     }
 
     protected int getDataSize() {
index 3d2a753aa0b6d6c61dae34896f440c19059d05fc..8eba5d612c8557338029b8c7cea89c575618166d 100644 (file)
@@ -19,7 +19,7 @@
 
 package org.apache.poi.hssf.record;
 
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * Title: Double Stream Flag Record<P>
@@ -30,8 +30,8 @@ import org.apache.poi.util.LittleEndian;
  * @version 2.0-pre
  */
 
-public class DSFRecord
-    extends Record
+public final class DSFRecord
+    extends StandardRecord
 {
     public final static short sid = 0x161;
     private short             field_1_dsf;
@@ -76,13 +76,8 @@ public class DSFRecord
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte [] data)
-    {
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset,
-                              (( short ) 0x02));   // 2 bytes (6 total)
-        LittleEndian.putShort(data, 4 + offset, getDsf());
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(getDsf());
     }
 
     protected int getDataSize() {
index ef8f2a53da562aec3a4cd38744dbf2e6d43d6574..cf4300bba195ed18ebafe6ebf7a34e6388a9fc91 100644 (file)
@@ -20,14 +20,14 @@ package org.apache.poi.hssf.record;
 import org.apache.poi.util.BitField;
 import org.apache.poi.util.BitFieldFactory;
 import org.apache.poi.util.HexDump;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * The dat record is used to store options for the chart.<p/>
  * 
  * @author Glen Stampoultzis (glens at apache.org)
  */
-public final class DatRecord extends Record {
+public final class DatRecord extends StandardRecord {
     public final static short sid = 0x1063;
 
     private static final BitField horizontalBorder = BitFieldFactory.getInstance(0x1);
@@ -66,16 +66,8 @@ public final class DatRecord extends Record {
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte[] data)
-    {
-        int pos = 0;
-
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset, (short)(getRecordSize() - 4));
-
-        LittleEndian.putShort(data, 4 + offset + pos, field_1_options);
-
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(field_1_options);
     }
 
     protected int getDataSize() {
index 5719ab6d2666413d2549842ba826a54db6153c69..efb2a19d77ded4d5df253677b80312b6e7ca699a 100644 (file)
@@ -20,14 +20,14 @@ package org.apache.poi.hssf.record;
 import org.apache.poi.util.BitField;
 import org.apache.poi.util.BitFieldFactory;
 import org.apache.poi.util.HexDump;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * The data format record is used to index into a series.<p/>
  * 
  * @author Glen Stampoultzis (glens at apache.org)
  */
-public final class DataFormatRecord extends Record {
+public final class DataFormatRecord extends StandardRecord {
     public final static short sid = 0x1006;
 
     private static final BitField useExcel4Colors = BitFieldFactory.getInstance(0x1);
@@ -78,19 +78,11 @@ public final class DataFormatRecord extends Record {
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte[] data)
-    {
-        int pos = 0;
-
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset, (short)(getRecordSize() - 4));
-
-        LittleEndian.putShort(data, 4 + offset + pos, field_1_pointNumber);
-        LittleEndian.putShort(data, 6 + offset + pos, field_2_seriesIndex);
-        LittleEndian.putShort(data, 8 + offset + pos, field_3_seriesNumber);
-        LittleEndian.putShort(data, 10 + offset + pos, field_4_formatFlags);
-
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(field_1_pointNumber);
+        out.writeShort(field_2_seriesIndex);
+        out.writeShort(field_3_seriesNumber);
+        out.writeShort(field_4_formatFlags);
     }
 
     protected int getDataSize() {
index 19c4992810f2a43061571dbf53d0c6e9f6419313..39b47402c0f91cf62c7fe426c661a13c50fc075c 100644 (file)
@@ -19,7 +19,7 @@
 
 package org.apache.poi.hssf.record;
 
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * Title:        Date Window 1904 Flag record <P>
@@ -30,8 +30,8 @@ import org.apache.poi.util.LittleEndian;
  * @version 2.0-pre
  */
 
-public class DateWindow1904Record
-    extends Record
+public final class DateWindow1904Record
+    extends StandardRecord
 {
     public final static short sid = 0x22;
     private short             field_1_window;
@@ -76,13 +76,8 @@ public class DateWindow1904Record
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte [] data)
-    {
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset,
-                              (( short ) 0x02));   // 2 bytes (6 total)
-        LittleEndian.putShort(data, 4 + offset, getWindowing());
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(getWindowing());
     }
 
     protected int getDataSize() {
index a913dc6e76fe2603b3c3734c0fb46e6cca9ae809..e8fe98cc8bf1f7c9a53f5d781bc51b8446364fa1 100644 (file)
@@ -17,7 +17,7 @@
 
 package org.apache.poi.hssf.record;
 
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * Title:        Default Column Width Record (0x0055) <P>
@@ -28,7 +28,7 @@ import org.apache.poi.util.LittleEndian;
  * @author Jason Height (jheight at chariot dot net dot au)
  * @version 2.0-pre
  */
-public final class DefaultColWidthRecord extends Record {
+public final class DefaultColWidthRecord extends StandardRecord {
     public final static short sid = 0x0055;
     private int             field_1_col_width;
 
@@ -72,12 +72,8 @@ public final class DefaultColWidthRecord extends Record {
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte [] data)
-    {
-        LittleEndian.putUShort(data, 0 + offset, sid);
-        LittleEndian.putUShort(data, 2 + offset, 0x2);
-        LittleEndian.putUShort(data, 4 + offset, getColWidth());
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(getColWidth());
     }
 
     protected int getDataSize() {
index 905616a5093e7d55938f07f995f332d3094f0eee..35ac05e2392920a528c59e57035a0032cb369adc 100644 (file)
 package org.apache.poi.hssf.record;
 
 import org.apache.poi.util.HexDump;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * The default data label text properties record identifies the text characteristics of the preceding text record.<p/>
  * 
  * @author Glen Stampoultzis (glens at apache.org)
  */
-public final class DefaultDataLabelTextPropertiesRecord extends Record {
+public final class DefaultDataLabelTextPropertiesRecord extends StandardRecord {
     public final static short      sid                             = 0x1024;
     private  short      field_1_categoryDataType;
     public final static short       CATEGORY_DATA_TYPE_SHOW_LABELS_CHARACTERISTIC = 0;
@@ -57,16 +57,8 @@ public final class DefaultDataLabelTextPropertiesRecord extends Record {
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte[] data)
-    {
-        int pos = 0;
-
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset, (short)(getRecordSize() - 4));
-
-        LittleEndian.putShort(data, 4 + offset + pos, field_1_categoryDataType);
-
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(field_1_categoryDataType);
     }
 
     protected int getDataSize() {
index 9f0a51125608b4669a14dd4a697579dc62bd0467..eacebacfcb436c1b1370f26eaa5a1034b2ceaf38 100644 (file)
@@ -19,7 +19,7 @@
 
 package org.apache.poi.hssf.record;
 
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * Title:        Default Row Height Record
@@ -31,8 +31,8 @@ import org.apache.poi.util.LittleEndian;
  * @version 2.0-pre
  */
 
-public class DefaultRowHeightRecord
-    extends Record
+public final class DefaultRowHeightRecord
+    extends StandardRecord
 {
     public final static short sid = 0x225;
     private short             field_1_option_flags;
@@ -101,13 +101,9 @@ public class DefaultRowHeightRecord
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte [] data)
-    {
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset, ( short ) 0x4);
-        LittleEndian.putShort(data, 4 + offset, getOptionFlags());
-        LittleEndian.putShort(data, 6 + offset, getRowHeight());
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(getOptionFlags());
+        out.writeShort(getRowHeight());
     }
 
     protected int getDataSize() {
index 8cf0df0c4a6f5b9dd2f59355b0c07661f5458af9..c005ff1a6a9f0b3d87a7b8109c3514936435cd31 100644 (file)
@@ -19,7 +19,7 @@
 
 package org.apache.poi.hssf.record;
 
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * Title:        Delta Record<P>
@@ -30,8 +30,8 @@ import org.apache.poi.util.LittleEndian;
  * @version 2.0-pre
  */
 
-public class DeltaRecord
-    extends Record
+public final class DeltaRecord
+    extends StandardRecord
 {
     public final static short  sid           = 0x10;
     public final static double DEFAULT_VALUE = 0.0010;   // should be .001
@@ -80,12 +80,8 @@ public class DeltaRecord
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte [] data)
-    {
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset, ( short ) 0x8);
-        LittleEndian.putDouble(data, 4 + offset, getMaxChange());
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeDouble(getMaxChange());
     }
 
     protected int getDataSize() {
index 34422b8afc86dd5183f96cb03cb4d2743cfb9542..fb4f51d17817ea4a7ed4ecd93691923b78861866 100644 (file)
@@ -19,7 +19,7 @@
 
 package org.apache.poi.hssf.record;
 
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * Title:        Dimensions Record<P>
@@ -31,8 +31,8 @@ import org.apache.poi.util.LittleEndian;
  * @version 2.0-pre
  */
 
-public class DimensionsRecord
-    extends Record
+public final class DimensionsRecord
+    extends StandardRecord
 {
     public final static short sid = 0x200;
     private int               field_1_first_row;
@@ -153,16 +153,12 @@ public class DimensionsRecord
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte [] data)
-    {
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset, ( short ) 14);
-        LittleEndian.putInt(data, 4 + offset, getFirstRow());
-        LittleEndian.putInt(data, 8 + offset, getLastRow());
-        LittleEndian.putShort(data, 12 + offset, getFirstCol());
-        LittleEndian.putShort(data, 14 + offset, getLastCol());
-        LittleEndian.putShort(data, 16 + offset, ( short ) 0);
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeInt(getFirstRow());
+        out.writeInt(getLastRow());
+        out.writeShort(getFirstCol());
+        out.writeShort(getLastCol());
+        out.writeShort(( short ) 0);
     }
 
     protected int getDataSize() {
index bf9c39ba93191a80b1ee3a96413ab677adce1d20..627f74387e40c92b8cf7bc091de7ad66e78470f0 100644 (file)
@@ -17,7 +17,7 @@
 
 package org.apache.poi.hssf.record;
 
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * End Of File record.
@@ -29,7 +29,7 @@ import org.apache.poi.util.LittleEndian;
  * @author Jason Height (jheight at chariot dot net dot au)
  * @version 2.0-pre
  */
-public final class EOFRecord extends Record {
+public final class EOFRecord extends StandardRecord {
     public final static short sid = 0x0A;
        public static final int ENCODED_SIZE = 4;
 
@@ -55,12 +55,7 @@ public final class EOFRecord extends Record {
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte [] data)
-    {
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset,
-                              (( short ) 0));   // no record info
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
     }
 
     protected int getDataSize() {
index 86e336e5cfd2623f7f5176ab901cb24b9ef2bae8..1731a493745328dd70c75c547c83496bbfd26fd7 100644 (file)
@@ -17,7 +17,7 @@
 
 package org.apache.poi.hssf.record;
 
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * The end record defines the end of a block of records for a (Graphing)
@@ -28,7 +28,7 @@ import org.apache.poi.util.LittleEndian;
  * @author Glen Stampoultzis (glens at apache.org)
  */
 
-public final class EndRecord extends Record {
+public final class EndRecord extends StandardRecord {
     public static final short sid = 0x1034;
 
     public EndRecord()
@@ -51,11 +51,7 @@ public final class EndRecord extends Record {
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte [] data)
-    {
-        LittleEndian.putUShort(data, 0 + offset, sid);
-        LittleEndian.putUShort(data, 2 + offset, 0);   // no record info
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
     }
 
     protected int getDataSize() {
index 9d3385452018a359379ac98ae21c28da7f1578e5..cbf520c86fb3b6d8bdaed826cec83d85d28b84c2 100644 (file)
@@ -21,7 +21,7 @@ package org.apache.poi.hssf.record;
 
 import org.apache.poi.util.BitField;
 import org.apache.poi.util.BitFieldFactory;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * Title:        Extended Format Record
@@ -39,8 +39,8 @@ import org.apache.poi.util.LittleEndian;
  * @version 2.0-pre
  */
 
-public class ExtendedFormatRecord
-    extends Record
+public final class ExtendedFormatRecord
+    extends StandardRecord
 {
     public final static short     sid                 = 0xE0;
 
@@ -1770,21 +1770,16 @@ public class ExtendedFormatRecord
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte [] data)
-    {
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset,
-                              ( short ) (20));   // 24 - 4(sid/len)
-        LittleEndian.putShort(data, 4 + offset, getFontIndex());
-        LittleEndian.putShort(data, 6 + offset, getFormatIndex());
-        LittleEndian.putShort(data, 8 + offset, getCellOptions());
-        LittleEndian.putShort(data, 10 + offset, getAlignmentOptions());
-        LittleEndian.putShort(data, 12 + offset, getIndentionOptions());
-        LittleEndian.putShort(data, 14 + offset, getBorderOptions());
-        LittleEndian.putShort(data, 16 + offset, getPaletteOptions());
-        LittleEndian.putInt(data, 18 + offset, getAdtlPaletteOptions());
-        LittleEndian.putShort(data, 22 + offset, getFillPaletteOptions());
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(getFontIndex());
+        out.writeShort(getFormatIndex());
+        out.writeShort(getCellOptions());
+        out.writeShort(getAlignmentOptions());
+        out.writeShort(getIndentionOptions());
+        out.writeShort(getBorderOptions());
+        out.writeShort(getPaletteOptions());
+        out.writeInt(getAdtlPaletteOptions());
+        out.writeShort(getFillPaletteOptions());
     }
 
     protected int getDataSize() {
index 7068874ec623d898b90f649ec6e2dd6170eb87e2..d6d19b5608be98221e28d6e0dede2c79ec5a7b3c 100644 (file)
@@ -19,7 +19,7 @@
 
 package org.apache.poi.hssf.record;
 
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * Title:        File Pass Record<P>
@@ -30,8 +30,8 @@ import org.apache.poi.util.LittleEndian;
  * @version 3.0-pre
  */
 
-public class FilePassRecord
-    extends Record
+public final class FilePassRecord
+    extends StandardRecord
 {
     public final static short sid = 0x2F;
     private int             field_1_encryptedpassword;
@@ -60,12 +60,8 @@ public class FilePassRecord
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte [] data)
-    {
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset, ( short ) 0x4);
-        LittleEndian.putInt(data, 4 + offset, ( short ) field_1_encryptedpassword);
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeInt(( short ) field_1_encryptedpassword);
     }
 
     protected int getDataSize() {
index e92623a3e3e968fbda6e4ca387c9eab4db1c4e07..5d70aeb7e67d58fdfe200baf81efbd4f94f400ee 100644 (file)
@@ -19,7 +19,7 @@
 
 package org.apache.poi.hssf.record;
 
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * Title: Function Group Count Record<P>
@@ -30,8 +30,8 @@ import org.apache.poi.util.LittleEndian;
  * @version 2.0-pre
  */
 
-public class FnGroupCountRecord
-    extends Record
+public final class FnGroupCountRecord
+    extends StandardRecord
 {
     public final static short sid   = 0x9c;
 
@@ -84,13 +84,8 @@ public class FnGroupCountRecord
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte [] data)
-    {
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset,
-                              (( short ) 0x02));   // 2 bytes (6 total)
-        LittleEndian.putShort(data, 4 + offset, getCount());
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(getCount());
     }
 
     protected int getDataSize() {
index cbe2ae4fa746ea9f47e0796db96afafda39cab01..5825ec824ce460b829a3cace720886a8831b5b83 100644 (file)
 package org.apache.poi.hssf.record;
 
 import org.apache.poi.util.HexDump;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * The font basis record stores various font metrics.<p/>
  * 
  * @author Glen Stampoultzis (glens at apache.org)
  */
-public final class FontBasisRecord extends Record {
+public final class FontBasisRecord extends StandardRecord {
     public final static short      sid                             = 0x1060;
     private  short      field_1_xBasis;
     private  short      field_2_yBasis;
@@ -78,20 +78,12 @@ public final class FontBasisRecord extends Record {
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte[] data)
-    {
-        int pos = 0;
-
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset, (short)(getRecordSize() - 4));
-
-        LittleEndian.putShort(data, 4 + offset + pos, field_1_xBasis);
-        LittleEndian.putShort(data, 6 + offset + pos, field_2_yBasis);
-        LittleEndian.putShort(data, 8 + offset + pos, field_3_heightBasis);
-        LittleEndian.putShort(data, 10 + offset + pos, field_4_scale);
-        LittleEndian.putShort(data, 12 + offset + pos, field_5_indexToFontTable);
-
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(field_1_xBasis);
+        out.writeShort(field_2_yBasis);
+        out.writeShort(field_3_heightBasis);
+        out.writeShort(field_4_scale);
+        out.writeShort(field_5_indexToFontTable);
     }
 
     protected int getDataSize() {
index a1ade938ff561e7ae7d9212fbbe0292815cfcb3b..1b312b1dfbae0480409949f3b58cf5e9fb54555d 100644 (file)
 package org.apache.poi.hssf.record;
 
 import org.apache.poi.util.HexDump;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * The font index record indexes into the font table for the text record.<p/>
  * 
  * @author Glen Stampoultzis (glens at apache.org)
  */
-public final class FontIndexRecord extends Record {
+public final class FontIndexRecord extends StandardRecord {
     public final static short      sid                             = 0x1026;
     private  short      field_1_fontIndex;
 
@@ -54,16 +54,8 @@ public final class FontIndexRecord extends Record {
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte[] data)
-    {
-        int pos = 0;
-
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset, (short)(getRecordSize() - 4));
-
-        LittleEndian.putShort(data, 4 + offset + pos, field_1_fontIndex);
-
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(field_1_fontIndex);
     }
 
     protected int getDataSize() {
index 65fcc67d1e58b167dfbc2d2f01f7ea3a6df22009..6e9dcf0402227a97473cc2354427715b6cb61766 100644 (file)
@@ -20,14 +20,14 @@ package org.apache.poi.hssf.record;
 import org.apache.poi.util.BitField;
 import org.apache.poi.util.BitFieldFactory;
 import org.apache.poi.util.HexDump;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * The frame record indicates whether there is a border around the displayed text of a chart.<p/>
  * 
  * @author Glen Stampoultzis (glens at apache.org)
  */
-public final class FrameRecord extends Record {
+public final class FrameRecord extends StandardRecord {
     public final static short sid  = 0x1032;
 
     private static final BitField autoSize     = BitFieldFactory.getInstance(0x1);
@@ -70,17 +70,9 @@ public final class FrameRecord extends Record {
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte[] data)
-    {
-        int pos = 0;
-
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset, (short)(getRecordSize() - 4));
-
-        LittleEndian.putShort(data, 4 + offset + pos, field_1_borderType);
-        LittleEndian.putShort(data, 6 + offset + pos, field_2_options);
-
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(field_1_borderType);
+        out.writeShort(field_2_options);
     }
 
     protected int getDataSize() {
index 8bf52768e0f2d3dd60e9c2720d6a9e2368a869dd..ae2a71ccd5218a74959b5d11775762971aa5a015 100644 (file)
@@ -19,7 +19,7 @@
 
 package org.apache.poi.hssf.record;
 
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * Title:        Gridset Record.<P>
@@ -34,8 +34,8 @@ import org.apache.poi.util.LittleEndian;
  * @version 2.0-pre
  */
 
-public class GridsetRecord
-    extends Record
+public final class GridsetRecord
+    extends StandardRecord
 {
     public final static short sid = 0x82;
     public short              field_1_gridset_flag;
@@ -89,12 +89,8 @@ public class GridsetRecord
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte [] data)
-    {
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset, ( short ) 0x2);
-        LittleEndian.putShort(data, 4 + offset, field_1_gridset_flag);
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(field_1_gridset_flag);
     }
 
     protected int getDataSize() {
index 2bc576f26c8d5344d16d85c6574f97fc55c2b2b2..2a41902da60b61489046d60e31a89fe577124d60 100644 (file)
@@ -19,7 +19,7 @@
 
 package org.apache.poi.hssf.record;
 
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * Title:        Guts Record <P>
@@ -30,8 +30,8 @@ import org.apache.poi.util.LittleEndian;
  * @version 2.0-pre
  */
 
-public class GutsRecord
-    extends Record
+public final class GutsRecord
+    extends StandardRecord
 {
     public final static short sid = 0x80;
     private short             field_1_left_row_gutter;   // size of the row gutter to the left of the rows
@@ -156,15 +156,11 @@ public class GutsRecord
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte [] data)
-    {
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset, ( short ) 0x8);
-        LittleEndian.putShort(data, 4 + offset, getLeftRowGutter());
-        LittleEndian.putShort(data, 6 + offset, getTopColGutter());
-        LittleEndian.putShort(data, 8 + offset, getRowLevelMax());
-        LittleEndian.putShort(data, 10 + offset, getColLevelMax());
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(getLeftRowGutter());
+        out.writeShort(getTopColGutter());
+        out.writeShort(getRowLevelMax());
+        out.writeShort(getColLevelMax());
     }
 
     protected int getDataSize() {
index 41708a3f2b1afa17234e1ad62ef3ade422a9fbf6..1c1a4201f2005fb019f26fa4d712805aff0bf96d 100644 (file)
@@ -17,7 +17,7 @@
 
 package org.apache.poi.hssf.record;
 
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * Title:        HCenter record (0x0083)<P>
@@ -27,7 +27,7 @@ import org.apache.poi.util.LittleEndian;
  * @author Jason Height (jheight at chariot dot net dot au)
  * @version 2.0-pre
  */
-public final class HCenterRecord extends Record {
+public final class HCenterRecord extends StandardRecord {
     public final static short sid = 0x0083;
     private short             field_1_hcenter;
 
@@ -78,12 +78,8 @@ public final class HCenterRecord extends Record {
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte [] data)
-    {
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putUShort(data, 2 + offset, 0x2);
-        LittleEndian.putUShort(data, 4 + offset, field_1_hcenter);
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(field_1_hcenter);
     }
 
     protected int getDataSize() {
index c5c587626341578bc2b8a87008fdfd8e75a701e5..9f4f1ca3c416498a462a79f581f73c3883ab0597 100644 (file)
@@ -19,7 +19,7 @@
 
 package org.apache.poi.hssf.record;
 
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * Title:        Hide Object Record<P>
@@ -29,8 +29,8 @@ import org.apache.poi.util.LittleEndian;
  * @version 2.0-pre
  */
 
-public class HideObjRecord
-    extends Record
+public final class HideObjRecord
+    extends StandardRecord
 {
     public final static short sid               = 0x8d;
     public final static short HIDE_ALL          = 2;
@@ -86,13 +86,8 @@ public class HideObjRecord
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte [] data)
-    {
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset,
-                              (( short ) 0x02));   // 2 bytes (6 total)
-        LittleEndian.putShort(data, 4 + offset, getHideObj());
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(getHideObj());
     }
 
     protected int getDataSize() {
index 5f9d8955b2e85d4175c96a91111c14bb27514868..620d580f661d894d8f077272de3152c48258b3cf 100644 (file)
@@ -17,7 +17,7 @@
 
 package org.apache.poi.hssf.record;
 
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * Title: Interface End Record (0x00E2)<P>
@@ -27,7 +27,7 @@ import org.apache.poi.util.LittleEndian;
  * @author Andrew C. Oliver (acoliver at apache dot org)
  * @version 2.0-pre
  */
-public final class InterfaceEndRecord extends Record {
+public final class InterfaceEndRecord extends StandardRecord {
     public final static short sid = 0x00E2;
 
     public InterfaceEndRecord()
@@ -50,12 +50,7 @@ public final class InterfaceEndRecord extends Record {
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte [] data)
-    {
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset,
-                              (( short ) 0x00));   // 0 bytes (4 total)
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
     }
 
     protected int getDataSize() {
index 592a87b892b70bf8946729e3048f54ba443d80b7..cb4bbe842b22e836250dbc022c508593fe4daf72 100644 (file)
@@ -19,7 +19,7 @@
 
 package org.apache.poi.hssf.record;
 
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * Title: Interface Header Record<P>
@@ -29,8 +29,8 @@ import org.apache.poi.util.LittleEndian;
  * @version 2.0-pre
  */
 
-public class InterfaceHdrRecord
-    extends Record
+public final class InterfaceHdrRecord
+    extends StandardRecord
 {
     public final static short sid = 0xe1;
     private short             field_1_codepage;   // = 0;
@@ -85,13 +85,8 @@ public class InterfaceHdrRecord
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte [] data)
-    {
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset,
-                              (( short ) 0x02));   // 2 bytes (6 total)
-        LittleEndian.putShort(data, 4 + offset, getCodepage());
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(getCodepage());
     }
 
     protected int getDataSize() {
index f9efca7929533a8648ac7023f69b1b07d1c56d17..702e78b9b20f8481db8e084df102298721ee6e8e 100644 (file)
@@ -19,7 +19,7 @@
 
 package org.apache.poi.hssf.record;
 
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * Title:        Iteration Record<P>
@@ -33,8 +33,8 @@ import org.apache.poi.util.LittleEndian;
  * @version 2.0-pre
  */
 
-public class IterationRecord
-    extends Record
+public final class IterationRecord
+    extends StandardRecord
 {
     public final static short sid = 0x11;
     private short             field_1_iteration;
@@ -87,12 +87,8 @@ public class IterationRecord
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte [] data)
-    {
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset, ( short ) 0x2);
-        LittleEndian.putShort(data, 4 + offset, field_1_iteration);
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(field_1_iteration);
     }
 
     protected int getDataSize() {
index 93d849b4ec0b2470bb687805b4a24063bf49de0b..ee371b520345d32a3df16d76f2c176660732e64f 100644 (file)
@@ -18,7 +18,7 @@
 package org.apache.poi.hssf.record;
 
 import org.apache.poi.util.HexDump;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * Title:        Label SST Record<P>
@@ -29,7 +29,7 @@ import org.apache.poi.util.LittleEndian;
  * @author Jason Height (jheight at chariot dot net dot au)
  * @version 2.0-pre
  */
-public final class LabelSSTRecord extends Record implements CellValueRecordInterface {
+public final class LabelSSTRecord extends StandardRecord implements CellValueRecordInterface {
     public final static short sid = 0xfd;
     private int field_1_row;
     private int field_2_column;
@@ -129,15 +129,11 @@ public final class LabelSSTRecord extends Record implements CellValueRecordInter
         return sb.toString();
     }
 
-    public int serialize(int offset, byte [] data)
-    {
-        LittleEndian.putUShort(data, 0 + offset, sid);
-        LittleEndian.putUShort(data, 2 + offset, 10);
-        LittleEndian.putUShort(data, 4 + offset, getRow());
-        LittleEndian.putUShort(data, 6 + offset, getColumn());
-        LittleEndian.putUShort(data, 8 + offset, getXFIndex());
-        LittleEndian.putInt(data, 10 + offset, getSSTIndex());
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(getRow());
+        out.writeShort(getColumn());
+        out.writeShort(getXFIndex());
+        out.writeInt(getSSTIndex());
     }
 
     protected int getDataSize() {
index 7615b0d875dad27bc6e5f81f74358bfde2504a0e..e9eea8d589f46310101097f02c781915fc93de33 100644 (file)
 
 package org.apache.poi.hssf.record;
 
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * Record for the left margin.<p/>
  * 
  * @author Shawn Laubach (slaubach at apache dot org)
  */
-public class LeftMarginRecord extends Record implements Margin
+public final class LeftMarginRecord extends StandardRecord implements Margin
 {
     public final static short sid = 0x0026;
     private double field_1_margin;
@@ -45,12 +45,8 @@ public class LeftMarginRecord extends Record implements Margin
         return buffer.toString();
     }
 
-    public int serialize( int offset, byte[] data )
-    {
-        LittleEndian.putShort( data, 0 + offset, sid );
-        LittleEndian.putShort( data, 2 + offset, (short) ( getRecordSize() - 4 ) );
-        LittleEndian.putDouble( data, 4 + offset, field_1_margin );
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeDouble(field_1_margin);
     }
 
     protected int getDataSize() {
@@ -82,4 +78,4 @@ public class LeftMarginRecord extends Record implements Margin
         rec.field_1_margin = this.field_1_margin;
         return rec;
     }
-}  // END OF C
\ No newline at end of file
+}  // END OF 
\ No newline at end of file
index cdd0becf989252df27caa2f16ccb08c82ebc59c1..a98c16b56b13854ac0218e6d8e60fe0f47942def 100644 (file)
@@ -20,14 +20,14 @@ package org.apache.poi.hssf.record;
 import org.apache.poi.util.BitField;
 import org.apache.poi.util.BitFieldFactory;
 import org.apache.poi.util.HexDump;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * Defines a legend for a chart.<p/>
  * 
  * @author Andrew C. Oliver (acoliver at apache.org)
  */
-public final class LegendRecord extends Record {
+public final class LegendRecord extends StandardRecord {
     public final static short sid = 0x1015;
 
     private static final BitField autoPosition     = BitFieldFactory.getInstance(0x01);
@@ -115,22 +115,14 @@ public final class LegendRecord extends Record {
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte[] data)
-    {
-        int pos = 0;
-
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset, (short)(getRecordSize() - 4));
-
-        LittleEndian.putInt(data, 4 + offset + pos, field_1_xAxisUpperLeft);
-        LittleEndian.putInt(data, 8 + offset + pos, field_2_yAxisUpperLeft);
-        LittleEndian.putInt(data, 12 + offset + pos, field_3_xSize);
-        LittleEndian.putInt(data, 16 + offset + pos, field_4_ySize);
-        data[ 20 + offset + pos ] = field_5_type;
-        data[ 21 + offset + pos ] = field_6_spacing;
-        LittleEndian.putShort(data, 22 + offset + pos, field_7_options);
-
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeInt(field_1_xAxisUpperLeft);
+        out.writeInt(field_2_yAxisUpperLeft);
+        out.writeInt(field_3_xSize);
+        out.writeInt(field_4_ySize);
+        out.writeByte(field_5_type);
+        out.writeByte(field_6_spacing);
+        out.writeShort(field_7_options);
     }
 
     protected int getDataSize() {
index da6264f3614ef67b78959229bcbfc3a3b9872a7a..7e84e0ca5314b0c43df414f73902aeec3d4f83de 100644 (file)
@@ -20,14 +20,14 @@ package org.apache.poi.hssf.record;
 import org.apache.poi.util.BitField;
 import org.apache.poi.util.BitFieldFactory;
 import org.apache.poi.util.HexDump;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * Describes a line format record.  The line format record controls how a line on a chart appears.<p/>
  * 
  * @author Glen Stampoultzis (glens at apache.org)
  */
-public final class LineFormatRecord extends Record {
+public final class LineFormatRecord extends StandardRecord {
     public final static short sid = 0x1007;
 
     private static final BitField auto      = BitFieldFactory.getInstance(0x1);
@@ -102,20 +102,12 @@ public final class LineFormatRecord extends Record {
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte[] data)
-    {
-        int pos = 0;
-
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset, (short)(getRecordSize() - 4));
-
-        LittleEndian.putInt(data, 4 + offset + pos, field_1_lineColor);
-        LittleEndian.putShort(data, 8 + offset + pos, field_2_linePattern);
-        LittleEndian.putShort(data, 10 + offset + pos, field_3_weight);
-        LittleEndian.putShort(data, 12 + offset + pos, field_4_format);
-        LittleEndian.putShort(data, 14 + offset + pos, field_5_colourPaletteIndex);
-
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeInt(field_1_lineColor);
+        out.writeShort(field_2_linePattern);
+        out.writeShort(field_3_weight);
+        out.writeShort(field_4_format);
+        out.writeShort(field_5_colourPaletteIndex);
     }
 
     protected int getDataSize() {
index 0c5564d97b541fbe6f07e51cb07e827e3eac3b8c..c4868b837743d6cb904300509da226ad263ca426 100644 (file)
@@ -19,7 +19,7 @@
 
 package org.apache.poi.hssf.record;
 
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * Title: MMS Record<P>
@@ -30,8 +30,8 @@ import org.apache.poi.util.LittleEndian;
  * @version 2.0-pre
  */
 
-public class MMSRecord
-    extends Record
+public final class MMSRecord
+    extends StandardRecord
 {
     public final static short sid = 0xC1;
     private byte              field_1_addMenuCount;   // = 0;
@@ -100,14 +100,9 @@ public class MMSRecord
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte [] data)
-    {
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset,
-                              (( short ) 0x02));   // 2 bytes (6 total)
-        data[ 4 + offset ] = getAddMenuCount();
-        data[ 5 + offset ] = getDelMenuCount();
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeByte(getAddMenuCount());
+        out.writeByte(getDelMenuCount());
     }
 
     protected int getDataSize() {
index f00f47696a1317c7065f87558bcadcf5b19df2c4..af8b191d326f82f58ac4e6abcd5cd1f3467c8b45 100644 (file)
 package org.apache.poi.hssf.record;
 
 import org.apache.poi.util.HexDump;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * The number format index record indexes format table.  This applies to an axis.<p/>
  * 
  * @author Glen Stampoultzis (glens at apache.org)
  */
-public final class NumberFormatIndexRecord extends Record {
+public final class NumberFormatIndexRecord extends StandardRecord {
     public final static short      sid                             = 0x104E;
     private  short      field_1_formatIndex;
 
@@ -54,16 +54,8 @@ public final class NumberFormatIndexRecord extends Record {
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte[] data)
-    {
-        int pos = 0;
-
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset, (short)(getRecordSize() - 4));
-
-        LittleEndian.putShort(data, 4 + offset + pos, field_1_formatIndex);
-
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(field_1_formatIndex);
     }
 
     protected int getDataSize() {
index a0c55c6e420fc24a8f1d7909ddcbae4baf4c9358..5724b41a7c0cba224e36a80330c0a4f447b3fcfa 100644 (file)
@@ -18,7 +18,7 @@
 package org.apache.poi.hssf.record;
 
 import org.apache.poi.util.HexDump;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 import org.apache.poi.hssf.record.Record;
 
 /**
@@ -28,7 +28,7 @@ import org.apache.poi.hssf.record.Record;
  * @author Jason Height (jheight at chariot dot net dot au)
  * @version 2.0-pre
  */
-public final class NumberRecord extends Record implements CellValueRecordInterface {
+public final class NumberRecord extends StandardRecord implements CellValueRecordInterface {
     public static final short sid = 0x0203;
     private int field_1_row;
     private int field_2_col;
@@ -124,22 +124,11 @@ public final class NumberRecord extends Record implements CellValueRecordInterfa
         return sb.toString();
     }
 
-    /**
-     * called by the class that is responsible for writing this sucker.
-     * Subclasses should implement this so that their data is passed back in a
-     * byte array.
-     * 
-     * @return byte array containing instance data
-     */
-    public int serialize(int offset, byte [] data)
-    {
-        LittleEndian.putUShort(data, 0 + offset, sid);
-        LittleEndian.putUShort(data, 2 + offset, 14);
-        LittleEndian.putUShort(data, 4 + offset, getRow());
-        LittleEndian.putUShort(data, 6 + offset, getColumn());
-        LittleEndian.putUShort(data, 8 + offset, getXFIndex());
-        LittleEndian.putDouble(data, 10 + offset, getValue());
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(getRow());
+        out.writeShort(getColumn());
+        out.writeShort(getXFIndex());
+        out.writeDouble(getValue());
     }
 
     protected int getDataSize() {
index b5a78b860dec2d7bcd914b8cafa779b3896298ec..0e81c75ecf450bc3226ca3a8848ad9755fd90553 100644 (file)
 package org.apache.poi.hssf.record;
 
 import org.apache.poi.util.HexDump;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * Links text to an object on the chart or identifies it as the title.<p/>
  * 
  * @author Andrew C. Oliver (acoliver at apache.org)
  */
-public final class ObjectLinkRecord extends Record {
+public final class ObjectLinkRecord extends StandardRecord {
     public final static short      sid                             = 0x1027;
     private  short      field_1_anchorId;
     public final static short       ANCHOR_ID_CHART_TITLE          = 1;
@@ -72,18 +72,10 @@ public final class ObjectLinkRecord extends Record {
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte[] data)
-    {
-        int pos = 0;
-
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset, (short)(getRecordSize() - 4));
-
-        LittleEndian.putShort(data, 4 + offset + pos, field_1_anchorId);
-        LittleEndian.putShort(data, 6 + offset + pos, field_2_link1);
-        LittleEndian.putShort(data, 8 + offset + pos, field_3_link2);
-
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(field_1_anchorId);
+        out.writeShort(field_2_link1);
+        out.writeShort(field_3_link2);
     }
 
     protected int getDataSize() {
index f0141424ac6dc924d7e641a665f15851ed561106..0192d81650079d913165c5a61d6576137d73a155 100644 (file)
@@ -19,7 +19,7 @@
 
 package org.apache.poi.hssf.record;
 
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * Title: Object Protect Record<P>
@@ -31,8 +31,8 @@ import org.apache.poi.util.LittleEndian;
  * @author Andrew C. Oliver (acoliver at apache dot org)
  */
 
-public class ObjectProtectRecord
-    extends Record
+public final class ObjectProtectRecord
+    extends StandardRecord
 {
     public final static short sid = 0x63;
     private short             field_1_protect;
@@ -84,13 +84,8 @@ public class ObjectProtectRecord
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte [] data)
-    {
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset,
-                              (( short ) 0x02));   // 2 bytes (6 total)
-        LittleEndian.putShort(data, 4 + offset, field_1_protect);
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(field_1_protect);
     }
 
     protected int getDataSize() {
index 7b16ec442f82aa62d67f331f2da19717bfe49f54..dddd929915721487f09673b5912416ba81435168 100644 (file)
@@ -19,14 +19,14 @@ package org.apache.poi.hssf.record;
 
 
 import org.apache.poi.util.HexDump;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * Describes the frozen and unfozen panes.<p/>
  * 
  * @author Glen Stampoultzis (glens at apache.org)
  */
-public final class PaneRecord extends Record {
+public final class PaneRecord extends StandardRecord {
     public final static short      sid                             = 0x41;
     private  short      field_1_x;
     private  short      field_2_y;
@@ -86,20 +86,12 @@ public final class PaneRecord extends Record {
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte[] data)
-    {
-        int pos = 0;
-
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset, (short)(getRecordSize() - 4));
-
-        LittleEndian.putShort(data, 4 + offset + pos, field_1_x);
-        LittleEndian.putShort(data, 6 + offset + pos, field_2_y);
-        LittleEndian.putShort(data, 8 + offset + pos, field_3_topRow);
-        LittleEndian.putShort(data, 10 + offset + pos, field_4_leftColumn);
-        LittleEndian.putShort(data, 12 + offset + pos, field_5_activePane);
-
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(field_1_x);
+        out.writeShort(field_2_y);
+        out.writeShort(field_3_topRow);
+        out.writeShort(field_4_leftColumn);
+        out.writeShort(field_5_activePane);
     }
 
     protected int getDataSize() {
index ff6445ca85f983135b5ddee6b87b39c0d3a4c21d..a921abb7dc6f53e937571d9e647d2c2eb541f37f 100644 (file)
@@ -19,7 +19,7 @@
 
 package org.apache.poi.hssf.record;
 
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * Title:        Password Record<P>
@@ -29,7 +29,7 @@ import org.apache.poi.util.LittleEndian;
  * @version 2.0-pre
  */
 
-public class PasswordRecord extends Record {
+public final class PasswordRecord extends StandardRecord {
     public final static short sid = 0x13;
     private short             field_1_password;   // not sure why this is only 2 bytes, but it is... go figure
 
@@ -88,12 +88,8 @@ public class PasswordRecord extends Record {
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte [] data) {
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset,
-                              (( short ) 0x02));   // 2 bytes (6 total)
-        LittleEndian.putShort(data, 4 + offset, getPassword());
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(getPassword());
     }
 
     protected int getDataSize() {
index 7538872fdfa39bcc6d7448fa2dac50e31fbe9588..d05018e70c7953ffee0df059c688dac7fd00cb1f 100644 (file)
@@ -19,7 +19,7 @@
 
 package org.apache.poi.hssf.record;
 
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * Title:        Protection Revision 4 password Record<P>
@@ -30,8 +30,8 @@ import org.apache.poi.util.LittleEndian;
  * @version 2.0-pre
  */
 
-public class PasswordRev4Record
-    extends Record
+public final class PasswordRev4Record
+    extends StandardRecord
 {
     public final static short sid = 0x1BC;
     private short             field_1_password;
@@ -78,13 +78,8 @@ public class PasswordRev4Record
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte [] data)
-    {
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset,
-                              (( short ) 0x02));   // 2 bytes (6 total)
-        LittleEndian.putShort(data, 4 + offset, getPassword());
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(getPassword());
     }
 
     protected int getDataSize() {
index d0bba5e6737aa9399bcd8e00519a0c881fedf6d0..aa382bc4bb7ec55da00f4b75a5ce15df78cd27fb 100644 (file)
 
 package org.apache.poi.hssf.record;
 
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * preceeds and identifies a frame as belonging to the plot area.<p/>
  * 
  * @author Andrew C. Oliver (acoliver at apache.org)
  */
-public final class PlotAreaRecord extends Record {
+public final class PlotAreaRecord extends StandardRecord {
     public final static short      sid                             = 0x1035;
 
 
@@ -51,13 +51,7 @@ public final class PlotAreaRecord extends Record {
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte[] data)
-    {
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset, (short)(getRecordSize() - 4));
-
-
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
     }
 
     protected int getDataSize() {
index 03cf58a357a388b03cb72b9cf3d2bd72aa6ce324..3f460dc353dd5294f626afc3bf9e285d9449b9d4 100644 (file)
 package org.apache.poi.hssf.record;
 
 import org.apache.poi.util.HexDump;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * The plot growth record specifies the scaling factors used when a font is scaled.<p/>
  * 
  * @author Glen Stampoultzis (glens at apache.org)
  */
-public final class PlotGrowthRecord extends Record {
+public final class PlotGrowthRecord extends StandardRecord {
     public final static short      sid                             = 0x1064;
     private  int        field_1_horizontalScale;
     private  int        field_2_verticalScale;
@@ -61,17 +61,9 @@ public final class PlotGrowthRecord extends Record {
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte[] data)
-    {
-        int pos = 0;
-
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset, (short)(getRecordSize() - 4));
-
-        LittleEndian.putInt(data, 4 + offset + pos, field_1_horizontalScale);
-        LittleEndian.putInt(data, 8 + offset + pos, field_2_verticalScale);
-
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeInt(field_1_horizontalScale);
+        out.writeInt(field_2_verticalScale);
     }
 
     protected int getDataSize() {
index 56bb8cbd97ad37bdae2a49d8e9cb90a66a0fc644..db5928c7c031829e4c73b01bf35afe83d169bcae 100644 (file)
@@ -19,7 +19,7 @@
 
 package org.apache.poi.hssf.record;
 
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * Title:        Precision Record<P>
@@ -30,8 +30,8 @@ import org.apache.poi.util.LittleEndian;
  * @version 2.0-pre
  */
 
-public class PrecisionRecord
-    extends Record
+public final class PrecisionRecord
+    extends StandardRecord
 {
     public final static short sid = 0xE;
     public short              field_1_precision;
@@ -85,13 +85,8 @@ public class PrecisionRecord
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte [] data)
-    {
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset,
-                              (( short ) 0x02));   // 2 bytes (6 total)
-        LittleEndian.putShort(data, 4 + offset, field_1_precision);
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(field_1_precision);
     }
 
     protected int getDataSize() {
index 1ddaed715a6f77518ba0c3ff369856aac7737061..b22e244853ec31b87b59b689cb4f63dc5d357027 100644 (file)
@@ -19,7 +19,7 @@
 
 package org.apache.poi.hssf.record;
 
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * Title:        Print Gridlines Record<P>
@@ -30,8 +30,8 @@ import org.apache.poi.util.LittleEndian;
  * @version 2.0-pre
  */
 
-public class PrintGridlinesRecord
-    extends Record
+public final class PrintGridlinesRecord
+    extends StandardRecord
 {
     public final static short sid = 0x2b;
     private short             field_1_print_gridlines;
@@ -85,12 +85,8 @@ public class PrintGridlinesRecord
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte [] data)
-    {
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset, ( short ) 0x2);
-        LittleEndian.putShort(data, 4 + offset, field_1_print_gridlines);
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(field_1_print_gridlines);
     }
 
     protected int getDataSize() {
index 5f63a5eba677e749cf695c5d30b5838d0272a189..f2287ee6fc54699701b00c8ba2840be7eca98e3f 100644 (file)
@@ -19,7 +19,7 @@
 
 package org.apache.poi.hssf.record;
 
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * Title:        Print Headers Record<P>
@@ -31,8 +31,8 @@ import org.apache.poi.util.LittleEndian;
  * @version 2.0-pre
  */
 
-public class PrintHeadersRecord
-    extends Record
+public final class PrintHeadersRecord
+    extends StandardRecord
 {
     public final static short sid = 0x2a;
     private short             field_1_print_headers;
@@ -84,12 +84,8 @@ public class PrintHeadersRecord
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte [] data)
-    {
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset, ( short ) 0x2);
-        LittleEndian.putShort(data, 4 + offset, field_1_print_headers);
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(field_1_print_headers);
     }
 
     protected int getDataSize() {
index 136fc03f1693a88e25a9137af7aa2e3273373390..08dafd4e0de6a93461dbf2d9af9ac22bf8e39d34 100644 (file)
@@ -17,7 +17,7 @@
 
 package org.apache.poi.hssf.record;
 
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 import org.apache.poi.util.BitField;
 import org.apache.poi.util.BitFieldFactory;
 
@@ -29,7 +29,7 @@ import org.apache.poi.util.BitFieldFactory;
  * @author Jason Height (jheight at chariot dot net dot au)
  * @version 2.0-pre
  */
-public class PrintSetupRecord extends Record {
+public final class PrintSetupRecord extends StandardRecord {
     public final static short     sid = 0x00A1;
     private short                 field_1_paper_size;
     private short                 field_2_scale;
@@ -322,22 +322,18 @@ public class PrintSetupRecord extends Record {
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte [] data)
-    {
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset, ( short ) 34);
-        LittleEndian.putShort(data, 4 + offset, getPaperSize());
-        LittleEndian.putShort(data, 6 + offset, getScale());
-        LittleEndian.putShort(data, 8 + offset, getPageStart());
-        LittleEndian.putShort(data, 10 + offset, getFitWidth());
-        LittleEndian.putShort(data, 12 + offset, getFitHeight());
-        LittleEndian.putShort(data, 14 + offset, getOptions());
-        LittleEndian.putShort(data, 16 + offset, getHResolution());
-        LittleEndian.putShort(data, 18 + offset, getVResolution());
-        LittleEndian.putDouble(data, 20 + offset, getHeaderMargin());
-        LittleEndian.putDouble(data, 28 + offset, getFooterMargin());
-        LittleEndian.putShort(data, 36 + offset, getCopies());
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(getPaperSize());
+        out.writeShort(getScale());
+        out.writeShort(getPageStart());
+        out.writeShort(getFitWidth());
+        out.writeShort(getFitHeight());
+        out.writeShort(getOptions());
+        out.writeShort(getHResolution());
+        out.writeShort(getVResolution());
+        out.writeDouble(getHeaderMargin());
+        out.writeDouble(getFooterMargin());
+        out.writeShort(getCopies());
     }
 
     protected int getDataSize() {
index a0b6bf48890dede3e5ab3e770b0dacb251b80a90..7bbb6f2f7b39d4b6134b4870d28a99d558e5dcd3 100644 (file)
@@ -19,7 +19,7 @@
 
 package org.apache.poi.hssf.record;
 
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * Title: Protect Record<P>
@@ -32,8 +32,8 @@ import org.apache.poi.util.LittleEndian;
  * @author Andrew C. Oliver (acoliver at apache dot org)
  */
 
-public class ProtectRecord
-    extends Record
+public final class ProtectRecord
+    extends StandardRecord
 {
     public final static short sid = 0x12;
     private short             field_1_protect;
@@ -85,13 +85,8 @@ public class ProtectRecord
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte [] data)
-    {
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset,
-                              (( short ) 0x02));   // 2 bytes (6 total)
-        LittleEndian.putShort(data, 4 + offset, field_1_protect);
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(field_1_protect);
     }
 
     protected int getDataSize() {
index ae86f776283596b82eaaada14842856af73bca4a..7671f4e02d4dc72334d498cf72d3c4db633aebd0 100644 (file)
@@ -19,7 +19,7 @@
 
 package org.apache.poi.hssf.record;
 
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * Title:        Protection Revision 4 Record<P>
@@ -30,8 +30,8 @@ import org.apache.poi.util.LittleEndian;
  * @version 2.0-pre
  */
 
-public class ProtectionRev4Record
-    extends Record
+public final class ProtectionRev4Record
+    extends StandardRecord
 {
     public final static short sid = 0x1af;
     private short             field_1_protect;
@@ -83,13 +83,8 @@ public class ProtectionRev4Record
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte [] data)
-    {
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset,
-                              (( short ) 0x02));   // 2 bytes (6 total)
-        LittleEndian.putShort(data, 4 + offset, field_1_protect);
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(field_1_protect);
     }
 
     protected int getDataSize() {
index 0f20d6ae1bc05343027b0bea8555c811c0009115..ef1316e48843968aef6a1fc1c113a6f35049781a 100644 (file)
@@ -19,7 +19,7 @@
 
 package org.apache.poi.hssf.record;
 
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * Title:        RefMode Record<P>
@@ -30,8 +30,8 @@ import org.apache.poi.util.LittleEndian;
  * @version 2.0-pre
  */
 
-public class RefModeRecord
-    extends Record
+public final class RefModeRecord
+    extends StandardRecord
 {
     public final static short sid           = 0xf;
     public final static short USE_A1_MODE   = 1;
@@ -83,12 +83,8 @@ public class RefModeRecord
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte [] data)
-    {
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset, ( short ) 0x2);
-        LittleEndian.putShort(data, 4 + offset, getMode());
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(getMode());
     }
 
     protected int getDataSize() {
index 41277e61725b03e0b8a710fe14cbf52e80904d57..632fcab20f1d1d6577b3bf96ca6600a843816f6c 100644 (file)
@@ -19,7 +19,7 @@
 
 package org.apache.poi.hssf.record;
 
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * Title:        Refresh All Record <P>
@@ -30,8 +30,8 @@ import org.apache.poi.util.LittleEndian;
  * @version 2.0-pre
  */
 
-public class RefreshAllRecord
-    extends Record
+public final class RefreshAllRecord
+    extends StandardRecord
 {
     public final static short sid = 0x1B7;
     private short             field_1_refreshall;
@@ -83,13 +83,8 @@ public class RefreshAllRecord
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte [] data)
-    {
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset,
-                              (( short ) 0x02));   // 2 bytes (6 total)
-        LittleEndian.putShort(data, 4 + offset, field_1_refreshall);
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(field_1_refreshall);
     }
 
     protected int getDataSize() {
index 2a4994bd6b60d8815888b8b568c5d2bda100945e..fd956e442d7dfdc184033173d1c82ebc272d363e 100644 (file)
 
 package org.apache.poi.hssf.record;
 
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * Record for the right margin.<p/>
  * 
  * @author Shawn Laubach (slaubach at apache dot org)
  */
-public final class RightMarginRecord extends Record implements Margin {
+public final class RightMarginRecord extends StandardRecord implements Margin {
     public final static short sid = 0x27;
     private double field_1_margin;
 
@@ -44,12 +44,8 @@ public final class RightMarginRecord extends Record implements Margin {
         return buffer.toString();
     }
 
-    public int serialize( int offset, byte[] data )
-    {
-        LittleEndian.putShort( data, 0 + offset, sid );
-        LittleEndian.putShort( data, 2 + offset, (short) ( getRecordSize() - 4 ) );
-        LittleEndian.putDouble( data, 4 + offset, field_1_margin );
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeDouble(field_1_margin);
     }
 
     protected int getDataSize() {
@@ -75,4 +71,4 @@ public final class RightMarginRecord extends Record implements Margin {
         rec.field_1_margin = this.field_1_margin;
         return rec;
     }
-}  // END OF 
\ No newline at end of file
+}  // END OF
\ No newline at end of file
index 25adc67f5aee1307d7cde936dca227fcb550feb2..5f084a23187164a540b3bfc992400077daed4373 100644 (file)
@@ -20,7 +20,7 @@ package org.apache.poi.hssf.record;
 import org.apache.poi.util.BitField;
 import org.apache.poi.util.BitFieldFactory;
 import org.apache.poi.util.HexDump;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * Title:        Row Record (0x0208)<P/>
@@ -30,7 +30,7 @@ import org.apache.poi.util.LittleEndian;
  * @author Jason Height (jheight at chariot dot net dot au)
  * @version 2.0-pre
  */
-public final class RowRecord extends Record {
+public final class RowRecord extends StandardRecord {
     public final static short sid = 0x0208;
 
     public static final int ENCODED_SIZE = 20;
@@ -335,20 +335,15 @@ public final class RowRecord extends Record {
         return sb.toString();
     }
 
-    public int serialize(int offset, byte [] data)
-    {
-        LittleEndian.putUShort(data, 0 + offset, sid);
-        LittleEndian.putUShort(data, 2 + offset, ENCODED_SIZE - 4);
-        LittleEndian.putUShort(data, 4 + offset, getRowNumber());
-        LittleEndian.putUShort(data, 6 + offset, getFirstCol() == -1 ? (short)0 : getFirstCol());
-        LittleEndian.putUShort(data, 8 + offset, getLastCol() == -1 ? (short)0 : getLastCol());
-        LittleEndian.putUShort(data, 10 + offset, getHeight());
-        LittleEndian.putUShort(data, 12 + offset, getOptimize());
-        LittleEndian.putUShort(data, 14 + offset, field_6_reserved);
-        LittleEndian.putUShort(data, 16 + offset, getOptionFlags());
-
-        LittleEndian.putUShort(data, 18 + offset, getXFIndex());
-        return ENCODED_SIZE;
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(getRowNumber());
+        out.writeShort(getFirstCol() == -1 ? (short)0 : getFirstCol());
+        out.writeShort(getLastCol() == -1 ? (short)0 : getLastCol());
+        out.writeShort(getHeight());
+        out.writeShort(getOptimize());
+        out.writeShort(field_6_reserved);
+        out.writeShort(getOptionFlags());
+        out.writeShort(getXFIndex());
     }
 
     protected int getDataSize() {
index 0b30d32e038ffb969019de5c2bb061fded74caeb..3c2e78583e4d18ad44e903b4d8d0483f3d022e7b 100644 (file)
@@ -18,7 +18,7 @@
 package org.apache.poi.hssf.record;
 
 import org.apache.poi.util.HexDump;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * Specifies the window's zoom magnification.  <p/>
@@ -26,7 +26,7 @@ import org.apache.poi.util.LittleEndian;
  * 
  * @author Andrew C. Oliver (acoliver at apache.org)
  */
-public final class SCLRecord extends Record {
+public final class SCLRecord extends StandardRecord {
     public final static short      sid                             = 0x00A0;
     private  short      field_1_numerator;
     private  short      field_2_denominator;
@@ -61,17 +61,9 @@ public final class SCLRecord extends Record {
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte[] data)
-    {
-        int pos = 0;
-
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset, (short)(getRecordSize() - 4));
-
-        LittleEndian.putShort(data, 4 + offset + pos, field_1_numerator);
-        LittleEndian.putShort(data, 6 + offset + pos, field_2_denominator);
-
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(field_1_numerator);
+        out.writeShort(field_2_denominator);
     }
 
     protected int getDataSize() {
index 769f6ac97e4b8b1b5bfcb2d63e5d3910fbc49e76..96cfde27c7532a332d9fb764a7a6e5d00316994d 100644 (file)
@@ -19,7 +19,7 @@
 
 package org.apache.poi.hssf.record;
 
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * Title:        Save Recalc Record <P>
@@ -30,8 +30,8 @@ import org.apache.poi.util.LittleEndian;
  * @version 2.0-pre
  */
 
-public class SaveRecalcRecord
-    extends Record
+public final class SaveRecalcRecord
+    extends StandardRecord
 {
     public final static short sid = 0x5f;
     private short             field_1_recalc;
@@ -77,12 +77,8 @@ public class SaveRecalcRecord
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte [] data)
-    {
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset, ( short ) 0x2);
-        LittleEndian.putShort(data, 4 + offset, field_1_recalc);
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(field_1_recalc);
     }
 
     protected int getDataSize() {
index cf58666eb11307fd47669b369888c56cc5ffc5c6..37605c699684d965121f05a00e2a2e5d4b3c6f79 100644 (file)
@@ -19,7 +19,7 @@
 
 package org.apache.poi.hssf.record;
 
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * Title: Scenario Protect Record<P>
@@ -32,8 +32,8 @@ import org.apache.poi.util.LittleEndian;
  * @author Andrew C. Oliver (acoliver at apache dot org)
  */
 
-public class ScenarioProtectRecord
-    extends Record
+public final class ScenarioProtectRecord
+    extends StandardRecord
 {
     public final static short sid = 0xdd;
     private short             field_1_protect;
@@ -85,13 +85,8 @@ public class ScenarioProtectRecord
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte [] data)
-    {
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset,
-                              (( short ) 0x02));   // 2 bytes (6 total)
-        LittleEndian.putShort(data, 4 + offset, field_1_protect);
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(field_1_protect);
     }
 
     protected int getDataSize() {
index 0754aa506e1399c75ddb7dcf8e2c95046e89fb2f..afe0dc3e634725078db3359ed1e8252b4c88a3e0 100644 (file)
 package org.apache.poi.hssf.record;
 
 import org.apache.poi.util.HexDump;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * The series chart group index record stores the index to the CHARTFORMAT record (0 based).<p/>
  * 
  * @author Glen Stampoultzis (glens at apache.org)
  */
-public final class SeriesChartGroupIndexRecord extends Record {
+public final class SeriesChartGroupIndexRecord extends StandardRecord {
     public final static short      sid                             = 0x1045;
     private  short      field_1_chartGroupIndex;
 
@@ -54,16 +54,8 @@ public final class SeriesChartGroupIndexRecord extends Record {
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte[] data)
-    {
-        int pos = 0;
-
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset, (short)(getRecordSize() - 4));
-
-        LittleEndian.putShort(data, 4 + offset + pos, field_1_chartGroupIndex);
-
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(field_1_chartGroupIndex);
     }
 
     protected int getDataSize() {
index af75ced7c2b95e2ce6510279ed65fa8bd47c3463..c6870b1b69ded23a07f84aade648a61447974f4e 100644 (file)
 package org.apache.poi.hssf.record;
 
 import org.apache.poi.util.HexDump;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * links a series to its position in the series list.<p/>
  * 
  * @author Andrew C. Oliver (acoliver at apache.org)
  */
-public final class SeriesIndexRecord extends Record {
+public final class SeriesIndexRecord extends StandardRecord {
     public final static short      sid                             = 0x1065;
     private  short      field_1_index;
 
@@ -54,16 +54,8 @@ public final class SeriesIndexRecord extends Record {
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte[] data)
-    {
-        int pos = 0;
-
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset, (short)(getRecordSize() - 4));
-
-        LittleEndian.putShort(data, 4 + offset + pos, field_1_index);
-
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(field_1_index);
     }
 
     protected int getDataSize() {
index 60d971de82a1b5ed1165f62ad84c7e1386615742..8386768862877494bacdd58d5d490fd24950992c 100644 (file)
@@ -20,14 +20,14 @@ package org.apache.poi.hssf.record;
 import org.apache.poi.util.BitField;
 import org.apache.poi.util.BitFieldFactory;
 import org.apache.poi.util.HexDump;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * The series label record defines the type of label associated with the data format record.<p/>
  * 
  * @author Glen Stampoultzis (glens at apache.org)
  */
-public final class SeriesLabelsRecord extends Record {
+public final class SeriesLabelsRecord extends StandardRecord {
     public final static short      sid = 0x100c;
 
     private static final BitField showActual        = BitFieldFactory.getInstance(0x01);
@@ -69,16 +69,8 @@ public final class SeriesLabelsRecord extends Record {
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte[] data)
-    {
-        int pos = 0;
-
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset, (short)(getRecordSize() - 4));
-
-        LittleEndian.putShort(data, 4 + offset + pos, field_1_formatFlags);
-
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(field_1_formatFlags);
     }
 
     protected int getDataSize() {
index ec35521da9140fa1eee3dac94c01e3f3e4e1a639..33ca3f9a50de7915cb7659f24f1ff81c71fb2251 100644 (file)
 package org.apache.poi.hssf.record;
 
 import org.apache.poi.util.HexDump;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * The series record describes the overall data for a series.<p/>
  * 
  * @author Glen Stampoultzis (glens at apache.org)
  */
-public final class SeriesRecord extends Record {
+public final class SeriesRecord extends StandardRecord {
     public final static short      sid                             = 0x1003;
     private  short      field_1_categoryDataType;
     public final static short       CATEGORY_DATA_TYPE_DATES       = 0;
@@ -97,21 +97,13 @@ public final class SeriesRecord extends Record {
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte[] data)
-    {
-        int pos = 0;
-
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset, (short)(getRecordSize() - 4));
-
-        LittleEndian.putShort(data, 4 + offset + pos, field_1_categoryDataType);
-        LittleEndian.putShort(data, 6 + offset + pos, field_2_valuesDataType);
-        LittleEndian.putShort(data, 8 + offset + pos, field_3_numCategories);
-        LittleEndian.putShort(data, 10 + offset + pos, field_4_numValues);
-        LittleEndian.putShort(data, 12 + offset + pos, field_5_bubbleSeriesType);
-        LittleEndian.putShort(data, 14 + offset + pos, field_6_numBubbleValues);
-
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(field_1_categoryDataType);
+        out.writeShort(field_2_valuesDataType);
+        out.writeShort(field_3_numCategories);
+        out.writeShort(field_4_numValues);
+        out.writeShort(field_5_bubbleSeriesType);
+        out.writeShort(field_6_numBubbleValues);
     }
 
     protected int getDataSize() {
index 648a5b1269a27222914613d50ead7b251e86af22..1069dad1235fe6d6d89e1d09634b2e554a241cbb 100644 (file)
@@ -18,7 +18,7 @@
 package org.apache.poi.hssf.record;
 
 import org.apache.poi.util.HexDump;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * Indicates the chart-group index for a series.  The order probably defines the mapping.  
@@ -27,7 +27,7 @@ import org.apache.poi.util.LittleEndian;
  * 
  * @author Andrew C. Oliver (acoliver at apache.org)
  */
-public final class SeriesToChartGroupRecord extends Record {
+public final class SeriesToChartGroupRecord extends StandardRecord {
     public final static short      sid                             = 0x1045;
     private  short      field_1_chartGroupIndex;
 
@@ -56,16 +56,8 @@ public final class SeriesToChartGroupRecord extends Record {
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte[] data)
-    {
-        int pos = 0;
-
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset, (short)(getRecordSize() - 4));
-
-        LittleEndian.putShort(data, 4 + offset + pos, field_1_chartGroupIndex);
-
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(field_1_chartGroupIndex);
     }
 
     protected int getDataSize() {
index ecfc6156c385ed53451143215099a21091fe3437..6d3c7b3ee584ecaa4fb58f8e3f9bb0ded1db1b18 100644 (file)
@@ -20,14 +20,14 @@ package org.apache.poi.hssf.record;
 import org.apache.poi.util.BitField;
 import org.apache.poi.util.BitFieldFactory;
 import org.apache.poi.util.HexDump;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * Describes a chart sheet properties record.<p/>
  * 
  * @author Glen Stampoultzis (glens at apache.org)
  */
-public final class SheetPropertiesRecord extends Record {
+public final class SheetPropertiesRecord extends StandardRecord {
     public final static short sid = 0x1044;
     
     private static final BitField chartTypeManuallyFormatted = BitFieldFactory.getInstance(0x01);
@@ -77,17 +77,9 @@ public final class SheetPropertiesRecord extends Record {
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte[] data)
-    {
-        int pos = 0;
-
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset, (short)(getRecordSize() - 4));
-
-        LittleEndian.putShort(data, 4 + offset + pos, field_1_flags);
-        data[ 6 + offset + pos ] = field_2_empty;
-
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(field_1_flags);
+        out.writeByte(field_2_empty);
     }
 
     protected int getDataSize() {
index 0820e6baf3f896a051a2e565183765b946212da2..9fc27d4fdc01435527d225dcf0983258320cb002 100644 (file)
@@ -20,14 +20,14 @@ package org.apache.poi.hssf.record;
 import org.apache.poi.util.BitField;
 import org.apache.poi.util.BitFieldFactory;
 import org.apache.poi.util.HexDump;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * The text record is used to define text stored on a chart.<p/>
  * 
  * @author Glen Stampoultzis (glens at apache.org)
  */
-public final class TextRecord extends Record {
+public final class TextRecord extends StandardRecord {
     public final static short      sid                             = 0x1025;
     
     private static final BitField dataLabelPlacement            = BitFieldFactory.getInstance(0x000F);
@@ -179,27 +179,19 @@ public final class TextRecord extends Record {
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte[] data)
-    {
-        int pos = 0;
-
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset, (short)(getRecordSize() - 4));
-
-        data[ 4 + offset + pos ] = field_1_horizontalAlignment;
-        data[ 5 + offset + pos ] = field_2_verticalAlignment;
-        LittleEndian.putShort(data, 6 + offset + pos, field_3_displayMode);
-        LittleEndian.putInt(data, 8 + offset + pos, field_4_rgbColor);
-        LittleEndian.putInt(data, 12 + offset + pos, field_5_x);
-        LittleEndian.putInt(data, 16 + offset + pos, field_6_y);
-        LittleEndian.putInt(data, 20 + offset + pos, field_7_width);
-        LittleEndian.putInt(data, 24 + offset + pos, field_8_height);
-        LittleEndian.putShort(data, 28 + offset + pos, field_9_options1);
-        LittleEndian.putShort(data, 30 + offset + pos, field_10_indexOfColorValue);
-        LittleEndian.putShort(data, 32 + offset + pos, field_11_options2);
-        LittleEndian.putShort(data, 34 + offset + pos, field_12_textRotation);
-
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeByte(field_1_horizontalAlignment);
+        out.writeByte(field_2_verticalAlignment);
+        out.writeShort(field_3_displayMode);
+        out.writeInt(field_4_rgbColor);
+        out.writeInt(field_5_x);
+        out.writeInt(field_6_y);
+        out.writeInt(field_7_width);
+        out.writeInt(field_8_height);
+        out.writeShort(field_9_options1);
+        out.writeShort(field_10_indexOfColorValue);
+        out.writeShort(field_11_options2);
+        out.writeShort(field_12_textRotation);
     }
 
     protected int getDataSize() {
index 3b662d18bb5651f6d77e8b1abaf1e6a5a5c233a8..2913224992dc7c7e9445dd2e409e5d0d22d4486b 100644 (file)
@@ -20,14 +20,14 @@ package org.apache.poi.hssf.record;
 import org.apache.poi.util.BitField;
 import org.apache.poi.util.BitFieldFactory;
 import org.apache.poi.util.HexDump;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * The Tick record defines how tick marks and label positioning/formatting<p/>
  * 
  * @author Andrew C. Oliver(acoliver at apache.org)
  */
-public final class TickRecord extends Record {
+public final class TickRecord extends StandardRecord {
     public final static short sid = 0x101E;
     
     private static final BitField autoTextColor      = BitFieldFactory.getInstance(0x1);
@@ -126,27 +126,19 @@ public final class TickRecord extends Record {
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte[] data)
-    {
-        int pos = 0;
-
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset, (short)(getRecordSize() - 4));
-
-        data[ 4 + offset + pos ] = field_1_majorTickType;
-        data[ 5 + offset + pos ] = field_2_minorTickType;
-        data[ 6 + offset + pos ] = field_3_labelPosition;
-        data[ 7 + offset + pos ] = field_4_background;
-        LittleEndian.putInt(data, 8 + offset + pos, field_5_labelColorRgb);
-        LittleEndian.putInt(data, 12 + offset + pos, field_6_zero1);
-        LittleEndian.putInt(data, 16 + offset + pos, field_7_zero2);
-        LittleEndian.putInt(data, 20 + offset + pos, field_8_zero3);
-        LittleEndian.putInt(data, 24 + offset + pos, field_9_zero4);        
-        LittleEndian.putShort(data, 28 + offset + pos, field_10_options);
-        LittleEndian.putShort(data, 30 + offset + pos, field_11_tickColor);
-        LittleEndian.putShort(data, 32 + offset + pos, field_12_zero5);
-
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeByte(field_1_majorTickType);
+        out.writeByte(field_2_minorTickType);
+        out.writeByte(field_3_labelPosition);
+        out.writeByte(field_4_background);
+        out.writeInt(field_5_labelColorRgb);
+        out.writeInt(field_6_zero1);
+        out.writeInt(field_7_zero2);
+        out.writeInt(field_8_zero3);
+        out.writeInt(field_9_zero4);
+        out.writeShort(field_10_options);
+        out.writeShort(field_11_tickColor);
+        out.writeShort(field_12_zero5);
     }
 
     protected int getDataSize() {
index e52326e5cfb590274f560f5e5238c523cd4c840a..750ebf0eda3b2f548fa92d2658ce3e5d7ab1a58e 100644 (file)
@@ -24,7 +24,7 @@ import org.apache.poi.util.*;
  * 
  * @author Shawn Laubach (slaubach at apache dot org)
  */
-public final class TopMarginRecord extends Record implements Margin {
+public final class TopMarginRecord extends StandardRecord implements Margin {
     public final static short sid = 0x28;
     private double field_1_margin;
 
@@ -47,12 +47,8 @@ public final class TopMarginRecord extends Record implements Margin {
         return buffer.toString();
     }
 
-    public int serialize( int offset, byte[] data )
-    {
-        LittleEndian.putShort( data, 0 + offset, sid );
-        LittleEndian.putShort( data, 2 + offset, (short) ( getRecordSize() - 4 ) );
-        LittleEndian.putDouble( data, 4 + offset, field_1_margin );
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeDouble(field_1_margin);
     }
 
     protected int getDataSize() {
@@ -78,4 +74,4 @@ public final class TopMarginRecord extends Record implements Margin {
         rec.field_1_margin = this.field_1_margin;
         return rec;
     }
-}  // END OF C
\ No newline at end of file
+}  // END OF 
\ No newline at end of file
index 01ae71f5af30b5b0ddaeedd021453574889e84cc..0c1f31ffc1dec91fbe9c2ec1d9c4ea277bb652e1 100644 (file)
@@ -17,7 +17,7 @@
 
 package org.apache.poi.hssf.record;
 
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * Title: Uncalced Record
@@ -27,7 +27,7 @@ import org.apache.poi.util.LittleEndian;
  * 
  * @author Olivier Leprince
  */
-public final class UncalcedRecord extends Record  {
+public final class UncalcedRecord extends StandardRecord  {
        public final static short sid = 0x005E;
 
        public UncalcedRecord() {
@@ -48,11 +48,8 @@ public final class UncalcedRecord extends Record  {
                return buffer.toString();
        }
 
-       public int serialize(int offset, byte[] data) {
-               LittleEndian.putUShort(data, 0 + offset, sid);
-               LittleEndian.putUShort(data, 2 + offset, 2);
-               LittleEndian.putUShort(data, 4 + offset, 0); // unused
-               return getRecordSize();
+       public void serialize(LittleEndianOutput out) {
+               out.writeShort(0);
        }
 
        protected int getDataSize() {
index f09b3cb2da08cba2e201f6e3a27afdbe227debf2..4ed1253814175bc86d38a7d24d6d44225a361245 100644 (file)
 package org.apache.poi.hssf.record;
 
 import org.apache.poi.util.HexDump;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * The units record describes units.<p/>
  * 
  * @author Glen Stampoultzis (glens at apache.org)
  */
-public final class UnitsRecord extends Record {
+public final class UnitsRecord extends StandardRecord {
     public final static short      sid                             = 0x1001;
     private  short      field_1_units;
 
@@ -55,16 +55,8 @@ public final class UnitsRecord extends Record {
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte[] data)
-    {
-        int pos = 0;
-
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset, (short)(getRecordSize() - 4));
-
-        LittleEndian.putShort(data, 4 + offset + pos, field_1_units);
-
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(field_1_units);
     }
 
     protected int getDataSize() {
index e513cc8125f97519cf1a69373d5da2601ae41cf0..fc81167fb10a0953d74e172f173f22deaf508505 100644 (file)
@@ -19,7 +19,7 @@
 
 package org.apache.poi.hssf.record;
 
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * Title:        Use Natural Language Formulas Flag<P>
@@ -30,8 +30,8 @@ import org.apache.poi.util.LittleEndian;
  * @version 2.0-pre
  */
 
-public class UseSelFSRecord
-    extends Record
+public final class UseSelFSRecord
+    extends StandardRecord
 {
     public final static short sid   = 0x160;
     public final static short TRUE  = 1;
@@ -84,13 +84,8 @@ public class UseSelFSRecord
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte [] data)
-    {
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset,
-                              (( short ) 0x02));   // 2 bytes (6 total)
-        LittleEndian.putShort(data, 4 + offset, getFlag());
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(getFlag());
     }
 
     protected int getDataSize() {
index 6e4c4d03c63f3804ff7c951b85d55e8792993803..f14845c7e4149c663c1da922f858fa1feac7638f 100644 (file)
@@ -17,7 +17,7 @@
 
 package org.apache.poi.hssf.record;
 
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * Title:        VCenter record<P>
@@ -28,7 +28,7 @@ import org.apache.poi.util.LittleEndian;
  * @version 2.0-pre
  */
 
-public final class VCenterRecord extends Record {
+public final class VCenterRecord extends StandardRecord {
     public final static short sid = 0x84;
     private int field_1_vcenter;
 
@@ -72,12 +72,8 @@ public final class VCenterRecord extends Record {
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte [] data)
-    {
-        LittleEndian.putUShort(data, 0 + offset, sid);
-        LittleEndian.putUShort(data, 2 + offset, 0x2);
-        LittleEndian.putUShort(data, 4 + offset, field_1_vcenter);
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(field_1_vcenter);
     }
 
     protected int getDataSize() {
index fa13af68aef04d8f3cb3a0bd8adccbedd54dac16..f1df0dde588197ef5abb2044e12aba2b6f68d030 100644 (file)
@@ -20,14 +20,14 @@ package org.apache.poi.hssf.record;
 import org.apache.poi.util.BitField;
 import org.apache.poi.util.BitFieldFactory;
 import org.apache.poi.util.HexDump;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * The value range record defines the range of the value axis.<p/>
  * 
  * @author Glen Stampoultzis (glens at apache.org)
  */
-public final class ValueRangeRecord extends Record {
+public final class ValueRangeRecord extends StandardRecord {
     public final static short sid = 0x101f;
     
     private static final BitField automaticMinimum           = BitFieldFactory.getInstance(0x0001);
@@ -102,21 +102,13 @@ public final class ValueRangeRecord extends Record {
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte[] data)
-    {
-        int pos = 0;
-
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset, (short)(getRecordSize() - 4));
-
-        LittleEndian.putDouble(data, 4 + offset + pos, field_1_minimumAxisValue);
-        LittleEndian.putDouble(data, 12 + offset + pos, field_2_maximumAxisValue);
-        LittleEndian.putDouble(data, 20 + offset + pos, field_3_majorIncrement);
-        LittleEndian.putDouble(data, 28 + offset + pos, field_4_minorIncrement);
-        LittleEndian.putDouble(data, 36 + offset + pos, field_5_categoryAxisCross);
-        LittleEndian.putShort(data, 44 + offset + pos, field_6_options);
-
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeDouble(field_1_minimumAxisValue);
+        out.writeDouble(field_2_maximumAxisValue);
+        out.writeDouble(field_3_majorIncrement);
+        out.writeDouble(field_4_minorIncrement);
+        out.writeDouble(field_5_categoryAxisCross);
+        out.writeShort(field_6_options);
     }
 
     protected int getDataSize() {
index d58e26d9d76d4efbf88fc9fc7fd25ff102f0fa02..a95775eaff7b846cb2ef0d9731f5b9b3b98f9d81 100644 (file)
@@ -19,7 +19,7 @@ package org.apache.poi.hssf.record;
 
 import org.apache.poi.util.BitField;
 import org.apache.poi.util.BitFieldFactory;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * Title:        WSBool Record.<p>
@@ -31,7 +31,7 @@ import org.apache.poi.util.LittleEndian;
  * @author Jason Height (jheight at chariot dot net dot au)
  * @version 2.0-pre
  */
-public final class WSBoolRecord extends Record {
+public final class WSBoolRecord extends StandardRecord {
     public final static short     sid = 0x81;
     private byte                  field_1_wsbool;         // crappy names are because this is really one big short field (2byte)
     private byte                  field_2_wsbool;         // but the docs inconsistently use it as 2 separate bytes
@@ -316,13 +316,9 @@ public final class WSBoolRecord extends Record {
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte [] data)
-    {
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset, ( short ) 0x2);
-        data[ 5 + offset ] = getWSBool1();
-        data[ 4 + offset ] = getWSBool2();
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeByte(getWSBool2());
+        out.writeByte(getWSBool1());
     }
 
     protected int getDataSize() {
index 8fb0772132db2d598c0e1765e456c5d4a5b56fc3..ffed2164e176d0e1a619b058379eb8fa6a7823e9 100644 (file)
@@ -19,7 +19,7 @@ package org.apache.poi.hssf.record;
 
 import org.apache.poi.util.BitField;
 import org.apache.poi.util.BitFieldFactory;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * Title:        Window1 Record<P>
@@ -30,7 +30,7 @@ import org.apache.poi.util.LittleEndian;
  * @author Andrew C. Oliver (acoliver at apache dot org)
  * @version 2.0-pre
  */
-public final class WindowOneRecord extends Record {
+public final class WindowOneRecord extends StandardRecord {
     public final static short     sid = 0x3d;
 
     // our variable names stolen from old TV sets.
@@ -422,21 +422,16 @@ public final class WindowOneRecord extends Record {
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte [] data)
-    {
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset,
-                              (( short ) 0x12));   // 18 bytes (22 total)
-        LittleEndian.putShort(data, 4 + offset, getHorizontalHold());
-        LittleEndian.putShort(data, 6 + offset, getVerticalHold());
-        LittleEndian.putShort(data, 8 + offset, getWidth());
-        LittleEndian.putShort(data, 10 + offset, getHeight());
-        LittleEndian.putShort(data, 12 + offset, getOptions());
-        LittleEndian.putUShort(data, 14 + offset, getActiveSheetIndex());
-        LittleEndian.putUShort(data, 16 + offset, getFirstVisibleTab());
-        LittleEndian.putShort(data, 18 + offset, getNumSelectedTabs());
-        LittleEndian.putShort(data, 20 + offset, getTabWidthRatio());
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(getHorizontalHold());
+        out.writeShort(getVerticalHold());
+        out.writeShort(getWidth());
+        out.writeShort(getHeight());
+        out.writeShort(getOptions());
+        out.writeShort(getActiveSheetIndex());
+        out.writeShort(getFirstVisibleTab());
+        out.writeShort(getNumSelectedTabs());
+        out.writeShort(getTabWidthRatio());
     }
 
     protected int getDataSize() {
index e61d8611fc14fbad5d911d4ed0bd1ad7afc07f63..79140dfd8d9ef85b29b62f57fdf03ad61822cac6 100644 (file)
@@ -19,7 +19,7 @@
 
 package org.apache.poi.hssf.record;
 
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * Title: Window Protect Record<P>
@@ -29,8 +29,8 @@ import org.apache.poi.util.LittleEndian;
  * @version 2.0-pre
  */
 
-public class WindowProtectRecord
-    extends Record
+public final class WindowProtectRecord
+    extends StandardRecord
 {
     public final static short sid = 0x19;
     private short             field_1_protect;
@@ -83,13 +83,8 @@ public class WindowProtectRecord
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte [] data)
-    {
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset,
-                              (( short ) 0x02));   // 2 bytes (6 total)
-        LittleEndian.putShort(data, 4 + offset, field_1_protect);
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(field_1_protect);
     }
 
     protected int getDataSize() {
index 70cc29166fbbf81110788a08c908b8ef13c64c7a..a56f9bd522a11859ebda9334d9bdc7c47b083dab 100644 (file)
@@ -19,7 +19,7 @@ package org.apache.poi.hssf.record;
 
 import org.apache.poi.util.BitField;
 import org.apache.poi.util.BitFieldFactory;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * Title:        Window Two Record<P>
@@ -29,7 +29,7 @@ import org.apache.poi.util.LittleEndian;
  * @author Jason Height (jheight at chariot dot net dot au)
  * @version 2.0-pre
  */
-public final class WindowTwoRecord extends Record {
+public final class WindowTwoRecord extends StandardRecord {
     public final static short sid = 0x023E;
 
     // bitfields
@@ -523,18 +523,14 @@ public final class WindowTwoRecord extends Record {
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte [] data)
-    {
-        LittleEndian.putShort(data, 0 + offset, sid);
-        LittleEndian.putShort(data, 2 + offset, ( short ) 18);
-        LittleEndian.putShort(data, 4 + offset, getOptions());
-        LittleEndian.putShort(data, 6 + offset, getTopRow());
-        LittleEndian.putShort(data, 8 + offset, getLeftCol());
-        LittleEndian.putInt(data, 10 + offset, getHeaderColor());
-        LittleEndian.putShort(data, 14 + offset, getPageBreakZoom());
-        LittleEndian.putShort(data, 16 + offset, getNormalZoom());
-        LittleEndian.putInt(data, 18 + offset, getReserved());
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
+        out.writeShort(getOptions());
+        out.writeShort(getTopRow());
+        out.writeShort(getLeftCol());
+        out.writeInt(getHeaderColor());
+        out.writeShort(getPageBreakZoom());
+        out.writeShort(getNormalZoom());
+        out.writeInt(getReserved());
     }
 
     protected int getDataSize() {
index 797f872430563aa84ec14411ce9eb120e3139590..14afeedc37f1e46fe1de69300849a62257783781 100644 (file)
@@ -17,7 +17,7 @@
 
 package org.apache.poi.hssf.record;
 
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianOutput;
 
 /**
  * Title:        Write Protect Record<P>
@@ -25,7 +25,7 @@ import org.apache.poi.util.LittleEndian;
  * REFERENCE:  PG 425 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)<P>
  * @version 3.0-pre
  */
-public final class WriteProtectRecord extends Record {
+public final class WriteProtectRecord extends StandardRecord {
     public final static short sid = 0x86;
 
     public WriteProtectRecord()
@@ -48,12 +48,7 @@ public final class WriteProtectRecord extends Record {
         return buffer.toString();
     }
 
-    public int serialize(int offset, byte [] data)
-    {
-        LittleEndian.putUShort(data, 0 + offset, sid);
-        LittleEndian.putUShort(data, 2 + offset, 0);
-
-        return getRecordSize();
+    public void serialize(LittleEndianOutput out) {
     }
 
     protected int getDataSize() {