From: Nick Burch Date: Tue, 15 Apr 2008 16:00:50 +0000 (+0000) Subject: Nice and small change here... Update the formula parser code to use usermodel.HSSFWor... X-Git-Tag: REL_3_0_3_BETA1~15 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=26ae81c832af1ba67d5f14dd82f5db0a2c40a436;p=poi.git 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 --- diff --git a/src/documentation/content/xdocs/changes.xml b/src/documentation/content/xdocs/changes.xml index 62e84c6460..0850c6ce22 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 2c30a5552a..aaf35f4d88 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 eb28c9006f..91d342099b 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 a06bc8aedd..23af4b17cc 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 f0fc1fccf4..82d85ccebb 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 12c49f1148..4f79d76027 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 33278e25ed..b0322ab785 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 515d07dd41..6ff0b05b16 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 ed48431dee..187957e587 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 da24158ace..6b0eb908ac 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 9507e37a8e..71e413fead 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 c91ed502c9..2ebf019829 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 be34e0074a..27e4d1759c 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 42dc11fa32..e5e3d525cc 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 12166b7967..01942be55c 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 0319175ba4..616f737b84 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 49a28c97cc..94aa32383f 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 d355fbfa1f..351d44a421 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 0248f8466f..80c9f39d79 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 41d2de0cba..951872f43b 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 cde67c5dc8..70fa62e58b 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 26f66e4fe2..a08a863d1c 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 26cc2e027b..a16992f943 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 a7fc0274ad..0cd54e5f55 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 d8d08fecb8..677d78c3e5 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 6d66307b3d..6501203edc 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 f4106b6aa8..f3dd16f068 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 9b225912ed..8f5bddc190 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 c395ed3b1c..f42966394b 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 4bccd9274e..c23658d2db 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 ee0b761854..ec33d10921 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 bfc33c1284..359c76e668 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 89d4cae329..63c07a79e7 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 17a31a4e6a..d539405cd0 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 626eff2b8e..cbc0b67002 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 5405481a09..9d93f1e982 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 ccf5ab6fcd..3036800b10 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 8eea4d8004..5dbbec8754 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 43617f2909..8ec67345b4 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 374458a15d..402dbd3774 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 9db4d6c43b..0c59bb7acb 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 73f41fa49c..0dbb3ba283 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 f006509c23..0e8c7741ac 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 51df7844a4..4726a70c17 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 84ff659b33..3b4749c855 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 4d655756d4..c29b55bf94 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 4e05e1387d..6f18e4b94e 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 e062f0c4e4..e7522e7e5f 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 615a9c0b0a..40b111b3ec 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 4983c9d070..3df731c7ac 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 491b6c6c36..ca6fb55dc6 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 384db9357b..37af74ba9e 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 31efdcd63c..7c134b97d1 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 ce3ba7cf4a..148c83fa41 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 40298a0cff..8d00ec34df 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 1badf51970..56493d906a 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 670b33372d..81a3382567 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 d9e470a68c..532133f934 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 490ff4d342..5d3436028e 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 bb16fdfadd..0a9c3dfa80 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 73da4fe9c4..91b3fcd0f1 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 75452dd945..0444843d2e 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 197139ccc3..3558618e76 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 ee5cfdb9fc..30776608ba 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 2589aa90dd..31b4dd180a 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 8f7593f09f..ebc41bafea 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 f605097768..2ae8230d5e 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 b8d223a4a8..db29380a9c 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 2af50d4b93..e83a59b42d 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 b5fbe3b80d..4de0c7bdb2 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 fdad5f44d8..1e26fa706e 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 007cbd5760..19069d32b2 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 a72c039cb8..5eb2abb6e6 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");