]> source.dussan.org Git - poi.git/commitdiff
Nice and small change here... Update the formula parser code to use usermodel.HSSFWor...
authorNick Burch <nick@apache.org>
Tue, 15 Apr 2008 16:00:50 +0000 (16:00 +0000)
committerNick Burch <nick@apache.org>
Tue, 15 Apr 2008 16:00:50 +0000 (16:00 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@648303 13f79535-47bb-0310-9956-ffa450edef68

75 files changed:
src/documentation/content/xdocs/changes.xml
src/documentation/content/xdocs/status.xml
src/java/org/apache/poi/hssf/dev/FormulaViewer.java
src/java/org/apache/poi/hssf/model/FormulaParser.java
src/java/org/apache/poi/hssf/record/CFRuleRecord.java
src/java/org/apache/poi/hssf/record/NameRecord.java
src/java/org/apache/poi/hssf/record/formula/AbstractFunctionPtg.java
src/java/org/apache/poi/hssf/record/formula/AddPtg.java
src/java/org/apache/poi/hssf/record/formula/Area3DPtg.java
src/java/org/apache/poi/hssf/record/formula/AreaAPtg.java
src/java/org/apache/poi/hssf/record/formula/AreaErrPtg.java
src/java/org/apache/poi/hssf/record/formula/AreaNAPtg.java
src/java/org/apache/poi/hssf/record/formula/AreaNPtg.java
src/java/org/apache/poi/hssf/record/formula/AreaNVPtg.java
src/java/org/apache/poi/hssf/record/formula/AreaPtg.java
src/java/org/apache/poi/hssf/record/formula/AreaVPtg.java
src/java/org/apache/poi/hssf/record/formula/ArrayPtg.java
src/java/org/apache/poi/hssf/record/formula/ArrayPtgA.java
src/java/org/apache/poi/hssf/record/formula/ArrayPtgV.java
src/java/org/apache/poi/hssf/record/formula/AttrPtg.java
src/java/org/apache/poi/hssf/record/formula/BoolPtg.java
src/java/org/apache/poi/hssf/record/formula/ConcatPtg.java
src/java/org/apache/poi/hssf/record/formula/DividePtg.java
src/java/org/apache/poi/hssf/record/formula/EqualPtg.java
src/java/org/apache/poi/hssf/record/formula/ErrPtg.java
src/java/org/apache/poi/hssf/record/formula/ExpPtg.java
src/java/org/apache/poi/hssf/record/formula/GreaterEqualPtg.java
src/java/org/apache/poi/hssf/record/formula/GreaterThanPtg.java
src/java/org/apache/poi/hssf/record/formula/IntPtg.java
src/java/org/apache/poi/hssf/record/formula/IntersectionPtg.java
src/java/org/apache/poi/hssf/record/formula/LessEqualPtg.java
src/java/org/apache/poi/hssf/record/formula/LessThanPtg.java
src/java/org/apache/poi/hssf/record/formula/MemAreaPtg.java
src/java/org/apache/poi/hssf/record/formula/MemErrPtg.java
src/java/org/apache/poi/hssf/record/formula/MemFuncPtg.java
src/java/org/apache/poi/hssf/record/formula/MissingArgPtg.java
src/java/org/apache/poi/hssf/record/formula/MultiplyPtg.java
src/java/org/apache/poi/hssf/record/formula/NamePtg.java
src/java/org/apache/poi/hssf/record/formula/NameXPtg.java
src/java/org/apache/poi/hssf/record/formula/NotEqualPtg.java
src/java/org/apache/poi/hssf/record/formula/NumberPtg.java
src/java/org/apache/poi/hssf/record/formula/ParenthesisPtg.java
src/java/org/apache/poi/hssf/record/formula/PercentPtg.java
src/java/org/apache/poi/hssf/record/formula/PowerPtg.java
src/java/org/apache/poi/hssf/record/formula/Ptg.java
src/java/org/apache/poi/hssf/record/formula/RangePtg.java
src/java/org/apache/poi/hssf/record/formula/Ref3DPtg.java
src/java/org/apache/poi/hssf/record/formula/RefErrorPtg.java
src/java/org/apache/poi/hssf/record/formula/RefNAPtg.java
src/java/org/apache/poi/hssf/record/formula/RefNPtg.java
src/java/org/apache/poi/hssf/record/formula/RefNVPtg.java
src/java/org/apache/poi/hssf/record/formula/ReferencePtg.java
src/java/org/apache/poi/hssf/record/formula/StringPtg.java
src/java/org/apache/poi/hssf/record/formula/SubtractPtg.java
src/java/org/apache/poi/hssf/record/formula/UnaryMinusPtg.java
src/java/org/apache/poi/hssf/record/formula/UnaryPlusPtg.java
src/java/org/apache/poi/hssf/record/formula/UnionPtg.java
src/java/org/apache/poi/hssf/record/formula/UnknownPtg.java
src/java/org/apache/poi/hssf/usermodel/HSSFCell.java
src/java/org/apache/poi/hssf/usermodel/HSSFConditionalFormatting.java
src/java/org/apache/poi/hssf/usermodel/HSSFConditionalFormattingRule.java
src/java/org/apache/poi/hssf/usermodel/HSSFFormulaEvaluator.java
src/java/org/apache/poi/hssf/usermodel/HSSFName.java
src/java/org/apache/poi/hssf/usermodel/HSSFRow.java
src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java
src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java
src/testcases/org/apache/poi/hssf/model/TestFormulaParser.java
src/testcases/org/apache/poi/hssf/record/TestCFRuleRecord.java
src/testcases/org/apache/poi/hssf/record/aggregates/TestCFRecordsAggregate.java
src/testcases/org/apache/poi/hssf/record/formula/AbstractPtgTestCase.java
src/testcases/org/apache/poi/hssf/record/formula/TestArea3DPtg.java
src/testcases/org/apache/poi/hssf/record/formula/TestRef3DPtg.java
src/testcases/org/apache/poi/hssf/record/formula/function/TestParseMissingBuiltInFuncs.java
src/testcases/org/apache/poi/hssf/usermodel/TestFormulaEvaluatorBugs.java
src/testcases/org/apache/poi/hssf/util/TestAreaReference.java

index 62e84c646002f2777ebd4062aa26825153f22c83..0850c6ce2212442022d3f05540a1b251743ca1a3 100644 (file)
@@ -37,6 +37,7 @@
 
                <!-- Don't forget to update status.xml too! -->
         <release version="3.0.3-beta1" date="2008-04-??">
+           <action dev="POI-DEVELOPERS" type="fix">Update the formula parser code to use a HSSFWorkbook, rather than the low level model.Workbook, to make things cleaner and make supporting XSSF formulas in future much easier</action>
            <action dev="POI-DEVELOPERS" type="fix">Fix the logger used by POIFSFileSystem, so that commons-logging isn't required when not used</action>
            <action dev="POI-DEVELOPERS" type="add">Update HSLFSlideShow and HSSFWorkbook to take advantage of POIFS updates, and allow reading embeded documents</action>
            <action dev="POI-DEVELOPERS" type="add">Improve how POIFS works with directory entries, and update HWPFDocument to support reading an embeded word document</action>
index 2c30a5552afa1530ae38aa57678f3bfb7855022e..aaf35f4d8862b7b52e6fc2befb993914d74670fc 100644 (file)
@@ -34,6 +34,7 @@
        <!-- Don't forget to update changes.xml too! -->
     <changes>
         <release version="3.0.3-beta1" date="2008-04-??">
+           <action dev="POI-DEVELOPERS" type="fix">Update the formula parser code to use a HSSFWorkbook, rather than the low level model.Workbook, to make things cleaner and make supporting XSSF formulas in future much easier</action>
            <action dev="POI-DEVELOPERS" type="fix">Fix the logger used by POIFSFileSystem, so that commons-logging isn't required when not used</action>
            <action dev="POI-DEVELOPERS" type="add">Update HSLFSlideShow and HSSFWorkbook to take advantage of POIFS updates, and allow reading embeded documents</action>
            <action dev="POI-DEVELOPERS" type="add">Improve how POIFS works with directory entries, and update HWPFDocument to support reading an embeded word document</action>
index eb28c9006f7f43c2971c3c3ecf9dfee24adc7b99..91d342099bb7bf9817c920483df5ea31286ee5c9 100644 (file)
@@ -32,6 +32,7 @@ import java.util.List;
 import org.apache.poi.poifs.filesystem.POIFSFileSystem;
 import org.apache.poi.hssf.record.*;
 import org.apache.poi.hssf.record.formula.*;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.hssf.model.*;
 
 /**
@@ -99,7 +100,7 @@ public class FormulaViewer
             StringBuffer buf = new StringBuffer();
             
             if (token instanceof ExpPtg) return;
-            buf.append(name=((OperationPtg) token).toFormulaString((Workbook)null));
+            buf.append(name=((OperationPtg) token).toFormulaString((HSSFWorkbook)null));
             buf.append(sep);
             switch (token.getPtgClass()) {
                 case Ptg.CLASS_REF :
@@ -168,7 +169,7 @@ public class FormulaViewer
         StringBuffer buf = new StringBuffer();
            for (int i=0;i<numptgs;i++) {
            token = (Ptg) tokens.get(i);
-            buf.append( token.toFormulaString((Workbook)null));
+            buf.append( token.toFormulaString((HSSFWorkbook)null));
             switch (token.getPtgClass()) {
                 case Ptg.CLASS_REF :
                     buf.append("(R)");
@@ -188,7 +189,7 @@ public class FormulaViewer
     
     private String composeFormula(FormulaRecord record)
     {
-       return  org.apache.poi.hssf.model.FormulaParser.toFormulaString((Workbook)null,record.getParsedExpression());
+       return  org.apache.poi.hssf.model.FormulaParser.toFormulaString((HSSFWorkbook)null,record.getParsedExpression());
     }
 
     /**
index 721928474339001a7a9d67eebe4e800fc55413f0..05b4d80f4a2b57f397a074419f8c5427a6959aea 100644 (file)
@@ -27,6 +27,7 @@ import java.util.regex.Pattern;
 import org.apache.poi.hssf.record.formula.*;
 import org.apache.poi.hssf.record.formula.function.FunctionMetadata;
 import org.apache.poi.hssf.record.formula.function.FunctionMetadataRegistry;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 
 /**
  * This class parses a formula string into a List of tokens in RPN order.
@@ -86,7 +87,7 @@ public final class FormulaParser {
      */
     private char look;
 
-    private Workbook book;
+    private HSSFWorkbook book;
 
 
     /**
@@ -101,14 +102,14 @@ public final class FormulaParser {
      *  model.Workbook, then use the convenience method on
      *  usermodel.HSSFFormulaEvaluator
      */
-    public FormulaParser(String formula, Workbook book){
+    public FormulaParser(String formula, HSSFWorkbook book){
         formulaString = formula;
         pointer=0;
         this.book = book;
         formulaLength = formulaString.length();
     }
 
-    public static Ptg[] parse(String formula, Workbook book) {
+    public static Ptg[] parse(String formula, HSSFWorkbook book) {
         FormulaParser fp = new FormulaParser(formula, book);
         fp.parse();
         return fp.getRPNPtg();
@@ -251,7 +252,7 @@ public final class FormulaParser {
             Match('!');
             String sheetName = name;
             String first = GetName();
-            short externIdx = book.checkExternSheet(book.getSheetIndex(sheetName));
+            short externIdx = book.getExternalSheetIndex(book.getSheetIndex(sheetName));
             if (look == ':') {
                 Match(':');
                 String second=GetName();
@@ -282,9 +283,9 @@ public final class FormulaParser {
             return new ReferencePtg(name);
         }
 
-        for(int i = 0; i < book.getNumNames(); i++) {
+        for(int i = 0; i < book.getNumberOfNames(); i++) {
             // named range name matching is case insensitive
-            if(book.getNameRecord(i).getNameText().equalsIgnoreCase(name)) {
+               if(book.getNameAt(i).getNameName().equalsIgnoreCase(name)) {
                 return new NamePtg(name, book);
             }
         }
@@ -926,7 +927,7 @@ end;
      * @param lptgs  list of Ptg, can be null or empty
      * @return a human readable String
      */
-    public static String toFormulaString(Workbook book, List lptgs) {
+    public static String toFormulaString(HSSFWorkbook book, List lptgs) {
         String retval = null;
         if (lptgs == null || lptgs.size() == 0) return "#NAME";
         Ptg[] ptgs = new Ptg[lptgs.size()];
@@ -952,7 +953,7 @@ end;
      * @param ptgs  array of Ptg, can be null or empty
      * @return a human readable String
      */
-    public static String toFormulaString(Workbook book, Ptg[] ptgs) {
+    public static String toFormulaString(HSSFWorkbook book, Ptg[] ptgs) {
         if (ptgs == null || ptgs.length == 0) {
             // TODO - what is the justification for returning "#NAME" (which is not "#NAME?", btw)
             return "#NAME";
index 0890f1f32d238c98dd9c978b14438adfc96142ad..5b9f98aa75f3d8ea07568474ae31f9216c478664 100644 (file)
@@ -26,6 +26,7 @@ import org.apache.poi.hssf.record.cf.BorderFormatting;
 import org.apache.poi.hssf.record.cf.FontFormatting;
 import org.apache.poi.hssf.record.cf.PatternFormatting;
 import org.apache.poi.hssf.record.formula.Ptg;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.util.BitField;
 import org.apache.poi.util.BitFieldFactory;
 import org.apache.poi.util.LittleEndian;
@@ -152,7 +153,7 @@ public final class CFRuleRecord extends Record
        /**
         * Creates a new comparison operation rule
         */
-       public static CFRuleRecord create(Workbook workbook, String formulaText) {
+       public static CFRuleRecord create(HSSFWorkbook workbook, String formulaText) {
                Ptg[] formula1 = parseFormula(formulaText, workbook);
                return new CFRuleRecord(CONDITION_TYPE_FORMULA, ComparisonOperator.NO_COMPARISON,
                                formula1, null);
@@ -160,7 +161,7 @@ public final class CFRuleRecord extends Record
        /**
         * Creates a new comparison operation rule
         */
-       public static CFRuleRecord create(Workbook workbook, byte comparisonOperation,
+       public static CFRuleRecord create(HSSFWorkbook workbook, byte comparisonOperation,
                        String formulaText1, String formulaText2) {
                Ptg[] formula1 = parseFormula(formulaText1, workbook);
                Ptg[] formula2 = parseFormula(formulaText2, workbook);
@@ -651,7 +652,7 @@ public final class CFRuleRecord extends Record
        /**
         * @return <code>null</code> if <tt>formula</tt> was null.
         */
-       private static Ptg[] parseFormula(String formula, Workbook workbook)
+       private static Ptg[] parseFormula(String formula, HSSFWorkbook workbook)
        {
                if(formula == null) {
                        return null;
index a06bc8aedd7c06761d5ae4c2dadbd605a6c091bf..23af4b17cc8a0bb4418f92aee8403acea4472087 100644 (file)
 
 package org.apache.poi.hssf.record;
 
+import java.util.Iterator;
 import java.util.List;
 import java.util.Stack;
-import java.util.Iterator;
 
-import org.apache.poi.hssf.model.Workbook;
-import org.apache.poi.hssf.record.formula.*;
+import org.apache.poi.hssf.record.formula.Area3DPtg;
+import org.apache.poi.hssf.record.formula.DeletedArea3DPtg;
+import org.apache.poi.hssf.record.formula.DeletedRef3DPtg;
+import org.apache.poi.hssf.record.formula.Ptg;
+import org.apache.poi.hssf.record.formula.Ref3DPtg;
+import org.apache.poi.hssf.record.formula.UnionPtg;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.hssf.util.AreaReference;
 import org.apache.poi.hssf.util.RangeAddress;
 import org.apache.poi.util.HexDump;
@@ -645,7 +650,7 @@ public class NameRecord extends Record {
     /** gets the reference , the area only (range)
      * @return area reference
      */
-    public String getAreaReference(Workbook book){
+    public String getAreaReference(HSSFWorkbook book){
         if (field_13_name_definition == null || field_13_name_definition.isEmpty()) return "Error";
         Ptg ptg = (Ptg) field_13_name_definition.peek();
         String result = "";
@@ -679,7 +684,7 @@ public class NameRecord extends Record {
      *  return an empty string if nothing is possible
      *  for it.
      */
-    private String getAreaRefString(Ptg ptg,Workbook book) {
+    private String getAreaRefString(Ptg ptg,HSSFWorkbook book) {
         if (ptg.getClass() == Area3DPtg.class){
             return ptg.toFormulaString(book);
         } else if (ptg.getClass() == Ref3DPtg.class){
index f0fc1fccf4c69b083ad7bd937b033df65341f489..82d85ccebbb16c86131ea67f7f057a86534a0cfa 100644 (file)
@@ -17,7 +17,7 @@
 
 package org.apache.poi.hssf.record.formula;
 
-import org.apache.poi.hssf.model.Workbook;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.hssf.record.formula.function.FunctionMetadata;
 import org.apache.poi.hssf.record.formula.function.FunctionMetadataRegistry;
 
@@ -73,7 +73,7 @@ public abstract class AbstractFunctionPtg extends OperationPtg {
         return field_2_fnc_index == FUNCTION_INDEX_EXTERNAL;
     }
 
-    public String toFormulaString(Workbook book) {
+    public String toFormulaString(HSSFWorkbook book) {
         return getName();
     }
 
index 12c49f114808c91f8b0123bc9b42e5bd0d0363bd..4f79d76027c5e32fee678d09b259d62db4b54c2c 100644 (file)
@@ -23,7 +23,7 @@
  */
 package org.apache.poi.hssf.record.formula;
 
-import org.apache.poi.hssf.model.Workbook;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.hssf.record.RecordInputStream;
 
 /**
@@ -75,7 +75,7 @@ public class AddPtg
     }
     
     /** Implementation of method from Ptg */
-    public String toFormulaString(Workbook book)
+    public String toFormulaString(HSSFWorkbook book)
     {
         return "+";
     }
index 33278e25edceb844f78adbfbe9ac351cf8d7a904..b0322ab7851728f65e2f115098d02bb43e5890d8 100644 (file)
@@ -17,7 +17,7 @@
 
 package org.apache.poi.hssf.record.formula;
 
-import org.apache.poi.hssf.model.Workbook;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.hssf.record.RecordInputStream;
 import org.apache.poi.hssf.util.AreaReference;
 import org.apache.poi.hssf.util.CellReference;
@@ -273,7 +273,7 @@ public class Area3DPtg extends Ptg implements AreaI
         * @return text representation of this area reference that can be used in text
         *  formulas. The sheet name will get properly delimited if required.
         */
-       public String toFormulaString(Workbook book)
+       public String toFormulaString(HSSFWorkbook book)
        {
                // First do the sheet name
                StringBuffer retval = new StringBuffer();
index 515d07dd41535e64601be7c90be6dfcadb8390eb..6ff0b05b1632a59bc98c5702e5c63e14fbc5df20 100644 (file)
@@ -29,7 +29,7 @@ import org.apache.poi.util.BitField;
 import org.apache.poi.hssf.record.RecordInputStream;
 import org.apache.poi.hssf.util.AreaReference;
 import org.apache.poi.hssf.util.CellReference;
-import org.apache.poi.hssf.model.Workbook;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 
 /**
  * Specifies a rectangular area of cells A1:A4 for instance.
index ed48431dee8395c4749075d2428fe090eeabc8a7..187957e587f9aa96b23c2b068e3cd9b9ca9fbece 100644 (file)
@@ -20,7 +20,7 @@ package org.apache.poi.hssf.record.formula;
 import org.apache.poi.util.LittleEndian;
 import org.apache.poi.util.BitField;
 
-import org.apache.poi.hssf.model.Workbook;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.hssf.record.RecordInputStream;
 
 /**
@@ -66,7 +66,7 @@ public class AreaErrPtg extends AreaPtg
         array[offset] = (byte) (sid + ptgClass);
     }
 
-    public String toFormulaString(Workbook book)
+    public String toFormulaString(HSSFWorkbook book)
     {
         return "#REF!";
     }
index da24158acef2623948a4282cedae6dbe198c7098..6b0eb908ac4fff9306597a5d852438a7bfa11f59 100644 (file)
@@ -29,7 +29,7 @@ import org.apache.poi.util.BitField;
 import org.apache.poi.hssf.record.RecordInputStream;
 import org.apache.poi.hssf.util.AreaReference;
 import org.apache.poi.hssf.util.CellReference;
-import org.apache.poi.hssf.model.Workbook;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 
 /**
  * Specifies a rectangular area of cells A1:A4 for instance.
@@ -58,7 +58,7 @@ public class AreaNAPtg
       return "AreaNAPtg";
     }
 
-    public String toFormulaString(Workbook book)
+    public String toFormulaString(HSSFWorkbook book)
     {
       throw new RuntimeException("Coding Error: This method should never be called. This ptg should be converted");
     }
index 9507e37a8e54792de1f69dfa42f101e08fcb169e..71e413fead0fbd6451036521d3c8c88b089be160 100644 (file)
@@ -29,7 +29,7 @@ import org.apache.poi.util.BitField;
 import org.apache.poi.hssf.record.RecordInputStream;
 import org.apache.poi.hssf.util.AreaReference;
 import org.apache.poi.hssf.util.CellReference;
-import org.apache.poi.hssf.model.Workbook;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 
 /**
  * Specifies a rectangular area of cells A1:A4 for instance.
@@ -61,7 +61,7 @@ public class AreaNPtg
     return "AreaNPtg";
   }
 
-  public String toFormulaString(Workbook book)
+  public String toFormulaString(HSSFWorkbook book)
   {
     throw new RuntimeException("Coding Error: This method should never be called. This ptg should be converted");
   }
index c91ed502c91aa0c00d11d83b486921d488c1fd9d..2ebf01982962430048da11c262011f3b8ff3bc15 100644 (file)
@@ -29,7 +29,7 @@ import org.apache.poi.util.BitField;
 import org.apache.poi.hssf.record.RecordInputStream;
 import org.apache.poi.hssf.util.AreaReference;
 import org.apache.poi.hssf.util.CellReference;
-import org.apache.poi.hssf.model.Workbook;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 
 /**
  * Specifies a rectangular area of cells A1:A4 for instance.
@@ -59,7 +59,7 @@ public class AreaNVPtg
     return "AreaNVPtg";
   }
 
-  public String toFormulaString(Workbook book)
+  public String toFormulaString(HSSFWorkbook book)
   {
     throw new RuntimeException("Coding Error: This method should never be called. This ptg should be converted");
   }
index be34e0074a3139547467be6ac203d334535d4306..27e4d1759cb8ba036252cc3757e03cd16dd907af 100644 (file)
@@ -24,7 +24,7 @@ import org.apache.poi.util.BitFieldFactory;
 
 import org.apache.poi.hssf.util.AreaReference;
 import org.apache.poi.hssf.util.CellReference;
-import org.apache.poi.hssf.model.Workbook;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.hssf.record.RecordInputStream;
 
 /**
@@ -303,11 +303,11 @@ public class AreaPtg
         field_4_last_column = column;
     }
     
-    public String toFormulaString(Workbook book)
+    public String toFormulaString(HSSFWorkbook book)
     {
        return toFormulaString(this, book);
     }
-    protected static String toFormulaString(AreaI area, Workbook book) {
+    protected static String toFormulaString(AreaI area, HSSFWorkbook book) {
        CellReference topLeft = new CellReference(area.getFirstRow(),area.getFirstColumn(),!area.isFirstRowRelative(),!area.isFirstColRelative());
        CellReference botRight = new CellReference(area.getLastRow(),area.getLastColumn(),!area.isLastRowRelative(),!area.isLastColRelative());
        
index 42dc11fa326772bb356b139681f6196983b9f930..e5e3d525cc8aa14be432a304fcd14b79422bcb2e 100644 (file)
@@ -29,7 +29,7 @@ import org.apache.poi.util.BitField;
 import org.apache.poi.hssf.record.RecordInputStream;
 import org.apache.poi.hssf.util.AreaReference;
 import org.apache.poi.hssf.util.CellReference;
-import org.apache.poi.hssf.model.Workbook;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 
 /**
  * Specifies a rectangular area of cells A1:A4 for instance.
index 12166b7967ecc639f2baef58b896b019a42192d7..01942be55cf869881c61b51ef3b2e1242d35b2c6 100644 (file)
@@ -23,7 +23,7 @@ import org.apache.poi.util.BitFieldFactory;
 import org.apache.poi.util.StringUtil;
 
 import org.apache.poi.hssf.util.CellReference;
-import org.apache.poi.hssf.model.Workbook;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.hssf.record.RecordFormatException;
 import org.apache.poi.hssf.record.RecordInputStream;
 import org.apache.poi.hssf.record.SSTRecord;
@@ -198,7 +198,7 @@ public class ArrayPtg extends Ptg
         return size;
     }
 
-    public String toFormulaString(Workbook book)
+    public String toFormulaString(HSSFWorkbook book)
     {
        StringBuffer b = new StringBuffer();
        b.append("{");
index 0319175ba4b5ab9e248b1ac996605f3346fd26b5..616f737b84793b7fd80a2ca769df1697c964404d 100644 (file)
@@ -23,7 +23,7 @@ import org.apache.poi.util.BitFieldFactory;
 import org.apache.poi.util.StringUtil;
 
 import org.apache.poi.hssf.util.CellReference;
-import org.apache.poi.hssf.model.Workbook;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.hssf.record.RecordFormatException;
 import org.apache.poi.hssf.record.RecordInputStream;
 import org.apache.poi.hssf.record.SSTRecord;
index 49a28c97cc9604d47dd98dc57004f07498ecd1af..94aa32383f42d3feedae5cb068fa0ab29a848bb8 100644 (file)
@@ -23,7 +23,7 @@ import org.apache.poi.util.BitFieldFactory;
 import org.apache.poi.util.StringUtil;
 
 import org.apache.poi.hssf.util.CellReference;
-import org.apache.poi.hssf.model.Workbook;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.hssf.record.RecordFormatException;
 import org.apache.poi.hssf.record.RecordInputStream;
 import org.apache.poi.hssf.record.SSTRecord;
index d355fbfa1f3d2bb9b5e8aa4a3ac2ea40e59a269c..351d44a421a5f4e920e119687250b7b2cd616b47 100644 (file)
@@ -18,7 +18,7 @@
 
 package org.apache.poi.hssf.record.formula;
 
-import org.apache.poi.hssf.model.Workbook;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.hssf.record.RecordInputStream;
 
 import org.apache.poi.util.LittleEndian;
@@ -209,11 +209,11 @@ public final class AttrPtg extends OperationPtg {
         if(space.isSet(field_1_options)) {
             return operands[ 0 ];
         } else if (optiIf.isSet(field_1_options)) {
-            return toFormulaString((Workbook)null) + "(" + operands[ 0 ]             +")";
+            return toFormulaString((HSSFWorkbook)null) + "(" + operands[ 0 ]             +")";
         } else if (optGoto.isSet(field_1_options)) {
-            return toFormulaString((Workbook)null) + operands[0];   //goto isn't a real formula element should not show up
+            return toFormulaString((HSSFWorkbook)null) + operands[0];   //goto isn't a real formula element should not show up
         } else {
-            return toFormulaString((Workbook)null) + "(" + operands[ 0 ] + ")";
+            return toFormulaString((HSSFWorkbook)null) + "(" + operands[ 0 ] + ")";
         }
     }
   
@@ -228,7 +228,7 @@ public final class AttrPtg extends OperationPtg {
         return -1;
     }
         
-   public String toFormulaString(Workbook book) {
+   public String toFormulaString(HSSFWorkbook book) {
       if(semiVolatile.isSet(field_1_options)) {
         return "ATTR(semiVolatile)";
       }
index 0248f8466f1e10adf17a59abe1a07ddc2185e1fb..80c9f39d79c2f5816363c8944e99948af52cfdb1 100644 (file)
@@ -17,7 +17,7 @@
 
 package org.apache.poi.hssf.record.formula;
 
-import org.apache.poi.hssf.model.Workbook;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.hssf.record.RecordInputStream;
 
 /**
@@ -70,7 +70,7 @@ public class BoolPtg
         return SIZE;
     }
 
-    public String toFormulaString(Workbook book)
+    public String toFormulaString(HSSFWorkbook book)
     {
         return field_1_value ? "TRUE" : "FALSE";
     }
index 41d2de0cbae58ca2f0147003ee663f47869148eb..951872f43b9f99e1abd858bd5389ed45f82b024e 100644 (file)
@@ -18,7 +18,7 @@
 
 package org.apache.poi.hssf.record.formula;
 
-import org.apache.poi.hssf.model.Workbook;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.hssf.record.RecordInputStream;
 
 /**
@@ -64,7 +64,7 @@ public class ConcatPtg
         return 2;
     }
 
-    public String toFormulaString(Workbook book)
+    public String toFormulaString(HSSFWorkbook book)
     {
         return CONCAT;
     }    
index cde67c5dc87362d9da19bc16405f98a15387e933..70fa62e58badef1554e704b522cd84d46de2f42e 100644 (file)
@@ -18,7 +18,7 @@
 
 package org.apache.poi.hssf.record.formula;
 
-import org.apache.poi.hssf.model.Workbook;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.hssf.record.RecordInputStream;
 
 /**
@@ -65,7 +65,7 @@ public class DividePtg
         return 2;
     }
 
-    public String toFormulaString(Workbook book)
+    public String toFormulaString(HSSFWorkbook book)
     {
         return "/";
     }
@@ -74,7 +74,7 @@ public class DividePtg
         StringBuffer buffer = new StringBuffer();
 
         buffer.append(operands[ 0 ]);
-        buffer.append(toFormulaString((Workbook)null));
+        buffer.append(toFormulaString((HSSFWorkbook)null));
         buffer.append(operands[ 1 ]);
         return buffer.toString();
     }      
index 26f66e4fe2ce3c4ca5ab91df0b2bcf5d88ec0f94..a08a863d1c8046de0ecdd7d06c8b802acb9eb288 100644 (file)
@@ -18,7 +18,7 @@
 
 package org.apache.poi.hssf.record.formula;
 
-import org.apache.poi.hssf.model.Workbook;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.hssf.record.RecordInputStream;
 
 /**
@@ -64,7 +64,7 @@ public class EqualPtg
         return 2;
     }
 
-    public String toFormulaString(Workbook book)
+    public String toFormulaString(HSSFWorkbook book)
     {
         return "=";
     }
@@ -74,7 +74,7 @@ public class EqualPtg
 
         
         buffer.append(operands[ 0 ]);
-        buffer.append(toFormulaString((Workbook)null));
+        buffer.append(toFormulaString((HSSFWorkbook)null));
         buffer.append(operands[ 1 ]);
         return buffer.toString();
     }       
index 26cc2e027bc9f9147a747e5ba807124722ffb459..a16992f94385d0ee49586e07be58e163c9295cdb 100644 (file)
@@ -19,7 +19,7 @@
 
 package org.apache.poi.hssf.record.formula;
 
-import org.apache.poi.hssf.model.Workbook;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.hssf.record.RecordInputStream;
 import org.apache.poi.hssf.usermodel.HSSFErrorConstants;
 
@@ -70,7 +70,7 @@ public final class ErrPtg extends Ptg {
         array[offset + 1] = (byte)field_1_error_code;
     }
 
-    public String toFormulaString(Workbook book) {
+    public String toFormulaString(HSSFWorkbook book) {
         return HSSFErrorConstants.getText(field_1_error_code);
     }
 
index a7fc0274adb3c05aa1791cf699ec64c6476c0fb2..0cd54e5f55f827067b47ee4ac31f62aa81e3d32e 100644 (file)
@@ -18,7 +18,7 @@
 
 package org.apache.poi.hssf.record.formula;
 
-import org.apache.poi.hssf.model.Workbook;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.hssf.record.RecordFormatException;
 import org.apache.poi.hssf.record.RecordInputStream;
 
@@ -73,7 +73,7 @@ public class ExpPtg
       return field_2_first_col;
     }    
 
-    public String toFormulaString(Workbook book)
+    public String toFormulaString(HSSFWorkbook book)
     {
         throw new RecordFormatException("Coding Error: Expected ExpPtg to be converted from Shared to Non-Shared Formula by ValueRecordsAggregate, but it wasn't");
     }
index d8d08fecb889b11dfe384579e142125bc382ff55..677d78c3e5c665380cba4e5ae10e656b2ac0cdb3 100755 (executable)
@@ -19,7 +19,7 @@
 
 package org.apache.poi.hssf.record.formula;
 
-import org.apache.poi.hssf.model.Workbook;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.hssf.record.RecordInputStream;
 
 
@@ -67,7 +67,7 @@ public class GreaterEqualPtg
         return 2;
     }
 
-    public String toFormulaString(Workbook book)
+    public String toFormulaString(HSSFWorkbook book)
     {
         return ">=";
     }
@@ -77,7 +77,7 @@ public class GreaterEqualPtg
 
         buffer.append(operands[ 0 ]);
 
-        buffer.append(toFormulaString((Workbook)null));
+        buffer.append(toFormulaString((HSSFWorkbook)null));
         buffer.append(operands[ 1 ]);
 
         return buffer.toString();
index 6d66307b3d3b921ec0707042471d293acf13a7c9..6501203edcc9b070d4dabd1e8fbe2f44f818174b 100644 (file)
@@ -25,7 +25,7 @@ package org.apache.poi.hssf.record.formula;
 
 import java.util.List;
 
-import org.apache.poi.hssf.model.Workbook;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.hssf.record.RecordInputStream;
 
 /**
@@ -97,7 +97,7 @@ public class GreaterThanPtg
      * Implementation of method from Ptg 
      * @param book the Sheet References
      */
-    public String toFormulaString(Workbook book)
+    public String toFormulaString(HSSFWorkbook book)
     {
         return this.GREATERTHAN;
     }
index f4106b6aa8fc221e7ba949b4e5213157ab392d5d..f3dd16f068a6750bf69c8238742f2bf8bf71fd3f 100644 (file)
@@ -18,7 +18,7 @@
 package org.apache.poi.hssf.record.formula;
 
 import org.apache.poi.util.LittleEndian;
-import org.apache.poi.hssf.model.Workbook;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.hssf.record.RecordInputStream;
 
 /**
@@ -72,7 +72,7 @@ public final class IntPtg extends Ptg {
         return SIZE;
     }
 
-    public String toFormulaString(Workbook book) {
+    public String toFormulaString(HSSFWorkbook book) {
         return String.valueOf(getValue());
     }
     public byte getDefaultOperandClass() {
index 9b225912ed6000109395e6892051e689ced613cb..8f5bddc190b6a3c5107c9e10a059f01f25621c28 100644 (file)
@@ -17,7 +17,7 @@
 
 package org.apache.poi.hssf.record.formula;
 
-import org.apache.poi.hssf.model.Workbook;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.hssf.record.RecordInputStream;
 
 /**
@@ -59,7 +59,7 @@ public class IntersectionPtg extends OperationPtg
     }
 
     /** Implementation of method from Ptg */
-    public String toFormulaString(Workbook book)
+    public String toFormulaString(HSSFWorkbook book)
     {
         return " ";
     }
index c395ed3b1c234cad3514743dfedb709fe6296198..f42966394b749f8fb9306e8f8406cc6e802af79e 100755 (executable)
@@ -20,7 +20,7 @@
 package org.apache.poi.hssf.record.formula;
 
 
-import org.apache.poi.hssf.model.Workbook;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.hssf.record.RecordInputStream;
 
 
@@ -68,7 +68,7 @@ public class LessEqualPtg
         return 2;
     }
 
-    public String toFormulaString( Workbook book )
+    public String toFormulaString( HSSFWorkbook book )
     {
         return "<=";
     }
@@ -77,7 +77,7 @@ public class LessEqualPtg
     {
         StringBuffer buffer = new StringBuffer();
         buffer.append( operands[0] );
-        buffer.append( toFormulaString( (Workbook) null ) );
+        buffer.append( toFormulaString( (HSSFWorkbook) null ) );
         buffer.append( operands[1] );
         return buffer.toString();
     }
index 4bccd9274ed449ceab58ddc71697e89146c20a14..c23658d2db4302995e5c2baa2d779d929d1f892b 100644 (file)
@@ -27,7 +27,7 @@ package org.apache.poi.hssf.record.formula;
 import java.util.List;
 
 //POI
-import org.apache.poi.hssf.model.Workbook;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.hssf.record.RecordInputStream;
 
 /**
@@ -106,7 +106,7 @@ public class LessThanPtg
      * Implementation of method from Ptg 
      * @param book the Sheet References
      */
-    public String toFormulaString(Workbook book)
+    public String toFormulaString(HSSFWorkbook book)
     {
         return this.LESSTHAN;
     }
index ee0b761854098a931b1c2df4896bcad7606c6804..ec33d10921475187d5234ccd5d01372781b597dd 100644 (file)
@@ -25,7 +25,7 @@
 package org.apache.poi.hssf.record.formula;
 
 import org.apache.poi.util.LittleEndian;
-import org.apache.poi.hssf.model.Workbook;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.hssf.record.RecordInputStream;
 
 /**
@@ -83,7 +83,7 @@ public class MemAreaPtg
         return SIZE;
     }
 
-    public String toFormulaString(Workbook book)
+    public String toFormulaString(HSSFWorkbook book)
     {
         return ""; // TODO: Not sure how to format this. -- DN
     }
index bfc33c12843b229981733a2849f77bd285e8d168..359c76e6681dc69c6c5bd36770f358bcb92cb660 100644 (file)
@@ -25,7 +25,7 @@
 package org.apache.poi.hssf.record.formula;
 
 import org.apache.poi.util.LittleEndian;
-import org.apache.poi.hssf.model.Workbook;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.hssf.record.RecordInputStream;
 
 /**
@@ -57,7 +57,7 @@ public class MemErrPtg
         array[offset] = (byte) (sid + ptgClass);
     }
 
-    public String toFormulaString(Workbook book)
+    public String toFormulaString(HSSFWorkbook book)
     {
         return "ERR#";
     }
index 89d4cae329010e94927145a2130014b0d6637b7d..63c07a79e71def40c614e648255b4120ccb65167 100644 (file)
@@ -24,7 +24,7 @@
 package org.apache.poi.hssf.record.formula;
 
 import org.apache.poi.util.LittleEndian;
-import org.apache.poi.hssf.model.Workbook;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.hssf.record.RecordInputStream;
 
 /**
@@ -60,7 +60,7 @@ public class MemFuncPtg extends ControlPtg
         LittleEndian.putShort( array, offset + 1, (short)field_1_len_ref_subexpression );
     }
 
-    public String toFormulaString(Workbook book)
+    public String toFormulaString(HSSFWorkbook book)
     {
         return "";
     }
index 17a31a4e6a474af9c75d85088e9c5c16c04ce36a..d539405cd061c899349d9b6e8ac14909464b8f02 100644 (file)
@@ -17,7 +17,7 @@
 
 package org.apache.poi.hssf.record.formula;
 
-import org.apache.poi.hssf.model.Workbook;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.hssf.record.RecordInputStream;
 
 /**
@@ -55,7 +55,7 @@ public class MissingArgPtg
     }
 
    
-    public String toFormulaString(Workbook book)
+    public String toFormulaString(HSSFWorkbook book)
     {
         return " ";
     }
index 626eff2b8e4b12253c8f39cd9ddf36c6383de250..cbc0b6700216df9d0f7cb1c049e2a7527d058bda 100644 (file)
@@ -16,7 +16,7 @@
 ==================================================================== */
 package org.apache.poi.hssf.record.formula;
 
-import org.apache.poi.hssf.model.Workbook;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.hssf.record.RecordInputStream;
 
 /**
@@ -68,7 +68,7 @@ public class MultiplyPtg
     }
     
 
-    public String toFormulaString(Workbook book)
+    public String toFormulaString(HSSFWorkbook book)
     {
         return "*";
     }
@@ -77,9 +77,9 @@ public class MultiplyPtg
     {
         StringBuffer buffer = new StringBuffer();
 
-        buffer.append(operands[ 0 ].toFormulaString((Workbook)null));
+        buffer.append(operands[ 0 ].toFormulaString((HSSFWorkbook)null));
         buffer.append("*");
-        buffer.append(operands[ 1 ].toFormulaString((Workbook)null));
+        buffer.append(operands[ 1 ].toFormulaString((HSSFWorkbook)null));
         return buffer.toString();
     }
     
@@ -87,7 +87,7 @@ public class MultiplyPtg
         StringBuffer buffer = new StringBuffer();
 
         buffer.append(operands[ 0 ]);
-        buffer.append(toFormulaString((Workbook)null));
+        buffer.append(toFormulaString((HSSFWorkbook)null));
         buffer.append(operands[ 1 ]);
         return buffer.toString();
     }                  
index 5405481a09a315468c113d12f7769c0d112e3eb6..9d93f1e9827bb4b4df60745d3c041dfe645a8fb1 100644 (file)
@@ -18,7 +18,8 @@
 package org.apache.poi.hssf.record.formula;
 
 import org.apache.poi.util.LittleEndian;
-import org.apache.poi.hssf.model.Workbook;
+import org.apache.poi.hssf.usermodel.HSSFName;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.hssf.record.NameRecord;
 import org.apache.poi.hssf.record.RecordInputStream;
 
@@ -48,26 +49,24 @@ public class NamePtg
      * in the workbook.  The search for the name record is case insensitive.  If it is not found, 
      * it gets created.
      */
-    public NamePtg(String name, Workbook book) {
+    public NamePtg(String name, HSSFWorkbook book) {
         field_1_label_index = (short)(1+getOrCreateNameRecord(book, name)); // convert to 1-based
     }
     /**
      * @return zero based index of the found or newly created defined name record. 
      */
-    private static final int getOrCreateNameRecord(Workbook book, String name) {
-        // perhaps this logic belongs in Workbook
-        int countNames = book.getNumNames();
-        NameRecord rec;
+    private static final int getOrCreateNameRecord(HSSFWorkbook book, String name) {
+        // perhaps this logic belongs in Workbook?
+        int countNames = book.getNumberOfNames();
         for (int i = 0; i < countNames; i++) {
-            rec = book.getNameRecord(i);
-            if (name.equalsIgnoreCase(rec.getNameText())) {
+            if(name.equalsIgnoreCase( book.getNameName(i) )) {
                 return i; 
             }
         }
-        rec = new NameRecord();
-        rec.setNameText(name);
-        rec.setNameTextLength((byte) name.length());
-        book.addName(rec);
+        
+        HSSFName nameObj = book.createName();
+        nameObj.setNameName(name);
+        
         return countNames;
     }
 
@@ -100,10 +99,9 @@ public class NamePtg
         return SIZE;
     }
 
-    public String toFormulaString(Workbook book)
+    public String toFormulaString(HSSFWorkbook book)
     {
-        NameRecord rec = book.getNameRecord(field_1_label_index - 1);
-        return rec.getNameText();
+       return book.getNameName(field_1_label_index - 1);
     }
     
     public byte getDefaultOperandClass() {return Ptg.CLASS_REF;}
index ccf5ab6fcd342551ac34ae9352115b5e1d133c98..3036800b1032f89b5fe11070ba5abde16fc0e89c 100644 (file)
@@ -18,7 +18,7 @@
 package org.apache.poi.hssf.record.formula;
 
 import org.apache.poi.util.LittleEndian;
-import org.apache.poi.hssf.model.Workbook;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.hssf.record.RecordInputStream;
 
 /**
@@ -61,7 +61,7 @@ public final class NameXPtg extends Ptg {
         return SIZE;
     }
 
-    public String toFormulaString(Workbook book)
+    public String toFormulaString(HSSFWorkbook book)
     {
         // -1 to convert definedNameIndex from 1-based to zero-based
         return book.resolveNameXText(field_1_ixals, field_2_ilbl-1); 
index 8eea4d80041edaa3aea3ea1ea116a64528928210..5dbbec875494e01c85d6cebbb59bac1008abb653 100755 (executable)
@@ -18,7 +18,7 @@
 
 package org.apache.poi.hssf.record.formula;
 
-import org.apache.poi.hssf.model.Workbook;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.hssf.record.RecordInputStream;
 
 /**
@@ -64,7 +64,7 @@ public class NotEqualPtg
         return 2;
     }
 
-    public String toFormulaString( Workbook book )
+    public String toFormulaString( HSSFWorkbook book )
     {
         return "<>";
     }
@@ -75,7 +75,7 @@ public class NotEqualPtg
 
         buffer.append( operands[0] );
 
-        buffer.append( toFormulaString( (Workbook) null ) );
+        buffer.append( toFormulaString( (HSSFWorkbook) null ) );
         buffer.append( operands[1] );
 
         return buffer.toString();
index 43617f290977407836251f2500192af449a820b4..8ec67345b41d7f5137ce7e127cc12534d5731458 100644 (file)
@@ -18,7 +18,7 @@
 package org.apache.poi.hssf.record.formula;
 
 import org.apache.poi.util.LittleEndian;
-import org.apache.poi.hssf.model.Workbook;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.hssf.record.RecordInputStream;
 
 /**
@@ -78,7 +78,7 @@ public class NumberPtg
         return SIZE;
     }
 
-    public String toFormulaString(Workbook book)
+    public String toFormulaString(HSSFWorkbook book)
     {
         return "" + getValue();
     }
index 374458a15d1c3d7ed24bb01450a480d3e463fdf1..402dbd377428b0900cd39b5737f107f4212082eb 100644 (file)
@@ -20,7 +20,7 @@ package org.apache.poi.hssf.record.formula;
 
 import java.util.List;
 
-import org.apache.poi.hssf.model.Workbook;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.hssf.record.RecordInputStream;
 
 /**
@@ -71,7 +71,7 @@ public class ParenthesisPtg
         return 1;
     }
 
-    public String toFormulaString(Workbook book)
+    public String toFormulaString(HSSFWorkbook book)
     {
         return "()";
     }
index 9db4d6c43b0270db93396b8503a37c4aa66d859d..0c59bb7acb55a6d90ba025a8e6cc2b5842a85f49 100644 (file)
@@ -23,7 +23,7 @@
  */
 package org.apache.poi.hssf.record.formula;
 
-import org.apache.poi.hssf.model.Workbook;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.hssf.record.RecordInputStream;
 
 /**
@@ -74,7 +74,7 @@ public class PercentPtg
     }
     
     /** Implementation of method from Ptg */
-    public String toFormulaString(Workbook book)
+    public String toFormulaString(HSSFWorkbook book)
     {
         return "%";
     }
index 73f41fa49c9b2db8a9d77dc1dee3decd1f3c9875..0dbb3ba283991e9473c78c0e2a76345ec70fc635 100644 (file)
@@ -19,7 +19,7 @@ package org.apache.poi.hssf.record.formula;
 
 import java.util.List;
 
-import org.apache.poi.hssf.model.Workbook;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.hssf.record.RecordInputStream;
 
 /**
@@ -66,7 +66,7 @@ public class PowerPtg
         return 2;
     }
 
-    public String toFormulaString(Workbook book)
+    public String toFormulaString(HSSFWorkbook book)
     {
         return "^";
     }
@@ -76,7 +76,7 @@ public class PowerPtg
 
         
         buffer.append(operands[ 0 ]);
-        buffer.append(toFormulaString((Workbook)null));
+        buffer.append(toFormulaString((HSSFWorkbook)null));
         buffer.append(operands[ 1 ]);
         return buffer.toString();
     }       
index f006509c23fcbffc116eb6d25300725cfa691e08..0e8c7741ac27568717184c6a968808703820a95a 100644 (file)
@@ -21,7 +21,7 @@ import java.util.List;
 import java.util.ArrayList;
 import java.util.Stack;
 
-import org.apache.poi.hssf.model.Workbook;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.hssf.record.RecordInputStream;
 
 /**
@@ -418,7 +418,7 @@ public abstract class Ptg
     /**
      * return a string representation of this token alone
      */
-    public abstract String toFormulaString(Workbook book);
+    public abstract String toFormulaString(HSSFWorkbook book);
     /**
      * dump a debug representation (hexdump) to a string
      */
index 51df7844a4babd69afee4d7977c9a9f8c273d3cf..4726a70c17265db0b1f454c7ec07d039438099fa 100644 (file)
@@ -17,7 +17,7 @@
 
 package org.apache.poi.hssf.record.formula;
 
-import org.apache.poi.hssf.model.Workbook;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.hssf.record.RecordInputStream;
 
 /**
@@ -59,7 +59,7 @@ public class RangePtg extends OperationPtg
     }
 
     /** Implementation of method from Ptg */
-    public String toFormulaString(Workbook book)
+    public String toFormulaString(HSSFWorkbook book)
     {
         return ":";
     }
index 84ff659b333de826d406de4210794d0df5dcf914..3b4749c855d926f91176c9ca16e3524aa70e9862 100644 (file)
@@ -18,7 +18,7 @@
 
 package org.apache.poi.hssf.record.formula;
 
-import org.apache.poi.hssf.model.Workbook;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.hssf.record.RecordInputStream;
 import org.apache.poi.hssf.util.CellReference;
 import org.apache.poi.hssf.util.RangeAddress;
@@ -162,8 +162,8 @@ public class Ref3DPtg extends Ptg {
     }
 
     // TODO - find a home for this method
-    // There is already a method on Workbook called getSheetName but it seems to do something different.
-       static String getSheetName(Workbook book, int externSheetIndex) {
+    // There is already a method on HSSFWorkbook called getSheetName but it seems to do something different.
+       static String getSheetName(HSSFWorkbook book, int externSheetIndex) {
         // TODO - there are 3 ways this method can return null. Is each valid?
         if (book == null) {
             return null;
@@ -179,7 +179,7 @@ public class Ref3DPtg extends Ptg {
      * @return text representation of this cell reference that can be used in text 
      * formulas. The sheet name will get properly delimited if required.
      */
-    public String toFormulaString(Workbook book)
+    public String toFormulaString(HSSFWorkbook book)
     {
         StringBuffer retval = new StringBuffer();
         String sheetName = getSheetName(book, field_1_index_extern_sheet);
index 4d655756d42047feb046a5fcc6919ad2365a5e5f..c29b55bf94948dc9a61ec98931f95816eaf2862d 100755 (executable)
@@ -21,7 +21,7 @@ import org.apache.poi.util.LittleEndian;
 import org.apache.poi.util.BitField;
 
 import org.apache.poi.hssf.util.CellReference;
-import org.apache.poi.hssf.model.Workbook;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.hssf.record.RecordInputStream;
 
 /**
@@ -74,7 +74,7 @@ public class RefErrorPtg extends Ptg
         return SIZE;
     }
 
-    public String toFormulaString(Workbook book)
+    public String toFormulaString(HSSFWorkbook book)
     {
         //TODO -- should we store a cellreference instance in this ptg?? but .. memory is an issue, i believe!
         return "#REF!";
index 4e05e1387dda6f07aa5cacef97a87ca0d48aeaeb..6f18e4b94efc670962a002b1e713fd06eaa609a6 100644 (file)
@@ -28,7 +28,7 @@ import org.apache.poi.util.BitField;
 
 import org.apache.poi.hssf.record.RecordInputStream;
 import org.apache.poi.hssf.util.CellReference;
-import org.apache.poi.hssf.model.Workbook;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 
 /**
  * RefNAPtg
@@ -57,7 +57,7 @@ public class RefNAPtg extends ReferencePtg
       return "RefNAPtg";
     }
 
-    public String toFormulaString(Workbook book)
+    public String toFormulaString(HSSFWorkbook book)
     {
       throw new RuntimeException("Coding Error: This method should never be called. This ptg should be converted");
     }
index e062f0c4e471e1087d8d988bd67d0b9e775af193..e7522e7e5f1f3653f2451f0fce40ddc66d5d1ff1 100644 (file)
@@ -27,7 +27,7 @@ import org.apache.poi.util.BitField;
 
 import org.apache.poi.hssf.record.RecordInputStream;
 import org.apache.poi.hssf.util.CellReference;
-import org.apache.poi.hssf.model.Workbook;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 
 /**
  * RefNPtg
@@ -58,7 +58,7 @@ public class RefNPtg extends ReferencePtg
       return "RefNPtg";
     }
 
-    public String toFormulaString(Workbook book)
+    public String toFormulaString(HSSFWorkbook book)
     {
       throw new RuntimeException("Coding Error: This method should never be called. This ptg should be converted");
     }
index 615a9c0b0a55caade3e175a637b15d6e1a307062..40b111b3ecd26ada2b0692acf7f7b6f137ac1cf7 100644 (file)
@@ -23,7 +23,7 @@ import org.apache.poi.util.BitField;
 
 import org.apache.poi.hssf.record.RecordInputStream;
 import org.apache.poi.hssf.util.CellReference;
-import org.apache.poi.hssf.model.Workbook;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 
 /**
  * RefNVPtg
@@ -54,7 +54,7 @@ public class RefNVPtg extends ReferencePtg
     return "RefNVPtg";
   }
 
-  public String toFormulaString(Workbook book)
+  public String toFormulaString(HSSFWorkbook book)
   {
     throw new RuntimeException("Coding Error: This method should never be called. This ptg should be converted");
   }
index 4983c9d0706aabe0a4a71d5a087c9105c73e44af..3df731c7ace74866a9b5e4f399c57ddfdd5d7213 100644 (file)
@@ -22,7 +22,7 @@ import org.apache.poi.util.BitField;
 import org.apache.poi.util.BitFieldFactory;
 
 import org.apache.poi.hssf.util.CellReference;
-import org.apache.poi.hssf.model.Workbook;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.hssf.record.RecordInputStream;
 
 /**
@@ -176,7 +176,7 @@ public class ReferencePtg extends Ptg {
         return SIZE;
     }
 
-    public String toFormulaString(Workbook book)
+    public String toFormulaString(HSSFWorkbook book)
     {
         //TODO -- should we store a cellreference instance in this ptg?? but .. memory is an issue, i believe!
         return (new CellReference(getRowAsInt(),getColumn(),!isRowRelative(),!isColRelative())).formatAsString();
index 491b6c6c3658d0a56cd007065d31cdbfdc0376e7..ca6fb55dc67e2b32ecd6c7c607f28a9574991e5c 100644 (file)
@@ -17,7 +17,7 @@
 
 package org.apache.poi.hssf.record.formula;
 
-import org.apache.poi.hssf.model.Workbook;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.util.BitField;
 import org.apache.poi.util.BitFieldFactory;
 import org.apache.poi.util.StringUtil;
@@ -109,7 +109,7 @@ public class StringPtg
         }
     }
 
-    public String toFormulaString(Workbook book)
+    public String toFormulaString(HSSFWorkbook book)
     {
         return "\""+getValue()+"\"";
     }
index 384db9357bdbbc77f509a7c8c028ee6d485ddd7d..37af74ba9ec2e1eee8b9eb2101e40434e8670992 100644 (file)
@@ -18,7 +18,7 @@
 package org.apache.poi.hssf.record.formula;
 
 import java.util.List;
-import org.apache.poi.hssf.model.Workbook;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.hssf.record.RecordInputStream;
 
 /**
@@ -63,7 +63,7 @@ public class SubtractPtg
         return 2;
     }
 
-    public String toFormulaString(Workbook book)
+    public String toFormulaString(HSSFWorkbook book)
     {
         return "-";
     }
index 31efdcd63c9735c6801f37bd8fd97d08fdb05e11..7c134b97d136f677d39b3d64ecdac5b138f03f19 100644 (file)
@@ -19,7 +19,7 @@ package org.apache.poi.hssf.record.formula;
 
 import java.util.List;
 
-import org.apache.poi.hssf.model.Workbook;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.hssf.record.RecordInputStream;
 
 /**
@@ -69,7 +69,7 @@ public class UnaryMinusPtg extends OperationPtg
     }
     
     /** Implementation of method from Ptg */
-    public String toFormulaString(Workbook book)
+    public String toFormulaString(HSSFWorkbook book)
     {
         return "+";
     }
index ce3ba7cf4a0041156dbcdce150149b5e184645d0..148c83fa4157535599750fc76bbfb33c33da10ae 100644 (file)
@@ -19,7 +19,7 @@ package org.apache.poi.hssf.record.formula;
 
 import java.util.List;
 
-import org.apache.poi.hssf.model.Workbook;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.hssf.record.RecordInputStream;
 
 /**
@@ -69,7 +69,7 @@ public class UnaryPlusPtg extends OperationPtg
     }
     
     /** Implementation of method from Ptg */
-    public String toFormulaString(Workbook book)
+    public String toFormulaString(HSSFWorkbook book)
     {
         return "+";
     }
index 40298a0cffa595e6d6e0ac8b968d77bf910636fe..8d00ec34dff3a5f111b82fe20542f14d2f257625 100644 (file)
@@ -17,7 +17,7 @@
 
 package org.apache.poi.hssf.record.formula;
 
-import org.apache.poi.hssf.model.Workbook;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.hssf.record.RecordInputStream;
 
 /**
@@ -59,7 +59,7 @@ public class UnionPtg extends OperationPtg
     }
 
     /** Implementation of method from Ptg */
-    public String toFormulaString(Workbook book)
+    public String toFormulaString(HSSFWorkbook book)
     {
         return ",";
     }
index 1badf519705b489fe8360cf219fd7c57fa2a620a..56493d906ab0104300334364333159046b73029e 100644 (file)
@@ -16,7 +16,7 @@
 ==================================================================== */
 package org.apache.poi.hssf.record.formula;
 
-import org.apache.poi.hssf.model.Workbook;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.hssf.record.RecordInputStream;
 
 /**
@@ -51,7 +51,7 @@ public class UnknownPtg
         return size;
     }
 
-    public String toFormulaString(Workbook book)
+    public String toFormulaString(HSSFWorkbook book)
     {
         return "UNKNOWN";
     }
index 670b33372d88db2d51e175e7b434663fb99121d0..81a33825672f43b15a476a7d3da2c052d87fb384 100644 (file)
@@ -113,7 +113,7 @@ public class HSSFCell
     private int                      cellType;
     private HSSFRichTextString       stringValue;
     private short                    encoding = ENCODING_UNCHANGED;
-    private Workbook                 book;
+    private HSSFWorkbook             book;
     private Sheet                    sheet;
     private CellValueRecordInterface record;
     private HSSFComment              comment;
@@ -136,7 +136,7 @@ public class HSSFCell
      */
 
     //protected HSSFCell(Workbook book, Sheet sheet, short row, short col)
-    protected HSSFCell(Workbook book, Sheet sheet, int row, short col)
+    protected HSSFCell(HSSFWorkbook book, Sheet sheet, int row, short col)
     {
         checkBounds(col);
         stringValue  = null;
@@ -165,7 +165,7 @@ public class HSSFCell
      */
 
     //protected HSSFCell(Workbook book, Sheet sheet, short row, short col,
-    protected HSSFCell(Workbook book, Sheet sheet, int row, short col,
+    protected HSSFCell(HSSFWorkbook book, Sheet sheet, int row, short col,
                        int type)
     {
         checkBounds(col);
@@ -188,7 +188,7 @@ public class HSSFCell
      */
 
     //protected HSSFCell(Workbook book, Sheet sheet, short row,
-    protected HSSFCell(Workbook book, Sheet sheet, int row,
+    protected HSSFCell(HSSFWorkbook book, Sheet sheet, int row,
                        CellValueRecordInterface cval)
     {
         record      = cval;
@@ -199,7 +199,7 @@ public class HSSFCell
         switch (cellType)
         {
             case CELL_TYPE_STRING :
-                stringValue = new HSSFRichTextString(book, (LabelSSTRecord ) cval);
+                stringValue = new HSSFRichTextString(book.getWorkbook(), (LabelSSTRecord ) cval);
                 break;
 
             case CELL_TYPE_BLANK :
@@ -209,7 +209,7 @@ public class HSSFCell
                 stringValue=new HSSFRichTextString(((FormulaRecordAggregate) cval).getStringValue());
                 break;
         }
-        ExtendedFormatRecord xf = book.getExFormatAt(cval.getXFIndex());
+        ExtendedFormatRecord xf = book.getWorkbook().getExFormatAt(cval.getXFIndex());
 
         setCellStyle(new HSSFCellStyle(( short ) cval.getXFIndex(), xf, book));
     }
@@ -265,7 +265,7 @@ public class HSSFCell
      * @return
      */
     protected Workbook getBoundWorkbook() {
-       return book;
+       return book.getWorkbook();
     }
 
     /**
@@ -411,9 +411,9 @@ public class HSSFCell
 //                      jmh                        {
 //                      jmh                            str.setUncompressedUnicode();
 //                      jmh                        }
-                        sst = book.addSSTString(str);
+                        sst = book.getWorkbook().addSSTString(str);
                         lrec.setSSTIndex(sst);
-                        getRichStringCellValue().setUnicodeString(book.getSSTString(sst));
+                        getRichStringCellValue().setUnicodeString(book.getWorkbook().getSSTString(sst));
                     }
                 }
                 record = lrec;
@@ -540,7 +540,7 @@ public class HSSFCell
      */
     public void setCellValue(Date value)
     {
-        setCellValue(HSSFDateUtil.getExcelDate(value, this.book.isUsing1904DateWindowing()));
+        setCellValue(HSSFDateUtil.getExcelDate(value, this.book.getWorkbook().isUsing1904DateWindowing()));
     }
 
     /**
@@ -560,7 +560,7 @@ public class HSSFCell
      */
     public void setCellValue(Calendar value)
     {
-        setCellValue( HSSFDateUtil.getExcelDate(value, this.book.isUsing1904DateWindowing()) );
+        setCellValue( HSSFDateUtil.getExcelDate(value, this.book.getWorkbook().isUsing1904DateWindowing()) );
     }
 
     /**
@@ -614,11 +614,11 @@ public class HSSFCell
         int index = 0;
 
         UnicodeString str = value.getUnicodeString();
-        index = book.addSSTString(str);
+        index = book.getWorkbook().addSSTString(str);
         (( LabelSSTRecord ) record).setSSTIndex(index);
         stringValue = value;
-        stringValue.setWorkbookReferences(book, (( LabelSSTRecord ) record));
-        stringValue.setUnicodeString(book.getSSTString(index));
+        stringValue.setWorkbookReferences(book.getWorkbook(), (( LabelSSTRecord ) record));
+        stringValue.setUnicodeString(book.getWorkbook().getSSTString(index));
     }
 
     public void setCellFormula(String formula) {
@@ -728,7 +728,7 @@ public class HSSFCell
                 "You cannot get a date value from an error cell");
         }
         double value=this.getNumericCellValue();
-        if (book.isUsing1904DateWindowing()) {
+        if (book.getWorkbook().isUsing1904DateWindowing()) {
             return HSSFDateUtil.getJavaDate(value,true);
         }
         else {
@@ -913,7 +913,7 @@ public class HSSFCell
     public HSSFCellStyle getCellStyle()
     {
       short styleIndex=record.getXFIndex();
-      ExtendedFormatRecord xf = book.getExFormatAt(styleIndex);
+      ExtendedFormatRecord xf = book.getWorkbook().getExFormatAt(styleIndex);
       return new HSSFCellStyle(styleIndex, xf, book);
     }
 
index d9e470a68cdd9dbc682d3ad8486d65732d27dce1..532133f934ac99bb5cb0c56ad46760b059bdfd89 100644 (file)
@@ -84,7 +84,7 @@ import org.apache.poi.hssf.util.Region;
  */
 public final class HSSFConditionalFormatting
 {
-       private final Workbook workbook;
+       private final HSSFWorkbook workbook;
        private final CFRecordsAggregate cfAggregate;
 
        HSSFConditionalFormatting(HSSFSheet sheet, CFRecordsAggregate cfAggregate)
@@ -95,7 +95,7 @@ public final class HSSFConditionalFormatting
                if(cfAggregate == null) {
                        throw new IllegalArgumentException("cfAggregate must not be null");
                }
-               workbook = sheet.workbook.getWorkbook();
+               workbook = sheet.workbook;
                this.cfAggregate = cfAggregate;
        }
        CFRecordsAggregate getCFRecordsAggregate() {
index 490ff4d342e7c450bff3326834149c99c56f3a6f..5d3436028e70c4f51e3b1e398c9aea6719e9285c 100644 (file)
@@ -40,13 +40,13 @@ public final class HSSFConditionalFormattingRule
     private static final byte CELL_COMPARISON = CFRuleRecord.CONDITION_TYPE_CELL_VALUE_IS;
 
        private final CFRuleRecord cfRuleRecord;
-       private final Workbook workbook;
+       private final HSSFWorkbook workbook;
 
-       HSSFConditionalFormattingRule(Workbook pWorkbook, CFRuleRecord pRuleRecord) {
+       HSSFConditionalFormattingRule(HSSFWorkbook pWorkbook, CFRuleRecord pRuleRecord) {
                workbook = pWorkbook;
                cfRuleRecord = pRuleRecord;
        }
-       HSSFConditionalFormattingRule(Workbook pWorkbook, CFRuleRecord pRuleRecord, 
+       HSSFConditionalFormattingRule(HSSFWorkbook pWorkbook, CFRuleRecord pRuleRecord, 
                        HSSFFontFormatting fontFmt, HSSFBorderFormatting bordFmt, HSSFPatternFormatting patternFmt) {
                this(pWorkbook, pRuleRecord);
                setFontFormatting(fontFmt);
index bb16fdfadd7bc5d9fc326a69ed8500ae84e01125..0a9c3dfa80df46e61044b0c9b80ba1947dd0b84b 100644 (file)
@@ -115,7 +115,7 @@ public class HSSFFormulaEvaluator {
      *  formula evaluated. 
      */
     public static FormulaParser getUnderlyingParser(HSSFWorkbook workbook, String formula) {
-        return new FormulaParser(formula, workbook.getWorkbook());
+        return new FormulaParser(formula, workbook);
     }
     
     /**
@@ -343,7 +343,7 @@ public class HSSFFormulaEvaluator {
     }
     private static ValueEval evaluateCell(HSSFWorkbook workbook, HSSFSheet sheet, 
             int srcRowNum, short srcColNum, String cellFormulaText) {
-        FormulaParser parser = new FormulaParser(cellFormulaText, workbook.getWorkbook());
+        FormulaParser parser = new FormulaParser(cellFormulaText, workbook);
         parser.parse();
         Ptg[] ptgs = parser.getRPNPtg();
         // -- parsing over --
@@ -760,7 +760,7 @@ public class HSSFFormulaEvaluator {
      * @param workbook
      */
     void inspectPtgs(String formula) {
-        FormulaParser fp = new FormulaParser(formula, workbook.getWorkbook());
+        FormulaParser fp = new FormulaParser(formula, workbook);
         fp.parse();
         Ptg[] ptgs = fp.getRPNPtg();
         System.out.println("<ptg-group>");
index 73da4fe9c4759933149ac90a8f5a695b722ec2e1..91b3fcd0f1c15fb009377210826fe49027971e1c 100644 (file)
@@ -29,7 +29,7 @@ import org.apache.poi.hssf.util.RangeAddress;
  */
 
 public class HSSFName {
-    private Workbook         book;
+    private HSSFWorkbook         book;
     private NameRecord       name;
     
     /** Creates new HSSFName   - called by HSSFWorkbook to create a sheet from
@@ -40,7 +40,7 @@ public class HSSFName {
      * @param book lowlevel Workbook object associated with the sheet.
      */
     
-    protected HSSFName(Workbook book, NameRecord name) {
+    protected HSSFName(HSSFWorkbook book, NameRecord name) {
         this.book = book;
         this.name = name;
     }
@@ -53,7 +53,7 @@ public class HSSFName {
         String result ;
         short indexToExternSheet = name.getExternSheetNumber();
         
-        result = book.findSheetNameFromExternSheet(indexToExternSheet);
+        result = book.getWorkbook().findSheetNameFromExternSheet(indexToExternSheet);
         
         return result;
     }
@@ -77,11 +77,12 @@ public class HSSFName {
     public void setNameName(String nameName){
         name.setNameText(nameName);
         name.setNameTextLength((byte)nameName.length());
+        Workbook wb = book.getWorkbook();
         
         //Check to ensure no other names have the same case-insensitive name
-        for ( int i = book.getNumNames()-1; i >=0; i-- )
+        for ( int i = wb.getNumNames()-1; i >=0; i-- )
         {
-               NameRecord rec = book.getNameRecord(i);
+               NameRecord rec = wb.getNameRecord(i);
                if (rec != name) {
                        if (rec.getNameText().equalsIgnoreCase(getNameName()))
                                throw new IllegalArgumentException("The workbook already contains this name (case-insensitive)");
@@ -111,7 +112,7 @@ public class HSSFName {
     private void setSheetName(String sheetName){
         int sheetNumber = book.getSheetIndex(sheetName);
 
-        short externSheetNumber = book.checkExternSheet(sheetNumber);
+        short externSheetNumber = book.getExternalSheetIndex(sheetNumber);
         name.setExternSheetNumber(externSheetNumber);
 //        name.setIndexToSheet(externSheetNumber);
 
index 75452dd94555627ba91d4084d7514b0ab6affcb4..0444843d2e0e6b29ade96866f651306f1929253f 100644 (file)
@@ -53,7 +53,7 @@ public final class HSSFRow implements Comparable {
      * reference to containing low level Workbook
      */
 
-    private Workbook book;
+    private HSSFWorkbook book;
 
     /**
      * reference to containing Sheet
@@ -75,7 +75,7 @@ public final class HSSFRow implements Comparable {
      */
 
     //protected HSSFRow(Workbook book, Sheet sheet, short rowNum)
-    protected HSSFRow(Workbook book, Sheet sheet, int rowNum)
+    protected HSSFRow(HSSFWorkbook book, Sheet sheet, int rowNum)
     {
         this.rowNum = rowNum;
         this.book = book;
@@ -99,7 +99,7 @@ public final class HSSFRow implements Comparable {
      * @see org.apache.poi.hssf.usermodel.HSSFSheet#createRow(int)
      */
 
-    protected HSSFRow(Workbook book, Sheet sheet, RowRecord record)
+    protected HSSFRow(HSSFWorkbook book, Sheet sheet, RowRecord record)
     {
         this.book = book;
         this.sheet = sheet;
index 197139ccc3a29f0d205215bbeed8e9af0839a3db..3558618e76fd81efdc44ceffcde233b56f747c6c 100644 (file)
@@ -194,7 +194,7 @@ public final class HSSFSheet {
      */
     public HSSFRow createRow(int rownum)
     {
-        HSSFRow row = new HSSFRow(book, sheet, rownum);
+        HSSFRow row = new HSSFRow(workbook, sheet, rownum);
 
         addRow(row, true);
         return row;
@@ -209,7 +209,7 @@ public final class HSSFSheet {
 
     private HSSFRow createRowFromRecord(RowRecord row)
     {
-        HSSFRow hrow = new HSSFRow(book, sheet, row);
+        HSSFRow hrow = new HSSFRow(workbook, sheet, row);
 
         addRow(hrow, false);
         return hrow;
@@ -394,7 +394,7 @@ public final class HSSFSheet {
 
        //formula fields ( size and data )
        String str_formula = obj_validation.getFirstFormula();
-       FormulaParser fp = new FormulaParser(str_formula, book);
+       FormulaParser fp = new FormulaParser(str_formula, workbook);
        fp.parse();
        Stack ptg_arr = new Stack();
        Ptg[] ptg  = fp.getRPNPtg();
@@ -418,7 +418,7 @@ public final class HSSFSheet {
        if ( obj_validation.getSecondFormula() != null )
        {
          str_formula = obj_validation.getSecondFormula();
-         fp = new FormulaParser(str_formula, book);
+         fp = new FormulaParser(str_formula, workbook);
          fp.parse();
          ptg_arr = new Stack();
          ptg  = fp.getRPNPtg();
@@ -1264,7 +1264,7 @@ public final class HSSFSheet {
                     // Since it's a formula cell, process the
                     //  formula string, and look to see if
                     //  it contains any references
-                    FormulaParser fp = new FormulaParser(c.getCellFormula(), workbook.getWorkbook());
+                    FormulaParser fp = new FormulaParser(c.getCellFormula(), workbook);
                     fp.parse();
 
                     // Look for references, and update if needed
@@ -1874,9 +1874,8 @@ public final class HSSFSheet {
              HSSFBorderFormatting bordFmt,
              HSSFPatternFormatting patternFmt) {
         
-        Workbook wb = workbook.getWorkbook();
-        CFRuleRecord rr = CFRuleRecord.create(wb, comparisonOperation, formula1, formula2);
-        return new HSSFConditionalFormattingRule(wb, rr, fontFmt, bordFmt, patternFmt);
+        CFRuleRecord rr = CFRuleRecord.create(workbook, comparisonOperation, formula1, formula2);
+        return new HSSFConditionalFormattingRule(workbook, rr, fontFmt, bordFmt, patternFmt);
      }
 
      /**
@@ -1895,9 +1894,8 @@ public final class HSSFSheet {
              HSSFFontFormatting fontFmt,
              HSSFBorderFormatting bordFmt,
              HSSFPatternFormatting patternFmt) {
-         Workbook wb = workbook.getWorkbook();
-         CFRuleRecord rr = CFRuleRecord.create(wb, formula);
-         return new HSSFConditionalFormattingRule(wb, rr, fontFmt, bordFmt, patternFmt);
+         CFRuleRecord rr = CFRuleRecord.create(workbook, formula);
+         return new HSSFConditionalFormattingRule(workbook, rr, fontFmt, bordFmt, patternFmt);
      }
 
      /**
index ee5cfdb9fc18b10eb23f1128ead710f2582cd234..30776608ba71d5a4ea1418b4d0a77425289c2d83 100644 (file)
@@ -36,6 +36,7 @@ import org.apache.poi.hssf.record.formula.Area3DPtg;
 import org.apache.poi.hssf.record.formula.MemFuncPtg;
 import org.apache.poi.hssf.record.formula.UnionPtg;
 import org.apache.poi.hssf.util.CellReference;
+import org.apache.poi.hssf.util.SheetReferences;
 import org.apache.poi.poifs.filesystem.*;
 import org.apache.poi.util.POILogFactory;
 import org.apache.poi.util.POILogger;
@@ -249,7 +250,7 @@ public class HSSFWorkbook extends POIDocument
         }
 
         for (int i = 0 ; i < workbook.getNumNames() ; ++i){
-            HSSFName name = new HSSFName(workbook, workbook.getNameRecord(i));
+            HSSFName name = new HSSFName(this, workbook.getNameRecord(i));
             names.add(name);
         }
     }
@@ -522,6 +523,17 @@ public class HSSFWorkbook extends POIDocument
        }
        return -1;
     }
+    
+    /**
+     * Returns the external sheet index of the sheet
+     *  with the given internal index, creating one
+     *  if needed.
+     * Used by some of the more obscure formula and 
+     *  named range things.
+     */
+    public short getExternalSheetIndex(int internalSheetIndex) {
+       return workbook.checkExternSheet(internalSheetIndex);
+    }
 
     /**
      * create an HSSFSheet for this HSSFWorkbook, adds it to the sheets and returns
@@ -647,6 +659,10 @@ public class HSSFWorkbook extends POIDocument
         }
         return retval;
     }
+    
+    public SheetReferences getSheetReferences() {
+       return workbook.getSheetReferences();
+    }
 
     /**
      * removes sheet at the given index
@@ -790,7 +806,7 @@ public class HSSFWorkbook extends POIDocument
 
         if (isNewRecord)
         {
-            HSSFName newName = new HSSFName(workbook, nameRecord);
+            HSSFName newName = new HSSFName(this, nameRecord);
             names.add(newName);
         }
 
@@ -1101,6 +1117,17 @@ public class HSSFWorkbook extends POIDocument
 
         return result;
     }
+    
+    /**
+     * TODO - make this less cryptic / move elsewhere
+     * @param refIndex Index to REF entry in EXTERNSHEET record in the Link Table
+     * @param definedNameIndex zero-based to DEFINEDNAME or EXTERNALNAME record
+     * @return the string representation of the defined or external name
+     */
+    public String resolveNameXText(int refIndex, int definedNameIndex) {
+       return workbook.resolveNameXText(refIndex, definedNameIndex);
+    }
+
 
        /**
         * Sets the printarea for the sheet provided
@@ -1159,7 +1186,7 @@ public class HSSFWorkbook extends POIDocument
                if (name == null) return null;
                //adding one here because 0 indicates a global named region; doesnt make sense for print areas
 
-               return name.getAreaReference(workbook);
+               return name.getAreaReference(this);
        }
 
     /**
@@ -1176,7 +1203,7 @@ public class HSSFWorkbook extends POIDocument
     public HSSFName createName(){
         NameRecord nameRecord = workbook.createName();
 
-        HSSFName newName = new HSSFName(workbook, nameRecord);
+        HSSFName newName = new HSSFName(this, nameRecord);
 
         names.add(newName);
 
index 2589aa90dd0b2830fdd14d3c67aa6df445526752..31b4dd180abbe4e9b07c6e9f33913a36275d5770 100644 (file)
@@ -142,7 +142,7 @@ public final class TestFormulaParser extends TestCase {
         assertEquals(true, flag.getValue());
         assertEquals("Y", y.getValue());
         assertEquals("N", n.getValue());
-        assertEquals("IF", funif.toFormulaString((Workbook) null));
+        assertEquals("IF", funif.toFormulaString((HSSFWorkbook) null));
         assertTrue("Goto ptg exists", goto1.isGoto());
     }
 
@@ -283,7 +283,7 @@ public final class TestFormulaParser extends TestCase {
        }
        
     public void testMacroFunction() {
-        Workbook w = Workbook.createWorkbook();
+       HSSFWorkbook w = new HSSFWorkbook();
         FormulaParser fp = new FormulaParser("FOO()", w);
         fp.parse();
         Ptg[] ptg = fp.getRPNPtg();
@@ -589,8 +589,7 @@ public final class TestFormulaParser extends TestCase {
      * a formula consisting of a single no-arg function got rendered without the function braces
      */
     public void testToFormulaStringZeroArgFunction() {
-
-        Workbook book = Workbook.createWorkbook(); // not really used in this test
+       HSSFWorkbook book = new HSSFWorkbook();
 
         Ptg[] ptgs = {
                 new FuncPtg(10, 0),
@@ -889,7 +888,7 @@ public final class TestFormulaParser extends TestCase {
         }
     }
     public void testFuncPtgSelection() {
-        Workbook book = Workbook.createWorkbook();
+       HSSFWorkbook book = new HSSFWorkbook();
         Ptg[] ptgs;
         ptgs = FormulaParser.parse("countif(A1:A2, 1)", book);
         assertEquals(3, ptgs.length);
index 8f7593f09ff2ab7437aefb95534dbacefb6beeaf..ebc41bafead7efdbe79f2b04a564fe706b1413a5 100644 (file)
@@ -19,11 +19,11 @@ package org.apache.poi.hssf.record;
 
 import junit.framework.TestCase;
 
-import org.apache.poi.hssf.model.Workbook;
 import org.apache.poi.hssf.record.CFRuleRecord.ComparisonOperator;
 import org.apache.poi.hssf.record.cf.BorderFormatting;
 import org.apache.poi.hssf.record.cf.FontFormatting;
 import org.apache.poi.hssf.record.cf.PatternFormatting;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.hssf.util.HSSFColor;
 import org.apache.poi.util.LittleEndian;
 
@@ -38,7 +38,7 @@ public final class TestCFRuleRecord extends TestCase
 
        public void testCreateCFRuleRecord () 
        {
-               Workbook workbook = Workbook.createWorkbook();
+               HSSFWorkbook workbook = new HSSFWorkbook();
                CFRuleRecord record = CFRuleRecord.create(workbook, "7");
                testCFRuleRecord(record);
 
@@ -278,7 +278,7 @@ public final class TestCFRuleRecord extends TestCase
        }
 
        public void testWrite() {
-               Workbook workbook = Workbook.createWorkbook();
+               HSSFWorkbook workbook = new HSSFWorkbook();
                CFRuleRecord rr = CFRuleRecord.create(workbook, ComparisonOperator.BETWEEN, "5", "10");
 
                PatternFormatting patternFormatting = new PatternFormatting();
index f605097768d5523e013c254d6045fd8785b40aa0..2ae8230d5e95dd1f36195d6ac3c878bb80805499 100644 (file)
@@ -24,12 +24,12 @@ import java.util.List;
 
 import junit.framework.TestCase;
 
-import org.apache.poi.hssf.model.Workbook;
 import org.apache.poi.hssf.record.CFHeaderRecord;
 import org.apache.poi.hssf.record.CFRuleRecord;
 import org.apache.poi.hssf.record.RecordFactory;
 import org.apache.poi.hssf.record.CFRuleRecord.ComparisonOperator;
 import org.apache.poi.hssf.record.cf.CellRange;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 
 /**
  * Tests the serialization and deserialization of the CFRecordsAggregate
@@ -42,7 +42,7 @@ public final class TestCFRecordsAggregate extends TestCase
 
        public void testCFRecordsAggregate() 
        {
-               Workbook workbook = Workbook.createWorkbook();
+               HSSFWorkbook workbook = new HSSFWorkbook();
                List recs = new ArrayList();
                CFHeaderRecord header = new CFHeaderRecord();
                CFRuleRecord rule1 = CFRuleRecord.create(workbook, "7");
index b8d223a4a883839b0c5c3842f0cdecc4af71781f..db29380a9cc65abe794fddf8b7ab8748f7897e48 100644 (file)
@@ -51,13 +51,9 @@ public abstract class AbstractPtgTestCase extends TestCase {
     /**
      * Creates a new Workbook and adds one sheet with the specified name
      */
-    protected static final Workbook createWorkbookWithSheet(String sheetName) {
-        
-        Workbook book = Workbook.createWorkbook();
-        // this creates sheet if it doesn't exist
-        book.checkExternSheet(0);
-        // TODO - this call alone does not create the sheet even though the javadoc says it does
-        book.setSheetName(0, sheetName); 
+    protected static final HSSFWorkbook createWorkbookWithSheet(String sheetName) {
+        HSSFWorkbook book = new HSSFWorkbook();
+        book.createSheet(sheetName);
         return book;
     }
 }
index 2af50d4b93b76e8dc68310df334a56b7825999a9..e83a59b42db4681a9a5ba79875b02e075c2c35d5 100644 (file)
@@ -18,7 +18,7 @@
 
 package org.apache.poi.hssf.record.formula;
 
-import org.apache.poi.hssf.model.Workbook;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 
 /**
  * Tests for Area3DPtg
@@ -35,7 +35,7 @@ public final class TestArea3DPtg extends AbstractPtgTestCase {
                Area3DPtg target = new Area3DPtg("A1:B1", (short)0);
                
                String sheetName = "my sheet";
-               Workbook book = createWorkbookWithSheet(sheetName);
+               HSSFWorkbook book = createWorkbookWithSheet(sheetName);
                assertEquals("'my sheet'!A1:B1", target.toFormulaString(book));
                
         book.setSheetName(0, "Sheet1");
@@ -44,7 +44,4 @@ public final class TestArea3DPtg extends AbstractPtgTestCase {
         book.setSheetName(0, "C64");
         assertEquals("'C64'!A1:B1", target.toFormulaString(book));
        }
-
-
-
 }
index b5fbe3b80d1158a438c7d31ebc8e8d635602a0b8..4de0c7bdb270b240d648d508b4f280a500dd7d5c 100644 (file)
@@ -18,7 +18,7 @@
 
 package org.apache.poi.hssf.record.formula;
 
-import org.apache.poi.hssf.model.Workbook;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 
 /**
  * Tests for Ref3DPtg
@@ -31,7 +31,7 @@ public final class TestRef3DPtg extends AbstractPtgTestCase {
                
                Ref3DPtg target = new Ref3DPtg("A1", (short)0);
                
-               Workbook book = createWorkbookWithSheet("my sheet");
+               HSSFWorkbook book = createWorkbookWithSheet("my sheet");
                
                assertEquals("'my sheet'!A1", target.toFormulaString(book));
 
index fdad5f44d8f9ef7c8788e105af648404066ad15d..1e26fa706ed1f90cb79111b85e42a388969bb31a 100644 (file)
@@ -26,6 +26,7 @@ import org.apache.poi.hssf.record.formula.AbstractFunctionPtg;
 import org.apache.poi.hssf.record.formula.FuncPtg;
 import org.apache.poi.hssf.record.formula.FuncVarPtg;
 import org.apache.poi.hssf.record.formula.Ptg;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 /**
  * Tests parsing of some built-in functions that were not properly
  * registered in POI as bug #44675, #44733 (March/April 2008).
@@ -35,7 +36,7 @@ import org.apache.poi.hssf.record.formula.Ptg;
 public final class TestParseMissingBuiltInFuncs extends TestCase {
 
        private static Ptg[] parse(String formula) {
-               Workbook book = Workbook.createWorkbook();
+               HSSFWorkbook book = new HSSFWorkbook();
                return FormulaParser.parse(formula, book);
        }
        private static void confirmFunc(String formula, int expPtgArraySize, boolean isVarArgFunc, int funcIx) {
@@ -57,7 +58,7 @@ public final class TestParseMissingBuiltInFuncs extends TestCase {
                assertEquals(expCls, ptgF.getClass());
                
                // check that parsed Ptg array converts back to formula text OK
-               Workbook book = Workbook.createWorkbook();
+               HSSFWorkbook book = new HSSFWorkbook();
                String reRenderedFormula = FormulaParser.toFormulaString(book, ptgs);
                assertEquals(formula, reRenderedFormula);
        }
index 007cbd5760a9efb42d67f3e40b71d258f8eca00f..19069d32b25f645d7ad00ed7772a46c116b44d5d 100644 (file)
@@ -203,7 +203,7 @@ public final class TestFormulaEvaluatorBugs extends TestCase {
                assertEquals(2, ptg.getLastColumn());
                assertEquals(0, ptg.getFirstRow());
                assertEquals(65535, ptg.getLastRow());
-               assertEquals("C:C", ptg.toFormulaString(wb.getWorkbook()));
+               assertEquals("C:C", ptg.toFormulaString(wb));
 
                // Will show as C:C, but won't know how many
                //  rows it covers as we don't have the sheet
index a72c039cb821b7a638b22489fb02f2c9bf7dd693..5eb2abb6e690569e4ed13a4fdc01cde391c27593 100644 (file)
@@ -211,12 +211,12 @@ public final class TestAreaReference extends TestCase {
         Area3DPtg ptgB = (Area3DPtg)def.get(1);
         Area3DPtg ptgC = (Area3DPtg)def.get(2);
         UnionPtg ptgD = (UnionPtg)def.get(3);
-        assertEquals("", ptgA.toFormulaString(workbook));
-        assertEquals(refA, ptgB.toFormulaString(workbook));
-        assertEquals(refB, ptgC.toFormulaString(workbook));
-        assertEquals(",", ptgD.toFormulaString(workbook));
+        assertEquals("", ptgA.toFormulaString(wb));
+        assertEquals(refA, ptgB.toFormulaString(wb));
+        assertEquals(refB, ptgC.toFormulaString(wb));
+        assertEquals(",", ptgD.toFormulaString(wb));
 
-        assertEquals(ref, nr.getAreaReference(workbook));
+        assertEquals(ref, nr.getAreaReference(wb));
 
         // Check the high level definition
         int idx = wb.getNameIndex("test");