From a51afa06f48fa2cbe38325b8292ca84478b19997 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Tue, 15 Apr 2008 16:00:50 +0000 Subject: [PATCH] Nice and small change here... Update the formula parser code to use usermodel.HSSFWorkbook instead of model.Workbook. This should keep things a bit cleaner, and make it much easier for the formula code to work with XSSF git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@648303 13f79535-47bb-0310-9956-ffa450edef68 --- src/documentation/content/xdocs/changes.xml | 1 + src/documentation/content/xdocs/status.xml | 1 + .../apache/poi/hssf/dev/FormulaViewer.java | 7 ++-- .../apache/poi/hssf/model/FormulaParser.java | 17 ++++----- .../apache/poi/hssf/record/CFRuleRecord.java | 7 ++-- .../apache/poi/hssf/record/NameRecord.java | 15 +++++--- .../record/formula/AbstractFunctionPtg.java | 4 +-- .../poi/hssf/record/formula/AddPtg.java | 4 +-- .../poi/hssf/record/formula/Area3DPtg.java | 4 +-- .../poi/hssf/record/formula/AreaAPtg.java | 2 +- .../poi/hssf/record/formula/AreaErrPtg.java | 4 +-- .../poi/hssf/record/formula/AreaNAPtg.java | 4 +-- .../poi/hssf/record/formula/AreaNPtg.java | 4 +-- .../poi/hssf/record/formula/AreaNVPtg.java | 4 +-- .../poi/hssf/record/formula/AreaPtg.java | 6 ++-- .../poi/hssf/record/formula/AreaVPtg.java | 2 +- .../poi/hssf/record/formula/ArrayPtg.java | 4 +-- .../poi/hssf/record/formula/ArrayPtgA.java | 2 +- .../poi/hssf/record/formula/ArrayPtgV.java | 2 +- .../poi/hssf/record/formula/AttrPtg.java | 10 +++--- .../poi/hssf/record/formula/BoolPtg.java | 4 +-- .../poi/hssf/record/formula/ConcatPtg.java | 4 +-- .../poi/hssf/record/formula/DividePtg.java | 6 ++-- .../poi/hssf/record/formula/EqualPtg.java | 6 ++-- .../poi/hssf/record/formula/ErrPtg.java | 4 +-- .../poi/hssf/record/formula/ExpPtg.java | 4 +-- .../hssf/record/formula/GreaterEqualPtg.java | 6 ++-- .../hssf/record/formula/GreaterThanPtg.java | 4 +-- .../poi/hssf/record/formula/IntPtg.java | 4 +-- .../hssf/record/formula/IntersectionPtg.java | 4 +-- .../poi/hssf/record/formula/LessEqualPtg.java | 6 ++-- .../poi/hssf/record/formula/LessThanPtg.java | 4 +-- .../poi/hssf/record/formula/MemAreaPtg.java | 4 +-- .../poi/hssf/record/formula/MemErrPtg.java | 4 +-- .../poi/hssf/record/formula/MemFuncPtg.java | 4 +-- .../hssf/record/formula/MissingArgPtg.java | 4 +-- .../poi/hssf/record/formula/MultiplyPtg.java | 10 +++--- .../poi/hssf/record/formula/NamePtg.java | 28 +++++++-------- .../poi/hssf/record/formula/NameXPtg.java | 4 +-- .../poi/hssf/record/formula/NotEqualPtg.java | 6 ++-- .../poi/hssf/record/formula/NumberPtg.java | 4 +-- .../hssf/record/formula/ParenthesisPtg.java | 4 +-- .../poi/hssf/record/formula/PercentPtg.java | 4 +-- .../poi/hssf/record/formula/PowerPtg.java | 6 ++-- .../apache/poi/hssf/record/formula/Ptg.java | 4 +-- .../poi/hssf/record/formula/RangePtg.java | 4 +-- .../poi/hssf/record/formula/Ref3DPtg.java | 8 ++--- .../poi/hssf/record/formula/RefErrorPtg.java | 4 +-- .../poi/hssf/record/formula/RefNAPtg.java | 4 +-- .../poi/hssf/record/formula/RefNPtg.java | 4 +-- .../poi/hssf/record/formula/RefNVPtg.java | 4 +-- .../poi/hssf/record/formula/ReferencePtg.java | 4 +-- .../poi/hssf/record/formula/StringPtg.java | 4 +-- .../poi/hssf/record/formula/SubtractPtg.java | 4 +-- .../hssf/record/formula/UnaryMinusPtg.java | 4 +-- .../poi/hssf/record/formula/UnaryPlusPtg.java | 4 +-- .../poi/hssf/record/formula/UnionPtg.java | 4 +-- .../poi/hssf/record/formula/UnknownPtg.java | 4 +-- .../apache/poi/hssf/usermodel/HSSFCell.java | 32 ++++++++--------- .../usermodel/HSSFConditionalFormatting.java | 4 +-- .../HSSFConditionalFormattingRule.java | 6 ++-- .../hssf/usermodel/HSSFFormulaEvaluator.java | 6 ++-- .../apache/poi/hssf/usermodel/HSSFName.java | 13 +++---- .../apache/poi/hssf/usermodel/HSSFRow.java | 6 ++-- .../apache/poi/hssf/usermodel/HSSFSheet.java | 20 +++++------ .../poi/hssf/usermodel/HSSFWorkbook.java | 35 ++++++++++++++++--- .../poi/hssf/model/TestFormulaParser.java | 9 +++-- .../poi/hssf/record/TestCFRuleRecord.java | 6 ++-- .../aggregates/TestCFRecordsAggregate.java | 4 +-- .../record/formula/AbstractPtgTestCase.java | 10 ++---- .../hssf/record/formula/TestArea3DPtg.java | 7 ++-- .../poi/hssf/record/formula/TestRef3DPtg.java | 4 +-- .../TestParseMissingBuiltInFuncs.java | 5 +-- .../usermodel/TestFormulaEvaluatorBugs.java | 2 +- .../poi/hssf/util/TestAreaReference.java | 10 +++--- 75 files changed, 254 insertions(+), 227 deletions(-) diff --git a/src/documentation/content/xdocs/changes.xml b/src/documentation/content/xdocs/changes.xml index 62e84c646..0850c6ce2 100644 --- a/src/documentation/content/xdocs/changes.xml +++ b/src/documentation/content/xdocs/changes.xml @@ -37,6 +37,7 @@ + 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 Fix the logger used by POIFSFileSystem, so that commons-logging isn't required when not used Update HSLFSlideShow and HSSFWorkbook to take advantage of POIFS updates, and allow reading embeded documents Improve how POIFS works with directory entries, and update HWPFDocument to support reading an embeded word document diff --git a/src/documentation/content/xdocs/status.xml b/src/documentation/content/xdocs/status.xml index 2c30a5552..aaf35f4d8 100644 --- a/src/documentation/content/xdocs/status.xml +++ b/src/documentation/content/xdocs/status.xml @@ -34,6 +34,7 @@ + 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 Fix the logger used by POIFSFileSystem, so that commons-logging isn't required when not used Update HSLFSlideShow and HSSFWorkbook to take advantage of POIFS updates, and allow reading embeded documents Improve how POIFS works with directory entries, and update HWPFDocument to support reading an embeded word document diff --git a/src/java/org/apache/poi/hssf/dev/FormulaViewer.java b/src/java/org/apache/poi/hssf/dev/FormulaViewer.java index eb28c9006..91d342099 100644 --- a/src/java/org/apache/poi/hssf/dev/FormulaViewer.java +++ b/src/java/org/apache/poi/hssf/dev/FormulaViewer.java @@ -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;inull if formula was null. */ - private static Ptg[] parseFormula(String formula, Workbook workbook) + private static Ptg[] parseFormula(String formula, HSSFWorkbook workbook) { if(formula == null) { return null; diff --git a/src/java/org/apache/poi/hssf/record/NameRecord.java b/src/java/org/apache/poi/hssf/record/NameRecord.java index a06bc8aed..23af4b17c 100644 --- a/src/java/org/apache/poi/hssf/record/NameRecord.java +++ b/src/java/org/apache/poi/hssf/record/NameRecord.java @@ -18,12 +18,17 @@ 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){ diff --git a/src/java/org/apache/poi/hssf/record/formula/AbstractFunctionPtg.java b/src/java/org/apache/poi/hssf/record/formula/AbstractFunctionPtg.java index f0fc1fccf..82d85cceb 100644 --- a/src/java/org/apache/poi/hssf/record/formula/AbstractFunctionPtg.java +++ b/src/java/org/apache/poi/hssf/record/formula/AbstractFunctionPtg.java @@ -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(); } diff --git a/src/java/org/apache/poi/hssf/record/formula/AddPtg.java b/src/java/org/apache/poi/hssf/record/formula/AddPtg.java index 12c49f114..4f79d7602 100644 --- a/src/java/org/apache/poi/hssf/record/formula/AddPtg.java +++ b/src/java/org/apache/poi/hssf/record/formula/AddPtg.java @@ -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 "+"; } diff --git a/src/java/org/apache/poi/hssf/record/formula/Area3DPtg.java b/src/java/org/apache/poi/hssf/record/formula/Area3DPtg.java index 33278e25e..b0322ab78 100644 --- a/src/java/org/apache/poi/hssf/record/formula/Area3DPtg.java +++ b/src/java/org/apache/poi/hssf/record/formula/Area3DPtg.java @@ -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(); diff --git a/src/java/org/apache/poi/hssf/record/formula/AreaAPtg.java b/src/java/org/apache/poi/hssf/record/formula/AreaAPtg.java index 515d07dd4..6ff0b05b1 100644 --- a/src/java/org/apache/poi/hssf/record/formula/AreaAPtg.java +++ b/src/java/org/apache/poi/hssf/record/formula/AreaAPtg.java @@ -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. diff --git a/src/java/org/apache/poi/hssf/record/formula/AreaErrPtg.java b/src/java/org/apache/poi/hssf/record/formula/AreaErrPtg.java index ed48431de..187957e58 100644 --- a/src/java/org/apache/poi/hssf/record/formula/AreaErrPtg.java +++ b/src/java/org/apache/poi/hssf/record/formula/AreaErrPtg.java @@ -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!"; } diff --git a/src/java/org/apache/poi/hssf/record/formula/AreaNAPtg.java b/src/java/org/apache/poi/hssf/record/formula/AreaNAPtg.java index da24158ac..6b0eb908a 100644 --- a/src/java/org/apache/poi/hssf/record/formula/AreaNAPtg.java +++ b/src/java/org/apache/poi/hssf/record/formula/AreaNAPtg.java @@ -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"); } diff --git a/src/java/org/apache/poi/hssf/record/formula/AreaNPtg.java b/src/java/org/apache/poi/hssf/record/formula/AreaNPtg.java index 9507e37a8..71e413fea 100644 --- a/src/java/org/apache/poi/hssf/record/formula/AreaNPtg.java +++ b/src/java/org/apache/poi/hssf/record/formula/AreaNPtg.java @@ -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"); } diff --git a/src/java/org/apache/poi/hssf/record/formula/AreaNVPtg.java b/src/java/org/apache/poi/hssf/record/formula/AreaNVPtg.java index c91ed502c..2ebf01982 100644 --- a/src/java/org/apache/poi/hssf/record/formula/AreaNVPtg.java +++ b/src/java/org/apache/poi/hssf/record/formula/AreaNVPtg.java @@ -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"); } diff --git a/src/java/org/apache/poi/hssf/record/formula/AreaPtg.java b/src/java/org/apache/poi/hssf/record/formula/AreaPtg.java index be34e0074..27e4d1759 100644 --- a/src/java/org/apache/poi/hssf/record/formula/AreaPtg.java +++ b/src/java/org/apache/poi/hssf/record/formula/AreaPtg.java @@ -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()); diff --git a/src/java/org/apache/poi/hssf/record/formula/AreaVPtg.java b/src/java/org/apache/poi/hssf/record/formula/AreaVPtg.java index 42dc11fa3..e5e3d525c 100644 --- a/src/java/org/apache/poi/hssf/record/formula/AreaVPtg.java +++ b/src/java/org/apache/poi/hssf/record/formula/AreaVPtg.java @@ -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. diff --git a/src/java/org/apache/poi/hssf/record/formula/ArrayPtg.java b/src/java/org/apache/poi/hssf/record/formula/ArrayPtg.java index 12166b796..01942be55 100644 --- a/src/java/org/apache/poi/hssf/record/formula/ArrayPtg.java +++ b/src/java/org/apache/poi/hssf/record/formula/ArrayPtg.java @@ -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("{"); diff --git a/src/java/org/apache/poi/hssf/record/formula/ArrayPtgA.java b/src/java/org/apache/poi/hssf/record/formula/ArrayPtgA.java index 0319175ba..616f737b8 100644 --- a/src/java/org/apache/poi/hssf/record/formula/ArrayPtgA.java +++ b/src/java/org/apache/poi/hssf/record/formula/ArrayPtgA.java @@ -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; diff --git a/src/java/org/apache/poi/hssf/record/formula/ArrayPtgV.java b/src/java/org/apache/poi/hssf/record/formula/ArrayPtgV.java index 49a28c97c..94aa32383 100644 --- a/src/java/org/apache/poi/hssf/record/formula/ArrayPtgV.java +++ b/src/java/org/apache/poi/hssf/record/formula/ArrayPtgV.java @@ -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; diff --git a/src/java/org/apache/poi/hssf/record/formula/AttrPtg.java b/src/java/org/apache/poi/hssf/record/formula/AttrPtg.java index d355fbfa1..351d44a42 100644 --- a/src/java/org/apache/poi/hssf/record/formula/AttrPtg.java +++ b/src/java/org/apache/poi/hssf/record/formula/AttrPtg.java @@ -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)"; } diff --git a/src/java/org/apache/poi/hssf/record/formula/BoolPtg.java b/src/java/org/apache/poi/hssf/record/formula/BoolPtg.java index 0248f8466..80c9f39d7 100644 --- a/src/java/org/apache/poi/hssf/record/formula/BoolPtg.java +++ b/src/java/org/apache/poi/hssf/record/formula/BoolPtg.java @@ -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"; } diff --git a/src/java/org/apache/poi/hssf/record/formula/ConcatPtg.java b/src/java/org/apache/poi/hssf/record/formula/ConcatPtg.java index 41d2de0cb..951872f43 100644 --- a/src/java/org/apache/poi/hssf/record/formula/ConcatPtg.java +++ b/src/java/org/apache/poi/hssf/record/formula/ConcatPtg.java @@ -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; } diff --git a/src/java/org/apache/poi/hssf/record/formula/DividePtg.java b/src/java/org/apache/poi/hssf/record/formula/DividePtg.java index cde67c5dc..70fa62e58 100644 --- a/src/java/org/apache/poi/hssf/record/formula/DividePtg.java +++ b/src/java/org/apache/poi/hssf/record/formula/DividePtg.java @@ -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(); } diff --git a/src/java/org/apache/poi/hssf/record/formula/EqualPtg.java b/src/java/org/apache/poi/hssf/record/formula/EqualPtg.java index 26f66e4fe..a08a863d1 100644 --- a/src/java/org/apache/poi/hssf/record/formula/EqualPtg.java +++ b/src/java/org/apache/poi/hssf/record/formula/EqualPtg.java @@ -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(); } diff --git a/src/java/org/apache/poi/hssf/record/formula/ErrPtg.java b/src/java/org/apache/poi/hssf/record/formula/ErrPtg.java index 26cc2e027..a16992f94 100644 --- a/src/java/org/apache/poi/hssf/record/formula/ErrPtg.java +++ b/src/java/org/apache/poi/hssf/record/formula/ErrPtg.java @@ -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); } diff --git a/src/java/org/apache/poi/hssf/record/formula/ExpPtg.java b/src/java/org/apache/poi/hssf/record/formula/ExpPtg.java index a7fc0274a..0cd54e5f5 100644 --- a/src/java/org/apache/poi/hssf/record/formula/ExpPtg.java +++ b/src/java/org/apache/poi/hssf/record/formula/ExpPtg.java @@ -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"); } diff --git a/src/java/org/apache/poi/hssf/record/formula/GreaterEqualPtg.java b/src/java/org/apache/poi/hssf/record/formula/GreaterEqualPtg.java index d8d08fecb..677d78c3e 100755 --- a/src/java/org/apache/poi/hssf/record/formula/GreaterEqualPtg.java +++ b/src/java/org/apache/poi/hssf/record/formula/GreaterEqualPtg.java @@ -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(); diff --git a/src/java/org/apache/poi/hssf/record/formula/GreaterThanPtg.java b/src/java/org/apache/poi/hssf/record/formula/GreaterThanPtg.java index 6d66307b3..6501203ed 100644 --- a/src/java/org/apache/poi/hssf/record/formula/GreaterThanPtg.java +++ b/src/java/org/apache/poi/hssf/record/formula/GreaterThanPtg.java @@ -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; } diff --git a/src/java/org/apache/poi/hssf/record/formula/IntPtg.java b/src/java/org/apache/poi/hssf/record/formula/IntPtg.java index f4106b6aa..f3dd16f06 100644 --- a/src/java/org/apache/poi/hssf/record/formula/IntPtg.java +++ b/src/java/org/apache/poi/hssf/record/formula/IntPtg.java @@ -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() { diff --git a/src/java/org/apache/poi/hssf/record/formula/IntersectionPtg.java b/src/java/org/apache/poi/hssf/record/formula/IntersectionPtg.java index 9b225912e..8f5bddc19 100644 --- a/src/java/org/apache/poi/hssf/record/formula/IntersectionPtg.java +++ b/src/java/org/apache/poi/hssf/record/formula/IntersectionPtg.java @@ -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 " "; } diff --git a/src/java/org/apache/poi/hssf/record/formula/LessEqualPtg.java b/src/java/org/apache/poi/hssf/record/formula/LessEqualPtg.java index c395ed3b1..f42966394 100755 --- a/src/java/org/apache/poi/hssf/record/formula/LessEqualPtg.java +++ b/src/java/org/apache/poi/hssf/record/formula/LessEqualPtg.java @@ -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(); } diff --git a/src/java/org/apache/poi/hssf/record/formula/LessThanPtg.java b/src/java/org/apache/poi/hssf/record/formula/LessThanPtg.java index 4bccd9274..c23658d2d 100644 --- a/src/java/org/apache/poi/hssf/record/formula/LessThanPtg.java +++ b/src/java/org/apache/poi/hssf/record/formula/LessThanPtg.java @@ -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; } diff --git a/src/java/org/apache/poi/hssf/record/formula/MemAreaPtg.java b/src/java/org/apache/poi/hssf/record/formula/MemAreaPtg.java index ee0b76185..ec33d1092 100644 --- a/src/java/org/apache/poi/hssf/record/formula/MemAreaPtg.java +++ b/src/java/org/apache/poi/hssf/record/formula/MemAreaPtg.java @@ -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 } diff --git a/src/java/org/apache/poi/hssf/record/formula/MemErrPtg.java b/src/java/org/apache/poi/hssf/record/formula/MemErrPtg.java index bfc33c128..359c76e66 100644 --- a/src/java/org/apache/poi/hssf/record/formula/MemErrPtg.java +++ b/src/java/org/apache/poi/hssf/record/formula/MemErrPtg.java @@ -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#"; } diff --git a/src/java/org/apache/poi/hssf/record/formula/MemFuncPtg.java b/src/java/org/apache/poi/hssf/record/formula/MemFuncPtg.java index 89d4cae32..63c07a79e 100644 --- a/src/java/org/apache/poi/hssf/record/formula/MemFuncPtg.java +++ b/src/java/org/apache/poi/hssf/record/formula/MemFuncPtg.java @@ -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 ""; } diff --git a/src/java/org/apache/poi/hssf/record/formula/MissingArgPtg.java b/src/java/org/apache/poi/hssf/record/formula/MissingArgPtg.java index 17a31a4e6..d539405cd 100644 --- a/src/java/org/apache/poi/hssf/record/formula/MissingArgPtg.java +++ b/src/java/org/apache/poi/hssf/record/formula/MissingArgPtg.java @@ -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 " "; } diff --git a/src/java/org/apache/poi/hssf/record/formula/MultiplyPtg.java b/src/java/org/apache/poi/hssf/record/formula/MultiplyPtg.java index 626eff2b8..cbc0b6700 100644 --- a/src/java/org/apache/poi/hssf/record/formula/MultiplyPtg.java +++ b/src/java/org/apache/poi/hssf/record/formula/MultiplyPtg.java @@ -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(); } diff --git a/src/java/org/apache/poi/hssf/record/formula/NamePtg.java b/src/java/org/apache/poi/hssf/record/formula/NamePtg.java index 5405481a0..9d93f1e98 100644 --- a/src/java/org/apache/poi/hssf/record/formula/NamePtg.java +++ b/src/java/org/apache/poi/hssf/record/formula/NamePtg.java @@ -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;} diff --git a/src/java/org/apache/poi/hssf/record/formula/NameXPtg.java b/src/java/org/apache/poi/hssf/record/formula/NameXPtg.java index ccf5ab6fc..3036800b1 100644 --- a/src/java/org/apache/poi/hssf/record/formula/NameXPtg.java +++ b/src/java/org/apache/poi/hssf/record/formula/NameXPtg.java @@ -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); diff --git a/src/java/org/apache/poi/hssf/record/formula/NotEqualPtg.java b/src/java/org/apache/poi/hssf/record/formula/NotEqualPtg.java index 8eea4d800..5dbbec875 100755 --- a/src/java/org/apache/poi/hssf/record/formula/NotEqualPtg.java +++ b/src/java/org/apache/poi/hssf/record/formula/NotEqualPtg.java @@ -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(); diff --git a/src/java/org/apache/poi/hssf/record/formula/NumberPtg.java b/src/java/org/apache/poi/hssf/record/formula/NumberPtg.java index 43617f290..8ec67345b 100644 --- a/src/java/org/apache/poi/hssf/record/formula/NumberPtg.java +++ b/src/java/org/apache/poi/hssf/record/formula/NumberPtg.java @@ -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(); } diff --git a/src/java/org/apache/poi/hssf/record/formula/ParenthesisPtg.java b/src/java/org/apache/poi/hssf/record/formula/ParenthesisPtg.java index 374458a15..402dbd377 100644 --- a/src/java/org/apache/poi/hssf/record/formula/ParenthesisPtg.java +++ b/src/java/org/apache/poi/hssf/record/formula/ParenthesisPtg.java @@ -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 "()"; } diff --git a/src/java/org/apache/poi/hssf/record/formula/PercentPtg.java b/src/java/org/apache/poi/hssf/record/formula/PercentPtg.java index 9db4d6c43..0c59bb7ac 100644 --- a/src/java/org/apache/poi/hssf/record/formula/PercentPtg.java +++ b/src/java/org/apache/poi/hssf/record/formula/PercentPtg.java @@ -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 "%"; } diff --git a/src/java/org/apache/poi/hssf/record/formula/PowerPtg.java b/src/java/org/apache/poi/hssf/record/formula/PowerPtg.java index 73f41fa49..0dbb3ba28 100644 --- a/src/java/org/apache/poi/hssf/record/formula/PowerPtg.java +++ b/src/java/org/apache/poi/hssf/record/formula/PowerPtg.java @@ -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(); } diff --git a/src/java/org/apache/poi/hssf/record/formula/Ptg.java b/src/java/org/apache/poi/hssf/record/formula/Ptg.java index f006509c2..0e8c7741a 100644 --- a/src/java/org/apache/poi/hssf/record/formula/Ptg.java +++ b/src/java/org/apache/poi/hssf/record/formula/Ptg.java @@ -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 */ diff --git a/src/java/org/apache/poi/hssf/record/formula/RangePtg.java b/src/java/org/apache/poi/hssf/record/formula/RangePtg.java index 51df7844a..4726a70c1 100644 --- a/src/java/org/apache/poi/hssf/record/formula/RangePtg.java +++ b/src/java/org/apache/poi/hssf/record/formula/RangePtg.java @@ -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 ":"; } diff --git a/src/java/org/apache/poi/hssf/record/formula/Ref3DPtg.java b/src/java/org/apache/poi/hssf/record/formula/Ref3DPtg.java index 84ff659b3..3b4749c85 100644 --- a/src/java/org/apache/poi/hssf/record/formula/Ref3DPtg.java +++ b/src/java/org/apache/poi/hssf/record/formula/Ref3DPtg.java @@ -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); diff --git a/src/java/org/apache/poi/hssf/record/formula/RefErrorPtg.java b/src/java/org/apache/poi/hssf/record/formula/RefErrorPtg.java index 4d655756d..c29b55bf9 100755 --- a/src/java/org/apache/poi/hssf/record/formula/RefErrorPtg.java +++ b/src/java/org/apache/poi/hssf/record/formula/RefErrorPtg.java @@ -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!"; diff --git a/src/java/org/apache/poi/hssf/record/formula/RefNAPtg.java b/src/java/org/apache/poi/hssf/record/formula/RefNAPtg.java index 4e05e1387..6f18e4b94 100644 --- a/src/java/org/apache/poi/hssf/record/formula/RefNAPtg.java +++ b/src/java/org/apache/poi/hssf/record/formula/RefNAPtg.java @@ -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"); } diff --git a/src/java/org/apache/poi/hssf/record/formula/RefNPtg.java b/src/java/org/apache/poi/hssf/record/formula/RefNPtg.java index e062f0c4e..e7522e7e5 100644 --- a/src/java/org/apache/poi/hssf/record/formula/RefNPtg.java +++ b/src/java/org/apache/poi/hssf/record/formula/RefNPtg.java @@ -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"); } diff --git a/src/java/org/apache/poi/hssf/record/formula/RefNVPtg.java b/src/java/org/apache/poi/hssf/record/formula/RefNVPtg.java index 615a9c0b0..40b111b3e 100644 --- a/src/java/org/apache/poi/hssf/record/formula/RefNVPtg.java +++ b/src/java/org/apache/poi/hssf/record/formula/RefNVPtg.java @@ -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"); } diff --git a/src/java/org/apache/poi/hssf/record/formula/ReferencePtg.java b/src/java/org/apache/poi/hssf/record/formula/ReferencePtg.java index 4983c9d07..3df731c7a 100644 --- a/src/java/org/apache/poi/hssf/record/formula/ReferencePtg.java +++ b/src/java/org/apache/poi/hssf/record/formula/ReferencePtg.java @@ -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(); diff --git a/src/java/org/apache/poi/hssf/record/formula/StringPtg.java b/src/java/org/apache/poi/hssf/record/formula/StringPtg.java index 491b6c6c3..ca6fb55dc 100644 --- a/src/java/org/apache/poi/hssf/record/formula/StringPtg.java +++ b/src/java/org/apache/poi/hssf/record/formula/StringPtg.java @@ -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()+"\""; } diff --git a/src/java/org/apache/poi/hssf/record/formula/SubtractPtg.java b/src/java/org/apache/poi/hssf/record/formula/SubtractPtg.java index 384db9357..37af74ba9 100644 --- a/src/java/org/apache/poi/hssf/record/formula/SubtractPtg.java +++ b/src/java/org/apache/poi/hssf/record/formula/SubtractPtg.java @@ -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 "-"; } diff --git a/src/java/org/apache/poi/hssf/record/formula/UnaryMinusPtg.java b/src/java/org/apache/poi/hssf/record/formula/UnaryMinusPtg.java index 31efdcd63..7c134b97d 100644 --- a/src/java/org/apache/poi/hssf/record/formula/UnaryMinusPtg.java +++ b/src/java/org/apache/poi/hssf/record/formula/UnaryMinusPtg.java @@ -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 "+"; } diff --git a/src/java/org/apache/poi/hssf/record/formula/UnaryPlusPtg.java b/src/java/org/apache/poi/hssf/record/formula/UnaryPlusPtg.java index ce3ba7cf4..148c83fa4 100644 --- a/src/java/org/apache/poi/hssf/record/formula/UnaryPlusPtg.java +++ b/src/java/org/apache/poi/hssf/record/formula/UnaryPlusPtg.java @@ -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 "+"; } diff --git a/src/java/org/apache/poi/hssf/record/formula/UnionPtg.java b/src/java/org/apache/poi/hssf/record/formula/UnionPtg.java index 40298a0cf..8d00ec34d 100644 --- a/src/java/org/apache/poi/hssf/record/formula/UnionPtg.java +++ b/src/java/org/apache/poi/hssf/record/formula/UnionPtg.java @@ -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 ","; } diff --git a/src/java/org/apache/poi/hssf/record/formula/UnknownPtg.java b/src/java/org/apache/poi/hssf/record/formula/UnknownPtg.java index 1badf5197..56493d906 100644 --- a/src/java/org/apache/poi/hssf/record/formula/UnknownPtg.java +++ b/src/java/org/apache/poi/hssf/record/formula/UnknownPtg.java @@ -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"; } diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFCell.java b/src/java/org/apache/poi/hssf/usermodel/HSSFCell.java index 670b33372..81a338256 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFCell.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFCell.java @@ -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); } diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFConditionalFormatting.java b/src/java/org/apache/poi/hssf/usermodel/HSSFConditionalFormatting.java index d9e470a68..532133f93 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFConditionalFormatting.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFConditionalFormatting.java @@ -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() { diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFConditionalFormattingRule.java b/src/java/org/apache/poi/hssf/usermodel/HSSFConditionalFormattingRule.java index 490ff4d34..5d3436028 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFConditionalFormattingRule.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFConditionalFormattingRule.java @@ -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); diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFFormulaEvaluator.java b/src/java/org/apache/poi/hssf/usermodel/HSSFFormulaEvaluator.java index bb16fdfad..0a9c3dfa8 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFFormulaEvaluator.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFFormulaEvaluator.java @@ -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(""); diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFName.java b/src/java/org/apache/poi/hssf/usermodel/HSSFName.java index 73da4fe9c..91b3fcd0f 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFName.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFName.java @@ -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); diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFRow.java b/src/java/org/apache/poi/hssf/usermodel/HSSFRow.java index 75452dd94..0444843d2 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFRow.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFRow.java @@ -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; diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java b/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java index 197139ccc..3558618e7 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java @@ -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); } /** diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java b/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java index ee5cfdb9f..30776608b 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java @@ -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); diff --git a/src/testcases/org/apache/poi/hssf/model/TestFormulaParser.java b/src/testcases/org/apache/poi/hssf/model/TestFormulaParser.java index 2589aa90d..31b4dd180 100644 --- a/src/testcases/org/apache/poi/hssf/model/TestFormulaParser.java +++ b/src/testcases/org/apache/poi/hssf/model/TestFormulaParser.java @@ -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); diff --git a/src/testcases/org/apache/poi/hssf/record/TestCFRuleRecord.java b/src/testcases/org/apache/poi/hssf/record/TestCFRuleRecord.java index 8f7593f09..ebc41bafe 100644 --- a/src/testcases/org/apache/poi/hssf/record/TestCFRuleRecord.java +++ b/src/testcases/org/apache/poi/hssf/record/TestCFRuleRecord.java @@ -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(); diff --git a/src/testcases/org/apache/poi/hssf/record/aggregates/TestCFRecordsAggregate.java b/src/testcases/org/apache/poi/hssf/record/aggregates/TestCFRecordsAggregate.java index f60509776..2ae8230d5 100644 --- a/src/testcases/org/apache/poi/hssf/record/aggregates/TestCFRecordsAggregate.java +++ b/src/testcases/org/apache/poi/hssf/record/aggregates/TestCFRecordsAggregate.java @@ -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"); diff --git a/src/testcases/org/apache/poi/hssf/record/formula/AbstractPtgTestCase.java b/src/testcases/org/apache/poi/hssf/record/formula/AbstractPtgTestCase.java index b8d223a4a..db29380a9 100644 --- a/src/testcases/org/apache/poi/hssf/record/formula/AbstractPtgTestCase.java +++ b/src/testcases/org/apache/poi/hssf/record/formula/AbstractPtgTestCase.java @@ -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; } } diff --git a/src/testcases/org/apache/poi/hssf/record/formula/TestArea3DPtg.java b/src/testcases/org/apache/poi/hssf/record/formula/TestArea3DPtg.java index 2af50d4b9..e83a59b42 100644 --- a/src/testcases/org/apache/poi/hssf/record/formula/TestArea3DPtg.java +++ b/src/testcases/org/apache/poi/hssf/record/formula/TestArea3DPtg.java @@ -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)); } - - - } diff --git a/src/testcases/org/apache/poi/hssf/record/formula/TestRef3DPtg.java b/src/testcases/org/apache/poi/hssf/record/formula/TestRef3DPtg.java index b5fbe3b80..4de0c7bdb 100644 --- a/src/testcases/org/apache/poi/hssf/record/formula/TestRef3DPtg.java +++ b/src/testcases/org/apache/poi/hssf/record/formula/TestRef3DPtg.java @@ -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)); diff --git a/src/testcases/org/apache/poi/hssf/record/formula/function/TestParseMissingBuiltInFuncs.java b/src/testcases/org/apache/poi/hssf/record/formula/function/TestParseMissingBuiltInFuncs.java index fdad5f44d..1e26fa706 100644 --- a/src/testcases/org/apache/poi/hssf/record/formula/function/TestParseMissingBuiltInFuncs.java +++ b/src/testcases/org/apache/poi/hssf/record/formula/function/TestParseMissingBuiltInFuncs.java @@ -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); } diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestFormulaEvaluatorBugs.java b/src/testcases/org/apache/poi/hssf/usermodel/TestFormulaEvaluatorBugs.java index 007cbd576..19069d32b 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestFormulaEvaluatorBugs.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestFormulaEvaluatorBugs.java @@ -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 diff --git a/src/testcases/org/apache/poi/hssf/util/TestAreaReference.java b/src/testcases/org/apache/poi/hssf/util/TestAreaReference.java index a72c039cb..5eb2abb6e 100644 --- a/src/testcases/org/apache/poi/hssf/util/TestAreaReference.java +++ b/src/testcases/org/apache/poi/hssf/util/TestAreaReference.java @@ -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");