From 99b3eba292c4dc04a91ca09f8cf69649af3b3d84 Mon Sep 17 00:00:00 2001 From: Josh Micich Date: Fri, 31 Oct 2008 18:37:16 +0000 Subject: [PATCH] Merged revisions 709263-709264,709317 via svnmerge from https://svn.apache.org/repos/asf/poi/trunk ........ r709263 | josh | 2008-10-30 15:07:26 -0700 (Thu, 30 Oct 2008) | 1 line Removed dodgy superlcass implementation of Record.getRecordSize() ........ r709264 | josh | 2008-10-30 15:13:56 -0700 (Thu, 30 Oct 2008) | 1 line Introduced Record.getDataSize() method ........ r709317 | josh | 2008-10-30 18:02:55 -0700 (Thu, 30 Oct 2008) | 1 line converted getRecordSize methods to getDataSize ........ git-svn-id: https://svn.apache.org/repos/asf/poi/branches/ooxml@709526 13f79535-47bb-0310-9956-ffa450edef68 --- .../dummyrecord/DummyRecordBase.java | 40 +++++++++++ .../dummyrecord/LastCellOfRowDummyRecord.java | 10 +-- .../dummyrecord/MissingCellDummyRecord.java | 11 +-- .../dummyrecord/MissingRowDummyRecord.java | 12 +--- .../record/AbstractEscherHolderRecord.java | 46 +++--------- .../poi/hssf/record/AreaFormatRecord.java | 5 +- .../apache/poi/hssf/record/AreaRecord.java | 5 +- .../poi/hssf/record/AxisLineFormatRecord.java | 5 +- .../poi/hssf/record/AxisOptionsRecord.java | 5 +- .../poi/hssf/record/AxisParentRecord.java | 5 +- .../apache/poi/hssf/record/AxisRecord.java | 5 +- .../poi/hssf/record/AxisUsedRecord.java | 5 +- .../org/apache/poi/hssf/record/BOFRecord.java | 5 +- .../apache/poi/hssf/record/BackupRecord.java | 5 +- .../org/apache/poi/hssf/record/BarRecord.java | 5 +- .../apache/poi/hssf/record/BeginRecord.java | 5 +- .../apache/poi/hssf/record/BlankRecord.java | 5 +- .../poi/hssf/record/BookBoolRecord.java | 5 +- .../apache/poi/hssf/record/BoolErrRecord.java | 7 +- .../poi/hssf/record/BottomMarginRecord.java | 7 +- .../poi/hssf/record/BoundSheetRecord.java | 6 +- .../poi/hssf/record/CFHeaderRecord.java | 6 +- .../apache/poi/hssf/record/CFRuleRecord.java | 7 +- .../poi/hssf/record/CRNCountRecord.java | 9 ++- .../org/apache/poi/hssf/record/CRNRecord.java | 6 +- .../poi/hssf/record/CalcCountRecord.java | 5 +- .../poi/hssf/record/CalcModeRecord.java | 5 +- .../hssf/record/CategorySeriesAxisRecord.java | 5 +- .../poi/hssf/record/ChartFormatRecord.java | 5 +- .../apache/poi/hssf/record/ChartRecord.java | 5 +- .../hssf/record/ChartTitleFormatRecord.java | 5 +- .../poi/hssf/record/CodepageRecord.java | 5 +- .../poi/hssf/record/ColumnInfoRecord.java | 5 +- .../poi/hssf/record/ContinueRecord.java | 14 +--- .../apache/poi/hssf/record/CountryRecord.java | 5 +- .../apache/poi/hssf/record/DBCellRecord.java | 6 +- .../org/apache/poi/hssf/record/DSFRecord.java | 5 +- .../apache/poi/hssf/record/DVALRecord.java | 5 +- .../org/apache/poi/hssf/record/DVRecord.java | 4 +- .../org/apache/poi/hssf/record/DatRecord.java | 5 +- .../poi/hssf/record/DataFormatRecord.java | 5 +- .../poi/hssf/record/DateWindow1904Record.java | 5 +- .../hssf/record/DefaultColWidthRecord.java | 5 +- .../DefaultDataLabelTextPropertiesRecord.java | 5 +- .../hssf/record/DefaultRowHeightRecord.java | 5 +- .../apache/poi/hssf/record/DeltaRecord.java | 5 +- .../poi/hssf/record/DimensionsRecord.java | 5 +- .../poi/hssf/record/DrawingGroupRecord.java | 26 +++---- .../apache/poi/hssf/record/DrawingRecord.java | 27 ++++--- .../record/DrawingRecordForBiffViewer.java | 4 +- .../hssf/record/DrawingSelectionRecord.java | 3 +- .../org/apache/poi/hssf/record/EOFRecord.java | 5 +- .../org/apache/poi/hssf/record/EndRecord.java | 5 +- .../poi/hssf/record/EscherAggregate.java | 6 +- .../poi/hssf/record/ExtSSTInfoSubRecord.java | 5 +- .../apache/poi/hssf/record/ExtSSTRecord.java | 24 +++---- .../poi/hssf/record/ExtendedFormatRecord.java | 5 +- .../poi/hssf/record/ExternSheetRecord.java | 7 +- .../poi/hssf/record/ExternalNameRecord.java | 6 +- .../poi/hssf/record/FilePassRecord.java | 5 +- .../poi/hssf/record/FileSharingRecord.java | 6 +- .../poi/hssf/record/FnGroupCountRecord.java | 5 +- .../poi/hssf/record/FontBasisRecord.java | 5 +- .../poi/hssf/record/FontIndexRecord.java | 5 +- .../apache/poi/hssf/record/FontRecord.java | 17 ++--- .../apache/poi/hssf/record/FooterRecord.java | 11 ++- .../apache/poi/hssf/record/FormatRecord.java | 16 ++--- .../apache/poi/hssf/record/FormulaRecord.java | 6 +- .../apache/poi/hssf/record/FrameRecord.java | 5 +- .../apache/poi/hssf/record/GridsetRecord.java | 5 +- .../apache/poi/hssf/record/GutsRecord.java | 5 +- .../apache/poi/hssf/record/HCenterRecord.java | 5 +- .../apache/poi/hssf/record/HeaderRecord.java | 21 ++---- .../apache/poi/hssf/record/HideObjRecord.java | 5 +- .../poi/hssf/record/HyperlinkRecord.java | 7 +- .../apache/poi/hssf/record/IndexRecord.java | 15 ++-- .../poi/hssf/record/InterfaceEndRecord.java | 5 +- .../poi/hssf/record/InterfaceHdrRecord.java | 5 +- .../poi/hssf/record/IterationRecord.java | 5 +- .../apache/poi/hssf/record/LabelRecord.java | 9 +-- .../poi/hssf/record/LabelSSTRecord.java | 5 +- .../poi/hssf/record/LeftMarginRecord.java | 6 +- .../apache/poi/hssf/record/LegendRecord.java | 5 +- .../poi/hssf/record/LineFormatRecord.java | 5 +- .../poi/hssf/record/LinkedDataRecord.java | 5 +- .../org/apache/poi/hssf/record/MMSRecord.java | 5 +- .../poi/hssf/record/MergeCellsRecord.java | 6 +- .../poi/hssf/record/MulBlankRecord.java | 72 ++++++------------- .../apache/poi/hssf/record/MulRKRecord.java | 9 +-- .../apache/poi/hssf/record/NameRecord.java | 7 +- .../apache/poi/hssf/record/NoteRecord.java | 13 ++-- .../hssf/record/NumberFormatIndexRecord.java | 5 +- .../apache/poi/hssf/record/NumberRecord.java | 5 +- .../org/apache/poi/hssf/record/ObjRecord.java | 6 +- .../poi/hssf/record/ObjectLinkRecord.java | 5 +- .../poi/hssf/record/ObjectProtectRecord.java | 5 +- .../poi/hssf/record/PageBreakRecord.java | 17 ++--- .../apache/poi/hssf/record/PaletteRecord.java | 5 +- .../apache/poi/hssf/record/PaneRecord.java | 5 +- .../poi/hssf/record/PasswordRecord.java | 4 +- .../poi/hssf/record/PasswordRev4Record.java | 5 +- .../poi/hssf/record/PlotAreaRecord.java | 5 +- .../poi/hssf/record/PlotGrowthRecord.java | 5 +- .../poi/hssf/record/PrecisionRecord.java | 5 +- .../poi/hssf/record/PrintGridlinesRecord.java | 5 +- .../poi/hssf/record/PrintHeadersRecord.java | 5 +- .../poi/hssf/record/PrintSetupRecord.java | 5 +- .../apache/poi/hssf/record/ProtectRecord.java | 5 +- .../poi/hssf/record/ProtectionRev4Record.java | 5 +- .../org/apache/poi/hssf/record/RKRecord.java | 49 ++----------- .../poi/hssf/record/RecalcIdRecord.java | 5 +- .../org/apache/poi/hssf/record/Record.java | 25 +++---- .../apache/poi/hssf/record/RefModeRecord.java | 5 +- .../poi/hssf/record/RefreshAllRecord.java | 5 +- .../poi/hssf/record/RightMarginRecord.java | 6 +- .../org/apache/poi/hssf/record/RowRecord.java | 5 +- .../org/apache/poi/hssf/record/SCLRecord.java | 5 +- .../org/apache/poi/hssf/record/SSTRecord.java | 15 ++-- .../poi/hssf/record/SaveRecalcRecord.java | 5 +- .../hssf/record/ScenarioProtectRecord.java | 5 +- .../poi/hssf/record/SelectionRecord.java | 6 +- .../record/SeriesChartGroupIndexRecord.java | 5 +- .../poi/hssf/record/SeriesIndexRecord.java | 5 +- .../poi/hssf/record/SeriesLabelsRecord.java | 5 +- .../poi/hssf/record/SeriesListRecord.java | 5 +- .../apache/poi/hssf/record/SeriesRecord.java | 5 +- .../poi/hssf/record/SeriesTextRecord.java | 5 +- .../hssf/record/SeriesToChartGroupRecord.java | 5 +- .../hssf/record/SharedValueRecordBase.java | 4 +- .../hssf/record/SheetPropertiesRecord.java | 5 +- .../apache/poi/hssf/record/StringRecord.java | 5 +- .../apache/poi/hssf/record/StyleRecord.java | 6 +- .../apache/poi/hssf/record/SupBookRecord.java | 6 +- .../apache/poi/hssf/record/TabIdRecord.java | 5 +- .../poi/hssf/record/TextObjectRecord.java | 10 +-- .../apache/poi/hssf/record/TextRecord.java | 5 +- .../apache/poi/hssf/record/TickRecord.java | 5 +- .../poi/hssf/record/TopMarginRecord.java | 6 +- .../poi/hssf/record/UncalcedRecord.java | 13 ++-- .../apache/poi/hssf/record/UnitsRecord.java | 5 +- .../apache/poi/hssf/record/UnknownRecord.java | 4 +- .../poi/hssf/record/UseSelFSRecord.java | 5 +- .../apache/poi/hssf/record/VCenterRecord.java | 5 +- .../poi/hssf/record/ValueRangeRecord.java | 5 +- .../apache/poi/hssf/record/WSBoolRecord.java | 5 +- .../poi/hssf/record/WindowOneRecord.java | 5 +- .../poi/hssf/record/WindowProtectRecord.java | 5 +- .../poi/hssf/record/WindowTwoRecord.java | 5 +- .../poi/hssf/record/WriteAccessRecord.java | 4 +- .../poi/hssf/record/WriteProtectRecord.java | 5 +- .../record/aggregates/PageSettingsBlock.java | 9 +++ .../poi/hssf/usermodel/TestHSSFWorkbook.java | 5 +- .../org/apache/poi/hssf/util/TestRKUtil.java | 46 ++++++------ 153 files changed, 468 insertions(+), 768 deletions(-) create mode 100644 src/java/org/apache/poi/hssf/eventusermodel/dummyrecord/DummyRecordBase.java diff --git a/src/java/org/apache/poi/hssf/eventusermodel/dummyrecord/DummyRecordBase.java b/src/java/org/apache/poi/hssf/eventusermodel/dummyrecord/DummyRecordBase.java new file mode 100644 index 000000000..333113487 --- /dev/null +++ b/src/java/org/apache/poi/hssf/eventusermodel/dummyrecord/DummyRecordBase.java @@ -0,0 +1,40 @@ +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ + +package org.apache.poi.hssf.eventusermodel.dummyrecord; + +import org.apache.poi.hssf.record.Record; +import org.apache.poi.hssf.record.RecordFormatException; + +/** + */ +abstract class DummyRecordBase extends Record { + + protected DummyRecordBase() { + // + } + + public final short getSid() { + return -1; + } + public int serialize(int offset, byte[] data) { + throw new RecordFormatException("Cannot serialize a dummy record"); + } + protected final int getDataSize() { + throw new RecordFormatException("Cannot serialize a dummy record"); + } +} diff --git a/src/java/org/apache/poi/hssf/eventusermodel/dummyrecord/LastCellOfRowDummyRecord.java b/src/java/org/apache/poi/hssf/eventusermodel/dummyrecord/LastCellOfRowDummyRecord.java index 670fa99d2..e06359301 100644 --- a/src/java/org/apache/poi/hssf/eventusermodel/dummyrecord/LastCellOfRowDummyRecord.java +++ b/src/java/org/apache/poi/hssf/eventusermodel/dummyrecord/LastCellOfRowDummyRecord.java @@ -17,13 +17,12 @@ package org.apache.poi.hssf.eventusermodel.dummyrecord; -import org.apache.poi.hssf.record.Record; /** * A dummy record to indicate that we've now had the last * cell record for this row. */ -public class LastCellOfRowDummyRecord extends Record { +public final class LastCellOfRowDummyRecord extends DummyRecordBase { private int row; private int lastColumnNumber; @@ -45,11 +44,4 @@ public class LastCellOfRowDummyRecord extends Record { * for the row. */ public int getLastColumnNumber() { return lastColumnNumber; } - - public short getSid() { - return -1; - } - public int serialize(int offset, byte[] data) { - return -1; - } } diff --git a/src/java/org/apache/poi/hssf/eventusermodel/dummyrecord/MissingCellDummyRecord.java b/src/java/org/apache/poi/hssf/eventusermodel/dummyrecord/MissingCellDummyRecord.java index 587ccb659..393e21f38 100644 --- a/src/java/org/apache/poi/hssf/eventusermodel/dummyrecord/MissingCellDummyRecord.java +++ b/src/java/org/apache/poi/hssf/eventusermodel/dummyrecord/MissingCellDummyRecord.java @@ -17,13 +17,12 @@ package org.apache.poi.hssf.eventusermodel.dummyrecord; -import org.apache.poi.hssf.record.Record; /** * A dummy record for when we're missing a cell in a row, * but still want to trigger something */ -public class MissingCellDummyRecord extends Record { +public final class MissingCellDummyRecord extends DummyRecordBase { private int row; private int column; @@ -31,14 +30,6 @@ public class MissingCellDummyRecord extends Record { this.row = row; this.column = column; } - - public short getSid() { - return -1; - } - public int serialize(int offset, byte[] data) { - return -1; - } - public int getRow() { return row; } public int getColumn() { return column; } } diff --git a/src/java/org/apache/poi/hssf/eventusermodel/dummyrecord/MissingRowDummyRecord.java b/src/java/org/apache/poi/hssf/eventusermodel/dummyrecord/MissingRowDummyRecord.java index 46f76b1d3..4c128bd00 100644 --- a/src/java/org/apache/poi/hssf/eventusermodel/dummyrecord/MissingRowDummyRecord.java +++ b/src/java/org/apache/poi/hssf/eventusermodel/dummyrecord/MissingRowDummyRecord.java @@ -17,27 +17,17 @@ package org.apache.poi.hssf.eventusermodel.dummyrecord; -import org.apache.poi.hssf.record.Record; -import org.apache.poi.hssf.record.RecordInputStream; /** * A dummy record for when we're missing a row, but still * want to trigger something */ -public class MissingRowDummyRecord extends Record { +public final class MissingRowDummyRecord extends DummyRecordBase { private int rowNumber; public MissingRowDummyRecord(int rowNumber) { this.rowNumber = rowNumber; } - - public short getSid() { - return -1; - } - public int serialize(int offset, byte[] data) { - return -1; - } - public int getRowNumber() { return rowNumber; } diff --git a/src/java/org/apache/poi/hssf/record/AbstractEscherHolderRecord.java b/src/java/org/apache/poi/hssf/record/AbstractEscherHolderRecord.java index bd8207418..461817cce 100644 --- a/src/java/org/apache/poi/hssf/record/AbstractEscherHolderRecord.java +++ b/src/java/org/apache/poi/hssf/record/AbstractEscherHolderRecord.java @@ -130,48 +130,20 @@ public abstract class AbstractEscherHolderRecord extends Record { } return getRecordSize(); } - - public int getRecordSize() - { - if (escherRecords.size() == 0 && rawData != null) - { - return rawData.length + 4; + protected int getDataSize() { + if (escherRecords.size() == 0 && rawData != null) { + return rawData.length; } - else + int size = 0; + for ( Iterator iterator = escherRecords.iterator(); iterator.hasNext(); ) { - int size = 4; - for ( Iterator iterator = escherRecords.iterator(); iterator.hasNext(); ) - { - EscherRecord r = (EscherRecord) iterator.next(); - size += r.getRecordSize(); - } - return size; + EscherRecord r = (EscherRecord) iterator.next(); + size += r.getRecordSize(); } + return size; } -// -// /** -// * Size of record (including 4 byte header) -// */ -// public int getRecordSize() -// { -// if (escherRecords.size() == 0 && rawData != null) -// { -// return rawData.length; -// } -// else -// { -// collapseShapeInformation(); -// -// int size = 4; -// for ( Iterator iterator = escherRecords.iterator(); iterator.hasNext(); ) -// { -// EscherRecord r = (EscherRecord) iterator.next(); -// size += r.getRecordSize(); -// } -// return size; -// } -// } + public abstract short getSid(); diff --git a/src/java/org/apache/poi/hssf/record/AreaFormatRecord.java b/src/java/org/apache/poi/hssf/record/AreaFormatRecord.java index f6abd9c17..9e3d2ea11 100644 --- a/src/java/org/apache/poi/hssf/record/AreaFormatRecord.java +++ b/src/java/org/apache/poi/hssf/record/AreaFormatRecord.java @@ -110,9 +110,8 @@ public final class AreaFormatRecord extends Record { return getRecordSize(); } - public int getRecordSize() - { - return 4 + 4 + 4 + 2 + 2 + 2 + 2; + protected int getDataSize() { + return 4 + 4 + 2 + 2 + 2 + 2; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/AreaRecord.java b/src/java/org/apache/poi/hssf/record/AreaRecord.java index 14a5737f5..85f2ea172 100644 --- a/src/java/org/apache/poi/hssf/record/AreaRecord.java +++ b/src/java/org/apache/poi/hssf/record/AreaRecord.java @@ -75,9 +75,8 @@ public final class AreaRecord extends Record { return getRecordSize(); } - public int getRecordSize() - { - return 4 + 2; + protected int getDataSize() { + return 2; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/AxisLineFormatRecord.java b/src/java/org/apache/poi/hssf/record/AxisLineFormatRecord.java index 1f6e03dbc..dbcd14e49 100644 --- a/src/java/org/apache/poi/hssf/record/AxisLineFormatRecord.java +++ b/src/java/org/apache/poi/hssf/record/AxisLineFormatRecord.java @@ -70,9 +70,8 @@ public final class AxisLineFormatRecord extends Record { return getRecordSize(); } - public int getRecordSize() - { - return 4 + 2; + protected int getDataSize() { + return 2; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/AxisOptionsRecord.java b/src/java/org/apache/poi/hssf/record/AxisOptionsRecord.java index 32656d470..c630cfe82 100644 --- a/src/java/org/apache/poi/hssf/record/AxisOptionsRecord.java +++ b/src/java/org/apache/poi/hssf/record/AxisOptionsRecord.java @@ -142,9 +142,8 @@ public final class AxisOptionsRecord extends Record { return getRecordSize(); } - public int getRecordSize() - { - return 4 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2; + protected int getDataSize() { + return 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/AxisParentRecord.java b/src/java/org/apache/poi/hssf/record/AxisParentRecord.java index 9a92c2e4a..0f7b8dba3 100644 --- a/src/java/org/apache/poi/hssf/record/AxisParentRecord.java +++ b/src/java/org/apache/poi/hssf/record/AxisParentRecord.java @@ -96,9 +96,8 @@ public final class AxisParentRecord extends Record { return getRecordSize(); } - public int getRecordSize() - { - return 4 + 2 + 4 + 4 + 4 + 4; + protected int getDataSize() { + return 2 + 4 + 4 + 4 + 4; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/AxisRecord.java b/src/java/org/apache/poi/hssf/record/AxisRecord.java index 0619027c9..2c989ce42 100644 --- a/src/java/org/apache/poi/hssf/record/AxisRecord.java +++ b/src/java/org/apache/poi/hssf/record/AxisRecord.java @@ -97,9 +97,8 @@ public final class AxisRecord extends Record { return getRecordSize(); } - public int getRecordSize() - { - return 4 + 2 + 4 + 4 + 4 + 4; + protected int getDataSize() { + return 2 + 4 + 4 + 4 + 4; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/AxisUsedRecord.java b/src/java/org/apache/poi/hssf/record/AxisUsedRecord.java index c70129d7f..76e6e6551 100644 --- a/src/java/org/apache/poi/hssf/record/AxisUsedRecord.java +++ b/src/java/org/apache/poi/hssf/record/AxisUsedRecord.java @@ -66,9 +66,8 @@ public final class AxisUsedRecord extends Record { return getRecordSize(); } - public int getRecordSize() - { - return 4 + 2; + protected int getDataSize() { + return 2; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/BOFRecord.java b/src/java/org/apache/poi/hssf/record/BOFRecord.java index 672505f5b..bd71f5328 100644 --- a/src/java/org/apache/poi/hssf/record/BOFRecord.java +++ b/src/java/org/apache/poi/hssf/record/BOFRecord.java @@ -286,9 +286,8 @@ public class BOFRecord return getRecordSize(); } - public int getRecordSize() - { - return 20; + protected int getDataSize() { + return 16; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/BackupRecord.java b/src/java/org/apache/poi/hssf/record/BackupRecord.java index 2ffbb5ba7..f2ee6ccf1 100644 --- a/src/java/org/apache/poi/hssf/record/BackupRecord.java +++ b/src/java/org/apache/poi/hssf/record/BackupRecord.java @@ -87,9 +87,8 @@ public class BackupRecord return getRecordSize(); } - public int getRecordSize() - { - return 6; + protected int getDataSize() { + return 2; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/BarRecord.java b/src/java/org/apache/poi/hssf/record/BarRecord.java index a9733c521..7b62e649e 100644 --- a/src/java/org/apache/poi/hssf/record/BarRecord.java +++ b/src/java/org/apache/poi/hssf/record/BarRecord.java @@ -92,9 +92,8 @@ public final class BarRecord extends Record { return getRecordSize(); } - public int getRecordSize() - { - return 4 + 2 + 2 + 2; + protected int getDataSize() { + return 2 + 2 + 2; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/BeginRecord.java b/src/java/org/apache/poi/hssf/record/BeginRecord.java index c983590bd..94f78f7f8 100644 --- a/src/java/org/apache/poi/hssf/record/BeginRecord.java +++ b/src/java/org/apache/poi/hssf/record/BeginRecord.java @@ -57,9 +57,8 @@ public class BeginRecord extends Record { return getRecordSize(); } - public int getRecordSize() - { - return 4; + protected int getDataSize() { + return 0; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/BlankRecord.java b/src/java/org/apache/poi/hssf/record/BlankRecord.java index 864cc53c3..424f66c4c 100644 --- a/src/java/org/apache/poi/hssf/record/BlankRecord.java +++ b/src/java/org/apache/poi/hssf/record/BlankRecord.java @@ -144,9 +144,8 @@ public final class BlankRecord extends Record implements CellValueRecordInterfac return getRecordSize(); } - public int getRecordSize() - { - return 10; + protected int getDataSize() { + return 6; } public Object clone() { diff --git a/src/java/org/apache/poi/hssf/record/BookBoolRecord.java b/src/java/org/apache/poi/hssf/record/BookBoolRecord.java index 0ad7a5ac6..072f58bec 100644 --- a/src/java/org/apache/poi/hssf/record/BookBoolRecord.java +++ b/src/java/org/apache/poi/hssf/record/BookBoolRecord.java @@ -87,9 +87,8 @@ public class BookBoolRecord return getRecordSize(); } - public int getRecordSize() - { - return 6; + protected int getDataSize() { + return 2; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/BoolErrRecord.java b/src/java/org/apache/poi/hssf/record/BoolErrRecord.java index 5595c4f0d..e0eb26d52 100644 --- a/src/java/org/apache/poi/hssf/record/BoolErrRecord.java +++ b/src/java/org/apache/poi/hssf/record/BoolErrRecord.java @@ -34,7 +34,7 @@ public final class BoolErrRecord extends Record implements CellValueRecordInterf private short field_3_xf_index; private byte field_4_bBoolErr; private byte field_5_fError; - + /** Creates new BoolErrRecord */ public BoolErrRecord() { @@ -206,9 +206,8 @@ public final class BoolErrRecord extends Record implements CellValueRecordInterf return getRecordSize(); } - public int getRecordSize() - { - return 12; + protected int getDataSize() { + return 8; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/BottomMarginRecord.java b/src/java/org/apache/poi/hssf/record/BottomMarginRecord.java index 15d3174c2..f0b7f7d2d 100644 --- a/src/java/org/apache/poi/hssf/record/BottomMarginRecord.java +++ b/src/java/org/apache/poi/hssf/record/BottomMarginRecord.java @@ -59,9 +59,8 @@ public final class BottomMarginRecord extends Record implements Margin { return getRecordSize(); } - public int getRecordSize() - { - return 4 + 8; + protected int getDataSize() { + return 8; } public short getSid() @@ -92,4 +91,4 @@ public final class BottomMarginRecord extends Record implements Margin { return rec; } -} // END OF CLA \ No newline at end of file +} // END OF C \ No newline at end of file diff --git a/src/java/org/apache/poi/hssf/record/BoundSheetRecord.java b/src/java/org/apache/poi/hssf/record/BoundSheetRecord.java index 036de6b2d..17d337f82 100644 --- a/src/java/org/apache/poi/hssf/record/BoundSheetRecord.java +++ b/src/java/org/apache/poi/hssf/record/BoundSheetRecord.java @@ -156,7 +156,7 @@ public final class BoundSheetRecord extends Record { return buffer.toString(); } - private int getDataSize() { + protected int getDataSize() { return 8 + field_5_sheetname.length() * (isMultibyte() ? 2 : 1); } @@ -179,10 +179,6 @@ public final class BoundSheetRecord extends Record { return 4 + dataSize; } - public int getRecordSize() { - return 4 + getDataSize(); - } - public short getSid() { return sid; } diff --git a/src/java/org/apache/poi/hssf/record/CFHeaderRecord.java b/src/java/org/apache/poi/hssf/record/CFHeaderRecord.java index 762af3be7..2be58b0d9 100644 --- a/src/java/org/apache/poi/hssf/record/CFHeaderRecord.java +++ b/src/java/org/apache/poi/hssf/record/CFHeaderRecord.java @@ -130,7 +130,7 @@ public final class CFHeaderRecord extends Record { return buffer.toString(); } - private int getDataSize() { + protected int getDataSize() { return 4 // 2 short fields + CellRangeAddress.ENCODED_SIZE + field_4_cell_ranges.getSize(); @@ -151,10 +151,6 @@ public final class CFHeaderRecord extends Record { return 4 + dataSize; } - public int getRecordSize() { - return 4 + getDataSize(); - } - public short getSid() { return sid; diff --git a/src/java/org/apache/poi/hssf/record/CFRuleRecord.java b/src/java/org/apache/poi/hssf/record/CFRuleRecord.java index 214ebaa29..f9e11dbaf 100644 --- a/src/java/org/apache/poi/hssf/record/CFRuleRecord.java +++ b/src/java/org/apache/poi/hssf/record/CFRuleRecord.java @@ -482,17 +482,14 @@ public final class CFRuleRecord extends Record { return recordsize; } - - public int getRecordSize() - { - int retval =16+ + protected int getDataSize() { + return 12 + (containsFontFormattingBlock()?fontFormatting.getRawRecord().length:0)+ (containsBorderFormattingBlock()?8:0)+ (containsPatternFormattingBlock()?4:0)+ getFormulaSize(field_17_formula1)+ getFormulaSize(field_18_formula2) ; - return retval; } diff --git a/src/java/org/apache/poi/hssf/record/CRNCountRecord.java b/src/java/org/apache/poi/hssf/record/CRNCountRecord.java index 5df98bf34..e04deb79d 100755 --- a/src/java/org/apache/poi/hssf/record/CRNCountRecord.java +++ b/src/java/org/apache/poi/hssf/record/CRNCountRecord.java @@ -28,7 +28,7 @@ import org.apache.poi.util.LittleEndian; public final class CRNCountRecord extends Record { public final static short sid = 0x59; - private static final short BASE_RECORD_SIZE = 4; + private static final short DATA_SIZE = 4; private int field_1_number_crn_records; @@ -65,14 +65,13 @@ public final class CRNCountRecord extends Record { public int serialize(int offset, byte [] data) { LittleEndian.putShort(data, 0 + offset, sid); - LittleEndian.putShort(data, 2 + offset, BASE_RECORD_SIZE); + 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 int getRecordSize() { - return BASE_RECORD_SIZE + 4; + protected int getDataSize() { + return DATA_SIZE; } /** diff --git a/src/java/org/apache/poi/hssf/record/CRNRecord.java b/src/java/org/apache/poi/hssf/record/CRNRecord.java index 050076cca..58be686ad 100755 --- a/src/java/org/apache/poi/hssf/record/CRNRecord.java +++ b/src/java/org/apache/poi/hssf/record/CRNRecord.java @@ -63,7 +63,7 @@ public final class CRNRecord extends Record { sb.append("]"); return sb.toString(); } - private int getDataSize() { + protected int getDataSize() { return 4 + ConstantValueParser.getEncodedSize(field_4_constant_values); } @@ -80,10 +80,6 @@ public final class CRNRecord extends Record { return recSize; } - public int getRecordSize() { - return getDataSize() + 4; - } - /** * return the non static version of the id for this record. */ diff --git a/src/java/org/apache/poi/hssf/record/CalcCountRecord.java b/src/java/org/apache/poi/hssf/record/CalcCountRecord.java index eb783f385..d2001f68d 100644 --- a/src/java/org/apache/poi/hssf/record/CalcCountRecord.java +++ b/src/java/org/apache/poi/hssf/record/CalcCountRecord.java @@ -89,9 +89,8 @@ public class CalcCountRecord return getRecordSize(); } - public int getRecordSize() - { - return 6; + protected int getDataSize() { + return 2; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/CalcModeRecord.java b/src/java/org/apache/poi/hssf/record/CalcModeRecord.java index de8d860fc..73839d82a 100644 --- a/src/java/org/apache/poi/hssf/record/CalcModeRecord.java +++ b/src/java/org/apache/poi/hssf/record/CalcModeRecord.java @@ -115,9 +115,8 @@ public class CalcModeRecord return getRecordSize(); } - public int getRecordSize() - { - return 6; + protected int getDataSize() { + return 2; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/CategorySeriesAxisRecord.java b/src/java/org/apache/poi/hssf/record/CategorySeriesAxisRecord.java index 2842788c7..ec6a37e51 100644 --- a/src/java/org/apache/poi/hssf/record/CategorySeriesAxisRecord.java +++ b/src/java/org/apache/poi/hssf/record/CategorySeriesAxisRecord.java @@ -97,9 +97,8 @@ public final class CategorySeriesAxisRecord extends Record { return getRecordSize(); } - public int getRecordSize() - { - return 4 + 2 + 2 + 2 + 2; + protected int getDataSize() { + return 2 + 2 + 2 + 2; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/ChartFormatRecord.java b/src/java/org/apache/poi/hssf/record/ChartFormatRecord.java index 490cdd455..b39759fdc 100644 --- a/src/java/org/apache/poi/hssf/record/ChartFormatRecord.java +++ b/src/java/org/apache/poi/hssf/record/ChartFormatRecord.java @@ -85,9 +85,8 @@ public final class ChartFormatRecord extends Record { return getRecordSize(); } - public int getRecordSize() - { - return 22; + protected int getDataSize() { + return 18; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/ChartRecord.java b/src/java/org/apache/poi/hssf/record/ChartRecord.java index 62e02d4fa..e07cda58e 100644 --- a/src/java/org/apache/poi/hssf/record/ChartRecord.java +++ b/src/java/org/apache/poi/hssf/record/ChartRecord.java @@ -86,9 +86,8 @@ public final class ChartRecord extends Record { return getRecordSize(); } - public int getRecordSize() - { - return 4 + 4 + 4 + 4 + 4; + protected int getDataSize() { + return 4 + 4 + 4 + 4; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/ChartTitleFormatRecord.java b/src/java/org/apache/poi/hssf/record/ChartTitleFormatRecord.java index fd22d5229..37f539e4a 100644 --- a/src/java/org/apache/poi/hssf/record/ChartTitleFormatRecord.java +++ b/src/java/org/apache/poi/hssf/record/ChartTitleFormatRecord.java @@ -88,9 +88,8 @@ public class ChartTitleFormatRecord extends Record { return getRecordSize(); } - public int getRecordSize() - { - return 4 + 2 + (4 * m_formats.size()); + protected int getDataSize() { + return 2 + (4 * m_formats.size()); } public short getSid() { diff --git a/src/java/org/apache/poi/hssf/record/CodepageRecord.java b/src/java/org/apache/poi/hssf/record/CodepageRecord.java index 4675fe473..4e61500db 100644 --- a/src/java/org/apache/poi/hssf/record/CodepageRecord.java +++ b/src/java/org/apache/poi/hssf/record/CodepageRecord.java @@ -96,9 +96,8 @@ public class CodepageRecord return getRecordSize(); } - public int getRecordSize() - { - return 6; + protected int getDataSize() { + return 2; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/ColumnInfoRecord.java b/src/java/org/apache/poi/hssf/record/ColumnInfoRecord.java index 38d05181c..1fc0907f9 100644 --- a/src/java/org/apache/poi/hssf/record/ColumnInfoRecord.java +++ b/src/java/org/apache/poi/hssf/record/ColumnInfoRecord.java @@ -280,9 +280,8 @@ public final class ColumnInfoRecord extends Record { return getRecordSize(); } - public int getRecordSize() - { - return 16; + protected int getDataSize() { + return 12; } public String toString() diff --git a/src/java/org/apache/poi/hssf/record/ContinueRecord.java b/src/java/org/apache/poi/hssf/record/ContinueRecord.java index e20c4633c..bed97a409 100644 --- a/src/java/org/apache/poi/hssf/record/ContinueRecord.java +++ b/src/java/org/apache/poi/hssf/record/ContinueRecord.java @@ -1,4 +1,3 @@ - /* ==================================================================== Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with @@ -15,7 +14,6 @@ See the License for the specific language governing permissions and limitations under the License. ==================================================================== */ - package org.apache.poi.hssf.record; @@ -31,20 +29,14 @@ import org.apache.poi.util.LittleEndian; */ public final class ContinueRecord extends Record { public final static short sid = 0x003C; - private byte[] _data; + private byte[] _data; public ContinueRecord(byte[] data) { _data = data; } - /** - * USE ONLY within "processContinue" - */ - public byte [] serialize() - { - byte[] retval = new byte[ _data.length + 4 ]; - serialize(0, retval); - return retval; + protected int getDataSize() { + return _data.length; } public int serialize(int offset, byte[] data) { diff --git a/src/java/org/apache/poi/hssf/record/CountryRecord.java b/src/java/org/apache/poi/hssf/record/CountryRecord.java index 7d739a9b6..c6b3ac454 100644 --- a/src/java/org/apache/poi/hssf/record/CountryRecord.java +++ b/src/java/org/apache/poi/hssf/record/CountryRecord.java @@ -117,9 +117,8 @@ public class CountryRecord return getRecordSize(); } - public int getRecordSize() - { - return 8; + protected int getDataSize() { + return 4; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/DBCellRecord.java b/src/java/org/apache/poi/hssf/record/DBCellRecord.java index 4085027dd..fef70667d 100644 --- a/src/java/org/apache/poi/hssf/record/DBCellRecord.java +++ b/src/java/org/apache/poi/hssf/record/DBCellRecord.java @@ -143,10 +143,8 @@ public final class DBCellRecord extends Record { } return getRecordSize(); } - - public int getRecordSize() - { - return 8 + (getNumCellOffsets() * 2); + protected int getDataSize() { + return 4 + (getNumCellOffsets() * 2); } /** diff --git a/src/java/org/apache/poi/hssf/record/DSFRecord.java b/src/java/org/apache/poi/hssf/record/DSFRecord.java index 9d405b3dd..3d2a753aa 100644 --- a/src/java/org/apache/poi/hssf/record/DSFRecord.java +++ b/src/java/org/apache/poi/hssf/record/DSFRecord.java @@ -85,9 +85,8 @@ public class DSFRecord return getRecordSize(); } - public int getRecordSize() - { - return 6; + protected int getDataSize() { + return 2; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/DVALRecord.java b/src/java/org/apache/poi/hssf/record/DVALRecord.java index 9f051db6e..69e94deac 100644 --- a/src/java/org/apache/poi/hssf/record/DVALRecord.java +++ b/src/java/org/apache/poi/hssf/record/DVALRecord.java @@ -164,9 +164,8 @@ public class DVALRecord extends Record return getRecordSize(); } - public int getRecordSize() - { - return 22; + protected int getDataSize() { + return 18; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/DVRecord.java b/src/java/org/apache/poi/hssf/record/DVRecord.java index c2c0c1f6e..c552a39f2 100644 --- a/src/java/org/apache/poi/hssf/record/DVRecord.java +++ b/src/java/org/apache/poi/hssf/record/DVRecord.java @@ -303,8 +303,8 @@ public final class DVRecord extends Record { return 3 + str.length() * (StringUtil.hasMultibyte(str) ? 2 : 1); } - public int getRecordSize() { - int size = 4+4+2+2+2+2;//header+options_field+first_formula_size+first_unused+sec_formula_size+sec+unused; + protected int getDataSize() { + int size = 4+2+2+2+2;//options_field+first_formula_size+first_unused+sec_formula_size+sec+unused; size += getUnicodeStringSize(_promptTitle); size += getUnicodeStringSize(_errorTitle); size += getUnicodeStringSize(_promptText); diff --git a/src/java/org/apache/poi/hssf/record/DatRecord.java b/src/java/org/apache/poi/hssf/record/DatRecord.java index f93efe622..ef8f2a53d 100644 --- a/src/java/org/apache/poi/hssf/record/DatRecord.java +++ b/src/java/org/apache/poi/hssf/record/DatRecord.java @@ -78,9 +78,8 @@ public final class DatRecord extends Record { return getRecordSize(); } - public int getRecordSize() - { - return 4 + 2; + protected int getDataSize() { + return 2; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/DataFormatRecord.java b/src/java/org/apache/poi/hssf/record/DataFormatRecord.java index b0a67aefa..5719ab6d2 100644 --- a/src/java/org/apache/poi/hssf/record/DataFormatRecord.java +++ b/src/java/org/apache/poi/hssf/record/DataFormatRecord.java @@ -93,9 +93,8 @@ public final class DataFormatRecord extends Record { return getRecordSize(); } - public int getRecordSize() - { - return 4 + 2 + 2 + 2 + 2; + protected int getDataSize() { + return 2 + 2 + 2 + 2; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/DateWindow1904Record.java b/src/java/org/apache/poi/hssf/record/DateWindow1904Record.java index dd023fa80..19c499281 100644 --- a/src/java/org/apache/poi/hssf/record/DateWindow1904Record.java +++ b/src/java/org/apache/poi/hssf/record/DateWindow1904Record.java @@ -85,9 +85,8 @@ public class DateWindow1904Record return getRecordSize(); } - public int getRecordSize() - { - return 6; + protected int getDataSize() { + return 2; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/DefaultColWidthRecord.java b/src/java/org/apache/poi/hssf/record/DefaultColWidthRecord.java index 8ceb88edf..a913dc6e7 100644 --- a/src/java/org/apache/poi/hssf/record/DefaultColWidthRecord.java +++ b/src/java/org/apache/poi/hssf/record/DefaultColWidthRecord.java @@ -80,9 +80,8 @@ public final class DefaultColWidthRecord extends Record { return getRecordSize(); } - public int getRecordSize() - { - return 6; + protected int getDataSize() { + return 2; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/DefaultDataLabelTextPropertiesRecord.java b/src/java/org/apache/poi/hssf/record/DefaultDataLabelTextPropertiesRecord.java index e970265f2..905616a50 100644 --- a/src/java/org/apache/poi/hssf/record/DefaultDataLabelTextPropertiesRecord.java +++ b/src/java/org/apache/poi/hssf/record/DefaultDataLabelTextPropertiesRecord.java @@ -69,9 +69,8 @@ public final class DefaultDataLabelTextPropertiesRecord extends Record { return getRecordSize(); } - public int getRecordSize() - { - return 4 + 2; + protected int getDataSize() { + return 2; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/DefaultRowHeightRecord.java b/src/java/org/apache/poi/hssf/record/DefaultRowHeightRecord.java index ae48ea4b0..9f0a51125 100644 --- a/src/java/org/apache/poi/hssf/record/DefaultRowHeightRecord.java +++ b/src/java/org/apache/poi/hssf/record/DefaultRowHeightRecord.java @@ -110,9 +110,8 @@ public class DefaultRowHeightRecord return getRecordSize(); } - public int getRecordSize() - { - return 8; + protected int getDataSize() { + return 4; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/DeltaRecord.java b/src/java/org/apache/poi/hssf/record/DeltaRecord.java index d02eb2cef..8cf0df0c4 100644 --- a/src/java/org/apache/poi/hssf/record/DeltaRecord.java +++ b/src/java/org/apache/poi/hssf/record/DeltaRecord.java @@ -88,9 +88,8 @@ public class DeltaRecord return getRecordSize(); } - public int getRecordSize() - { - return 12; + protected int getDataSize() { + return 8; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/DimensionsRecord.java b/src/java/org/apache/poi/hssf/record/DimensionsRecord.java index fa7477bc7..34422b8af 100644 --- a/src/java/org/apache/poi/hssf/record/DimensionsRecord.java +++ b/src/java/org/apache/poi/hssf/record/DimensionsRecord.java @@ -165,9 +165,8 @@ public class DimensionsRecord return getRecordSize(); } - public int getRecordSize() - { - return 18; + protected int getDataSize() { + return 14; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/DrawingGroupRecord.java b/src/java/org/apache/poi/hssf/record/DrawingGroupRecord.java index 1f149efbb..fb5b649a1 100644 --- a/src/java/org/apache/poi/hssf/record/DrawingGroupRecord.java +++ b/src/java/org/apache/poi/hssf/record/DrawingGroupRecord.java @@ -26,8 +26,7 @@ import java.util.Iterator; import java.util.List; -public class DrawingGroupRecord extends AbstractEscherHolderRecord -{ +public final class DrawingGroupRecord extends AbstractEscherHolderRecord { public static final short sid = 0xEB; static final int MAX_RECORD_SIZE = 8228; @@ -82,30 +81,25 @@ public class DrawingGroupRecord extends AbstractEscherHolderRecord public void processChildRecords() { convertRawBytesToEscherRecords(); } - - public int getRecordSize() - { - return grossSizeFromDataSize( getRawDataSize() ); + protected int getDataSize() { + // TODO - convert this to a RecordAggregate + return grossSizeFromDataSize( getRawDataSize() ) - 4; } - public int getRawDataSize() - { + private int getRawDataSize() { List escherRecords = getEscherRecords(); byte[] rawData = getRawData(); if (escherRecords.size() == 0 && rawData != null) { return rawData.length; } - else + int size = 0; + for ( Iterator iterator = escherRecords.iterator(); iterator.hasNext(); ) { - int size = 0; - for ( Iterator iterator = escherRecords.iterator(); iterator.hasNext(); ) - { - EscherRecord r = (EscherRecord) iterator.next(); - size += r.getRecordSize(); - } - return size; + EscherRecord r = (EscherRecord) iterator.next(); + size += r.getRecordSize(); } + return size; } static int grossSizeFromDataSize(int dataSize) diff --git a/src/java/org/apache/poi/hssf/record/DrawingRecord.java b/src/java/org/apache/poi/hssf/record/DrawingRecord.java index c8c54123c..b0af2c7e6 100644 --- a/src/java/org/apache/poi/hssf/record/DrawingRecord.java +++ b/src/java/org/apache/poi/hssf/record/DrawingRecord.java @@ -14,19 +14,21 @@ See the License for the specific language governing permissions and limitations under the License. ==================================================================== */ + package org.apache.poi.hssf.record; import org.apache.poi.util.LittleEndian; -public class DrawingRecord extends Record -{ - public static final short sid = 0xEC; +public final class DrawingRecord extends Record { + public static final short sid = 0x00EC; + + private static final byte[] EMPTY_BYTE_ARRAY = { }; private byte[] recordData; private byte[] contd; - public DrawingRecord() - { + public DrawingRecord() { + recordData = EMPTY_BYTE_ARRAY; } public DrawingRecord( RecordInputStream in ) @@ -54,13 +56,10 @@ public class DrawingRecord extends Record } return getRecordSize(); } + protected int getDataSize() { + int retval = 0; - public int getRecordSize() - { - int retval = 4; - - if (recordData != null) - { + if (recordData != null) { retval += recordData.length; } return retval; @@ -91,10 +90,8 @@ public class DrawingRecord extends Record public Object clone() { DrawingRecord rec = new DrawingRecord(); - if (recordData != null) { - rec.recordData = new byte[ recordData.length ]; - System.arraycopy(recordData, 0, rec.recordData, 0, recordData.length); - } + rec.recordData = new byte[ recordData.length ]; + System.arraycopy(recordData, 0, rec.recordData, 0, recordData.length); if (contd != null) { System.arraycopy(contd, 0, rec.contd, 0, contd.length); rec.contd = new byte[ contd.length ]; diff --git a/src/java/org/apache/poi/hssf/record/DrawingRecordForBiffViewer.java b/src/java/org/apache/poi/hssf/record/DrawingRecordForBiffViewer.java index 4e5536f30..bbbe0b3ee 100644 --- a/src/java/org/apache/poi/hssf/record/DrawingRecordForBiffViewer.java +++ b/src/java/org/apache/poi/hssf/record/DrawingRecordForBiffViewer.java @@ -23,9 +23,7 @@ import java.io.ByteArrayInputStream; * This is purely for the biff viewer. During normal operations we don't want * to be seeing this. */ -public class DrawingRecordForBiffViewer - extends AbstractEscherHolderRecord -{ +public final class DrawingRecordForBiffViewer extends AbstractEscherHolderRecord { public static final short sid = 0xEC; public DrawingRecordForBiffViewer() diff --git a/src/java/org/apache/poi/hssf/record/DrawingSelectionRecord.java b/src/java/org/apache/poi/hssf/record/DrawingSelectionRecord.java index 8b3af0727..687c11314 100644 --- a/src/java/org/apache/poi/hssf/record/DrawingSelectionRecord.java +++ b/src/java/org/apache/poi/hssf/record/DrawingSelectionRecord.java @@ -17,8 +17,7 @@ package org.apache.poi.hssf.record; -public class DrawingSelectionRecord extends AbstractEscherHolderRecord -{ +public final class DrawingSelectionRecord extends AbstractEscherHolderRecord { public static final short sid = 0xED; public DrawingSelectionRecord() diff --git a/src/java/org/apache/poi/hssf/record/EOFRecord.java b/src/java/org/apache/poi/hssf/record/EOFRecord.java index f7495179b..bf9c39ba9 100644 --- a/src/java/org/apache/poi/hssf/record/EOFRecord.java +++ b/src/java/org/apache/poi/hssf/record/EOFRecord.java @@ -63,9 +63,8 @@ public final class EOFRecord extends Record { return getRecordSize(); } - public int getRecordSize() - { - return ENCODED_SIZE; + protected int getDataSize() { + return ENCODED_SIZE - 4; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/EndRecord.java b/src/java/org/apache/poi/hssf/record/EndRecord.java index 6f91dc3a2..86e336e5c 100644 --- a/src/java/org/apache/poi/hssf/record/EndRecord.java +++ b/src/java/org/apache/poi/hssf/record/EndRecord.java @@ -58,9 +58,8 @@ public final class EndRecord extends Record { return getRecordSize(); } - public int getRecordSize() - { - return 4; + protected int getDataSize() { + return 0; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/EscherAggregate.java b/src/java/org/apache/poi/hssf/record/EscherAggregate.java index 369cf0b14..4cec5cca4 100644 --- a/src/java/org/apache/poi/hssf/record/EscherAggregate.java +++ b/src/java/org/apache/poi/hssf/record/EscherAggregate.java @@ -498,8 +498,8 @@ public class EscherAggregate extends AbstractEscherHolderRecord return size; } - public int getRecordSize() - { + protected int getDataSize() { + // TODO - convert this to RecordAggregate convertUserModelToRecords(); List records = getEscherRecords(); int rawEscherSize = getEscherRecordSize( records ); @@ -516,7 +516,7 @@ public class EscherAggregate extends AbstractEscherHolderRecord Record r = (Record) iterator.next(); tailRecordSize += r.getRecordSize(); } - return drawingRecordSize + objRecordSize + tailRecordSize; + return drawingRecordSize + objRecordSize + tailRecordSize - 4; } /** diff --git a/src/java/org/apache/poi/hssf/record/ExtSSTInfoSubRecord.java b/src/java/org/apache/poi/hssf/record/ExtSSTInfoSubRecord.java index 278bfd781..845f95a16 100644 --- a/src/java/org/apache/poi/hssf/record/ExtSSTInfoSubRecord.java +++ b/src/java/org/apache/poi/hssf/record/ExtSSTInfoSubRecord.java @@ -100,9 +100,8 @@ public class ExtSSTInfoSubRecord return getRecordSize(); } - public int getRecordSize() - { - return 8; + protected int getDataSize() { + return 4; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/ExtSSTRecord.java b/src/java/org/apache/poi/hssf/record/ExtSSTRecord.java index 14a849de5..8225f6b76 100644 --- a/src/java/org/apache/poi/hssf/record/ExtSSTRecord.java +++ b/src/java/org/apache/poi/hssf/record/ExtSSTRecord.java @@ -1,4 +1,3 @@ - /* ==================================================================== Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with @@ -15,13 +14,13 @@ See the License for the specific language governing permissions and limitations under the License. ==================================================================== */ - package org.apache.poi.hssf.record; -import org.apache.poi.util.LittleEndian; - import java.util.ArrayList; +import java.util.List; + +import org.apache.poi.util.LittleEndian; /** * Title: Extended Static String Table

@@ -35,17 +34,14 @@ import java.util.ArrayList; * @version 2.0-pre * @see org.apache.poi.hssf.record.ExtSSTInfoSubRecord */ - -public class ExtSSTRecord - extends Record -{ +public final class ExtSSTRecord extends Record { + public final static short sid = 0x00FF; public static final int DEFAULT_BUCKET_SIZE = 8; - //Cant seem to find this documented but from the biffviewer it is clear that + //Can't seem to find this documented but from the biffviewer it is clear that //Excel only records the indexes for the first 128 buckets. public static final int MAX_BUCKETS = 128; - public final static short sid = 0xff; private short field_1_strings_per_bucket = DEFAULT_BUCKET_SIZE; - private ArrayList field_2_sst_info; + private List field_2_sst_info; public ExtSSTRecord() @@ -128,10 +124,8 @@ public class ExtSSTRecord } return pos; } - - public int getRecordSize() - { - return 6 + 8*getNumInfoRecords(); + protected int getDataSize() { + return 2 + 8*getNumInfoRecords(); } public static final int getNumberOfInfoRecsForStrings(int numStrings) { diff --git a/src/java/org/apache/poi/hssf/record/ExtendedFormatRecord.java b/src/java/org/apache/poi/hssf/record/ExtendedFormatRecord.java index 0bc50ca89..9d3385452 100644 --- a/src/java/org/apache/poi/hssf/record/ExtendedFormatRecord.java +++ b/src/java/org/apache/poi/hssf/record/ExtendedFormatRecord.java @@ -1787,9 +1787,8 @@ public class ExtendedFormatRecord return getRecordSize(); } - public int getRecordSize() - { - return 24; + protected int getDataSize() { + return 20; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/ExternSheetRecord.java b/src/java/org/apache/poi/hssf/record/ExternSheetRecord.java index f6266cfa3..cbb287ed1 100644 --- a/src/java/org/apache/poi/hssf/record/ExternSheetRecord.java +++ b/src/java/org/apache/poi/hssf/record/ExternSheetRecord.java @@ -153,8 +153,7 @@ public class ExternSheetRecord extends Record { return sb.toString(); } - - private int getDataSize() { + protected int getDataSize() { return 2 + _list.size() * RefSubRecord.ENCODED_SIZE; } @@ -189,10 +188,6 @@ public class ExternSheetRecord extends Record { return (RefSubRecord) _list.get(i); } - public int getRecordSize() { - return 4 + getDataSize(); - } - /** * return the non static version of the id for this record. */ diff --git a/src/java/org/apache/poi/hssf/record/ExternalNameRecord.java b/src/java/org/apache/poi/hssf/record/ExternalNameRecord.java index a3dfe575c..73de9f0be 100755 --- a/src/java/org/apache/poi/hssf/record/ExternalNameRecord.java +++ b/src/java/org/apache/poi/hssf/record/ExternalNameRecord.java @@ -83,7 +83,7 @@ public final class ExternalNameRecord extends Record { return field_4_name; } - private int getDataSize(){ + protected int getDataSize(){ int result = 3 * 2 // 3 short fields + 2 + field_4_name.length(); // nameLen and name if(hasFormula()) { @@ -120,10 +120,6 @@ public final class ExternalNameRecord extends Record { return recSize; } - public int getRecordSize(){ - return 4 + getDataSize(); - } - public ExternalNameRecord(RecordInputStream in) { field_1_option_flag = in.readShort(); diff --git a/src/java/org/apache/poi/hssf/record/FilePassRecord.java b/src/java/org/apache/poi/hssf/record/FilePassRecord.java index 3af87278e..7068874ec 100644 --- a/src/java/org/apache/poi/hssf/record/FilePassRecord.java +++ b/src/java/org/apache/poi/hssf/record/FilePassRecord.java @@ -68,9 +68,8 @@ public class FilePassRecord return getRecordSize(); } - public int getRecordSize() - { - return 8; + protected int getDataSize() { + return 4; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/FileSharingRecord.java b/src/java/org/apache/poi/hssf/record/FileSharingRecord.java index 363125199..54d94d9f8 100644 --- a/src/java/org/apache/poi/hssf/record/FileSharingRecord.java +++ b/src/java/org/apache/poi/hssf/record/FileSharingRecord.java @@ -153,12 +153,12 @@ public final class FileSharingRecord extends Record { return getRecordSize(); } - public int getRecordSize() { + protected int getDataSize() { short nameLen = getUsernameLength(); if (nameLen < 1) { - return 10; + return 6; } - return 11+nameLen; + return 7+nameLen; } public short getSid() { diff --git a/src/java/org/apache/poi/hssf/record/FnGroupCountRecord.java b/src/java/org/apache/poi/hssf/record/FnGroupCountRecord.java index 23de9135a..e92623a3e 100644 --- a/src/java/org/apache/poi/hssf/record/FnGroupCountRecord.java +++ b/src/java/org/apache/poi/hssf/record/FnGroupCountRecord.java @@ -93,9 +93,8 @@ public class FnGroupCountRecord return getRecordSize(); } - public int getRecordSize() - { - return 6; + protected int getDataSize() { + return 2; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/FontBasisRecord.java b/src/java/org/apache/poi/hssf/record/FontBasisRecord.java index 452a8f9ae..cbe2ae4fa 100644 --- a/src/java/org/apache/poi/hssf/record/FontBasisRecord.java +++ b/src/java/org/apache/poi/hssf/record/FontBasisRecord.java @@ -94,9 +94,8 @@ public final class FontBasisRecord extends Record { return getRecordSize(); } - public int getRecordSize() - { - return 4 + 2 + 2 + 2 + 2 + 2; + protected int getDataSize() { + return 2 + 2 + 2 + 2 + 2; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/FontIndexRecord.java b/src/java/org/apache/poi/hssf/record/FontIndexRecord.java index 241753bac..a1ade938f 100644 --- a/src/java/org/apache/poi/hssf/record/FontIndexRecord.java +++ b/src/java/org/apache/poi/hssf/record/FontIndexRecord.java @@ -66,9 +66,8 @@ public final class FontIndexRecord extends Record { return getRecordSize(); } - public int getRecordSize() - { - return 4 + 2; + protected int getDataSize() { + return 2; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/FontRecord.java b/src/java/org/apache/poi/hssf/record/FontRecord.java index e1d421977..890460f9e 100644 --- a/src/java/org/apache/poi/hssf/record/FontRecord.java +++ b/src/java/org/apache/poi/hssf/record/FontRecord.java @@ -1,4 +1,3 @@ - /* ==================================================================== Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with @@ -15,7 +14,6 @@ See the License for the specific language governing permissions and limitations under the License. ==================================================================== */ - package org.apache.poi.hssf.record; @@ -29,14 +27,9 @@ import org.apache.poi.util.BitFieldFactory; * Description: An element in the Font Table

* REFERENCE: PG 315 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)

* @author Andrew C. Oliver (acoliver at apache dot org) - * @version 2.0-pre */ - -public class FontRecord - extends Record -{ - public final static short sid = - 0x31; // docs are wrong (0x231 Microsoft Support site article Q184647) +public final class FontRecord extends Record { + public final static short sid = 0x0031; // docs are wrong (0x231 Microsoft Support site article Q184647) public final static short SS_NONE = 0; public final static short SS_SUPER = 1; public final static short SS_SUB = 2; @@ -509,12 +502,10 @@ public class FontRecord } return getRecordSize(); } - - public int getRecordSize() - { + protected int getDataSize() { // Note - no matter the original, we always // re-serialise the font name as unicode - return (getFontNameLength() * 2) + 20; + return 16 + getFontNameLength() * 2; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/FooterRecord.java b/src/java/org/apache/poi/hssf/record/FooterRecord.java index 843479217..0350d3a8c 100644 --- a/src/java/org/apache/poi/hssf/record/FooterRecord.java +++ b/src/java/org/apache/poi/hssf/record/FooterRecord.java @@ -180,16 +180,13 @@ public class FooterRecord return getRecordSize(); } - public int getRecordSize() - { - int retval = 4; + protected int getDataSize() { + int retval = 0; - if (getFooterLength() > 0) - { + if (getFooterLength() > 0) { retval+=3; // [Shawn] Fixed for two null bytes in the length } - return (isMultibyte() ? - (retval + getFooterLength()*2) : (retval + getFooterLength())); + return retval + getFooterLength() * (isMultibyte() ? 2 : 1); } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/FormatRecord.java b/src/java/org/apache/poi/hssf/record/FormatRecord.java index b8f4ea22a..6ea2ce963 100644 --- a/src/java/org/apache/poi/hssf/record/FormatRecord.java +++ b/src/java/org/apache/poi/hssf/record/FormatRecord.java @@ -1,4 +1,3 @@ - /* ==================================================================== Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with @@ -15,7 +14,6 @@ See the License for the specific language governing permissions and limitations under the License. ==================================================================== */ - package org.apache.poi.hssf.record; @@ -29,13 +27,9 @@ import org.apache.poi.util.StringUtil; * REFERENCE: PG 317 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)

* @author Andrew C. Oliver (acoliver at apache dot org) * @author Shawn M. Laubach (slaubach at apache dot org) - * @version 2.0-pre */ - -public class FormatRecord - extends Record -{ - public final static short sid = 0x41e; +public final class FormatRecord extends Record { + public final static short sid = 0x041E; private short field_1_index_code; private short field_3_unicode_len; // unicode string length @@ -199,10 +193,8 @@ public class FormatRecord return getRecordSize(); } - - public int getRecordSize() - { - return 9 + ( ( field_3_unicode_flag ) ? 2 * field_3_unicode_len : field_3_unicode_len ); + protected int getDataSize() { + return 5 + field_3_unicode_len * (field_3_unicode_flag ? 2 : 1); } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/FormulaRecord.java b/src/java/org/apache/poi/hssf/record/FormulaRecord.java index e51ed77a9..4e4edcc9a 100644 --- a/src/java/org/apache/poi/hssf/record/FormulaRecord.java +++ b/src/java/org/apache/poi/hssf/record/FormulaRecord.java @@ -353,7 +353,7 @@ public final class FormulaRecord extends Record implements CellValueRecordInterf return sid; } - private int getDataSize() { + protected int getDataSize() { return FIXED_SIZE + field_8_parsed_expr.getEncodedSize(); } public int serialize(int offset, byte [] data) { @@ -380,10 +380,6 @@ public final class FormulaRecord extends Record implements CellValueRecordInterf return recSize; } - public int getRecordSize() { - return 4 + getDataSize(); - } - public String toString() { StringBuffer sb = new StringBuffer(); diff --git a/src/java/org/apache/poi/hssf/record/FrameRecord.java b/src/java/org/apache/poi/hssf/record/FrameRecord.java index 357728a0e..65fcc67d1 100644 --- a/src/java/org/apache/poi/hssf/record/FrameRecord.java +++ b/src/java/org/apache/poi/hssf/record/FrameRecord.java @@ -83,9 +83,8 @@ public final class FrameRecord extends Record { return getRecordSize(); } - public int getRecordSize() - { - return 4 + 2 + 2; + protected int getDataSize() { + return 2 + 2; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/GridsetRecord.java b/src/java/org/apache/poi/hssf/record/GridsetRecord.java index ad652ba82..8bf52768e 100644 --- a/src/java/org/apache/poi/hssf/record/GridsetRecord.java +++ b/src/java/org/apache/poi/hssf/record/GridsetRecord.java @@ -97,9 +97,8 @@ public class GridsetRecord return getRecordSize(); } - public int getRecordSize() - { - return 6; + protected int getDataSize() { + return 2; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/GutsRecord.java b/src/java/org/apache/poi/hssf/record/GutsRecord.java index 0073066ec..2bc576f26 100644 --- a/src/java/org/apache/poi/hssf/record/GutsRecord.java +++ b/src/java/org/apache/poi/hssf/record/GutsRecord.java @@ -167,9 +167,8 @@ public class GutsRecord return getRecordSize(); } - public int getRecordSize() - { - return 12; + protected int getDataSize() { + return 8; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/HCenterRecord.java b/src/java/org/apache/poi/hssf/record/HCenterRecord.java index 261431e71..41708a3f2 100644 --- a/src/java/org/apache/poi/hssf/record/HCenterRecord.java +++ b/src/java/org/apache/poi/hssf/record/HCenterRecord.java @@ -86,9 +86,8 @@ public final class HCenterRecord extends Record { return getRecordSize(); } - public int getRecordSize() - { - return 6; + protected int getDataSize() { + return 2; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/HeaderRecord.java b/src/java/org/apache/poi/hssf/record/HeaderRecord.java index 61ff85130..aea321eac 100644 --- a/src/java/org/apache/poi/hssf/record/HeaderRecord.java +++ b/src/java/org/apache/poi/hssf/record/HeaderRecord.java @@ -1,4 +1,3 @@ - /* ==================================================================== Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with @@ -15,7 +14,6 @@ See the License for the specific language governing permissions and limitations under the License. ==================================================================== */ - package org.apache.poi.hssf.record; @@ -29,13 +27,9 @@ import org.apache.poi.util.StringUtil; * @author Andrew C. Oliver (acoliver at apache dot org) * @author Shawn Laubach (slaubach at apache dot org) Modified 3/14/02 * @author Jason Height (jheight at chariot dot net dot au) - * @version 2.0-pre */ - -public class HeaderRecord - extends Record -{ - public final static short sid = 0x14; +public final class HeaderRecord extends Record { + public final static short sid = 0x0014; private byte field_1_header_len; private byte field_2_reserved; private byte field_3_unicode_flag; @@ -180,16 +174,13 @@ public class HeaderRecord return getRecordSize(); } - public int getRecordSize() - { - int retval = 4; + protected int getDataSize() { + int retval = 0; - if (getHeaderLength() != 0) - { + if (getHeaderLength() != 0) { retval+=3; // [Shawn] Fixed for two null bytes in the length } - return (isMultibyte() ? - (retval + getHeaderLength()*2) : (retval + getHeaderLength())); + return retval + getHeaderLength() * (isMultibyte() ? 2 : 1); } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/HideObjRecord.java b/src/java/org/apache/poi/hssf/record/HideObjRecord.java index 496002618..c5c587626 100644 --- a/src/java/org/apache/poi/hssf/record/HideObjRecord.java +++ b/src/java/org/apache/poi/hssf/record/HideObjRecord.java @@ -95,9 +95,8 @@ public class HideObjRecord return getRecordSize(); } - public int getRecordSize() - { - return 6; + protected int getDataSize() { + return 2; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/HyperlinkRecord.java b/src/java/org/apache/poi/hssf/record/HyperlinkRecord.java index 6fc5b9716..f7904a100 100644 --- a/src/java/org/apache/poi/hssf/record/HyperlinkRecord.java +++ b/src/java/org/apache/poi/hssf/record/HyperlinkRecord.java @@ -31,7 +31,7 @@ import org.apache.poi.util.HexDump; * @author Mark Hissink Muller + * Title: Multiple Blank cell record(0x00BE)

* Description: Represents a set of columns in a row with no value but with styling. * In this release we have read-only support for this record type. - * The RecordFactory converts this to a set of BlankRecord objects.

- * REFERENCE: PG 329 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)

+ * The RecordFactory converts this to a set of BlankRecord objects.

+ * REFERENCE: PG 329 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)

* @author Andrew C. Oliver (acoliver at apache dot org) * @author Glen Stampoultzis (glens at apache.org) - * @version 2.0-pre - * @see org.apache.poi.hssf.record.BlankRecord + * @see BlankRecord */ - -public class MulBlankRecord - extends Record -{ - public final static short sid = 0xbe; - //private short field_1_row; - private int field_1_row; +public final class MulBlankRecord extends Record { + public final static short sid = 0x00BE; + + private int field_1_row; private short field_2_first_col; private short[] field_3_xfs; private short field_4_last_col; - /** Creates new MulBlankRecord */ - - public MulBlankRecord() - { - } /** * get the row number of the cells this represents * * @return row number */ - - //public short getRow() public int getRow() { return field_1_row; @@ -68,7 +50,6 @@ public class MulBlankRecord * starting column (first cell this holds in the row) * @return first column number */ - public short getFirstColumn() { return field_2_first_col; @@ -78,7 +59,6 @@ public class MulBlankRecord * ending column (last cell this holds in the row) * @return first column number */ - public short getLastColumn() { return field_4_last_col; @@ -88,7 +68,6 @@ public class MulBlankRecord * get the number of columns this contains (last-first +1) * @return number of columns (last - first +1) */ - public int getNumColumns() { return field_4_last_col - field_2_first_col + 1; @@ -99,7 +78,6 @@ public class MulBlankRecord * @param coffset the column (coffset = column - field_2_first_col) * @return the XF index for the column */ - public short getXFAt(int coffset) { return field_3_xfs[ coffset ]; @@ -108,16 +86,14 @@ public class MulBlankRecord /** * @param in the RecordInputstream to read the record from */ - public MulBlankRecord(RecordInputStream in) - { - //field_1_row = LittleEndian.getShort(data, 0 + offset); + public MulBlankRecord(RecordInputStream in) { field_1_row = in.readUShort(); field_2_first_col = in.readShort(); field_3_xfs = parseXFs(in); field_4_last_col = in.readShort(); } - private short [] parseXFs(RecordInputStream in) + private static short [] parseXFs(RecordInputStream in) { short[] retval = new short[ (in.remaining() - 2) / 2 ]; @@ -128,21 +104,16 @@ public class MulBlankRecord return retval; } - public String toString() - { + public String toString() { StringBuffer buffer = new StringBuffer(); buffer.append("[MULBLANK]\n"); - buffer.append("row = ") - .append(Integer.toHexString(getRow())).append("\n"); - buffer.append("firstcol = ") - .append(Integer.toHexString(getFirstColumn())).append("\n"); - buffer.append(" lastcol = ") - .append(Integer.toHexString(getLastColumn())).append("\n"); - for (int k = 0; k < getNumColumns(); k++) - { - buffer.append("xf").append(k).append(" = ") - .append(Integer.toHexString(getXFAt(k))).append("\n"); + buffer.append("row = ").append(Integer.toHexString(getRow())).append("\n"); + buffer.append("firstcol = ").append(Integer.toHexString(getFirstColumn())).append("\n"); + buffer.append(" lastcol = ").append(Integer.toHexString(getLastColumn())).append("\n"); + for (int k = 0; k < getNumColumns(); k++) { + buffer.append("xf").append(k).append(" = ").append( + Integer.toHexString(getXFAt(k))).append("\n"); } buffer.append("[/MULBLANK]\n"); return buffer.toString(); @@ -153,9 +124,10 @@ public class MulBlankRecord return sid; } - public int serialize(int offset, byte [] data) - { - throw new RecordFormatException( - "Sorry, you can't serialize a MulBlank in this release"); + public int serialize(int offset, byte [] data) { + throw new RecordFormatException( "Sorry, you can't serialize MulBlank in this release"); + } + protected int getDataSize() { + throw new RecordFormatException( "Sorry, you can't serialize MulBlank in this release"); } } diff --git a/src/java/org/apache/poi/hssf/record/MulRKRecord.java b/src/java/org/apache/poi/hssf/record/MulRKRecord.java index 0419f4921..dbb41c10f 100644 --- a/src/java/org/apache/poi/hssf/record/MulRKRecord.java +++ b/src/java/org/apache/poi/hssf/record/MulRKRecord.java @@ -113,10 +113,11 @@ public final class MulRKRecord extends Record { return sid; } - public int serialize(int offset, byte [] data) - { - throw new RecordFormatException( - "Sorry, you can't serialize a MulRK in this release"); + public int serialize(int offset, byte [] data) { + throw new RecordFormatException( "Sorry, you can't serialize MulRK in this release"); + } + protected int getDataSize() { + throw new RecordFormatException( "Sorry, you can't serialize MulRK in this release"); } private static final class RkRec { diff --git a/src/java/org/apache/poi/hssf/record/NameRecord.java b/src/java/org/apache/poi/hssf/record/NameRecord.java index 99e2cddd7..f27fb2d88 100644 --- a/src/java/org/apache/poi/hssf/record/NameRecord.java +++ b/src/java/org/apache/poi/hssf/record/NameRecord.java @@ -408,10 +408,9 @@ public final class NameRecord extends Record { } return nChars; } - - public int getRecordSize(){ - return 4 // sid + size - + 13 // 3 shorts + 7 bytes + + protected int getDataSize() { + return 13 // 3 shorts + 7 bytes + getNameRawSize() + field_14_custom_menu_text.length() + field_15_description_text.length() diff --git a/src/java/org/apache/poi/hssf/record/NoteRecord.java b/src/java/org/apache/poi/hssf/record/NoteRecord.java index 1a82d56e9..2888614f4 100644 --- a/src/java/org/apache/poi/hssf/record/NoteRecord.java +++ b/src/java/org/apache/poi/hssf/record/NoteRecord.java @@ -24,8 +24,8 @@ import org.apache.poi.util.LittleEndian; * * @author Yegor Kozlov */ -public class NoteRecord extends Record { - public final static short sid = 0x1C; +public final class NoteRecord extends Record { + public final static short sid = 0x001C; /** * Flag indicating that the comment is hidden (default) @@ -100,16 +100,13 @@ public class NoteRecord extends Record { return getRecordSize(); } - public int getRecordSize() - { - int retval = 4 + 2 + 2 + 2 + 2 + 2 + 1 + field_5_author.length() + 1; - - return retval; + protected int getDataSize() { + return 2 + 2 + 2 + 2 + 2 + 1 + field_5_author.length() + 1; } /** * Convert this record to string. - * Used by BiffViewer and other utulities. + * Used by BiffViewer and other utilities. */ public String toString() { diff --git a/src/java/org/apache/poi/hssf/record/NumberFormatIndexRecord.java b/src/java/org/apache/poi/hssf/record/NumberFormatIndexRecord.java index 3f35184eb..f00f47696 100644 --- a/src/java/org/apache/poi/hssf/record/NumberFormatIndexRecord.java +++ b/src/java/org/apache/poi/hssf/record/NumberFormatIndexRecord.java @@ -66,9 +66,8 @@ public final class NumberFormatIndexRecord extends Record { return getRecordSize(); } - public int getRecordSize() - { - return 4 + 2; + protected int getDataSize() { + return 2; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/NumberRecord.java b/src/java/org/apache/poi/hssf/record/NumberRecord.java index e4283f0ea..a0c55c6e4 100644 --- a/src/java/org/apache/poi/hssf/record/NumberRecord.java +++ b/src/java/org/apache/poi/hssf/record/NumberRecord.java @@ -142,9 +142,8 @@ public final class NumberRecord extends Record implements CellValueRecordInterfa return getRecordSize(); } - public int getRecordSize() - { - return 18; + protected int getDataSize() { + return 14; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/ObjRecord.java b/src/java/org/apache/poi/hssf/record/ObjRecord.java index 538b1ae9f..6addf41eb 100644 --- a/src/java/org/apache/poi/hssf/record/ObjRecord.java +++ b/src/java/org/apache/poi/hssf/record/ObjRecord.java @@ -119,7 +119,7 @@ public final class ObjRecord extends Record { return sb.toString(); } - private int getDataSize() { + protected int getDataSize() { if (_uninterpretedData != null) { return _uninterpretedData.length; } @@ -165,10 +165,6 @@ public final class ObjRecord extends Record { return recSize; } - public int getRecordSize() { - return 4 + getDataSize(); - } - public short getSid() { return sid; } diff --git a/src/java/org/apache/poi/hssf/record/ObjectLinkRecord.java b/src/java/org/apache/poi/hssf/record/ObjectLinkRecord.java index 95fc5ff7f..b5a78b860 100644 --- a/src/java/org/apache/poi/hssf/record/ObjectLinkRecord.java +++ b/src/java/org/apache/poi/hssf/record/ObjectLinkRecord.java @@ -86,9 +86,8 @@ public final class ObjectLinkRecord extends Record { return getRecordSize(); } - public int getRecordSize() - { - return 4 + 2 + 2 + 2; + protected int getDataSize() { + return 2 + 2 + 2; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/ObjectProtectRecord.java b/src/java/org/apache/poi/hssf/record/ObjectProtectRecord.java index cdbb56d87..f0141424a 100644 --- a/src/java/org/apache/poi/hssf/record/ObjectProtectRecord.java +++ b/src/java/org/apache/poi/hssf/record/ObjectProtectRecord.java @@ -93,9 +93,8 @@ public class ObjectProtectRecord return getRecordSize(); } - public int getRecordSize() - { - return 6; + protected int getDataSize() { + return 2; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/PageBreakRecord.java b/src/java/org/apache/poi/hssf/record/PageBreakRecord.java index 654439f31..a3717f40e 100644 --- a/src/java/org/apache/poi/hssf/record/PageBreakRecord.java +++ b/src/java/org/apache/poi/hssf/record/PageBreakRecord.java @@ -37,7 +37,6 @@ import org.apache.poi.util.LittleEndian; * @author Danny Mui (dmui at apache dot org) */ public abstract class PageBreakRecord extends Record { - private static final boolean IS_EMPTY_RECORD_WRITTEN = false; private static final int[] EMPTY_INT_ARRAY = { }; private List _breaks; @@ -97,23 +96,15 @@ public abstract class PageBreakRecord extends Record { } - private int getDataSize() { + public boolean isEmpty() { + return _breaks.isEmpty(); + } + protected int getDataSize() { return 2 + _breaks.size() * Break.ENCODED_SIZE; } - public int getRecordSize() { - int nBreaks = _breaks.size(); - if (!IS_EMPTY_RECORD_WRITTEN && nBreaks < 1) { - return 0; - } - return 4 + getDataSize(); - } - public final int serialize(int offset, byte data[]) { int nBreaks = _breaks.size(); - if (!IS_EMPTY_RECORD_WRITTEN && nBreaks < 1) { - return 0; - } int dataSize = getDataSize(); LittleEndian.putUShort(data, offset + 0, getSid()); LittleEndian.putUShort(data, offset + 2, dataSize); diff --git a/src/java/org/apache/poi/hssf/record/PaletteRecord.java b/src/java/org/apache/poi/hssf/record/PaletteRecord.java index 0cf785636..75a13f6ad 100644 --- a/src/java/org/apache/poi/hssf/record/PaletteRecord.java +++ b/src/java/org/apache/poi/hssf/record/PaletteRecord.java @@ -96,9 +96,8 @@ public class PaletteRecord return getRecordSize(); } - public int getRecordSize() - { - return 4 + 2 + (field_1_numcolors * 4); + protected int getDataSize() { + return 2 + (field_1_numcolors * 4); } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/PaneRecord.java b/src/java/org/apache/poi/hssf/record/PaneRecord.java index f02e517a3..7b16ec442 100644 --- a/src/java/org/apache/poi/hssf/record/PaneRecord.java +++ b/src/java/org/apache/poi/hssf/record/PaneRecord.java @@ -102,9 +102,8 @@ public final class PaneRecord extends Record { return getRecordSize(); } - public int getRecordSize() - { - return 4 + 2 + 2 + 2 + 2 + 2; + protected int getDataSize() { + return 2 + 2 + 2 + 2 + 2; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/PasswordRecord.java b/src/java/org/apache/poi/hssf/record/PasswordRecord.java index b7b9d075a..ff6445ca8 100644 --- a/src/java/org/apache/poi/hssf/record/PasswordRecord.java +++ b/src/java/org/apache/poi/hssf/record/PasswordRecord.java @@ -96,8 +96,8 @@ public class PasswordRecord extends Record { return getRecordSize(); } - public int getRecordSize() { - return 6; + protected int getDataSize() { + return 2; } public short getSid() { diff --git a/src/java/org/apache/poi/hssf/record/PasswordRev4Record.java b/src/java/org/apache/poi/hssf/record/PasswordRev4Record.java index 5c5567a86..7538872fd 100644 --- a/src/java/org/apache/poi/hssf/record/PasswordRev4Record.java +++ b/src/java/org/apache/poi/hssf/record/PasswordRev4Record.java @@ -87,9 +87,8 @@ public class PasswordRev4Record return getRecordSize(); } - public int getRecordSize() - { - return 6; + protected int getDataSize() { + return 2; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/PlotAreaRecord.java b/src/java/org/apache/poi/hssf/record/PlotAreaRecord.java index 1a50441ff..d0bba5e67 100644 --- a/src/java/org/apache/poi/hssf/record/PlotAreaRecord.java +++ b/src/java/org/apache/poi/hssf/record/PlotAreaRecord.java @@ -60,9 +60,8 @@ public final class PlotAreaRecord extends Record { return getRecordSize(); } - public int getRecordSize() - { - return 4 ; + protected int getDataSize() { + return 0; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/PlotGrowthRecord.java b/src/java/org/apache/poi/hssf/record/PlotGrowthRecord.java index 04a124080..03cf58a35 100644 --- a/src/java/org/apache/poi/hssf/record/PlotGrowthRecord.java +++ b/src/java/org/apache/poi/hssf/record/PlotGrowthRecord.java @@ -74,9 +74,8 @@ public final class PlotGrowthRecord extends Record { return getRecordSize(); } - public int getRecordSize() - { - return 4 + 4 + 4; + protected int getDataSize() { + return 4 + 4; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/PrecisionRecord.java b/src/java/org/apache/poi/hssf/record/PrecisionRecord.java index a147cfff1..56bb8cbd9 100644 --- a/src/java/org/apache/poi/hssf/record/PrecisionRecord.java +++ b/src/java/org/apache/poi/hssf/record/PrecisionRecord.java @@ -94,9 +94,8 @@ public class PrecisionRecord return getRecordSize(); } - public int getRecordSize() - { - return 6; + protected int getDataSize() { + return 2; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/PrintGridlinesRecord.java b/src/java/org/apache/poi/hssf/record/PrintGridlinesRecord.java index 7b4de7c68..1ddaed715 100644 --- a/src/java/org/apache/poi/hssf/record/PrintGridlinesRecord.java +++ b/src/java/org/apache/poi/hssf/record/PrintGridlinesRecord.java @@ -93,9 +93,8 @@ public class PrintGridlinesRecord return getRecordSize(); } - public int getRecordSize() - { - return 6; + protected int getDataSize() { + return 2; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/PrintHeadersRecord.java b/src/java/org/apache/poi/hssf/record/PrintHeadersRecord.java index 61c1cce86..5f63a5eba 100644 --- a/src/java/org/apache/poi/hssf/record/PrintHeadersRecord.java +++ b/src/java/org/apache/poi/hssf/record/PrintHeadersRecord.java @@ -92,9 +92,8 @@ public class PrintHeadersRecord return getRecordSize(); } - public int getRecordSize() - { - return 6; + protected int getDataSize() { + return 2; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/PrintSetupRecord.java b/src/java/org/apache/poi/hssf/record/PrintSetupRecord.java index e41f278d5..136fc03f1 100644 --- a/src/java/org/apache/poi/hssf/record/PrintSetupRecord.java +++ b/src/java/org/apache/poi/hssf/record/PrintSetupRecord.java @@ -340,9 +340,8 @@ public class PrintSetupRecord extends Record { return getRecordSize(); } - public int getRecordSize() - { - return 38; + protected int getDataSize() { + return 34; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/ProtectRecord.java b/src/java/org/apache/poi/hssf/record/ProtectRecord.java index d5425c552..a0b6bf488 100644 --- a/src/java/org/apache/poi/hssf/record/ProtectRecord.java +++ b/src/java/org/apache/poi/hssf/record/ProtectRecord.java @@ -94,9 +94,8 @@ public class ProtectRecord return getRecordSize(); } - public int getRecordSize() - { - return 6; + protected int getDataSize() { + return 2; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/ProtectionRev4Record.java b/src/java/org/apache/poi/hssf/record/ProtectionRev4Record.java index b7d2f4323..ae86f7762 100644 --- a/src/java/org/apache/poi/hssf/record/ProtectionRev4Record.java +++ b/src/java/org/apache/poi/hssf/record/ProtectionRev4Record.java @@ -92,9 +92,8 @@ public class ProtectionRev4Record return getRecordSize(); } - public int getRecordSize() - { - return 6; + protected int getDataSize() { + return 2; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/RKRecord.java b/src/java/org/apache/poi/hssf/record/RKRecord.java index c4b25a5be..48a8c564f 100644 --- a/src/java/org/apache/poi/hssf/record/RKRecord.java +++ b/src/java/org/apache/poi/hssf/record/RKRecord.java @@ -34,7 +34,6 @@ import org.apache.poi.util.HexDump; * REFERENCE: PG 376 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)

* @author Andrew C. Oliver (acoliver at apache dot org) * @author Jason Height (jheight at chariot dot net dot au) - * @version 2.0-pre * @see org.apache.poi.hssf.record.NumberRecord */ public final class RKRecord extends Record implements CellValueRecordInterface { @@ -134,48 +133,12 @@ public final class RKRecord extends Record implements CellValueRecordInterface { return sb.toString(); } -// temporarily just constructs a new number record and returns its value - public int serialize(int offset, byte [] data) - { - NumberRecord rec = new NumberRecord(); - - rec.setColumn(getColumn()); - rec.setRow(getRow()); - rec.setValue(getRKNumber()); - rec.setXFIndex(getXFIndex()); - return rec.serialize(offset, data); - } - - /** - * Debugging main() - *

- * Normally I'd do this in a junit test, but let's face it -- once - * this algorithm has been tested and it works, we are never ever - * going to change it. This is driven by the Faceless Enemy's - * minions, who dare not change the algorithm out from under us. - * - * @param ignored_args command line arguments, which we blithely - * ignore - */ - - public static void main(String ignored_args[]) - { - int[] values = - { - 0x3FF00000, 0x405EC001, 0x02F1853A, 0x02F1853B, 0xFCDD699A - }; - double[] rvalues = - { - 1, 1.23, 12345678, 123456.78, -13149594 - }; - - for (int j = 0; j < values.length; j++) - { - System.out.println("input = " + Integer.toHexString(values[ j ]) - + " -> " + rvalues[ j ] + ": " - + RKUtil.decodeNumber(values[ j ])); - } - } + public int serialize(int offset, byte [] data) { + throw new RecordFormatException( "Sorry, you can't serialize RK in this release"); + } + protected int getDataSize() { + throw new RecordFormatException( "Sorry, you can't serialize RK in this release"); + } public short getSid() { diff --git a/src/java/org/apache/poi/hssf/record/RecalcIdRecord.java b/src/java/org/apache/poi/hssf/record/RecalcIdRecord.java index c0cab053c..d66e31089 100644 --- a/src/java/org/apache/poi/hssf/record/RecalcIdRecord.java +++ b/src/java/org/apache/poi/hssf/record/RecalcIdRecord.java @@ -116,9 +116,8 @@ public final class RecalcIdRecord extends Record { return getRecordSize(); } - public int getRecordSize() - { - return 4 + (getRecalcIdArray().length * 2); + protected int getDataSize() { + return (getRecalcIdArray().length * 2); } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/Record.java b/src/java/org/apache/poi/hssf/record/Record.java index 29c37d704..5b42e5fcb 100644 --- a/src/java/org/apache/poi/hssf/record/Record.java +++ b/src/java/org/apache/poi/hssf/record/Record.java @@ -28,7 +28,6 @@ import java.io.ByteArrayInputStream; * @author Andrew C. Oliver * @author Marc Johnson (mjohnson at apache dot org) * @author Jason Height (jheight at chariot dot net dot au) - * @version 2.0-pre */ public abstract class Record extends RecordBase { @@ -48,31 +47,25 @@ public abstract class Record extends RecordBase { * @return byte array containing instance data */ - public byte [] serialize() - { + public final byte[] serialize() { byte[] retval = new byte[ getRecordSize() ]; serialize(0, retval); return retval; } - - /** - * gives the current serialized size of the record. Should include the sid and reclength (4 bytes). - */ - - public int getRecordSize() - { - - // this is kind od a stupid way to do it but for now we just serialize - // the record and return the size of the byte array - return serialize().length; + public final int getRecordSize() { + return 4 + getDataSize(); } - + /** + * @return the size of the data portion of this record + * (does not include initial 4 bytes for sid and size) + */ + protected abstract int getDataSize(); + /** * get a string representation of the record (for biffview/debugging) */ - public String toString() { return super.toString(); diff --git a/src/java/org/apache/poi/hssf/record/RefModeRecord.java b/src/java/org/apache/poi/hssf/record/RefModeRecord.java index f0567509b..0f20d6ae1 100644 --- a/src/java/org/apache/poi/hssf/record/RefModeRecord.java +++ b/src/java/org/apache/poi/hssf/record/RefModeRecord.java @@ -91,9 +91,8 @@ public class RefModeRecord return getRecordSize(); } - public int getRecordSize() - { - return 6; + protected int getDataSize() { + return 2; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/RefreshAllRecord.java b/src/java/org/apache/poi/hssf/record/RefreshAllRecord.java index 021a34c69..41277e617 100644 --- a/src/java/org/apache/poi/hssf/record/RefreshAllRecord.java +++ b/src/java/org/apache/poi/hssf/record/RefreshAllRecord.java @@ -92,9 +92,8 @@ public class RefreshAllRecord return getRecordSize(); } - public int getRecordSize() - { - return 6; + protected int getDataSize() { + return 2; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/RightMarginRecord.java b/src/java/org/apache/poi/hssf/record/RightMarginRecord.java index 32fb7c8a4..2a4994bd6 100644 --- a/src/java/org/apache/poi/hssf/record/RightMarginRecord.java +++ b/src/java/org/apache/poi/hssf/record/RightMarginRecord.java @@ -52,7 +52,9 @@ public final class RightMarginRecord extends Record implements Margin { return getRecordSize(); } - public int getRecordSize() { return 4 + 8; } + protected int getDataSize() { + return 8; + } public short getSid() { return sid; } @@ -73,4 +75,4 @@ public final class RightMarginRecord extends Record implements Margin { rec.field_1_margin = this.field_1_margin; return rec; } -} // END OF CL \ No newline at end of file +} // END OF \ No newline at end of file diff --git a/src/java/org/apache/poi/hssf/record/RowRecord.java b/src/java/org/apache/poi/hssf/record/RowRecord.java index f893bf283..25adc67f5 100644 --- a/src/java/org/apache/poi/hssf/record/RowRecord.java +++ b/src/java/org/apache/poi/hssf/record/RowRecord.java @@ -351,9 +351,8 @@ public final class RowRecord extends Record { return ENCODED_SIZE; } - public int getRecordSize() - { - return ENCODED_SIZE; + protected int getDataSize() { + return ENCODED_SIZE - 4; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/SCLRecord.java b/src/java/org/apache/poi/hssf/record/SCLRecord.java index 09093af6c..0b30d32e0 100644 --- a/src/java/org/apache/poi/hssf/record/SCLRecord.java +++ b/src/java/org/apache/poi/hssf/record/SCLRecord.java @@ -74,9 +74,8 @@ public final class SCLRecord extends Record { return getRecordSize(); } - public int getRecordSize() - { - return 4 + 2 + 2; + protected int getDataSize() { + return 2 + 2; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/SSTRecord.java b/src/java/org/apache/poi/hssf/record/SSTRecord.java index ca75af00d..7c56d955e 100644 --- a/src/java/org/apache/poi/hssf/record/SSTRecord.java +++ b/src/java/org/apache/poi/hssf/record/SSTRecord.java @@ -1,4 +1,3 @@ - /* ==================================================================== Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with @@ -15,7 +14,6 @@ See the License for the specific language governing permissions and limitations under the License. ==================================================================== */ - package org.apache.poi.hssf.record; @@ -39,10 +37,8 @@ import java.util.Iterator; * @see org.apache.poi.hssf.record.LabelSSTRecord * @see org.apache.poi.hssf.record.ContinueRecord */ - -public class SSTRecord - extends Record -{ +public final class SSTRecord extends Record { + public static final short sid = 0x00FC; private static UnicodeString EMPTY_STRING = new UnicodeString(""); @@ -63,8 +59,6 @@ public class SSTRecord /** overhead for each string includes the string's character count (a short) and the flag describing its characteristics (a byte) */ static final int STRING_MINIMAL_OVERHEAD = LittleEndianConsts.SHORT_SIZE + LittleEndianConsts.BYTE_SIZE; - public static final short sid = 0xfc; - /** union of strings in the SST and EXTSST */ private int field_1_num_strings; @@ -375,11 +369,10 @@ public class SSTRecord } - public int getRecordSize() - { + protected int getDataSize() { SSTRecordSizeCalculator calculator = new SSTRecordSizeCalculator(field_3_strings); int recordSize = calculator.getRecordSize(); - return recordSize; + return recordSize-4; } SSTDeserializer getDeserializer() diff --git a/src/java/org/apache/poi/hssf/record/SaveRecalcRecord.java b/src/java/org/apache/poi/hssf/record/SaveRecalcRecord.java index 9cf008fe1..769f6ac97 100644 --- a/src/java/org/apache/poi/hssf/record/SaveRecalcRecord.java +++ b/src/java/org/apache/poi/hssf/record/SaveRecalcRecord.java @@ -85,9 +85,8 @@ public class SaveRecalcRecord return getRecordSize(); } - public int getRecordSize() - { - return 6; + protected int getDataSize() { + return 2; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/ScenarioProtectRecord.java b/src/java/org/apache/poi/hssf/record/ScenarioProtectRecord.java index 037eed020..cf58666eb 100644 --- a/src/java/org/apache/poi/hssf/record/ScenarioProtectRecord.java +++ b/src/java/org/apache/poi/hssf/record/ScenarioProtectRecord.java @@ -94,9 +94,8 @@ public class ScenarioProtectRecord return getRecordSize(); } - public int getRecordSize() - { - return 6; + protected int getDataSize() { + return 2; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/SelectionRecord.java b/src/java/org/apache/poi/hssf/record/SelectionRecord.java index ca2bf22fc..2898c8d14 100644 --- a/src/java/org/apache/poi/hssf/record/SelectionRecord.java +++ b/src/java/org/apache/poi/hssf/record/SelectionRecord.java @@ -143,7 +143,7 @@ public final class SelectionRecord extends Record { buffer.append("[/SELECTION]\n"); return buffer.toString(); } - private int getDataSize() { + protected int getDataSize() { return 9 // 1 byte + 4 shorts + CellRangeAddress8Bit.getEncodedSize(field_6_refs.length); } @@ -164,10 +164,6 @@ public final class SelectionRecord extends Record { return 4 + dataSize; } - public int getRecordSize() { - return 4 + getDataSize(); - } - public short getSid() { return sid; } diff --git a/src/java/org/apache/poi/hssf/record/SeriesChartGroupIndexRecord.java b/src/java/org/apache/poi/hssf/record/SeriesChartGroupIndexRecord.java index 0f5c19361..0754aa506 100644 --- a/src/java/org/apache/poi/hssf/record/SeriesChartGroupIndexRecord.java +++ b/src/java/org/apache/poi/hssf/record/SeriesChartGroupIndexRecord.java @@ -66,9 +66,8 @@ public final class SeriesChartGroupIndexRecord extends Record { return getRecordSize(); } - public int getRecordSize() - { - return 4 + 2; + protected int getDataSize() { + return 2; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/SeriesIndexRecord.java b/src/java/org/apache/poi/hssf/record/SeriesIndexRecord.java index 70565c66b..af75ced7c 100644 --- a/src/java/org/apache/poi/hssf/record/SeriesIndexRecord.java +++ b/src/java/org/apache/poi/hssf/record/SeriesIndexRecord.java @@ -66,9 +66,8 @@ public final class SeriesIndexRecord extends Record { return getRecordSize(); } - public int getRecordSize() - { - return 4 + 2; + protected int getDataSize() { + return 2; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/SeriesLabelsRecord.java b/src/java/org/apache/poi/hssf/record/SeriesLabelsRecord.java index 868358b0d..60d971de8 100644 --- a/src/java/org/apache/poi/hssf/record/SeriesLabelsRecord.java +++ b/src/java/org/apache/poi/hssf/record/SeriesLabelsRecord.java @@ -81,9 +81,8 @@ public final class SeriesLabelsRecord extends Record { return getRecordSize(); } - public int getRecordSize() - { - return 4 + 2; + protected int getDataSize() { + return 2; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/SeriesListRecord.java b/src/java/org/apache/poi/hssf/record/SeriesListRecord.java index 4753eae05..a6ebefd25 100644 --- a/src/java/org/apache/poi/hssf/record/SeriesListRecord.java +++ b/src/java/org/apache/poi/hssf/record/SeriesListRecord.java @@ -74,9 +74,8 @@ public final class SeriesListRecord extends Record { return 4 + dataSize; } - public int getRecordSize() - { - return 4 + field_1_seriesNumbers.length * 2 + 2; + protected int getDataSize() { + return field_1_seriesNumbers.length * 2 + 2; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/SeriesRecord.java b/src/java/org/apache/poi/hssf/record/SeriesRecord.java index b2ab88e8c..ec35521da 100644 --- a/src/java/org/apache/poi/hssf/record/SeriesRecord.java +++ b/src/java/org/apache/poi/hssf/record/SeriesRecord.java @@ -114,9 +114,8 @@ public final class SeriesRecord extends Record { return getRecordSize(); } - public int getRecordSize() - { - return 4 + 2 + 2 + 2 + 2 + 2 + 2; + protected int getDataSize() { + return 2 + 2 + 2 + 2 + 2 + 2; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/SeriesTextRecord.java b/src/java/org/apache/poi/hssf/record/SeriesTextRecord.java index da0e854ea..d1ca886ff 100644 --- a/src/java/org/apache/poi/hssf/record/SeriesTextRecord.java +++ b/src/java/org/apache/poi/hssf/record/SeriesTextRecord.java @@ -88,9 +88,8 @@ public final class SeriesTextRecord extends Record { return getRecordSize(); } - public int getRecordSize() - { - return 4 + 2 + 1 + 1 + (field_2_textLength *2); + protected int getDataSize() { + return 2 + 1 + 1 + (field_2_textLength *2); } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/SeriesToChartGroupRecord.java b/src/java/org/apache/poi/hssf/record/SeriesToChartGroupRecord.java index 6b38c40a4..648a5b126 100644 --- a/src/java/org/apache/poi/hssf/record/SeriesToChartGroupRecord.java +++ b/src/java/org/apache/poi/hssf/record/SeriesToChartGroupRecord.java @@ -68,9 +68,8 @@ public final class SeriesToChartGroupRecord extends Record { return getRecordSize(); } - public int getRecordSize() - { - return 4 + 2; + protected int getDataSize() { + return 2; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/SharedValueRecordBase.java b/src/java/org/apache/poi/hssf/record/SharedValueRecordBase.java index 3672b881a..f30c00959 100644 --- a/src/java/org/apache/poi/hssf/record/SharedValueRecordBase.java +++ b/src/java/org/apache/poi/hssf/record/SharedValueRecordBase.java @@ -67,8 +67,8 @@ public abstract class SharedValueRecordBase extends Record { return (short) _range.getLastColumn(); } - public final int getRecordSize() { - return 4 + CellRangeAddress8Bit.ENCODED_SIZE + getExtraDataSize(); + protected int getDataSize() { + return CellRangeAddress8Bit.ENCODED_SIZE + getExtraDataSize(); } protected abstract int getExtraDataSize(); diff --git a/src/java/org/apache/poi/hssf/record/SheetPropertiesRecord.java b/src/java/org/apache/poi/hssf/record/SheetPropertiesRecord.java index 1f7a5e44e..ecfc6156c 100644 --- a/src/java/org/apache/poi/hssf/record/SheetPropertiesRecord.java +++ b/src/java/org/apache/poi/hssf/record/SheetPropertiesRecord.java @@ -90,9 +90,8 @@ public final class SheetPropertiesRecord extends Record { return getRecordSize(); } - public int getRecordSize() - { - return 4 + 2 + 1; + protected int getDataSize() { + return 2 + 1; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/StringRecord.java b/src/java/org/apache/poi/hssf/record/StringRecord.java index d56e105f5..620a07e09 100644 --- a/src/java/org/apache/poi/hssf/record/StringRecord.java +++ b/src/java/org/apache/poi/hssf/record/StringRecord.java @@ -68,9 +68,8 @@ public class StringRecord extends Record { return isUnCompressedUnicode() ? field_1_string_length * 2 : field_1_string_length; } - public int getRecordSize() - { - return 4 + 2 + 1 + getStringByteLength(); + protected int getDataSize() { + return 2 + 1 + getStringByteLength(); } /** diff --git a/src/java/org/apache/poi/hssf/record/StyleRecord.java b/src/java/org/apache/poi/hssf/record/StyleRecord.java index ad740e9b2..af60e6924 100644 --- a/src/java/org/apache/poi/hssf/record/StyleRecord.java +++ b/src/java/org/apache/poi/hssf/record/StyleRecord.java @@ -158,7 +158,7 @@ public final class StyleRecord extends Record { } - private int getDataSize() { + protected int getDataSize() { if (isBuiltin()) { return 4; // short, byte, byte } @@ -188,10 +188,6 @@ public final class StyleRecord extends Record { return 4+dataSize; } - public int getRecordSize() { - return 4 + getDataSize(); - } - public short getSid() { return sid; diff --git a/src/java/org/apache/poi/hssf/record/SupBookRecord.java b/src/java/org/apache/poi/hssf/record/SupBookRecord.java index 78d77c5cb..a58c5c8c9 100644 --- a/src/java/org/apache/poi/hssf/record/SupBookRecord.java +++ b/src/java/org/apache/poi/hssf/record/SupBookRecord.java @@ -138,7 +138,7 @@ public final class SupBookRecord extends Record { sb.append("]"); return sb.toString(); } - private int getDataSize() { + protected int getDataSize() { if(!isExternalReferences()) { return SMALL_RECORD_SIZE; } @@ -198,10 +198,6 @@ public final class SupBookRecord extends Record { return field_1_number_of_sheets; } - public int getRecordSize() { - return getDataSize() + 4; - } - public short getSid() { return sid; diff --git a/src/java/org/apache/poi/hssf/record/TabIdRecord.java b/src/java/org/apache/poi/hssf/record/TabIdRecord.java index d5aca3e04..9478d008b 100644 --- a/src/java/org/apache/poi/hssf/record/TabIdRecord.java +++ b/src/java/org/apache/poi/hssf/record/TabIdRecord.java @@ -98,9 +98,8 @@ public final class TabIdRecord extends Record { return getRecordSize(); } - public int getRecordSize() - { - return 4 + (getTabIdArray().length * 2); + protected int getDataSize() { + return (getTabIdArray().length * 2); } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/TextObjectRecord.java b/src/java/org/apache/poi/hssf/record/TextObjectRecord.java index 4bb065e91..0a50e181b 100644 --- a/src/java/org/apache/poi/hssf/record/TextObjectRecord.java +++ b/src/java/org/apache/poi/hssf/record/TextObjectRecord.java @@ -167,7 +167,7 @@ public final class TextObjectRecord extends Record { * Only for the current record. does not include any subsequent Continue * records */ - private int getDataSize() { + private int getCurrentRecordDataSize() { int result = 2 + 2 + 2 + 2 + 2 + 2 + 2 + 4; if (_linkRefPtg != null) { result += 2 // formula size @@ -181,7 +181,7 @@ public final class TextObjectRecord extends Record { } private int serializeTXORecord(int offset, byte[] data) { - int dataSize = getDataSize(); + int dataSize = getCurrentRecordDataSize(); int recSize = dataSize+4; LittleEndianOutput out = new LittleEndianByteArrayOutputStream(data, offset, recSize); @@ -272,10 +272,10 @@ public final class TextObjectRecord extends Record { /** * Note - this total size includes all potential {@link ContinueRecord}s written + * but it is not the "ushort size" value to be written at the start of the first BIFF record */ - public int getRecordSize() { - int baseSize = 4 + getDataSize(); - return baseSize + getTrailingRecordsSize(); + protected int getDataSize() { + return getCurrentRecordDataSize() + getTrailingRecordsSize(); } diff --git a/src/java/org/apache/poi/hssf/record/TextRecord.java b/src/java/org/apache/poi/hssf/record/TextRecord.java index aeb9dc89c..0820e6baf 100644 --- a/src/java/org/apache/poi/hssf/record/TextRecord.java +++ b/src/java/org/apache/poi/hssf/record/TextRecord.java @@ -202,9 +202,8 @@ public final class TextRecord extends Record { return getRecordSize(); } - public int getRecordSize() - { - return 4 + 1 + 1 + 2 + 4 + 4 + 4 + 4 + 4 + 2 + 2 + 2 + 2; + protected int getDataSize() { + return 1 + 1 + 2 + 4 + 4 + 4 + 4 + 4 + 2 + 2 + 2 + 2; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/TickRecord.java b/src/java/org/apache/poi/hssf/record/TickRecord.java index f24f033eb..3b662d18b 100644 --- a/src/java/org/apache/poi/hssf/record/TickRecord.java +++ b/src/java/org/apache/poi/hssf/record/TickRecord.java @@ -149,9 +149,8 @@ public final class TickRecord extends Record { return getRecordSize(); } - public int getRecordSize() - { - return 4 + 1 + 1 + 1 + 1 + 4 + 8 + 8 + 2 + 2 + 2; + protected int getDataSize() { + return 1 + 1 + 1 + 1 + 4 + 8 + 8 + 2 + 2 + 2; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/TopMarginRecord.java b/src/java/org/apache/poi/hssf/record/TopMarginRecord.java index 4d1a19a77..e52326e5c 100644 --- a/src/java/org/apache/poi/hssf/record/TopMarginRecord.java +++ b/src/java/org/apache/poi/hssf/record/TopMarginRecord.java @@ -55,7 +55,9 @@ public final class TopMarginRecord extends Record implements Margin { return getRecordSize(); } - public int getRecordSize() { return 4 + 8; } + protected int getDataSize() { + return 8; + } public short getSid() { return sid; } @@ -76,4 +78,4 @@ public final class TopMarginRecord extends Record implements Margin { rec.field_1_margin = this.field_1_margin; return rec; } -} // END OF CLA \ No newline at end of file +} // END OF C \ No newline at end of file diff --git a/src/java/org/apache/poi/hssf/record/UncalcedRecord.java b/src/java/org/apache/poi/hssf/record/UncalcedRecord.java index adc2cdeb9..01ae71f5a 100644 --- a/src/java/org/apache/poi/hssf/record/UncalcedRecord.java +++ b/src/java/org/apache/poi/hssf/record/UncalcedRecord.java @@ -27,14 +27,9 @@ import org.apache.poi.util.LittleEndian; * * @author Olivier Leprince */ +public final class UncalcedRecord extends Record { + public final static short sid = 0x005E; -public class UncalcedRecord extends Record -{ - public final static short sid = 0x5E; - - /** - * Default constructor - */ public UncalcedRecord() { } @@ -60,8 +55,8 @@ public class UncalcedRecord extends Record return getRecordSize(); } - public int getRecordSize() { - return UncalcedRecord.getStaticRecordSize(); + protected int getDataSize() { + return 2; } public static int getStaticRecordSize() { diff --git a/src/java/org/apache/poi/hssf/record/UnitsRecord.java b/src/java/org/apache/poi/hssf/record/UnitsRecord.java index e4464eb79..f09b3cb2d 100644 --- a/src/java/org/apache/poi/hssf/record/UnitsRecord.java +++ b/src/java/org/apache/poi/hssf/record/UnitsRecord.java @@ -67,9 +67,8 @@ public final class UnitsRecord extends Record { return getRecordSize(); } - public int getRecordSize() - { - return 4 + 2; + protected int getDataSize() { + return 2; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/UnknownRecord.java b/src/java/org/apache/poi/hssf/record/UnknownRecord.java index 77de66d9b..61630357a 100644 --- a/src/java/org/apache/poi/hssf/record/UnknownRecord.java +++ b/src/java/org/apache/poi/hssf/record/UnknownRecord.java @@ -87,8 +87,8 @@ public final class UnknownRecord extends Record { return 4 + dataSize; } - public final int getRecordSize() { - return 4 + _rawData.length; + protected int getDataSize() { + return _rawData.length; } /** diff --git a/src/java/org/apache/poi/hssf/record/UseSelFSRecord.java b/src/java/org/apache/poi/hssf/record/UseSelFSRecord.java index 8e64ef3d4..e513cc812 100644 --- a/src/java/org/apache/poi/hssf/record/UseSelFSRecord.java +++ b/src/java/org/apache/poi/hssf/record/UseSelFSRecord.java @@ -93,9 +93,8 @@ public class UseSelFSRecord return getRecordSize(); } - public int getRecordSize() - { - return 6; + protected int getDataSize() { + return 2; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/VCenterRecord.java b/src/java/org/apache/poi/hssf/record/VCenterRecord.java index 7326a3292..6e4c4d03c 100644 --- a/src/java/org/apache/poi/hssf/record/VCenterRecord.java +++ b/src/java/org/apache/poi/hssf/record/VCenterRecord.java @@ -80,9 +80,8 @@ public final class VCenterRecord extends Record { return getRecordSize(); } - public int getRecordSize() - { - return 6; + protected int getDataSize() { + return 2; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/ValueRangeRecord.java b/src/java/org/apache/poi/hssf/record/ValueRangeRecord.java index 9caffa73b..fa13af68a 100644 --- a/src/java/org/apache/poi/hssf/record/ValueRangeRecord.java +++ b/src/java/org/apache/poi/hssf/record/ValueRangeRecord.java @@ -119,9 +119,8 @@ public final class ValueRangeRecord extends Record { return getRecordSize(); } - public int getRecordSize() - { - return 4 + 8 + 8 + 8 + 8 + 8 + 2; + protected int getDataSize() { + return 8 + 8 + 8 + 8 + 8 + 2; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/WSBoolRecord.java b/src/java/org/apache/poi/hssf/record/WSBoolRecord.java index bdb1cb484..d58e26d9d 100644 --- a/src/java/org/apache/poi/hssf/record/WSBoolRecord.java +++ b/src/java/org/apache/poi/hssf/record/WSBoolRecord.java @@ -325,9 +325,8 @@ public final class WSBoolRecord extends Record { return getRecordSize(); } - public int getRecordSize() - { - return 6; + protected int getDataSize() { + return 2; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/WindowOneRecord.java b/src/java/org/apache/poi/hssf/record/WindowOneRecord.java index 7afc5fa1f..8fb077213 100644 --- a/src/java/org/apache/poi/hssf/record/WindowOneRecord.java +++ b/src/java/org/apache/poi/hssf/record/WindowOneRecord.java @@ -439,9 +439,8 @@ public final class WindowOneRecord extends Record { return getRecordSize(); } - public int getRecordSize() - { - return 22; + protected int getDataSize() { + return 18; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/WindowProtectRecord.java b/src/java/org/apache/poi/hssf/record/WindowProtectRecord.java index 13d54e9b5..e61d8611f 100644 --- a/src/java/org/apache/poi/hssf/record/WindowProtectRecord.java +++ b/src/java/org/apache/poi/hssf/record/WindowProtectRecord.java @@ -92,9 +92,8 @@ public class WindowProtectRecord return getRecordSize(); } - public int getRecordSize() - { - return 6; + protected int getDataSize() { + return 2; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/WindowTwoRecord.java b/src/java/org/apache/poi/hssf/record/WindowTwoRecord.java index 9023d2d69..70cc29166 100644 --- a/src/java/org/apache/poi/hssf/record/WindowTwoRecord.java +++ b/src/java/org/apache/poi/hssf/record/WindowTwoRecord.java @@ -537,9 +537,8 @@ public final class WindowTwoRecord extends Record { return getRecordSize(); } - public int getRecordSize() - { - return 22; + protected int getDataSize() { + return 18; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/WriteAccessRecord.java b/src/java/org/apache/poi/hssf/record/WriteAccessRecord.java index 6b005c7f4..5870a9ace 100644 --- a/src/java/org/apache/poi/hssf/record/WriteAccessRecord.java +++ b/src/java/org/apache/poi/hssf/record/WriteAccessRecord.java @@ -133,8 +133,8 @@ public final class WriteAccessRecord extends Record { return 4 + DATA_SIZE; } - public int getRecordSize() { - return 4 + DATA_SIZE; + protected int getDataSize() { + return DATA_SIZE; } public short getSid() { diff --git a/src/java/org/apache/poi/hssf/record/WriteProtectRecord.java b/src/java/org/apache/poi/hssf/record/WriteProtectRecord.java index eb27e0ec1..797f87243 100644 --- a/src/java/org/apache/poi/hssf/record/WriteProtectRecord.java +++ b/src/java/org/apache/poi/hssf/record/WriteProtectRecord.java @@ -56,9 +56,8 @@ public final class WriteProtectRecord extends Record { return getRecordSize(); } - public int getRecordSize() - { - return 4; + protected int getDataSize() { + return 0; } public short getSid() diff --git a/src/java/org/apache/poi/hssf/record/aggregates/PageSettingsBlock.java b/src/java/org/apache/poi/hssf/record/aggregates/PageSettingsBlock.java index 819940e12..c4d156597 100644 --- a/src/java/org/apache/poi/hssf/record/aggregates/PageSettingsBlock.java +++ b/src/java/org/apache/poi/hssf/record/aggregates/PageSettingsBlock.java @@ -210,6 +210,15 @@ public final class PageSettingsBlock extends RecordAggregate { rv.visitRecord(r); } } + private static void visitIfPresent(PageBreakRecord r, RecordVisitor rv) { + if (r != null) { + if (r.isEmpty()) { + // its OK to not serialize empty page break records + return; + } + rv.visitRecord(r); + } + } /** * creates the Header Record and sets it to nothing/0 length diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java index 4357c57e3..4b4dd0af7 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java @@ -30,7 +30,6 @@ import org.apache.poi.hssf.model.Sheet; import org.apache.poi.hssf.record.NameRecord; import org.apache.poi.hssf.record.Record; import org.apache.poi.hssf.record.RecordFormatException; -import org.apache.poi.hssf.record.RecordInputStream; import org.apache.poi.hssf.record.formula.Area3DPtg; import org.apache.poi.util.LittleEndian; import org.apache.poi.util.TempFile; @@ -504,8 +503,8 @@ public final class TestHSSFWorkbook extends TestCase { public int serialize(int offset, byte[] data) { return 4; } - public int getRecordSize() { - return 8; + protected int getDataSize() { + return 4; } } diff --git a/src/testcases/org/apache/poi/hssf/util/TestRKUtil.java b/src/testcases/org/apache/poi/hssf/util/TestRKUtil.java index e158aafc5..5b845775f 100644 --- a/src/testcases/org/apache/poi/hssf/util/TestRKUtil.java +++ b/src/testcases/org/apache/poi/hssf/util/TestRKUtil.java @@ -1,4 +1,3 @@ - /* ==================================================================== Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with @@ -15,31 +14,38 @@ See the License for the specific language governing permissions and limitations under the License. ==================================================================== */ - package org.apache.poi.hssf.util; +import junit.framework.AssertionFailedError; import junit.framework.TestCase; /** - * Tests the RKUtil class. + * Tests the {@link RKUtil} class. */ -public class TestRKUtil - extends TestCase -{ - public TestRKUtil(String s) - { - super(s); - } +public final class TestRKUtil extends TestCase { - /** - * Check we can decode correctly. - */ - public void testDecode() - throws Exception - { - assertEquals(3.0, RKUtil.decodeNumber(1074266112), 0.0000001); - assertEquals(3.3, RKUtil.decodeNumber(1081384961), 0.0000001); - assertEquals(3.33, RKUtil.decodeNumber(1081397249), 0.0000001); - } + /** + * Check we can decode correctly. + */ + public void testDecode() { + + int[] values = { 1074266112, 1081384961, 1081397249, + 0x3FF00000, 0x405EC001, 0x02F1853A, 0x02F1853B, 0xFCDD699A, + }; + double[] rvalues = { 3.0, 3.3, 3.33, + 1, 1.23, 12345678, 123456.78, -13149594, + }; + + for (int j = 0; j < values.length; j++) { + + int intBits = values[j]; + double expectedValue = rvalues[j]; + double actualValue = RKUtil.decodeNumber(intBits); + if (expectedValue != actualValue) { + throw new AssertionFailedError("0x" + Integer.toHexString(intBits) + + " should decode to " + expectedValue + " but got " + actualValue); + } + } + } }