]> source.dussan.org Git - poi.git/commitdiff
Merged revisions 701756,702231 via svnmerge from
authorJosh Micich <josh@apache.org>
Thu, 9 Oct 2008 06:46:17 +0000 (06:46 +0000)
committerJosh Micich <josh@apache.org>
Thu, 9 Oct 2008 06:46:17 +0000 (06:46 +0000)
https://svn.apache.org/repos/asf/poi/trunk

........
  r701756 | josh | 2008-10-05 00:22:12 -0700 (Sun, 05 Oct 2008) | 1 line

  Fixing comments and formatting inside Record subclasses
........
  r702231 | josh | 2008-10-06 12:13:41 -0700 (Mon, 06 Oct 2008) | 1 line

  Fix for 43354 - made the formula evaluator capable of handling missing function arguments
........

git-svn-id: https://svn.apache.org/repos/asf/poi/branches/ooxml@703070 13f79535-47bb-0310-9956-ffa450edef68

62 files changed:
src/documentation/content/xdocs/changes.xml
src/documentation/content/xdocs/status.xml
src/java/org/apache/poi/hssf/record/AbstractEscherHolderRecord.java
src/java/org/apache/poi/hssf/record/AreaFormatRecord.java
src/java/org/apache/poi/hssf/record/AreaRecord.java
src/java/org/apache/poi/hssf/record/AxisLineFormatRecord.java
src/java/org/apache/poi/hssf/record/AxisOptionsRecord.java
src/java/org/apache/poi/hssf/record/AxisParentRecord.java
src/java/org/apache/poi/hssf/record/AxisRecord.java
src/java/org/apache/poi/hssf/record/AxisUsedRecord.java
src/java/org/apache/poi/hssf/record/BarRecord.java
src/java/org/apache/poi/hssf/record/BottomMarginRecord.java
src/java/org/apache/poi/hssf/record/CategorySeriesAxisRecord.java
src/java/org/apache/poi/hssf/record/ChartRecord.java
src/java/org/apache/poi/hssf/record/CommonObjectDataSubRecord.java
src/java/org/apache/poi/hssf/record/DVALRecord.java
src/java/org/apache/poi/hssf/record/DatRecord.java
src/java/org/apache/poi/hssf/record/DataFormatRecord.java
src/java/org/apache/poi/hssf/record/DefaultDataLabelTextPropertiesRecord.java
src/java/org/apache/poi/hssf/record/DrawingGroupRecord.java
src/java/org/apache/poi/hssf/record/EndSubRecord.java
src/java/org/apache/poi/hssf/record/EscherAggregate.java
src/java/org/apache/poi/hssf/record/ExtSSTRecord.java
src/java/org/apache/poi/hssf/record/FontBasisRecord.java
src/java/org/apache/poi/hssf/record/FontIndexRecord.java
src/java/org/apache/poi/hssf/record/FrameRecord.java
src/java/org/apache/poi/hssf/record/GroupMarkerSubRecord.java
src/java/org/apache/poi/hssf/record/LeftMarginRecord.java
src/java/org/apache/poi/hssf/record/LegendRecord.java
src/java/org/apache/poi/hssf/record/LineFormatRecord.java
src/java/org/apache/poi/hssf/record/LinkedDataRecord.java
src/java/org/apache/poi/hssf/record/Margin.java
src/java/org/apache/poi/hssf/record/NameRecord.java
src/java/org/apache/poi/hssf/record/NoteRecord.java
src/java/org/apache/poi/hssf/record/NoteStructureSubRecord.java
src/java/org/apache/poi/hssf/record/NumberFormatIndexRecord.java
src/java/org/apache/poi/hssf/record/ObjRecord.java
src/java/org/apache/poi/hssf/record/ObjectLinkRecord.java
src/java/org/apache/poi/hssf/record/PaneRecord.java
src/java/org/apache/poi/hssf/record/PlotAreaRecord.java
src/java/org/apache/poi/hssf/record/PlotGrowthRecord.java
src/java/org/apache/poi/hssf/record/RightMarginRecord.java
src/java/org/apache/poi/hssf/record/SCLRecord.java
src/java/org/apache/poi/hssf/record/SeriesChartGroupIndexRecord.java
src/java/org/apache/poi/hssf/record/SeriesIndexRecord.java
src/java/org/apache/poi/hssf/record/SeriesLabelsRecord.java
src/java/org/apache/poi/hssf/record/SeriesRecord.java
src/java/org/apache/poi/hssf/record/SeriesTextRecord.java
src/java/org/apache/poi/hssf/record/SeriesToChartGroupRecord.java
src/java/org/apache/poi/hssf/record/SheetPropertiesRecord.java
src/java/org/apache/poi/hssf/record/StringRecord.java
src/java/org/apache/poi/hssf/record/TextObjectBaseRecord.java
src/java/org/apache/poi/hssf/record/TextRecord.java
src/java/org/apache/poi/hssf/record/TickRecord.java
src/java/org/apache/poi/hssf/record/TopMarginRecord.java
src/java/org/apache/poi/hssf/record/UnitsRecord.java
src/java/org/apache/poi/hssf/record/ValueRangeRecord.java
src/java/org/apache/poi/hssf/record/formula/eval/MissingArgEval.java [new file with mode: 0644]
src/java/org/apache/poi/hssf/record/formula/functions/Count.java
src/java/org/apache/poi/ss/formula/WorkbookEvaluator.java
src/testcases/org/apache/poi/hssf/record/formula/eval/AllFormulaEvalTests.java
src/testcases/org/apache/poi/hssf/record/formula/eval/TestMissingArgEval.java [new file with mode: 0644]

index c0f06eb8bd2424e4089a4f9da28e4a5bb4b2d31a..7fa34db87849b08ddffc2819c0658e1f45e13849 100644 (file)
@@ -67,6 +67,7 @@
            <action dev="POI-DEVELOPERS" type="add">Created a common interface for handling Excel files, irrespective of if they are .xls or .xlsx</action>
         </release>
         <release version="3.2-alpha1" date="2008-??-??">
+           <action dev="POI-DEVELOPERS" type="fix">43354 - support for evalating formulas with missing args</action>
            <action dev="POI-DEVELOPERS" type="fix">45912 - fixed ArrayIndexOutOfBoundsException in EmbeddedObjectRefSubRecord</action>
            <action dev="POI-DEVELOPERS" type="fix">45889 - fixed ArrayIndexOutOfBoundsException when constructing HSLF Table with a single row </action>
            <action dev="POI-DEVELOPERS" type="add">Initial support for creating hyperlinks in HSLF</action>
index 9a4b02f57f1cbf016e63d183706a1578ea129ab6..baead2a3581dd20040c149ede9b82c601d081ba6 100644 (file)
@@ -64,6 +64,7 @@
            <action dev="POI-DEVELOPERS" type="add">Created a common interface for handling Excel files, irrespective of if they are .xls or .xlsx</action>
         </release>
         <release version="3.2-alpha1" date="2008-??-??">
+           <action dev="POI-DEVELOPERS" type="fix">43354 - support for evalating formulas with missing args</action>
            <action dev="POI-DEVELOPERS" type="fix">45912 - fixed ArrayIndexOutOfBoundsException in EmbeddedObjectRefSubRecord</action>
            <action dev="POI-DEVELOPERS" type="fix">45889 - fixed ArrayIndexOutOfBoundsException when constructing HSLF Table with a single row </action>
            <action dev="POI-DEVELOPERS" type="add">Initial support for creating hyperlinks in HSLF</action>
index 295a86a703d603f6571280e30d699cdbe019525b..bd820741811c0649efdc4f8a83ac90770df8a823 100644 (file)
@@ -36,9 +36,7 @@ import org.apache.poi.util.LittleEndian;
  * @author Glen Stampoultzis (glens at apache.org)
  * @author Michael Zalewski (zalewski at optonline.net)
  */
-public abstract class AbstractEscherHolderRecord
-    extends Record
-{
+public abstract class AbstractEscherHolderRecord extends Record {
     private static boolean DESERIALISE;
     static {
     try {
@@ -133,34 +131,6 @@ public abstract class AbstractEscherHolderRecord
         return getRecordSize();
     }
 
-//    public int serialize(int offset, byte[] data)
-//    {
-//        if (escherRecords.size() == 0 && rawData != null)
-//        {
-//            System.arraycopy( rawData, 0, data, offset, rawData.length);
-//            return rawData.length;
-//        }
-//        else
-//        {
-//            collapseShapeInformation();
-//
-//            LittleEndian.putShort(data, 0 + offset, getSid());
-//            LittleEndian.putShort(data, 2 + offset, (short)(getRecordSize() - 4));
-//
-//            int pos = offset + 4;
-//            for ( Iterator iterator = escherRecords.iterator(); iterator.hasNext(); )
-//            {
-//                EscherRecord r = (EscherRecord) iterator.next();
-//                pos += r.serialize(pos, data, new NullEscherSerializationListener() );
-//            }
-//
-//            return getRecordSize();
-//        }
-//    }
-
-    /**
-     * Size of record (including 4 byte header)
-     */
     public int getRecordSize()
     {
         if (escherRecords.size() == 0 && rawData != null)
@@ -323,9 +293,4 @@ public abstract class AbstractEscherHolderRecord
     {
         convertToEscherRecords(0, rawData.length, rawData );
     }
-
-}  // END OF CLASS
-
-
-
-
+}
index 65658ab3ed5d8ef1098aa1868d018a4ef5484bbd..f6abd9c170d94d552c907ee470291492689da770 100644 (file)
@@ -23,10 +23,8 @@ import org.apache.poi.util.HexDump;
 import org.apache.poi.util.LittleEndian;
 
 /**
- * The area format record is used to define the colours and patterns for an area.
- * NOTE: This source is automatically generated please do not modify this file.  Either subclass or
- *       remove the record in src/records/definitions.
-
+ * The area format record is used to define the colours and patterns for an area.<p/>
+ * 
  * @author Glen Stampoultzis (glens at apache.org)
  */
 public final class AreaFormatRecord extends Record {
@@ -112,9 +110,6 @@ public final class AreaFormatRecord extends Record {
         return getRecordSize();
     }
 
-    /**
-     * Size of record (exluding 4 byte header)
-     */
     public int getRecordSize()
     {
         return 4  + 4 + 4 + 2 + 2 + 2 + 2;
index de994427f586834452af88057cfdb97b2332c5dc..14a5737f569d7f148ea5b959c1eacddd467d3afc 100644 (file)
@@ -23,10 +23,8 @@ import org.apache.poi.util.HexDump;
 import org.apache.poi.util.LittleEndian;
 
 /**
- * The area record is used to define a area chart.
- * NOTE: This source is automatically generated please do not modify this file.  Either subclass or
- *       remove the record in src/records/definitions.
-
+ * The area record is used to define a area chart.<p/>
+ * 
  * @author Glen Stampoultzis (glens at apache.org)
  */
 public final class AreaRecord extends Record {
@@ -77,9 +75,6 @@ public final class AreaRecord extends Record {
         return getRecordSize();
     }
 
-    /**
-     * Size of record (exluding 4 byte header)
-     */
     public int getRecordSize()
     {
         return 4  + 2;
index 64d2a071d96973b9b58802f655f8aa3c47b55c4f..1f6e03dbc19867afd196553a0f1ec3d1fa5c9086 100644 (file)
@@ -1,4 +1,3 @@
-
 /* ====================================================================
    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with
    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.*;
+import org.apache.poi.util.HexDump;
+import org.apache.poi.util.LittleEndian;
 
 /**
- * The axis line format record defines the axis type details.
- * NOTE: This source is automatically generated please do not modify this file.  Either subclass or
- *       remove the record in src/records/definitions.
-
+ * The axis line format record defines the axis type details.<p/>
+ * 
  * @author Glen Stampoultzis (glens at apache.org)
  */
-public class AxisLineFormatRecord
-    extends Record
-{
+public final class AxisLineFormatRecord extends Record {
     public final static short      sid                             = 0x1021;
     private  short      field_1_axisType;
     public final static short       AXIS_TYPE_AXIS_LINE            = 0;
@@ -77,9 +70,6 @@ public class AxisLineFormatRecord
         return getRecordSize();
     }
 
-    /**
-     * Size of record (exluding 4 byte header)
-     */
     public int getRecordSize()
     {
         return 4  + 2;
@@ -128,10 +118,4 @@ public class AxisLineFormatRecord
     {
         this.field_1_axisType = field_1_axisType;
     }
-
-
-}  // END OF CLASS
-
-
-
-
+}
index 54cd2b49bcc689c67b1e292987558d31d929d6d8..32656d4709bff03fff5ecd4ccf96f4beca2153e3 100644 (file)
@@ -23,10 +23,8 @@ import org.apache.poi.util.HexDump;
 import org.apache.poi.util.LittleEndian;
 
 /**
- * The axis options record provides unit information and other various tidbits about the axis.
- * NOTE: This source is automatically generated please do not modify this file.  Either subclass or
- *       remove the record in src/records/definitions.
-
+ * The axis options record provides unit information and other various tidbits about the axis.<p/>
+ * 
  * @author Andrew C. Oliver(acoliver at apache.org)
  */
 public final class AxisOptionsRecord extends Record {
@@ -144,9 +142,6 @@ public final class AxisOptionsRecord extends Record {
         return getRecordSize();
     }
 
-    /**
-     * Size of record (exluding 4 byte header)
-     */
     public int getRecordSize()
     {
         return 4  + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2;
index 281a0824f53d9f5c7eedf3a61240e2a7ef8ef350..9a92c2e4ac55ceb480fb4005afb6db3b98599b92 100644 (file)
@@ -1,4 +1,3 @@
-
 /* ====================================================================
    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with
    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.*;
+import org.apache.poi.util.HexDump;
+import org.apache.poi.util.LittleEndian;
 
 /**
- * The axis size and location
- * NOTE: This source is automatically generated please do not modify this file.  Either subclass or
- *       remove the record in src/records/definitions.
-
+ * The axis size and location<p/>
+ * 
  * @author Glen Stampoultzis (glens at apache.org)
  */
-public class AxisParentRecord
-    extends Record
-{
+public final class AxisParentRecord extends Record {
     public final static short      sid                             = 0x1041;
     private  short      field_1_axisType;
     public final static short       AXIS_TYPE_MAIN                 = 0;
@@ -103,9 +96,6 @@ public class AxisParentRecord
         return getRecordSize();
     }
 
-    /**
-     * Size of record (exluding 4 byte header)
-     */
     public int getRecordSize()
     {
         return 4  + 2 + 4 + 4 + 4 + 4;
@@ -218,10 +208,4 @@ public class AxisParentRecord
     {
         this.field_5_height = field_5_height;
     }
-
-
-}  // END OF CLASS
-
-
-
-
+}
index b57ac1d4f93aff5fd638d1681bdfdf1bc7f08df1..0619027c9bd616d9b465d957b45f9cd0bdf7cb7c 100644 (file)
@@ -1,4 +1,3 @@
-
 /* ====================================================================
    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with
    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.*;
+import org.apache.poi.util.HexDump;
+import org.apache.poi.util.LittleEndian;
 
 /**
- * The axis record defines the type of an axis.
- * NOTE: This source is automatically generated please do not modify this file.  Either subclass or
- *       remove the record in src/records/definitions.
-
+ * The axis record defines the type of an axis.<p/>
+ * 
  * @author Glen Stampoultzis (glens at apache.org)
  */
-public class AxisRecord
-    extends Record
-{
+public final class AxisRecord extends Record {
     public final static short      sid                             = 0x101d;
     private  short      field_1_axisType;
     public final static short       AXIS_TYPE_CATEGORY_OR_X_AXIS   = 0;
@@ -104,9 +97,6 @@ public class AxisRecord
         return getRecordSize();
     }
 
-    /**
-     * Size of record (exluding 4 byte header)
-     */
     public int getRecordSize()
     {
         return 4  + 2 + 4 + 4 + 4 + 4;
@@ -221,10 +211,4 @@ public class AxisRecord
     {
         this.field_5_reserved4 = field_5_reserved4;
     }
-
-
-}  // END OF CLASS
-
-
-
-
+}
index 361ae2304f76881190709696f59f8a919cd91ec3..c70129d7fbd8a273d57e01fe655784857a610bbf 100644 (file)
@@ -1,4 +1,3 @@
-
 /* ====================================================================
    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with
    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.*;
+import org.apache.poi.util.HexDump;
+import org.apache.poi.util.LittleEndian;
 
 /**
- * The number of axes used on a chart.
- * NOTE: This source is automatically generated please do not modify this file.  Either subclass or
- *       remove the record in src/records/definitions.
-
+ * The number of axes used on a chart.<p/>
+ * 
  * @author Glen Stampoultzis (glens at apache.org)
  */
-public class AxisUsedRecord
-    extends Record
-{
+public final class AxisUsedRecord extends Record {
     public final static short      sid                             = 0x1046;
     private  short      field_1_numAxis;
 
@@ -73,9 +66,6 @@ public class AxisUsedRecord
         return getRecordSize();
     }
 
-    /**
-     * Size of record (exluding 4 byte header)
-     */
     public int getRecordSize()
     {
         return 4  + 2;
@@ -111,10 +101,4 @@ public class AxisUsedRecord
     {
         this.field_1_numAxis = field_1_numAxis;
     }
-
-
-}  // END OF CLASS
-
-
-
-
+}
index dbf41202ac404849e0fba0053e871a0a35b68921..a9733c52199c9c4e4250e99176c336a4333518f7 100644 (file)
@@ -23,10 +23,8 @@ import org.apache.poi.util.HexDump;
 import org.apache.poi.util.LittleEndian;
 
 /**
- * The bar record is used to define a bar chart.
- * NOTE: This source is automatically generated please do not modify this file.  Either subclass or
- *       remove the record in src/records/definitions.
-
+ * The bar record is used to define a bar chart.<p/>
+ * 
  * @author Glen Stampoultzis (glens at apache.org)
  */
 public final class BarRecord extends Record {
@@ -94,9 +92,6 @@ public final class BarRecord extends Record {
         return getRecordSize();
     }
 
-    /**
-     * Size of record (exluding 4 byte header)
-     */
     public int getRecordSize()
     {
         return 4  + 2 + 2 + 2;
index c8f50ff1c14aa24ae4be2095446a4576e50a4a7f..15d3174c2cfa89e0da9334ed302aba9120f9e59d 100644 (file)
@@ -23,14 +23,11 @@ import org.apache.poi.util.*;
 
 
 /**
- * Record for the bottom margin.
- * NOTE: This source was automatically generated.
- *
+ * Record for the bottom margin.<p/>
+ * 
  * @author Shawn Laubach (slaubach at apache dot org)
  */
-public class BottomMarginRecord
-        extends Record implements Margin
-{
+public final class BottomMarginRecord extends Record implements Margin {
     public final static short sid = 0x29;
     private double field_1_margin;
 
@@ -62,9 +59,6 @@ public class BottomMarginRecord
         return getRecordSize();
     }
 
-    /**
-     * Size of record (exluding 4 byte header)
-     */
     public int getRecordSize()
     {
         return 4 + 8;
@@ -98,4 +92,4 @@ public class BottomMarginRecord
         return rec;
     }
 
-}  // END OF CLAS
\ No newline at end of file
+}  // END OF CLA
\ No newline at end of file
index 158b3e5cf6c53540bdd3efb494f42b037bdfa70f..2842788c796334cef23c6c66896be19223a0dc75 100644 (file)
@@ -23,10 +23,8 @@ import org.apache.poi.util.HexDump;
 import org.apache.poi.util.LittleEndian;
 
 /**
- * This record refers to a category or series axis and is used to specify label/tickmark frequency.
- * NOTE: This source is automatically generated please do not modify this file.  Either subclass or
- *       remove the record in src/records/definitions.
-
+ * This record refers to a category or series axis and is used to specify label/tickmark frequency.<p/>
+ * 
  * @author Glen Stampoultzis (glens at apache.org)
  */
 public final class CategorySeriesAxisRecord extends Record {
@@ -99,9 +97,6 @@ public final class CategorySeriesAxisRecord extends Record {
         return getRecordSize();
     }
 
-    /**
-     * Size of record (exluding 4 byte header)
-     */
     public int getRecordSize()
     {
         return 4  + 2 + 2 + 2 + 2;
index 9ce93946aed9840e7c7cb91ef12ee7d42545722d..62e02d4fafbfa563dbdc6de6e64a490eca532796 100644 (file)
@@ -1,4 +1,3 @@
-
 /* ====================================================================
    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with
    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.*;
+import org.apache.poi.util.HexDump;
+import org.apache.poi.util.LittleEndian;
 
 /**
  * The chart record is used to define the location and size of a chart.
- * NOTE: This source is automatically generated please do not modify this file.  Either subclass or
- *       remove the record in src/records/definitions.
-
  * @author Glen Stampoultzis (glens at apache.org)
  */
-public class ChartRecord
-    extends Record
-{
+public final class ChartRecord extends Record {
     public final static short      sid                             = 0x1002;
     private  int        field_1_x;
     private  int        field_2_y;
@@ -94,9 +86,6 @@ public class ChartRecord
         return getRecordSize();
     }
 
-    /**
-     * Size of record (exluding 4 byte header)
-     */
     public int getRecordSize()
     {
         return 4  + 4 + 4 + 4 + 4;
@@ -183,10 +172,4 @@ public class ChartRecord
     {
         this.field_4_height = field_4_height;
     }
-
-
-}  // END OF CLASS
-
-
-
-
+}
index ed2372d82ffa867610e4460b027f43819edac8a8..68ce8e91db01990dbb50662377930cb86dd87960 100644 (file)
@@ -23,10 +23,8 @@ import org.apache.poi.util.HexDump;
 import org.apache.poi.util.LittleEndian;
 
 /**
- * The common object data record is used to store all common preferences for an excel object.
- * NOTE: This source is automatically generated please do not modify this file.  Either subclass or
- *       remove the record in src/records/definitions.
- *
+ * The common object data record is used to store all common preferences for an excel object.<p/>
+ * 
  * @author Glen Stampoultzis (glens at apache.org)
  */
 public final class CommonObjectDataSubRecord extends SubRecord {
@@ -147,9 +145,6 @@ public final class CommonObjectDataSubRecord extends SubRecord {
         return getRecordSize();
     }
 
-    /**
-     * Size of record (exluding 4 byte header)
-     */
     public int getRecordSize()
     {
         return 4  + 2 + 2 + 2 + 4 + 4 + 4;
index 9235ef2c6cfb02dd4e4c30e453c0d3cdeca215e8..9f051db6eb48aaf7948988d1a9ca93d8548c9ed7 100644 (file)
@@ -164,7 +164,6 @@ public class DVALRecord extends Record
         return getRecordSize();
     }
 
-    //with 4 bytes header
     public int getRecordSize()
     {
         return 22;
index a6c5040150835762deae37ff94eb74b2e2267875..f93efe622696ab5d221df2358294e41f7ec21972 100644 (file)
@@ -23,10 +23,8 @@ import org.apache.poi.util.HexDump;
 import org.apache.poi.util.LittleEndian;
 
 /**
- * The dat record is used to store options for the chart.
- * NOTE: This source is automatically generated please do not modify this file.  Either subclass or
- *       remove the record in src/records/definitions.
-
+ * The dat record is used to store options for the chart.<p/>
+ * 
  * @author Glen Stampoultzis (glens at apache.org)
  */
 public final class DatRecord extends Record {
@@ -80,9 +78,6 @@ public final class DatRecord extends Record {
         return getRecordSize();
     }
 
-    /**
-     * Size of record (exluding 4 byte header)
-     */
     public int getRecordSize()
     {
         return 4  + 2;
index 7d37704eb770defa62237b3f76e3cfa36d22e914..b0a67aefa6160ca0e192ff9f6dc6531a36da93ae 100644 (file)
@@ -23,10 +23,8 @@ import org.apache.poi.util.HexDump;
 import org.apache.poi.util.LittleEndian;
 
 /**
- * The data format record is used to index into a series.
- * NOTE: This source is automatically generated please do not modify this file.  Either subclass or
- *       remove the record in src/records/definitions.
- *
+ * The data format record is used to index into a series.<p/>
+ * 
  * @author Glen Stampoultzis (glens at apache.org)
  */
 public final class DataFormatRecord extends Record {
@@ -95,9 +93,6 @@ public final class DataFormatRecord extends Record {
         return getRecordSize();
     }
 
-    /**
-     * Size of record (exluding 4 byte header)
-     */
     public int getRecordSize()
     {
         return 4  + 2 + 2 + 2 + 2;
index 49120e75a7d64d8f8b86c4b14091200fb0386951..e970265f21839094d97d5c941dbdd6d114610314 100644 (file)
@@ -1,4 +1,3 @@
-
 /* ====================================================================
    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with
    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.*;
+import org.apache.poi.util.HexDump;
+import org.apache.poi.util.LittleEndian;
 
 /**
- * The default data label text properties record identifies the text characteristics of the preceeding text record.
- * NOTE: This source is automatically generated please do not modify this file.  Either subclass or
- *       remove the record in src/records/definitions.
-
+ * The default data label text properties record identifies the text characteristics of the preceding text record.<p/>
+ * 
  * @author Glen Stampoultzis (glens at apache.org)
  */
-public class DefaultDataLabelTextPropertiesRecord
-    extends Record
-{
+public final class DefaultDataLabelTextPropertiesRecord extends Record {
     public final static short      sid                             = 0x1024;
     private  short      field_1_categoryDataType;
     public final static short       CATEGORY_DATA_TYPE_SHOW_LABELS_CHARACTERISTIC = 0;
@@ -76,9 +69,6 @@ public class DefaultDataLabelTextPropertiesRecord
         return getRecordSize();
     }
 
-    /**
-     * Size of record (exluding 4 byte header)
-     */
     public int getRecordSize()
     {
         return 4  + 2;
@@ -125,10 +115,4 @@ public class DefaultDataLabelTextPropertiesRecord
     {
         this.field_1_categoryDataType = field_1_categoryDataType;
     }
-
-
-}  // END OF CLASS
-
-
-
-
+}
index ea083ee1e3bc21fbe8555808308acb3174889231..1f149efbb01da7fc2406191d0466caa1fb61aa29 100644 (file)
@@ -83,9 +83,6 @@ public class DrawingGroupRecord extends AbstractEscherHolderRecord
        convertRawBytesToEscherRecords();
     }
 
-    /**
-     * Size of record (including 4 byte headers for all sections)
-     */
     public int getRecordSize()
     {
         return grossSizeFromDataSize( getRawDataSize() );
index e2d3808d84880e6fb6b291d9fa7cbc6fdc4972d9..26f660942a1996bc95bb24ae165d3fda6db41510 100644 (file)
@@ -20,10 +20,8 @@ package org.apache.poi.hssf.record;
 import org.apache.poi.util.LittleEndian;
 
 /**
- * The end data record is used to denote the end of the subrecords.
- * NOTE: This source is automatically generated please do not modify this file.  Either subclass or
- *       remove the record in src/records/definitions.
-
+ * The end data record is used to denote the end of the subrecords.<p/>
+ * 
  * @author Glen Stampoultzis (glens at apache.org)
  */
 public final class EndSubRecord extends SubRecord {
@@ -61,9 +59,6 @@ public final class EndSubRecord extends SubRecord {
         return getRecordSize();
     }
 
-    /**
-     * Size of record (exluding 4 byte header)
-     */
     public int getRecordSize()
     {
         return 4 ;
@@ -79,9 +74,4 @@ public final class EndSubRecord extends SubRecord {
     
         return rec;
     }
-
-
-
-}  // END OF CLASS
-
-
+}
index bfeb44751b0280b59af85bc9729f66ce53df0474..369cf0b14fe16f282603f2a524c0312cfbb94b18 100644 (file)
@@ -498,9 +498,6 @@ public class EscherAggregate extends AbstractEscherHolderRecord
         return size;
     }
 
-    /**
-     * The number of bytes required to serialize this record.
-     */
     public int getRecordSize()
     {
         convertUserModelToRecords();
index 582668f331751ca73a088d81aaef38f16417dd56..14a849de5664022a94328be6d434ef670ff3e4f3 100644 (file)
@@ -129,7 +129,6 @@ public class ExtSSTRecord
         return pos;
     }
 
-    /** Returns the size of this record */
     public int getRecordSize()
     {
         return 6 + 8*getNumInfoRecords();
index 645db716c0ed263b4cf6a45d6393d16bdee47f94..452a8f9ae4a4caecaac00b22432507bc3a425140 100644 (file)
@@ -1,4 +1,3 @@
-
 /* ====================================================================
    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with
    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.*;
+import org.apache.poi.util.HexDump;
+import org.apache.poi.util.LittleEndian;
 
 /**
- * The font basis record stores various font metrics.
- * NOTE: This source is automatically generated please do not modify this file.  Either subclass or
- *       remove the record in src/records/definitions.
-
+ * The font basis record stores various font metrics.<p/>
+ * 
  * @author Glen Stampoultzis (glens at apache.org)
  */
-public class FontBasisRecord
-    extends Record
-{
+public final class FontBasisRecord extends Record {
     public final static short      sid                             = 0x1060;
     private  short      field_1_xBasis;
     private  short      field_2_yBasis;
@@ -101,9 +94,6 @@ public class FontBasisRecord
         return getRecordSize();
     }
 
-    /**
-     * Size of record (exluding 4 byte header)
-     */
     public int getRecordSize()
     {
         return 4  + 2 + 2 + 2 + 2 + 2;
@@ -207,10 +197,4 @@ public class FontBasisRecord
     {
         this.field_5_indexToFontTable = field_5_indexToFontTable;
     }
-
-
-}  // END OF CLASS
-
-
-
-
+}
index b2ece531757e22a0e66935d679c352ece4d789e4..241753bacc9458338e2614c77cdb2bfd26f41572 100644 (file)
@@ -1,4 +1,3 @@
-
 /* ====================================================================
    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with
    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.*;
+import org.apache.poi.util.HexDump;
+import org.apache.poi.util.LittleEndian;
 
 /**
- * The font index record indexes into the font table for the text record.
- * NOTE: This source is automatically generated please do not modify this file.  Either subclass or
- *       remove the record in src/records/definitions.
-
+ * The font index record indexes into the font table for the text record.<p/>
+ * 
  * @author Glen Stampoultzis (glens at apache.org)
  */
-public class FontIndexRecord
-    extends Record
-{
+public final class FontIndexRecord extends Record {
     public final static short      sid                             = 0x1026;
     private  short      field_1_fontIndex;
 
@@ -73,9 +66,6 @@ public class FontIndexRecord
         return getRecordSize();
     }
 
-    /**
-     * Size of record (exluding 4 byte header)
-     */
     public int getRecordSize()
     {
         return 4  + 2;
@@ -111,10 +101,4 @@ public class FontIndexRecord
     {
         this.field_1_fontIndex = field_1_fontIndex;
     }
-
-
-}  // END OF CLASS
-
-
-
-
+}
index 4425b0817d6fd218afb786ba1acefc519ed85d69..357728a0e2f119efafb28863e4db081a4238e40e 100644 (file)
@@ -23,10 +23,8 @@ import org.apache.poi.util.HexDump;
 import org.apache.poi.util.LittleEndian;
 
 /**
- * The frame record indicates whether there is a border around the displayed text of a chart.
- * NOTE: This source is automatically generated please do not modify this file.  Either subclass or
- *       remove the record in src/records/definitions.
-
+ * The frame record indicates whether there is a border around the displayed text of a chart.<p/>
+ * 
  * @author Glen Stampoultzis (glens at apache.org)
  */
 public final class FrameRecord extends Record {
@@ -85,9 +83,6 @@ public final class FrameRecord extends Record {
         return getRecordSize();
     }
 
-    /**
-     * Size of record (exluding 4 byte header)
-     */
     public int getRecordSize()
     {
         return 4  + 2 + 2;
index 0618ea6f4fc12e4abdca961fe261d5edfbb354b2..4cdbbff0ed69f5d8cd9b5ab03e9f6dca9be5ac57 100644 (file)
@@ -1,4 +1,3 @@
-
 /* ====================================================================
    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with
    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.*;
+import org.apache.poi.util.HexDump;
+import org.apache.poi.util.LittleEndian;
 
 /**
  * The group marker record is used as a position holder for groups.
 
  * @author Glen Stampoultzis (glens at apache.org)
  */
-public class GroupMarkerSubRecord
-    extends SubRecord
-{
-    public final static short      sid                             = 0x06;
+public class GroupMarkerSubRecord extends SubRecord {
+    public final static short      sid                             = 0x0006;
 
     private byte[] reserved = new byte[0];    // would really love to know what goes in here.
 
@@ -43,7 +37,6 @@ public class GroupMarkerSubRecord
 
     public GroupMarkerSubRecord(RecordInputStream in)
     {
-//        int pos = 0;
         reserved = in.readRemainder();
     }
 
@@ -67,9 +60,6 @@ public class GroupMarkerSubRecord
         return getRecordSize();
     }
 
-    /**
-     * Size of record (exluding 4 byte header)
-     */
     public int getRecordSize()
     {
         return 4 + reserved.length;
@@ -87,9 +77,4 @@ public class GroupMarkerSubRecord
             rec.reserved[i] = reserved[i];
         return rec;
     }
-
-
-
-}  // END OF CLASS
-
-
+}
index 92da85ceaa567ddc28d4327ed20deceade1af757..1a07530866cc47e3624381582ca0ee7b840c687c 100644 (file)
 
 package org.apache.poi.hssf.record;
 
-import org.apache.poi.util.*;
+import org.apache.poi.util.LittleEndian;
 
 /**
- * Record for the left margin.
- * NOTE: This source was automatically generated.
+ * Record for the left margin.<p/>
+ * 
  * @author Shawn Laubach (slaubach at apache dot org)
  */
 public class LeftMarginRecord extends Record implements Margin
 {
-    public final static short sid = 0x26;
+    public final static short sid = 0x0026;
     private double field_1_margin;
 
     public LeftMarginRecord()    {    }
@@ -53,9 +53,6 @@ public class LeftMarginRecord extends Record implements Margin
         return getRecordSize();
     }
 
-    /**
-     * Size of record (exluding 4 byte header)
-     */
     public int getRecordSize()    {
         return 4 + 8;
     }
@@ -85,4 +82,4 @@ public class LeftMarginRecord extends Record implements Margin
         rec.field_1_margin = this.field_1_margin;
         return rec;
     }
-}  // END OF CLAS
\ No newline at end of file
+}  // END OF CLA
\ No newline at end of file
index 08ff6513fc8a69731a24766e4e7de391f0802e94..d4351b72a0732bc02e18d29d4413a125996ae8d3 100644 (file)
@@ -23,10 +23,8 @@ import org.apache.poi.util.HexDump;
 import org.apache.poi.util.LittleEndian;
 
 /**
- * Defines a legend for a chart.
- * NOTE: This source is automatically generated please do not modify this file.  Either subclass or
- *       remove the record in src/records/definitions.
-
+ * Defines a legend for a chart.<p/>
+ * 
  * @author Andrew C. Oliver (acoliver at apache.org)
  */
 public final class LegendRecord extends Record {
@@ -135,9 +133,6 @@ public final class LegendRecord extends Record {
         return getRecordSize();
     }
 
-    /**
-     * Size of record (exluding 4 byte header)
-     */
     public int getRecordSize()
     {
         return 4  + 4 + 4 + 4 + 4 + 1 + 1 + 2;
index c3f0197f389b5aca47f862ed668cef8958d10441..78142a17cae92097387b3cc645049b6a8023327b 100644 (file)
@@ -23,10 +23,8 @@ import org.apache.poi.util.HexDump;
 import org.apache.poi.util.LittleEndian;
 
 /**
- * Describes a line format record.  The line format record controls how a line on a chart appears.
- * NOTE: This source is automatically generated please do not modify this file.  Either subclass or
- *       remove the record in src/records/definitions.
-
+ * Describes a line format record.  The line format record controls how a line on a chart appears.<p/>
+ * 
  * @author Glen Stampoultzis (glens at apache.org)
  */
 public final class LineFormatRecord extends Record {
@@ -120,9 +118,6 @@ public final class LineFormatRecord extends Record {
         return getRecordSize();
     }
 
-    /**
-     * Size of record (exluding 4 byte header)
-     */
     public int getRecordSize()
     {
         return 4  + 4 + 2 + 2 + 2 + 2;
index 673fc85f4be25481b8c2e5d1e68479b085fa2cec..46610ec2bc76383751421ab4068fa4401e703625 100644 (file)
@@ -23,10 +23,8 @@ import org.apache.poi.util.HexDump;
 import org.apache.poi.util.LittleEndian;
 
 /**
- * Describes a linked data record.  This record referes to the series data or text.
- * NOTE: This source is automatically generated please do not modify this file.  Either subclass or
- *       remove the record in src/records/definitions.
-
+ * Describes a linked data record.  This record referes to the series data or text.<p/>
+ * 
  * @author Glen Stampoultzis (glens at apache.org)
  */
 public final class LinkedDataRecord extends Record {
@@ -110,9 +108,6 @@ public final class LinkedDataRecord extends Record {
         return getRecordSize();
     }
 
-    /**
-     * Size of record (exluding 4 byte header)
-     */
     public int getRecordSize()
     {
         return 4  + 1 + 1 + 2 + 2 + field_5_formulaOfLink.getSize();
index 0dd59ece2c2972e2f2237ed31bffea2d664d1582..0850ca4a637075342968a4241b3a2bad741b4fc3 100644 (file)
@@ -20,19 +20,18 @@ package org.apache.poi.hssf.record;
 /**
  * The margin interface is a parent used to define left, right, top and bottom margins.
  * This allows much of the code to be generic when it comes to handling margins.
- * NOTE: This source wass automatically generated.
  *
  * @author Shawn Laubach (slaubach at apache dot org)
  */
-public interface Margin
-{
-    /**
-     * Get the margin field for the Margin.
-     */
-    public double getMargin();
+public interface Margin {
+       // TODO - introduce MarginBaseRecord
+       /**
+        * Get the margin field for the Margin.
+        */
+       public double getMargin();
 
-    /**
-     * Set the margin field for the Margin.
-     */
-    public void setMargin( double field_1_margin );
-}  // END OF CLASS
\ No newline at end of file
+       /**
+        * Set the margin field for the Margin.
+        */
+       public void setMargin(double field_1_margin);
+}
index 512e784c0d2c2b27d546d26e4afc8c153b133e89..0c2d17b49691b1e7691f29b3fcef73ef581052dc 100644 (file)
@@ -410,8 +410,6 @@ public final class NameRecord extends Record {
                return nChars;
        }
 
-       /** returns the record size
-        */
        public int getRecordSize(){
                return 4 // sid + size
                        + 15 // 4 shorts + 7 bytes
index 2f506f115d7212061cde4e53058ebdab5384950e..1a82d56e9dd734b66ec20241ffc7b3f563031768 100644 (file)
@@ -100,9 +100,6 @@ public class NoteRecord extends Record {
         return getRecordSize();
     }
 
-    /**
-     * Size of record
-     */
     public int getRecordSize()
     {
         int retval = 4 + 2 + 2 + 2 + 2 + 2 + 1 + field_5_author.length() + 1;
index 4b96a0ee4524e189c5ede5b68b5f67d39bc379af..74dfad9a0b7af23adefa61e1371f5252d4d3f6c2 100644 (file)
@@ -87,9 +87,6 @@ public class NoteStructureSubRecord
         return getRecordSize();
     }
 
-    /**
-     * Size of record
-     */
     public int getRecordSize()
     {
         return 4 + reserved.length;
index 00307e141f902d83122a42d026ab176140326d42..3f35184ebf57ad2956bad7fb2cfbed112d234e1d 100644 (file)
@@ -1,4 +1,3 @@
-
 /* ====================================================================
    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with
    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.*;
+import org.apache.poi.util.HexDump;
+import org.apache.poi.util.LittleEndian;
 
 /**
- * The number format index record indexes format table.  This applies to an axis.
- * NOTE: This source is automatically generated please do not modify this file.  Either subclass or
- *       remove the record in src/records/definitions.
-
+ * The number format index record indexes format table.  This applies to an axis.<p/>
+ * 
  * @author Glen Stampoultzis (glens at apache.org)
  */
-public class NumberFormatIndexRecord
-    extends Record
-{
-    public final static short      sid                             = 0x104e;
+public final class NumberFormatIndexRecord extends Record {
+    public final static short      sid                             = 0x104E;
     private  short      field_1_formatIndex;
 
 
@@ -73,9 +66,6 @@ public class NumberFormatIndexRecord
         return getRecordSize();
     }
 
-    /**
-     * Size of record (exluding 4 byte header)
-     */
     public int getRecordSize()
     {
         return 4  + 2;
@@ -111,10 +101,4 @@ public class NumberFormatIndexRecord
     {
         this.field_1_formatIndex = field_1_formatIndex;
     }
-
-
-}  // END OF CLASS
-
-
-
-
+}
index 03ea7d1f5581d0c9e6ef5c35e214d1bd7a6e98ea..98a2df4e57dc29e8a87ad26078a3cd576fe52cb4 100644 (file)
@@ -117,9 +117,6 @@ public final class ObjRecord extends Record {
         return getRecordSize();
     }
 
-    /**
-     * Size of record (excluding 4 byte header)
-     */
     public int getRecordSize()
     {
         int size = 0;
index 7a86fe2ec44a0cf037b949a27d1026782631d8f0..95fc5ff7f5659775c571e1dbca26b23cc8622ebf 100644 (file)
@@ -1,4 +1,3 @@
-
 /* ====================================================================
    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with
    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.*;
+import org.apache.poi.util.HexDump;
+import org.apache.poi.util.LittleEndian;
 
 /**
- * Links text to an object on the chart or identifies it as the title.
- * NOTE: This source is automatically generated please do not modify this file.  Either subclass or
- *       remove the record in src/records/definitions.
-
+ * Links text to an object on the chart or identifies it as the title.<p/>
+ * 
  * @author Andrew C. Oliver (acoliver at apache.org)
  */
-public class ObjectLinkRecord
-    extends Record
-{
+public final class ObjectLinkRecord extends Record {
     public final static short      sid                             = 0x1027;
     private  short      field_1_anchorId;
     public final static short       ANCHOR_ID_CHART_TITLE          = 1;
@@ -93,9 +86,6 @@ public class ObjectLinkRecord
         return getRecordSize();
     }
 
-    /**
-     * Size of record (exluding 4 byte header)
-     */
     public int getRecordSize()
     {
         return 4  + 2 + 2 + 2;
@@ -180,10 +170,4 @@ public class ObjectLinkRecord
     {
         this.field_3_link2 = field_3_link2;
     }
-
-
-}  // END OF CLASS
-
-
-
-
+}
index f02b0795b916a0db26e6df7311f43daef13cfe26..f02e517a313470379a7ef3eb50525a5b663dff7d 100644 (file)
@@ -22,10 +22,8 @@ import org.apache.poi.util.HexDump;
 import org.apache.poi.util.LittleEndian;
 
 /**
- * Describes the frozen and unfozen panes.
- * NOTE: This source is automatically generated please do not modify this file.  Either subclass or
- *       remove the record in src/records/definitions.
-
+ * Describes the frozen and unfozen panes.<p/>
+ * 
  * @author Glen Stampoultzis (glens at apache.org)
  */
 public final class PaneRecord extends Record {
@@ -104,9 +102,6 @@ public final class PaneRecord extends Record {
         return getRecordSize();
     }
 
-    /**
-     * Size of record (exluding 4 byte header)
-     */
     public int getRecordSize()
     {
         return 4  + 2 + 2 + 2 + 2 + 2;
index e678eac782948c01bc92ed71159f2e24ae3cc51e..1a50441ff9f1c5f319d7bc16be2cfc641b2078df 100644 (file)
@@ -20,10 +20,8 @@ package org.apache.poi.hssf.record;
 import org.apache.poi.util.LittleEndian;
 
 /**
- * preceeds and identifies a frame as belonging to the plot area.
- * NOTE: This source is automatically generated please do not modify this file.  Either subclass or
- *       remove the record in src/records/definitions.
-
+ * preceeds and identifies a frame as belonging to the plot area.<p/>
+ * 
  * @author Andrew C. Oliver (acoliver at apache.org)
  */
 public final class PlotAreaRecord extends Record {
@@ -62,9 +60,6 @@ public final class PlotAreaRecord extends Record {
         return getRecordSize();
     }
 
-    /**
-     * Size of record (exluding 4 byte header)
-     */
     public int getRecordSize()
     {
         return 4 ;
@@ -80,13 +75,4 @@ public final class PlotAreaRecord extends Record {
     
         return rec;
     }
-
-
-
-
-
-}  // END OF CLASS
-
-
-
-
+}
index 9df6811e2ab0a7130ed5aab69f60f3fda29fea92..04a1240809a3946189ac40245c2084a1e23ab3c2 100644 (file)
@@ -1,4 +1,3 @@
-
 /* ====================================================================
    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with
    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.*;
+import org.apache.poi.util.HexDump;
+import org.apache.poi.util.LittleEndian;
 
 /**
- * The plot growth record specifies the scaling factors used when a font is scaled.
- * NOTE: This source is automatically generated please do not modify this file.  Either subclass or
- *       remove the record in src/records/definitions.
-
+ * The plot growth record specifies the scaling factors used when a font is scaled.<p/>
+ * 
  * @author Glen Stampoultzis (glens at apache.org)
  */
-public class PlotGrowthRecord
-    extends Record
-{
+public final class PlotGrowthRecord extends Record {
     public final static short      sid                             = 0x1064;
     private  int        field_1_horizontalScale;
     private  int        field_2_verticalScale;
@@ -81,9 +74,6 @@ public class PlotGrowthRecord
         return getRecordSize();
     }
 
-    /**
-     * Size of record (exluding 4 byte header)
-     */
     public int getRecordSize()
     {
         return 4  + 4 + 4;
@@ -136,10 +126,4 @@ public class PlotGrowthRecord
     {
         this.field_2_verticalScale = field_2_verticalScale;
     }
-
-
-}  // END OF CLASS
-
-
-
-
+}
index 75cdb2c2f3a97de36d771e2206b56f7cf836ee41..32fb7c8a482a1c563c8a1aa0bf1b59da3ffab4de 100644 (file)
    limitations under the License.
 ==================================================================== */
 
-
 package org.apache.poi.hssf.record;
 
-import org.apache.poi.util.*;
+import org.apache.poi.util.LittleEndian;
 
 /**
- * Record for the right margin. * NOTE: This source was automatically generated. * @author Shawn Laubach (slaubach at apache dot org)
+ * Record for the right margin.<p/>
+ * 
+ * @author Shawn Laubach (slaubach at apache dot org)
  */
-public class RightMarginRecord extends Record implements Margin
-{
+public final class RightMarginRecord extends Record implements Margin {
     public final static short sid = 0x27;
     private double field_1_margin;
 
@@ -52,9 +52,6 @@ public class RightMarginRecord extends Record implements Margin
         return getRecordSize();
     }
 
-    /**
-     * Size of record (exluding 4 byte header)
-     */
     public int getRecordSize()    {        return 4 + 8;    }
 
     public short getSid()    {        return sid;    }
@@ -76,4 +73,4 @@ public class RightMarginRecord 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 CL
\ No newline at end of file
index 7295ad61edc1a0bbee03d2a4ea71d79cae9ef04c..09093af6c67dbbb64e54c15add24897137c90ba2 100644 (file)
@@ -1,4 +1,3 @@
-
 /* ====================================================================
    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with
    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.*;
+import org.apache.poi.util.HexDump;
+import org.apache.poi.util.LittleEndian;
 
 /**
- * Specifies the window's zoom magnification.  If this record isn't present then the windows zoom is 100%. see p384 Excel Dev Kit
- * NOTE: This source is automatically generated please do not modify this file.  Either subclass or
- *       remove the record in src/records/definitions.
-
+ * Specifies the window's zoom magnification.  <p/>
+ * If this record isn't present then the windows zoom is 100%. see p384 Excel Dev Kit
+ * 
  * @author Andrew C. Oliver (acoliver at apache.org)
  */
-public class SCLRecord
-    extends Record
-{
-    public final static short      sid                             = 0xa0;
+public final class SCLRecord extends Record {
+    public final static short      sid                             = 0x00A0;
     private  short      field_1_numerator;
     private  short      field_2_denominator;
 
@@ -80,9 +74,6 @@ public class SCLRecord
         return getRecordSize();
     }
 
-    /**
-     * Size of record (exluding 4 byte header)
-     */
     public int getRecordSize()
     {
         return 4  + 2 + 2;
@@ -135,10 +126,4 @@ public class SCLRecord
     {
         this.field_2_denominator = field_2_denominator;
     }
-
-
-}  // END OF CLASS
-
-
-
-
+}
index acc9665ae3490c5e31ded5404b0a01b2cdeda765..0f5c193615b74722b7a8008b485d08a4fe2d83ee 100644 (file)
@@ -1,4 +1,3 @@
-
 /* ====================================================================
    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with
    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.*;
+import org.apache.poi.util.HexDump;
+import org.apache.poi.util.LittleEndian;
 
 /**
- * The series chart group index record stores the index to the CHARTFORMAT record (0 based).
- * NOTE: This source is automatically generated please do not modify this file.  Either subclass or
- *       remove the record in src/records/definitions.
-
+ * The series chart group index record stores the index to the CHARTFORMAT record (0 based).<p/>
+ * 
  * @author Glen Stampoultzis (glens at apache.org)
  */
-public class SeriesChartGroupIndexRecord
-    extends Record
-{
+public final class SeriesChartGroupIndexRecord extends Record {
     public final static short      sid                             = 0x1045;
     private  short      field_1_chartGroupIndex;
 
@@ -73,9 +66,6 @@ public class SeriesChartGroupIndexRecord
         return getRecordSize();
     }
 
-    /**
-     * Size of record (exluding 4 byte header)
-     */
     public int getRecordSize()
     {
         return 4  + 2;
@@ -111,10 +101,4 @@ public class SeriesChartGroupIndexRecord
     {
         this.field_1_chartGroupIndex = field_1_chartGroupIndex;
     }
-
-
-}  // END OF CLASS
-
-
-
-
+}
index 6896a0a217f147b888d1408fc46ee8f34405f6a8..70565c66b1fa51bdb23f760485561fd8f0c1bfe0 100644 (file)
@@ -1,4 +1,3 @@
-
 /* ====================================================================
    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with
    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.*;
+import org.apache.poi.util.HexDump;
+import org.apache.poi.util.LittleEndian;
 
 /**
- * links a series to its position in the series list.
- * NOTE: This source is automatically generated please do not modify this file.  Either subclass or
- *       remove the record in src/records/definitions.
-
+ * links a series to its position in the series list.<p/>
+ * 
  * @author Andrew C. Oliver (acoliver at apache.org)
  */
-public class SeriesIndexRecord
-    extends Record
-{
+public final class SeriesIndexRecord extends Record {
     public final static short      sid                             = 0x1065;
     private  short      field_1_index;
 
@@ -73,9 +66,6 @@ public class SeriesIndexRecord
         return getRecordSize();
     }
 
-    /**
-     * Size of record (exluding 4 byte header)
-     */
     public int getRecordSize()
     {
         return 4  + 2;
@@ -111,10 +101,4 @@ public class SeriesIndexRecord
     {
         this.field_1_index = field_1_index;
     }
-
-
-}  // END OF CLASS
-
-
-
-
+}
index a3e8089bfb6b8d2e133b1e0618cbf426b8b154ec..868358b0d28cbb225ece318999727b4a576785f1 100644 (file)
@@ -23,10 +23,8 @@ import org.apache.poi.util.HexDump;
 import org.apache.poi.util.LittleEndian;
 
 /**
- * The series label record defines the type of label associated with the data format record.
- * NOTE: This source is automatically generated please do not modify this file.  Either subclass or
- *       remove the record in src/records/definitions.
-
+ * The series label record defines the type of label associated with the data format record.<p/>
+ * 
  * @author Glen Stampoultzis (glens at apache.org)
  */
 public final class SeriesLabelsRecord extends Record {
@@ -83,9 +81,6 @@ public final class SeriesLabelsRecord extends Record {
         return getRecordSize();
     }
 
-    /**
-     * Size of record (exluding 4 byte header)
-     */
     public int getRecordSize()
     {
         return 4  + 2;
index 34b3c94a662b3987f4cf2ed301fbc74920620d3f..b2ab88e8c2f154b9f8a66e65da41978e90313154 100644 (file)
@@ -1,4 +1,3 @@
-
 /* ====================================================================
    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with
    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.*;
+import org.apache.poi.util.HexDump;
+import org.apache.poi.util.LittleEndian;
 
 /**
- * The series record describes the overall data for a series.
- * NOTE: This source is automatically generated please do not modify this file.  Either subclass or
- *       remove the record in src/records/definitions.
-
+ * The series record describes the overall data for a series.<p/>
+ * 
  * @author Glen Stampoultzis (glens at apache.org)
  */
-public class SeriesRecord
-    extends Record
-{
+public final class SeriesRecord extends Record {
     public final static short      sid                             = 0x1003;
     private  short      field_1_categoryDataType;
     public final static short       CATEGORY_DATA_TYPE_DATES       = 0;
@@ -121,9 +114,6 @@ public class SeriesRecord
         return getRecordSize();
     }
 
-    /**
-     * Size of record (exluding 4 byte header)
-     */
     public int getRecordSize()
     {
         return 4  + 2 + 2 + 2 + 2 + 2 + 2;
@@ -283,10 +273,4 @@ public class SeriesRecord
     {
         this.field_6_numBubbleValues = field_6_numBubbleValues;
     }
-
-
-}  // END OF CLASS
-
-
-
-
+}
index a445dc6166ace42bae1295e48be6a38797495cd2..da0e854eaaddb82e725115276edf8a47352d91e1 100644 (file)
@@ -1,4 +1,3 @@
-
 /* ====================================================================
    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with
    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.*;
+import org.apache.poi.util.HexDump;
+import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.StringUtil;
 
 /**
- * Defines a series name
- * NOTE: This source is automatically generated please do not modify this file.  Either subclass or
- *       remove the record in src/records/definitions.
-
+ * Defines a series name</p>
+ * 
  * @author Andrew C. Oliver (acoliver at apache.org)
  */
-public class SeriesTextRecord
-    extends Record
-{
+public final class SeriesTextRecord extends Record {
     public final static short      sid                             = 0x100d;
     private  short      field_1_id;
     private  byte       field_2_textLength;
@@ -94,9 +88,6 @@ public class SeriesTextRecord
         return getRecordSize();
     }
 
-    /**
-     * Size of record (exluding 4 byte header)
-     */
     public int getRecordSize()
     {
         return 4  + 2 + 1 + 1 + (field_2_textLength *2);
@@ -199,10 +190,4 @@ public class SeriesTextRecord
     {
         this.field_4_text = field_4_text;
     }
-
-
-}  // END OF CLASS
-
-
-
-
+}
index ff69ec54692c764c8c018683935940b8d28cf34f..6b38c40a4a12b677cea737dee2f7be9364f1d701 100644 (file)
@@ -1,4 +1,3 @@
-
 /* ====================================================================
    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with
    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.*;
+import org.apache.poi.util.HexDump;
+import org.apache.poi.util.LittleEndian;
 
 /**
- * Indicates the chart-group index for a series.  The order probably defines the mapping.  So the 0th record probably means the 0th series.  The only field in this of course defines which chart group the 0th series (for instance) would map to.  Confusing?  Well thats because it is.  (p 522 BCG)
- * NOTE: This source is automatically generated please do not modify this file.  Either subclass or
- *       remove the record in src/records/definitions.
-
+ * Indicates the chart-group index for a series.  The order probably defines the mapping.  
+ * So the 0th record probably means the 0th series.  The only field in this of course defines which chart 
+ * group the 0th series (for instance) would map to.  Confusing?  Well thats because it is.  (p 522 BCG)<p/>
+ * 
  * @author Andrew C. Oliver (acoliver at apache.org)
  */
-public class SeriesToChartGroupRecord
-    extends Record
-{
+public final class SeriesToChartGroupRecord extends Record {
     public final static short      sid                             = 0x1045;
     private  short      field_1_chartGroupIndex;
 
@@ -73,9 +68,6 @@ public class SeriesToChartGroupRecord
         return getRecordSize();
     }
 
-    /**
-     * Size of record (exluding 4 byte header)
-     */
     public int getRecordSize()
     {
         return 4  + 2;
@@ -111,10 +103,4 @@ public class SeriesToChartGroupRecord
     {
         this.field_1_chartGroupIndex = field_1_chartGroupIndex;
     }
-
-
-}  // END OF CLASS
-
-
-
-
+}
index 9ae777e1e664624948a7c258eb310896ec75d7d0..1f7a5e44e4fe2f553e8873d4f98971cb76fac438 100644 (file)
@@ -23,10 +23,8 @@ import org.apache.poi.util.HexDump;
 import org.apache.poi.util.LittleEndian;
 
 /**
- * Describes a chart sheet properties record.
- * NOTE: This source is automatically generated please do not modify this file.  Either subclass or
- *       remove the record in src/records/definitions.
-
+ * Describes a chart sheet properties record.<p/>
+ * 
  * @author Glen Stampoultzis (glens at apache.org)
  */
 public final class SheetPropertiesRecord extends Record {
@@ -92,9 +90,6 @@ public final class SheetPropertiesRecord extends Record {
         return getRecordSize();
     }
 
-    /**
-     * Size of record (exluding 4 byte header)
-     */
     public int getRecordSize()
     {
         return 4  + 2 + 1;
index e4e71f7db8e99fc9f060aec6e19a1c09a8c36b56..d56e105f5f0442a8d95fb9e426e926c6c8fe5ba4 100644 (file)
@@ -68,9 +68,6 @@ public class StringRecord extends Record {
         return isUnCompressedUnicode() ? field_1_string_length * 2 : field_1_string_length;
     }
 
-    /**
-     * gives the current serialized size of the record. Should include the sid and reclength (4 bytes).
-     */
     public int getRecordSize()
     {
         return 4 + 2 + 1 + getStringByteLength();
index 8a27d163dac90718ce93e0dc57bae213ba022d8e..59e0cd2e662d6315f5851423a2f5c8f12680f081 100644 (file)
 
 package org.apache.poi.hssf.record;
 
-
-
-import org.apache.poi.util.*;
+import org.apache.poi.util.BitField;
+import org.apache.poi.util.BitFieldFactory;
+import org.apache.poi.util.HexDump;
+import org.apache.poi.util.LittleEndian;
 
 /**
  * The TXO record is used to define the properties of a text box.  It is followed
-        by two continue records unless there is no actual text.  The first continue record contains
-        the text data and the next continue record contains the formatting runs.
- * NOTE: This source is automatically generated please do not modify this file.  Either subclass or
- *       remove the record in src/records/definitions.
-
+ * by two continue records unless there is no actual text.  The first continue record contains
+ * the text data and the next continue record contains the formatting runs.<p/>
+ * 
  * @author Glen Stampoultzis (glens at apache.org)
  */
 public class TextObjectBaseRecord extends Record {
-    public final static short      sid                             = 0x1B6;
+       // TODO - don't instantiate superclass
+    public final static short      sid                             = 0x01B6;
     
     private static final BitField reserved1               = BitFieldFactory.getInstance(0x0001);
     private static final BitField HorizontalTextAlignment = BitFieldFactory.getInstance(0x000E);
@@ -149,9 +149,6 @@ public class TextObjectBaseRecord extends Record {
         return getRecordSize();
     }
 
-    /**
-     * Size of record (exluding 4 byte header)
-     */
     public int getRecordSize()
     {
         return 4  + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 4;
index 60c05e6d0a71403fab09be8afd0fad54bd5a8527..aeb9dc89c0a5e02e4f448dbc9df2e281f6985b4e 100644 (file)
@@ -23,10 +23,8 @@ import org.apache.poi.util.HexDump;
 import org.apache.poi.util.LittleEndian;
 
 /**
- * The text record is used to define text stored on a chart.
- * NOTE: This source is automatically generated please do not modify this file.  Either subclass or
- *       remove the record in src/records/definitions.
-
+ * The text record is used to define text stored on a chart.<p/>
+ * 
  * @author Glen Stampoultzis (glens at apache.org)
  */
 public final class TextRecord extends Record {
@@ -204,9 +202,6 @@ public final class TextRecord extends Record {
         return getRecordSize();
     }
 
-    /**
-     * Size of record (exluding 4 byte header)
-     */
     public int getRecordSize()
     {
         return 4  + 1 + 1 + 2 + 4 + 4 + 4 + 4 + 4 + 2 + 2 + 2 + 2;
index 7e216156c67ff7eaa929cc05b7ff7cccdb9f90b3..f24f033eb1ce62cf20fbad81d2d2c6b91d7a86c3 100644 (file)
@@ -23,10 +23,8 @@ import org.apache.poi.util.HexDump;
 import org.apache.poi.util.LittleEndian;
 
 /**
- * The Tick record defines how tick marks and label positioning/formatting
- * NOTE: This source is automatically generated please do not modify this file.  Either subclass or
- *       remove the record in src/records/definitions.
-
+ * The Tick record defines how tick marks and label positioning/formatting<p/>
+ * 
  * @author Andrew C. Oliver(acoliver at apache.org)
  */
 public final class TickRecord extends Record {
@@ -151,9 +149,6 @@ public final class TickRecord extends Record {
         return getRecordSize();
     }
 
-    /**
-     * Size of record (exluding 4 byte header)
-     */
     public int getRecordSize()
     {
         return 4  + 1 + 1 + 1 + 1 + 4 + 8 + 8 + 2 + 2 + 2;
index d67509e6c6faa3f9f8ceb1dcd71447da1842163a..4d1a19a77b6a83b93302cb356b9c54fb450be280 100644 (file)
@@ -20,13 +20,11 @@ package org.apache.poi.hssf.record;
 import org.apache.poi.util.*;
 
 /**
- * Record for the top margin.
- * NOTE: This source was automatically generated.
- *
+ * Record for the top margin.<p/>
+ * 
  * @author Shawn Laubach (slaubach at apache dot org)
  */
-public class TopMarginRecord extends Record implements Margin
-{
+public final class TopMarginRecord extends Record implements Margin {
     public final static short sid = 0x28;
     private double field_1_margin;
 
@@ -57,9 +55,6 @@ public class TopMarginRecord extends Record implements Margin
         return getRecordSize();
     }
 
-    /**
-     * Size of record (exluding 4 byte header)
-     */
     public int getRecordSize()    {        return 4 + 8;    }
 
     public short getSid()    {        return sid;    }
@@ -81,4 +76,4 @@ public class TopMarginRecord extends Record implements Margin
         rec.field_1_margin = this.field_1_margin;
         return rec;
     }
-}  // END OF CLAS
\ No newline at end of file
+}  // END OF CLA
\ No newline at end of file
index 4295cfe79ba27877b1768148f72880a629d8d109..e4464eb790bcb5d7587a2e711140db03c498e03f 100644 (file)
@@ -1,4 +1,3 @@
-
 /* ====================================================================
    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with
    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.*;
+import org.apache.poi.util.HexDump;
+import org.apache.poi.util.LittleEndian;
 
 /**
- * The units record describes units.
- * NOTE: This source is automatically generated please do not modify this file.  Either subclass or
- *       remove the record in src/records/definitions.
-
+ * The units record describes units.<p/>
+ * 
  * @author Glen Stampoultzis (glens at apache.org)
  */
-public class UnitsRecord
-    extends Record
-{
+public final class UnitsRecord extends Record {
     public final static short      sid                             = 0x1001;
     private  short      field_1_units;
 
@@ -74,9 +67,6 @@ public class UnitsRecord
         return getRecordSize();
     }
 
-    /**
-     * Size of record (exluding 4 byte header)
-     */
     public int getRecordSize()
     {
         return 4  + 2;
@@ -112,10 +102,4 @@ public class UnitsRecord
     {
         this.field_1_units = field_1_units;
     }
-
-
-}  // END OF CLASS
-
-
-
-
+}
index bc5023212c09683ea26aa0fa934d4d0e436e0dd3..9caffa73b54d1ec41ec25e68184dda4a15547b11 100644 (file)
@@ -23,10 +23,8 @@ import org.apache.poi.util.HexDump;
 import org.apache.poi.util.LittleEndian;
 
 /**
- * The value range record defines the range of the value axis.
- * NOTE: This source is automatically generated please do not modify this file.  Either subclass or
- *       remove the record in src/records/definitions.
-
+ * The value range record defines the range of the value axis.<p/>
+ * 
  * @author Glen Stampoultzis (glens at apache.org)
  */
 public final class ValueRangeRecord extends Record {
@@ -121,9 +119,6 @@ public final class ValueRangeRecord extends Record {
         return getRecordSize();
     }
 
-    /**
-     * Size of record (exluding 4 byte header)
-     */
     public int getRecordSize()
     {
         return 4  + 8 + 8 + 8 + 8 + 8 + 2;
diff --git a/src/java/org/apache/poi/hssf/record/formula/eval/MissingArgEval.java b/src/java/org/apache/poi/hssf/record/formula/eval/MissingArgEval.java
new file mode 100644 (file)
index 0000000..708329b
--- /dev/null
@@ -0,0 +1,35 @@
+/* ====================================================================
+   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.record.formula.eval;
+
+/**
+ * Represents the (intermediate) evaluated result of a missing function argument.  In most cases
+ * this can be translated into {@link BlankEval} but there are some notable exceptions.  Functions
+ * COUNT and COUNTA <em>do</em> count their missing args.  Note - the differences between 
+ * {@link MissingArgEval} and {@link BlankEval} have not been investigated fully, so the POI
+ * evaluator may need to be updated to account for these as they are found.
+ *
+ * @author Josh Micich
+ */
+public final class MissingArgEval implements ValueEval {
+
+    public static MissingArgEval instance = new MissingArgEval();
+
+    private MissingArgEval() {
+    }
+}
index fd5944e8584ad81e7abdc804427ec03b9b4b1582..62f4b6137af05b5cf96a8d2dcb00b609b0484357 100644 (file)
@@ -19,6 +19,7 @@ package org.apache.poi.hssf.record.formula.functions;
 
 import org.apache.poi.hssf.record.formula.eval.ErrorEval;
 import org.apache.poi.hssf.record.formula.eval.Eval;
+import org.apache.poi.hssf.record.formula.eval.MissingArgEval;
 import org.apache.poi.hssf.record.formula.eval.NumberEval;
 import org.apache.poi.hssf.record.formula.functions.CountUtils.I_MatchPredicate;
 
@@ -64,6 +65,10 @@ public final class Count implements Function {
                                // only numbers are counted
                                return true;
                        }
+                       if(valueEval == MissingArgEval.instance) {
+                               // oh yeah, and missing arguments
+                               return true;
+                       }
 
                        // error values and string values not counted
                        return false;
index 7aa9bb2a8c891e0b9a9e09d4edbe6dced022f619..41a7c72faead01b9b84176cd0f7d8f2606c820a2 100644 (file)
@@ -52,6 +52,7 @@ import org.apache.poi.hssf.record.formula.eval.BoolEval;
 import org.apache.poi.hssf.record.formula.eval.ErrorEval;
 import org.apache.poi.hssf.record.formula.eval.Eval;
 import org.apache.poi.hssf.record.formula.eval.FunctionEval;
+import org.apache.poi.hssf.record.formula.eval.MissingArgEval;
 import org.apache.poi.hssf.record.formula.eval.NameEval;
 import org.apache.poi.hssf.record.formula.eval.NameXEval;
 import org.apache.poi.hssf.record.formula.eval.NumberEval;
@@ -284,10 +285,7 @@ public final class WorkbookEvaluator {
                                continue;
                        }
                        if (ptg instanceof MemErrPtg) { continue; }
-                       if (ptg instanceof MissingArgPtg) {
-                               // TODO - might need to push BlankEval or MissingArgEval
-                               continue;
-                       }
+
                        Eval opResult;
                        if (ptg instanceof OperationPtg) {
                                OperationPtg optg = (OperationPtg) ptg;
@@ -306,6 +304,9 @@ public final class WorkbookEvaluator {
                                }
 //                             logDebug("invoke " + operation + " (nAgs=" + numops + ")");
                                opResult = invokeOperation(operation, ops, _workbook, sheetIndex, srcRowNum, srcColNum);
+                               if (opResult == MissingArgEval.instance) {
+                                       opResult = BlankEval.INSTANCE;
+                               }
                        } else {
                                opResult = getEvalForPtg(ptg, sheetIndex, tracker);
                        }
@@ -424,6 +425,9 @@ public final class WorkbookEvaluator {
                if (ptg instanceof ErrPtg) {
                        return ErrorEval.valueOf(((ErrPtg) ptg).getErrorCode());
                }
+               if (ptg instanceof MissingArgPtg) {
+                       return MissingArgEval.instance;
+               }
                if (ptg instanceof AreaErrPtg ||ptg instanceof RefErrorPtg 
                                || ptg instanceof DeletedArea3DPtg || ptg instanceof DeletedRef3DPtg) {
                                return ErrorEval.REF_INVALID;
index fe37a3c84b139f86b9f9c659d003882ae045769e..a26539cdd2b393558428112556816372a3ab8952 100755 (executable)
@@ -36,6 +36,7 @@ public class AllFormulaEvalTests {
                result.addTestSuite(TestExternalFunction.class);
                result.addTestSuite(TestFormulaBugs.class);
                result.addTestSuite(TestFormulasFromSpreadsheet.class);
+               result.addTestSuite(TestMissingArgEval.class);
                result.addTestSuite(TestPercentEval.class);
                result.addTestSuite(TestRangeEval.class);
                result.addTestSuite(TestUnaryPlusEval.class);
diff --git a/src/testcases/org/apache/poi/hssf/record/formula/eval/TestMissingArgEval.java b/src/testcases/org/apache/poi/hssf/record/formula/eval/TestMissingArgEval.java
new file mode 100644 (file)
index 0000000..2a830b0
--- /dev/null
@@ -0,0 +1,74 @@
+/* ====================================================================
+   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.record.formula.eval;
+
+import java.util.EmptyStackException;
+
+import junit.framework.AssertionFailedError;
+import junit.framework.TestCase;
+
+import org.apache.poi.hssf.usermodel.HSSFCell;
+import org.apache.poi.hssf.usermodel.HSSFFormulaEvaluator;
+import org.apache.poi.hssf.usermodel.HSSFSheet;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.ss.usermodel.CellValue;
+
+/**
+ * Tests for {@link MissingArgEval}
+ *
+ * @author Josh Micich
+ */
+public final class TestMissingArgEval extends TestCase {
+       
+       public void testEvaluateMissingArgs() {
+               HSSFWorkbook wb = new HSSFWorkbook();
+               HSSFFormulaEvaluator fe = new HSSFFormulaEvaluator(wb);
+               HSSFSheet sheet = wb.createSheet("Sheet1");
+               HSSFCell cell = sheet.createRow(0).createCell(0);
+               
+               cell.setCellFormula("if(true,)"); 
+               fe.clearAllCachedResultValues();
+               CellValue cv;
+               try {
+                       cv = fe.evaluate(cell);
+               } catch (EmptyStackException e) {
+                       throw new AssertionFailedError("Missing args evaluation not implemented (bug 43354");
+               }
+               // MissingArg -> BlankEval -> zero (as formula result)
+               assertEquals(0.0, cv.getNumberValue(), 0.0);
+               
+               // MissingArg -> BlankEval -> empty string (in concatenation)
+               cell.setCellFormula("\"abc\"&if(true,)"); 
+               fe.clearAllCachedResultValues();
+               assertEquals("abc", fe.evaluate(cell).getStringValue());
+       }
+       
+       public void testCountFuncs() {
+               HSSFWorkbook wb = new HSSFWorkbook();
+               HSSFFormulaEvaluator fe = new HSSFFormulaEvaluator(wb);
+               HSSFSheet sheet = wb.createSheet("Sheet1");
+               HSSFCell cell = sheet.createRow(0).createCell(0);
+               
+               cell.setCellFormula("COUNT(C5,,,,)"); // 4 missing args, C5 is blank 
+               assertEquals(4.0, fe.evaluate(cell).getNumberValue(), 0.0);
+
+               cell.setCellFormula("COUNTA(C5,,)"); // 2 missing args, C5 is blank 
+               fe.clearAllCachedResultValues();
+               assertEquals(2.0, fe.evaluate(cell).getNumberValue(), 0.0);
+       }
+}