? jakarta-poi/src/contrib/src/prj.el ? jakarta-poi/src/contrib/testcases/prj.el ? jakarta-poi/src/scratchpad/src/prj.el ? jakarta-poi/src/scratchpad/testcases/prj.el ? jakarta-poi/src/testcases/prj.el ? jakarta-poi/src/testcases/org/apache/poi/hssf/data/SquareMacro.xls Index: jakarta-poi/src/java/org/apache/poi/hssf/dev/FormulaViewer.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/dev/FormulaViewer.java,v retrieving revision 1.7 diff -b -u -r1.7 FormulaViewer.java --- jakarta-poi/src/java/org/apache/poi/hssf/dev/FormulaViewer.java 30 Apr 2003 04:39:11 -0000 1.7 +++ jakarta-poi/src/java/org/apache/poi/hssf/dev/FormulaViewer.java 28 Jul 2003 22:55:48 -0000 @@ -77,7 +77,6 @@ import org.apache.poi.hssf.record.formula.*; import org.apache.poi.hssf.model.*; import org.apache.poi.hssf.usermodel.*; -import org.apache.poi.hssf.util.SheetReferences; /** * FormulaViewer - finds formulas in a BIFF8 file and attempts to read them/display @@ -144,7 +143,7 @@ StringBuffer buf = new StringBuffer(); if (token instanceof ExpPtg) return; - buf.append(name=((OperationPtg) token).toFormulaString((SheetReferences)null)); + buf.append(name=((OperationPtg) token).toFormulaString((Workbook)null)); buf.append(sep); switch (token.getPtgClass()) { case Ptg.CLASS_REF : @@ -213,7 +212,7 @@ StringBuffer buf = new StringBuffer(); for (int i=0;i0) { - o = (OperationPtg) ptgs[i]; + stack.push(ptgs[0].toFormulaString(book)); - if (o instanceof AttrPtg && ((AttrPtg)o).isOptimizedIf()) { - ifptg=(AttrPtg)o; - } else { + for (int i = 1; i < ptgs.length; i++) { + if (! (ptgs[i] instanceof OperationPtg)) { + stack.push(ptgs[i].toFormulaString(book)); + continue; + } - numOperands = o.getNumberOfOperands(); - operands = new String[numOperands]; + if (ptgs[i] instanceof AttrPtg && ((AttrPtg) ptgs[i]).isOptimizedIf()) { + ifptg = (AttrPtg) ptgs[i]; + continue; + } - for (int j=0;j 0; j--) { + //TODO: catch stack underflow and throw parse exception. + operands[j - 1] = (String) stack.pop(); } - if ( (o instanceof AbstractFunctionPtg) && - ((AbstractFunctionPtg)o).getName().equals("specialflag") && - ifptg != null - ) { + stack.push(o.toFormulaString(operands)); + if (!(o instanceof AbstractFunctionPtg)) continue; + + final AbstractFunctionPtg f = (AbstractFunctionPtg) o; + final String fname = f.getName(); + if (fname == null) continue; + + if ((ifptg != null) && (fname.equals("specialflag"))) { // this special case will be way different. - result = ifptg.toFormulaString( - new String[] {(o.toFormulaString(operands))} - ); - ifptg = null; - } else { - result = o.toFormulaString(operands); + stack.push(ifptg.toFormulaString(new String[]{(String) stack.pop()})); + continue; } - stack.push(result); + if (fname.equals("externalflag")) { + final String top = (String) stack.pop(); + final int paren = top.indexOf('('); + final int comma = top.indexOf(','); + if (comma == -1) { + final int rparen = top.indexOf(')'); + stack.push(top.substring(paren + 1, rparen) + "()"); } - - - } else { - stack.push(ptgs[i].toFormulaString(refs)); + else { + stack.push(top.substring(paren + 1, comma) + '(' + + top.substring(comma + 1)); } } - return (String) stack.pop(); //TODO: catch stack underflow and throw parse exception. } + // TODO: catch stack underflow and throw parse exception. + return (String) stack.pop(); + } + + /** Create a tree representation of the RPN token array *used to run the class(RVA) change algo */ @@ -890,11 +909,9 @@ * Useful for testing */ public String toString() { - SheetReferences refs = null; - if (book!=null) book.getSheetReferences(); StringBuffer buf = new StringBuffer(); for (int i=0;i> 4); + } + public void setEqualsToIndexToSheet(short value) { field_6_equals_to_index_to_sheet = value; @@ -409,11 +426,47 @@ return field_11_compressed_unicode_flag; } + /** + * @return true if name is hidden + */ + public boolean isHiddenName() { + return (field_1_option_flag & OPT_HIDDEN_NAME) != 0; + } + + /** + * @return true if name is a function + */ + public boolean isFunctionName() { + return (field_1_option_flag & OPT_FUNCTION_NAME) != 0; + } + + /** + * @return true if name is a command + */ + public boolean isCommandName() { + return (field_1_option_flag & OPT_COMMAND_NAME) != 0; + } + + /** + * @return true if function macro or command macro + */ + public boolean isMacro() { + return (field_1_option_flag & OPT_MACRO) != 0; + } + + /** + * @return true if array formula or user defined + */ + public boolean isComplexFunction() { + return (field_1_option_flag & OPT_COMPLEX) != 0; + } + + /**Convenience Function to determine if the name is a built-in name */ public boolean isBuiltInName() { - return ((this.getOptionFlag() & (short)0x20) != 0); + return ((this.getOptionFlag() & OPT_BUILTIN) != 0); } @@ -511,7 +564,7 @@ data[18 + offset] = getCompressedUnicodeFlag(); /* temp: gjs - if ( ( field_1_option_flag & (short) 0x20 ) != 0 ) + if (isBuiltInName()) { LittleEndian.putShort( data, 2 + offset, (short) ( 16 + field_13_raw_name_definition.length ) ); @@ -647,16 +700,16 @@ /** gets the reference , the area only (range) * @return area reference */ - public String getAreaReference(SheetReferences refs){ + public String getAreaReference(Workbook book){ if (field_13_name_definition == null) return "#REF!"; Ptg ptg = (Ptg) field_13_name_definition.peek(); String result = ""; if (ptg.getClass() == Area3DPtg.class){ - result = ptg.toFormulaString(refs); + result = ptg.toFormulaString(book); } else if (ptg.getClass() == Ref3DPtg.class){ - result = ptg.toFormulaString(refs); + result = ptg.toFormulaString(book); } return result; @@ -727,7 +780,7 @@ /* temp: gjs - if ( ( field_1_option_flag & (short)0x20 ) != 0 ) { + if (isBuiltInName()) { // DEBUG // System.out.println( "Built-in name" ); Index: jakarta-poi/src/java/org/apache/poi/hssf/record/formula/AbstractFunctionPtg.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/AbstractFunctionPtg.java,v retrieving revision 1.10 diff -b -u -r1.10 AbstractFunctionPtg.java --- jakarta-poi/src/java/org/apache/poi/hssf/record/formula/AbstractFunctionPtg.java 6 May 2003 15:30:52 -0000 1.10 +++ jakarta-poi/src/java/org/apache/poi/hssf/record/formula/AbstractFunctionPtg.java 28 Jul 2003 22:55:52 -0000 @@ -54,9 +54,8 @@ package org.apache.poi.hssf.record.formula; import org.apache.poi.util.BinaryTree; -import org.apache.poi.hssf.util.SheetReferences; +import org.apache.poi.hssf.model.Workbook; -import java.util.Stack; /** * This class provides the base functionality for Excel sheet functions @@ -69,7 +68,7 @@ //constant used allow a ptgAttr to be mapped properly for its functionPtg public static final String ATTR_NAME = "specialflag"; - + public static final short INDEX_EXTERNAL = 255; private static BinaryTree map = produceHash(); protected static Object[][] functionData = produceFunctionData(); @@ -104,7 +103,7 @@ return lookupName(field_2_fnc_index); } - public String toFormulaString(SheetReferences refs) { + public String toFormulaString(Workbook book) { return getName(); } @@ -140,7 +139,9 @@ } protected short lookupIndex(String name) { - return (short)((Integer)map.getKeyForValue(name)).intValue(); + Integer index = (Integer) map.getKeyForValue(name); + if (index != null) return index.shortValue(); + return INDEX_EXTERNAL; } /** @@ -389,6 +390,7 @@ dmap.put(new Integer(252),"FREQUENCY"); dmap.put(new Integer(253),"ADDTOOLBAR"); dmap.put(new Integer(254),"DELETETOOLBAR"); + dmap.put(new Integer(255),"externalflag"); dmap.put(new Integer(256),"RESETTOOLBAR"); dmap.put(new Integer(257),"EVALUATE"); dmap.put(new Integer(258),"GETTOOLBAR"); Index: jakarta-poi/src/java/org/apache/poi/hssf/record/formula/AddPtg.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/AddPtg.java,v retrieving revision 1.13 diff -b -u -r1.13 AddPtg.java --- jakarta-poi/src/java/org/apache/poi/hssf/record/formula/AddPtg.java 30 Apr 2003 04:39:02 -0000 1.13 +++ jakarta-poi/src/java/org/apache/poi/hssf/record/formula/AddPtg.java 28 Jul 2003 22:55:52 -0000 @@ -62,7 +62,7 @@ import java.util.List; -import org.apache.poi.hssf.util.SheetReferences; +import org.apache.poi.hssf.model.Workbook; /** * Addition operator PTG the "+" binomial operator. If you need more @@ -113,7 +113,7 @@ } /** Implementation of method from Ptg */ - public String toFormulaString(SheetReferences refs) + public String toFormulaString(Workbook book) { return "+"; } Index: jakarta-poi/src/java/org/apache/poi/hssf/record/formula/Area3DPtg.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/Area3DPtg.java,v retrieving revision 1.13.2.1 diff -b -u -r1.13.2.1 Area3DPtg.java --- jakarta-poi/src/java/org/apache/poi/hssf/record/formula/Area3DPtg.java 1 Jul 2003 14:47:34 -0000 1.13.2.1 +++ jakarta-poi/src/java/org/apache/poi/hssf/record/formula/Area3DPtg.java 28 Jul 2003 22:55:52 -0000 @@ -291,8 +291,9 @@ } - public String toFormulaString( SheetReferences refs ) + public String toFormulaString(Workbook book) { + SheetReferences refs = book == null ? null : book.getSheetReferences(); StringBuffer retval = new StringBuffer(); if ( refs != null ) { @@ -352,4 +353,3 @@ } - Index: jakarta-poi/src/java/org/apache/poi/hssf/record/formula/AreaPtg.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/AreaPtg.java,v retrieving revision 1.14.2.1 diff -b -u -r1.14.2.1 AreaPtg.java --- jakarta-poi/src/java/org/apache/poi/hssf/record/formula/AreaPtg.java 1 Jul 2003 14:47:34 -0000 1.14.2.1 +++ jakarta-poi/src/java/org/apache/poi/hssf/record/formula/AreaPtg.java 28 Jul 2003 22:55:52 -0000 @@ -65,7 +65,7 @@ import org.apache.poi.hssf.util.AreaReference; import org.apache.poi.hssf.util.CellReference; -import org.apache.poi.hssf.util.SheetReferences; +import org.apache.poi.hssf.model.Workbook; /** * Specifies a rectangular area of cells A1:A4 for instance. @@ -305,7 +305,7 @@ field_4_last_column = column; } - public String toFormulaString(SheetReferences refs) + public String toFormulaString(Workbook book) { return (new CellReference(getFirstRow(),getFirstColumn(),!isFirstRowRelative(),!isFirstColRelative())).toString() + ":" + (new CellReference(getLastRow(),getLastColumn(),!isLastRowRelative(),!isLastColRelative())).toString(); Index: jakarta-poi/src/java/org/apache/poi/hssf/record/formula/AttrPtg.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/AttrPtg.java,v retrieving revision 1.16 diff -b -u -r1.16 AttrPtg.java --- jakarta-poi/src/java/org/apache/poi/hssf/record/formula/AttrPtg.java 30 Apr 2003 04:39:02 -0000 1.16 +++ jakarta-poi/src/java/org/apache/poi/hssf/record/formula/AttrPtg.java 28 Jul 2003 22:55:52 -0000 @@ -60,7 +60,7 @@ */ package org.apache.poi.hssf.record.formula; -import org.apache.poi.hssf.util.SheetReferences; +import org.apache.poi.hssf.model.Workbook; import org.apache.poi.util.LittleEndian; import org.apache.poi.util.BitField; @@ -207,11 +207,11 @@ if(space.isSet(field_1_options)) { return operands[ 0 ]; } else if (optiIf.isSet(field_1_options)) { - return toFormulaString((SheetReferences)null) + "(" + operands[ 0 ] +")"; + return toFormulaString((Workbook)null) + "(" + operands[ 0 ] +")"; } else if (optGoto.isSet(field_1_options)) { - return toFormulaString((SheetReferences)null) + operands[0]; //goto isn't a real formula element should not show up + return toFormulaString((Workbook)null) + operands[0]; //goto isn't a real formula element should not show up } else { - return toFormulaString((SheetReferences)null) + "(" + operands[ 0 ] + ")"; + return toFormulaString((Workbook)null) + "(" + operands[ 0 ] + ")"; } } @@ -226,7 +226,7 @@ return -1; } - public String toFormulaString(SheetReferences refs) { + public String toFormulaString(Workbook book) { if(semiVolatile.isSet(field_1_options)) { return "ATTR(semiVolatile)"; } Index: jakarta-poi/src/java/org/apache/poi/hssf/record/formula/BoolPtg.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/BoolPtg.java,v retrieving revision 1.3 diff -b -u -r1.3 BoolPtg.java --- jakarta-poi/src/java/org/apache/poi/hssf/record/formula/BoolPtg.java 1 May 2003 12:43:37 -0000 1.3 +++ jakarta-poi/src/java/org/apache/poi/hssf/record/formula/BoolPtg.java 28 Jul 2003 22:55:52 -0000 @@ -60,7 +60,7 @@ package org.apache.poi.hssf.record.formula; import org.apache.poi.util.LittleEndian; -import org.apache.poi.hssf.util.SheetReferences; +import org.apache.poi.hssf.model.Workbook; /** * Boolean (boolean) @@ -114,7 +114,7 @@ return SIZE; } - public String toFormulaString(SheetReferences refs) + public String toFormulaString(Workbook book) { return field_1_value ? "TRUE" : "FALSE"; } Index: jakarta-poi/src/java/org/apache/poi/hssf/record/formula/ConcatPtg.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/ConcatPtg.java,v retrieving revision 1.5 diff -b -u -r1.5 ConcatPtg.java --- jakarta-poi/src/java/org/apache/poi/hssf/record/formula/ConcatPtg.java 30 Apr 2003 04:39:02 -0000 1.5 +++ jakarta-poi/src/java/org/apache/poi/hssf/record/formula/ConcatPtg.java 28 Jul 2003 22:55:52 -0000 @@ -62,7 +62,7 @@ import java.util.List; -import org.apache.poi.hssf.util.SheetReferences; +import org.apache.poi.hssf.model.Workbook; /** * @@ -108,7 +108,7 @@ return 2; } - public String toFormulaString(SheetReferences refs) + public String toFormulaString(Workbook book) { return CONCAT; } Index: jakarta-poi/src/java/org/apache/poi/hssf/record/formula/DividePtg.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/DividePtg.java,v retrieving revision 1.9 diff -b -u -r1.9 DividePtg.java --- jakarta-poi/src/java/org/apache/poi/hssf/record/formula/DividePtg.java 30 Apr 2003 04:39:02 -0000 1.9 +++ jakarta-poi/src/java/org/apache/poi/hssf/record/formula/DividePtg.java 28 Jul 2003 22:55:52 -0000 @@ -62,7 +62,7 @@ import java.util.List; -import org.apache.poi.hssf.util.SheetReferences; +import org.apache.poi.hssf.model.Workbook; /** * This PTG implements the standard binomial divide "/" @@ -108,7 +108,7 @@ return 2; } - public String toFormulaString(SheetReferences refs) + public String toFormulaString(Workbook book) { return "/"; } @@ -117,7 +117,7 @@ StringBuffer buffer = new StringBuffer(); buffer.append(operands[ 0 ]); - buffer.append(toFormulaString((SheetReferences)null)); + buffer.append(toFormulaString((Workbook)null)); buffer.append(operands[ 1 ]); return buffer.toString(); } Index: jakarta-poi/src/java/org/apache/poi/hssf/record/formula/EqualPtg.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/EqualPtg.java,v retrieving revision 1.3 diff -b -u -r1.3 EqualPtg.java --- jakarta-poi/src/java/org/apache/poi/hssf/record/formula/EqualPtg.java 30 Apr 2003 04:39:02 -0000 1.3 +++ jakarta-poi/src/java/org/apache/poi/hssf/record/formula/EqualPtg.java 28 Jul 2003 22:55:52 -0000 @@ -62,7 +62,7 @@ import java.util.List; -import org.apache.poi.hssf.util.SheetReferences; +import org.apache.poi.hssf.model.Workbook; /** * @@ -107,7 +107,7 @@ return 2; } - public String toFormulaString(SheetReferences refs) + public String toFormulaString(Workbook book) { return "="; } @@ -117,7 +117,7 @@ buffer.append(operands[ 0 ]); - buffer.append(toFormulaString((SheetReferences)null)); + buffer.append(toFormulaString((Workbook)null)); buffer.append(operands[ 1 ]); return buffer.toString(); } Index: jakarta-poi/src/java/org/apache/poi/hssf/record/formula/ExpPtg.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/ExpPtg.java,v retrieving revision 1.7.2.1 diff -b -u -r1.7.2.1 ExpPtg.java --- jakarta-poi/src/java/org/apache/poi/hssf/record/formula/ExpPtg.java 28 Jun 2003 00:21:47 -0000 1.7.2.1 +++ jakarta-poi/src/java/org/apache/poi/hssf/record/formula/ExpPtg.java 28 Jul 2003 22:55:52 -0000 @@ -60,7 +60,7 @@ */ package org.apache.poi.hssf.record.formula; -import org.apache.poi.hssf.util.SheetReferences; +import org.apache.poi.hssf.model.Workbook; /** * @@ -102,7 +102,7 @@ return SIZE; } - public String toFormulaString(SheetReferences refs) + public String toFormulaString(Workbook book) { return "NO IDEA SHARED FORMULA EXP PTG"; } Index: jakarta-poi/src/java/org/apache/poi/hssf/record/formula/GreaterEqualPtg.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/GreaterEqualPtg.java,v retrieving revision 1.1 diff -b -u -r1.1 GreaterEqualPtg.java --- jakarta-poi/src/java/org/apache/poi/hssf/record/formula/GreaterEqualPtg.java 7 May 2003 03:40:52 -0000 1.1 +++ jakarta-poi/src/java/org/apache/poi/hssf/record/formula/GreaterEqualPtg.java 28 Jul 2003 22:55:52 -0000 @@ -54,7 +54,7 @@ package org.apache.poi.hssf.record.formula; -import org.apache.poi.hssf.util.SheetReferences; +import org.apache.poi.hssf.model.Workbook; /** * PTG class to implement greater or equal to @@ -98,7 +98,7 @@ return 2; } - public String toFormulaString(SheetReferences refs) + public String toFormulaString(Workbook book) { return ">="; } @@ -108,7 +108,7 @@ buffer.append(operands[ 0 ]); - buffer.append(toFormulaString((SheetReferences)null)); + buffer.append(toFormulaString((Workbook)null)); buffer.append(operands[ 1 ]); return buffer.toString(); } Index: jakarta-poi/src/java/org/apache/poi/hssf/record/formula/GreaterThanPtg.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/GreaterThanPtg.java,v retrieving revision 1.1 diff -b -u -r1.1 GreaterThanPtg.java --- jakarta-poi/src/java/org/apache/poi/hssf/record/formula/GreaterThanPtg.java 4 May 2003 18:22:08 -0000 1.1 +++ jakarta-poi/src/java/org/apache/poi/hssf/record/formula/GreaterThanPtg.java 28 Jul 2003 22:55:52 -0000 @@ -61,7 +61,7 @@ import java.util.List; -import org.apache.poi.hssf.util.SheetReferences; +import org.apache.poi.hssf.model.Workbook; /** * Greater than operator PTG ">" @@ -133,7 +133,7 @@ * Implementation of method from Ptg * @param refs the Sheet References */ - public String toFormulaString(SheetReferences refs) + public String toFormulaString(Workbook book) { return this.GREATERTHAN; } @@ -171,5 +171,3 @@ return new GreaterThanPtg(); } } - - Index: jakarta-poi/src/java/org/apache/poi/hssf/record/formula/IntPtg.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/IntPtg.java,v retrieving revision 1.10 diff -b -u -r1.10 IntPtg.java --- jakarta-poi/src/java/org/apache/poi/hssf/record/formula/IntPtg.java 30 Apr 2003 04:39:02 -0000 1.10 +++ jakarta-poi/src/java/org/apache/poi/hssf/record/formula/IntPtg.java 28 Jul 2003 22:55:52 -0000 @@ -61,7 +61,7 @@ package org.apache.poi.hssf.record.formula; import org.apache.poi.util.LittleEndian; -import org.apache.poi.hssf.util.SheetReferences; +import org.apache.poi.hssf.model.Workbook; /** * Integer (short intger) @@ -116,7 +116,7 @@ return SIZE; } - public String toFormulaString(SheetReferences refs) + public String toFormulaString(Workbook book) { return "" + getValue(); } Index: jakarta-poi/src/java/org/apache/poi/hssf/record/formula/LessEqualPtg.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/LessEqualPtg.java,v retrieving revision 1.1 diff -b -u -r1.1 LessEqualPtg.java --- jakarta-poi/src/java/org/apache/poi/hssf/record/formula/LessEqualPtg.java 7 May 2003 03:40:52 -0000 1.1 +++ jakarta-poi/src/java/org/apache/poi/hssf/record/formula/LessEqualPtg.java 28 Jul 2003 22:55:53 -0000 @@ -53,7 +53,7 @@ */ package org.apache.poi.hssf.record.formula; -import org.apache.poi.hssf.util.SheetReferences; +import org.apache.poi.hssf.model.Workbook; /** @@ -99,7 +99,7 @@ return 2; } - public String toFormulaString(SheetReferences refs) + public String toFormulaString(Workbook book) { return "<="; } @@ -109,7 +109,7 @@ buffer.append(operands[ 0 ]); - buffer.append(toFormulaString((SheetReferences)null)); + buffer.append(toFormulaString((Workbook)null)); buffer.append(operands[ 1 ]); return buffer.toString(); } Index: jakarta-poi/src/java/org/apache/poi/hssf/record/formula/LessThanPtg.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/LessThanPtg.java,v retrieving revision 1.1 diff -b -u -r1.1 LessThanPtg.java --- jakarta-poi/src/java/org/apache/poi/hssf/record/formula/LessThanPtg.java 4 May 2003 18:22:08 -0000 1.1 +++ jakarta-poi/src/java/org/apache/poi/hssf/record/formula/LessThanPtg.java 28 Jul 2003 22:55:53 -0000 @@ -63,7 +63,7 @@ import java.util.List; //POI -import org.apache.poi.hssf.util.SheetReferences; +import org.apache.poi.hssf.model.Workbook; /** * Less than operator PTG "<". The SID is taken from the @@ -142,7 +142,7 @@ * Implementation of method from Ptg * @param refs the Sheet References */ - public String toFormulaString(SheetReferences refs) + public String toFormulaString(Workbook book) { return this.LESSTHAN; } @@ -180,6 +180,3 @@ } } - - - Index: jakarta-poi/src/java/org/apache/poi/hssf/record/formula/MemErrPtg.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/MemErrPtg.java,v retrieving revision 1.5 diff -b -u -r1.5 MemErrPtg.java --- jakarta-poi/src/java/org/apache/poi/hssf/record/formula/MemErrPtg.java 30 Apr 2003 04:39:02 -0000 1.5 +++ jakarta-poi/src/java/org/apache/poi/hssf/record/formula/MemErrPtg.java 28 Jul 2003 22:55:53 -0000 @@ -61,7 +61,7 @@ package org.apache.poi.hssf.record.formula; import org.apache.poi.util.LittleEndian; -import org.apache.poi.hssf.util.SheetReferences; +import org.apache.poi.hssf.model.Workbook; /** * @@ -118,7 +118,7 @@ return SIZE; } - public String toFormulaString(SheetReferences refs) + public String toFormulaString(Workbook book) { return "ERR#"; } Index: jakarta-poi/src/java/org/apache/poi/hssf/record/formula/MemFuncPtg.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/MemFuncPtg.java,v retrieving revision 1.2 diff -b -u -r1.2 MemFuncPtg.java --- jakarta-poi/src/java/org/apache/poi/hssf/record/formula/MemFuncPtg.java 30 Apr 2003 04:39:02 -0000 1.2 +++ jakarta-poi/src/java/org/apache/poi/hssf/record/formula/MemFuncPtg.java 28 Jul 2003 22:55:53 -0000 @@ -60,7 +60,7 @@ package org.apache.poi.hssf.record.formula; import org.apache.poi.util.LittleEndian; -import org.apache.poi.hssf.util.SheetReferences; +import org.apache.poi.hssf.model.Workbook; /** * @author Glen Stampoultzis (glens at apache.org) @@ -96,7 +96,7 @@ LittleEndian.putShort( array, offset + 1, (short)field_1_len_ref_subexpression ); } - public String toFormulaString( SheetReferences refs ) + public String toFormulaString(Workbook book) { return ""; } Index: jakarta-poi/src/java/org/apache/poi/hssf/record/formula/MissingArgPtg.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/MissingArgPtg.java,v retrieving revision 1.4 diff -b -u -r1.4 MissingArgPtg.java --- jakarta-poi/src/java/org/apache/poi/hssf/record/formula/MissingArgPtg.java 30 Apr 2003 04:39:02 -0000 1.4 +++ jakarta-poi/src/java/org/apache/poi/hssf/record/formula/MissingArgPtg.java 28 Jul 2003 22:55:53 -0000 @@ -54,7 +54,7 @@ package org.apache.poi.hssf.record.formula; -import org.apache.poi.hssf.util.SheetReferences; +import org.apache.poi.hssf.model.Workbook; /** * Missing Function Arguments @@ -91,7 +91,7 @@ } - public String toFormulaString(SheetReferences refs) + public String toFormulaString(Workbook book) { return " "; } @@ -103,5 +103,3 @@ } } - - Index: jakarta-poi/src/java/org/apache/poi/hssf/record/formula/MultiplyPtg.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/MultiplyPtg.java,v retrieving revision 1.10 diff -b -u -r1.10 MultiplyPtg.java --- jakarta-poi/src/java/org/apache/poi/hssf/record/formula/MultiplyPtg.java 30 Apr 2003 04:39:02 -0000 1.10 +++ jakarta-poi/src/java/org/apache/poi/hssf/record/formula/MultiplyPtg.java 28 Jul 2003 22:55:53 -0000 @@ -61,7 +61,7 @@ package org.apache.poi.hssf.record.formula; import java.util.List; -import org.apache.poi.hssf.util.SheetReferences; +import org.apache.poi.hssf.model.Workbook; /** * Implements the standard mathmatical multiplication - * @@ -114,7 +114,7 @@ } - public String toFormulaString(SheetReferences refs) + public String toFormulaString(Workbook book) { return "*"; } @@ -123,9 +123,9 @@ { StringBuffer buffer = new StringBuffer(); - buffer.append(operands[ 0 ].toFormulaString((SheetReferences)null)); + buffer.append(operands[ 0 ].toFormulaString((Workbook)null)); buffer.append("*"); - buffer.append(operands[ 1 ].toFormulaString((SheetReferences)null)); + buffer.append(operands[ 1 ].toFormulaString((Workbook)null)); return buffer.toString(); } @@ -133,7 +133,7 @@ StringBuffer buffer = new StringBuffer(); buffer.append(operands[ 0 ]); - buffer.append(toFormulaString((SheetReferences)null)); + buffer.append(toFormulaString((Workbook)null)); buffer.append(operands[ 1 ]); return buffer.toString(); } Index: jakarta-poi/src/java/org/apache/poi/hssf/record/formula/NamePtg.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/NamePtg.java,v retrieving revision 1.6.2.2 diff -b -u -r1.6.2.2 NamePtg.java --- jakarta-poi/src/java/org/apache/poi/hssf/record/formula/NamePtg.java 25 Jul 2003 18:22:19 -0000 1.6.2.2 +++ jakarta-poi/src/java/org/apache/poi/hssf/record/formula/NamePtg.java 28 Jul 2003 22:55:53 -0000 @@ -61,7 +61,8 @@ package org.apache.poi.hssf.record.formula; import org.apache.poi.util.LittleEndian; -import org.apache.poi.hssf.util.SheetReferences; +import org.apache.poi.hssf.model.Workbook; +import org.apache.poi.hssf.record.NameRecord; /** * @@ -85,9 +86,22 @@ /** Creates new NamePtg */ - public NamePtg(String name) + public NamePtg(String name, Workbook book) { - //TODO + final short n = (short) (book.getNumNames() + 1); + NameRecord rec; + for (short i = 1; i < n; i++) { + rec = book.getNameRecord(i - 1); + if (name.equals(rec.getNameText())) { + field_1_label_index = i; + return; + } + } + rec = new NameRecord(); + rec.setNameText(name); + rec.setNameTextLength((byte) name.length()); + book.addName(rec); + field_1_label_index = n; } /** Creates new NamePtg */ @@ -113,12 +127,13 @@ return SIZE; } - public String toFormulaString(SheetReferences refs) + public String toFormulaString(Workbook book) { - return "NAMED RANGE"; + NameRecord rec = book.getNameRecord(field_1_label_index - 1); + return rec.getNameText(); } - public byte getDefaultOperandClass() {return Ptg.CLASS_VALUE;} + public byte getDefaultOperandClass() {return Ptg.CLASS_REF;} public Object clone() { NamePtg ptg = new NamePtg(); Index: jakarta-poi/src/java/org/apache/poi/hssf/record/formula/NameXPtg.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/NameXPtg.java,v retrieving revision 1.1.2.1 diff -b -u -r1.1.2.1 NameXPtg.java --- jakarta-poi/src/java/org/apache/poi/hssf/record/formula/NameXPtg.java 1 Jul 2003 14:47:34 -0000 1.1.2.1 +++ jakarta-poi/src/java/org/apache/poi/hssf/record/formula/NameXPtg.java 28 Jul 2003 22:55:53 -0000 @@ -61,7 +61,7 @@ package org.apache.poi.hssf.record.formula; import org.apache.poi.util.LittleEndian; -import org.apache.poi.hssf.util.SheetReferences; +import org.apache.poi.hssf.model.Workbook; /** * @@ -113,7 +113,7 @@ return SIZE; } - public String toFormulaString(SheetReferences refs) + public String toFormulaString(Workbook book) { return "NO IDEA - NAME"; } Index: jakarta-poi/src/java/org/apache/poi/hssf/record/formula/NotEqualPtg.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/NotEqualPtg.java,v retrieving revision 1.1 diff -b -u -r1.1 NotEqualPtg.java --- jakarta-poi/src/java/org/apache/poi/hssf/record/formula/NotEqualPtg.java 7 May 2003 03:40:52 -0000 1.1 +++ jakarta-poi/src/java/org/apache/poi/hssf/record/formula/NotEqualPtg.java 28 Jul 2003 22:55:53 -0000 @@ -56,7 +56,7 @@ import java.util.List; -import org.apache.poi.hssf.util.SheetReferences; +import org.apache.poi.hssf.model.Workbook; /** * Ptg class to implement not equal @@ -101,7 +101,7 @@ return 2; } - public String toFormulaString(SheetReferences refs) + public String toFormulaString(Workbook book) { return "<>"; } @@ -111,7 +111,7 @@ buffer.append(operands[ 0 ]); - buffer.append(toFormulaString((SheetReferences)null)); + buffer.append(toFormulaString((Workbook)null)); buffer.append(operands[ 1 ]); return buffer.toString(); } Index: jakarta-poi/src/java/org/apache/poi/hssf/record/formula/NumberPtg.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/NumberPtg.java,v retrieving revision 1.6 diff -b -u -r1.6 NumberPtg.java --- jakarta-poi/src/java/org/apache/poi/hssf/record/formula/NumberPtg.java 30 Apr 2003 04:39:02 -0000 1.6 +++ jakarta-poi/src/java/org/apache/poi/hssf/record/formula/NumberPtg.java 28 Jul 2003 22:55:53 -0000 @@ -55,7 +55,7 @@ package org.apache.poi.hssf.record.formula; import org.apache.poi.util.LittleEndian; -import org.apache.poi.hssf.util.SheetReferences; +import org.apache.poi.hssf.model.Workbook; /** * Number * Stores a floating point value in a formula @@ -113,7 +113,7 @@ return SIZE; } - public String toFormulaString(SheetReferences refs) + public String toFormulaString(Workbook book) { return "" + getValue(); } @@ -125,4 +125,3 @@ return ptg; } } - Index: jakarta-poi/src/java/org/apache/poi/hssf/record/formula/ParenthesisPtg.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/ParenthesisPtg.java,v retrieving revision 1.10 diff -b -u -r1.10 ParenthesisPtg.java --- jakarta-poi/src/java/org/apache/poi/hssf/record/formula/ParenthesisPtg.java 30 Apr 2003 04:39:02 -0000 1.10 +++ jakarta-poi/src/java/org/apache/poi/hssf/record/formula/ParenthesisPtg.java 28 Jul 2003 22:55:53 -0000 @@ -57,7 +57,7 @@ import java.util.List; -import org.apache.poi.hssf.util.SheetReferences; +import org.apache.poi.hssf.model.Workbook; /** * While formula tokens are stored in RPN order and thus do not need parenthesis for @@ -107,7 +107,7 @@ return 1; } - public String toFormulaString(SheetReferences refs) + public String toFormulaString(Workbook book) { return "()"; } @@ -124,4 +124,3 @@ } } - Index: jakarta-poi/src/java/org/apache/poi/hssf/record/formula/PowerPtg.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/PowerPtg.java,v retrieving revision 1.11 diff -b -u -r1.11 PowerPtg.java --- jakarta-poi/src/java/org/apache/poi/hssf/record/formula/PowerPtg.java 30 Apr 2003 04:39:02 -0000 1.11 +++ jakarta-poi/src/java/org/apache/poi/hssf/record/formula/PowerPtg.java 28 Jul 2003 22:55:53 -0000 @@ -62,7 +62,7 @@ import java.util.List; -import org.apache.poi.hssf.util.SheetReferences; +import org.apache.poi.hssf.model.Workbook; /** * @@ -108,7 +108,7 @@ return 2; } - public String toFormulaString(SheetReferences refs) + public String toFormulaString(Workbook book) { return "^"; } @@ -118,7 +118,7 @@ buffer.append(operands[ 0 ]); - buffer.append(toFormulaString((SheetReferences)null)); + buffer.append(toFormulaString((Workbook)null)); buffer.append(operands[ 1 ]); return buffer.toString(); } Index: jakarta-poi/src/java/org/apache/poi/hssf/record/formula/Ptg.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/Ptg.java,v retrieving revision 1.29.2.2 diff -b -u -r1.29.2.2 Ptg.java --- jakarta-poi/src/java/org/apache/poi/hssf/record/formula/Ptg.java 8 Jun 2003 12:30:43 -0000 1.29.2.2 +++ jakarta-poi/src/java/org/apache/poi/hssf/record/formula/Ptg.java 28 Jul 2003 22:55:53 -0000 @@ -63,7 +63,7 @@ import java.util.List; import java.util.ArrayList; -import org.apache.poi.hssf.util.SheetReferences; +import org.apache.poi.hssf.model.Workbook; /** * @@ -347,7 +347,7 @@ /** * return a string representation of this token alone */ - public abstract String toFormulaString(SheetReferences refs); + public abstract String toFormulaString(Workbook book); /** * dump a debug representation (hexdump) to a string */ Index: jakarta-poi/src/java/org/apache/poi/hssf/record/formula/Ref3DPtg.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/Ref3DPtg.java,v retrieving revision 1.10.2.2 diff -b -u -r1.10.2.2 Ref3DPtg.java --- jakarta-poi/src/java/org/apache/poi/hssf/record/formula/Ref3DPtg.java 1 Jul 2003 14:47:34 -0000 1.10.2.2 +++ jakarta-poi/src/java/org/apache/poi/hssf/record/formula/Ref3DPtg.java 28 Jul 2003 22:55:53 -0000 @@ -61,6 +61,7 @@ import org.apache.poi.hssf.util.RangeAddress; import org.apache.poi.hssf.util.CellReference; import org.apache.poi.hssf.util.SheetReferences; +import org.apache.poi.hssf.model.Workbook; import org.apache.poi.util.BitField; import org.apache.poi.hssf.model.Workbook; @@ -193,8 +194,9 @@ } - public String toFormulaString(SheetReferences refs) { + public String toFormulaString(Workbook book) { StringBuffer retval = new StringBuffer(); + SheetReferences refs = book == null ? null : book.getSheetReferences(); if (refs != null) { retval.append(refs.getSheetName((int)this.field_1_index_extern_sheet)); retval.append('!'); Index: jakarta-poi/src/java/org/apache/poi/hssf/record/formula/ReferencePtg.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/ReferencePtg.java,v retrieving revision 1.8.2.1 diff -b -u -r1.8.2.1 ReferencePtg.java --- jakarta-poi/src/java/org/apache/poi/hssf/record/formula/ReferencePtg.java 1 Jul 2003 14:47:34 -0000 1.8.2.1 +++ jakarta-poi/src/java/org/apache/poi/hssf/record/formula/ReferencePtg.java 28 Jul 2003 22:55:53 -0000 @@ -64,7 +64,7 @@ import org.apache.poi.util.BitField; import org.apache.poi.hssf.util.CellReference; -import org.apache.poi.hssf.util.SheetReferences; +import org.apache.poi.hssf.model.Workbook; /** * ReferencePtg - handles references (such as A1, A2, IA4) @@ -179,7 +179,7 @@ return SIZE; } - public String toFormulaString(SheetReferences refs) + public String toFormulaString(Workbook book) { //TODO -- should we store a cellreference instance in this ptg?? but .. memory is an issue, i believe! return (new CellReference(getRow(),getColumn(),!isRowRelative(),!isColRelative())).toString(); Index: jakarta-poi/src/java/org/apache/poi/hssf/record/formula/StringPtg.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/StringPtg.java,v retrieving revision 1.6.2.1 diff -b -u -r1.6.2.1 StringPtg.java --- jakarta-poi/src/java/org/apache/poi/hssf/record/formula/StringPtg.java 25 Jul 2003 18:22:19 -0000 1.6.2.1 +++ jakarta-poi/src/java/org/apache/poi/hssf/record/formula/StringPtg.java 28 Jul 2003 22:55:54 -0000 @@ -56,7 +56,7 @@ import org.apache.poi.util.LittleEndian; import org.apache.poi.util.BitField; -import org.apache.poi.hssf.util.SheetReferences; +import org.apache.poi.hssf.model.Workbook; import org.apache.poi.util.StringUtil; /** @@ -145,7 +145,7 @@ } } - public String toFormulaString(SheetReferences refs) + public String toFormulaString(Workbook book) { return "\""+getValue()+"\""; } @@ -162,4 +162,3 @@ } } - Index: jakarta-poi/src/java/org/apache/poi/hssf/record/formula/SubtractPtg.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/SubtractPtg.java,v retrieving revision 1.9 diff -b -u -r1.9 SubtractPtg.java --- jakarta-poi/src/java/org/apache/poi/hssf/record/formula/SubtractPtg.java 30 Apr 2003 04:39:02 -0000 1.9 +++ jakarta-poi/src/java/org/apache/poi/hssf/record/formula/SubtractPtg.java 28 Jul 2003 22:55:54 -0000 @@ -61,7 +61,7 @@ package org.apache.poi.hssf.record.formula; import java.util.List; -import org.apache.poi.hssf.util.SheetReferences; +import org.apache.poi.hssf.model.Workbook; /** * @@ -105,7 +105,7 @@ return 2; } - public String toFormulaString(SheetReferences refs) + public String toFormulaString(Workbook book) { return "-"; } Index: jakarta-poi/src/java/org/apache/poi/hssf/record/formula/UnaryMinusPtg.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/UnaryMinusPtg.java,v retrieving revision 1.1.2.1 diff -b -u -r1.1.2.1 UnaryMinusPtg.java --- jakarta-poi/src/java/org/apache/poi/hssf/record/formula/UnaryMinusPtg.java 3 Jun 2003 12:42:09 -0000 1.1.2.1 +++ jakarta-poi/src/java/org/apache/poi/hssf/record/formula/UnaryMinusPtg.java 28 Jul 2003 22:55:54 -0000 @@ -56,7 +56,7 @@ import java.util.List; -import org.apache.poi.hssf.util.SheetReferences; +import org.apache.poi.hssf.model.Workbook; /** * Unary Plus operator @@ -105,7 +105,7 @@ } /** Implementation of method from Ptg */ - public String toFormulaString(SheetReferences refs) + public String toFormulaString(Workbook book) { return "+"; } Index: jakarta-poi/src/java/org/apache/poi/hssf/record/formula/UnaryPlusPtg.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/UnaryPlusPtg.java,v retrieving revision 1.1.2.1 diff -b -u -r1.1.2.1 UnaryPlusPtg.java --- jakarta-poi/src/java/org/apache/poi/hssf/record/formula/UnaryPlusPtg.java 3 Jun 2003 12:42:09 -0000 1.1.2.1 +++ jakarta-poi/src/java/org/apache/poi/hssf/record/formula/UnaryPlusPtg.java 28 Jul 2003 22:55:54 -0000 @@ -56,7 +56,7 @@ import java.util.List; -import org.apache.poi.hssf.util.SheetReferences; +import org.apache.poi.hssf.model.Workbook; /** * Unary Plus operator @@ -105,7 +105,7 @@ } /** Implementation of method from Ptg */ - public String toFormulaString(SheetReferences refs) + public String toFormulaString(Workbook book) { return "+"; } Index: jakarta-poi/src/java/org/apache/poi/hssf/record/formula/UnionPtg.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/UnionPtg.java,v retrieving revision 1.2 diff -b -u -r1.2 UnionPtg.java --- jakarta-poi/src/java/org/apache/poi/hssf/record/formula/UnionPtg.java 30 Apr 2003 04:39:02 -0000 1.2 +++ jakarta-poi/src/java/org/apache/poi/hssf/record/formula/UnionPtg.java 28 Jul 2003 22:55:54 -0000 @@ -54,7 +54,7 @@ package org.apache.poi.hssf.record.formula; -import org.apache.poi.hssf.util.SheetReferences; +import org.apache.poi.hssf.model.Workbook; /** * @author Glen Stampoultzis (glens at apache.org) @@ -95,7 +95,7 @@ } /** Implementation of method from Ptg */ - public String toFormulaString(SheetReferences refs) + public String toFormulaString(Workbook book) { return ","; } Index: jakarta-poi/src/java/org/apache/poi/hssf/record/formula/UnknownPtg.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/UnknownPtg.java,v retrieving revision 1.5 diff -b -u -r1.5 UnknownPtg.java --- jakarta-poi/src/java/org/apache/poi/hssf/record/formula/UnknownPtg.java 30 Apr 2003 04:39:02 -0000 1.5 +++ jakarta-poi/src/java/org/apache/poi/hssf/record/formula/UnknownPtg.java 28 Jul 2003 22:55:54 -0000 @@ -60,7 +60,7 @@ */ package org.apache.poi.hssf.record.formula; -import org.apache.poi.hssf.util.SheetReferences; +import org.apache.poi.hssf.model.Workbook; /** * @@ -94,7 +94,7 @@ return size; } - public String toFormulaString(SheetReferences refs) + public String toFormulaString(Workbook book) { return "UNKNOWN"; } Index: jakarta-poi/src/java/org/apache/poi/hssf/usermodel/HSSFCell.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/usermodel/HSSFCell.java,v retrieving revision 1.22 diff -b -u -r1.22 HSSFCell.java --- jakarta-poi/src/java/org/apache/poi/hssf/usermodel/HSSFCell.java 30 Apr 2003 04:39:00 -0000 1.22 +++ jakarta-poi/src/java/org/apache/poi/hssf/usermodel/HSSFCell.java 28 Jul 2003 22:55:54 -0000 @@ -726,8 +726,7 @@ public String getCellFormula() { //Workbook.currentBook=book; - SheetReferences refs = book.getSheetReferences(); - String retval = FormulaParser.toFormulaString(refs, ((FormulaRecordAggregate)record).getFormulaRecord().getParsedExpression()); + String retval = FormulaParser.toFormulaString(book, ((FormulaRecordAggregate)record).getFormulaRecord().getParsedExpression()); //Workbook.currentBook=null; return retval; } Index: jakarta-poi/src/java/org/apache/poi/hssf/usermodel/HSSFName.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/usermodel/HSSFName.java,v retrieving revision 1.8 diff -b -u -r1.8 HSSFName.java --- jakarta-poi/src/java/org/apache/poi/hssf/usermodel/HSSFName.java 30 Apr 2003 04:39:00 -0000 1.8 +++ jakarta-poi/src/java/org/apache/poi/hssf/usermodel/HSSFName.java 28 Jul 2003 22:55:54 -0000 @@ -123,8 +123,7 @@ public String getReference() { String result; - SheetReferences refs = book.getSheetReferences(); - result = name.getAreaReference(refs); + result = name.getAreaReference(book); return result; } @@ -167,4 +166,3 @@ } } - Index: jakarta-poi/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java,v retrieving revision 1.24.2.1 diff -b -u -r1.24.2.1 HSSFWorkbook.java --- jakarta-poi/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java 24 Jul 2003 19:22:34 -0000 1.24.2.1 +++ jakarta-poi/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java 28 Jul 2003 22:55:55 -0000 @@ -898,7 +898,7 @@ 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.getSheetReferences()); + return name.getAreaReference(workbook); } /** Index: jakarta-poi/src/testcases/org/apache/poi/hssf/model/TestFormulaParser.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/testcases/org/apache/poi/hssf/model/TestFormulaParser.java,v retrieving revision 1.7 diff -b -u -r1.7 TestFormulaParser.java --- jakarta-poi/src/testcases/org/apache/poi/hssf/model/TestFormulaParser.java 7 May 2003 03:40:52 -0000 1.7 +++ jakarta-poi/src/testcases/org/apache/poi/hssf/model/TestFormulaParser.java 28 Jul 2003 22:55:56 -0000 @@ -56,7 +56,6 @@ import junit.framework.TestCase; import org.apache.poi.hssf.record.formula.*; -import org.apache.poi.hssf.util.SheetReferences; /** * Test the low level formula parser functionality. High level tests are to @@ -145,7 +144,7 @@ assertEquals(true, flag.getValue()); assertEquals("Y", y.getValue()); assertEquals("N", n.getValue()); - assertEquals("IF", funif.toFormulaString(new SheetReferences())); + assertEquals("IF", funif.toFormulaString((Workbook) null)); assertTrue("Goto ptg exists", goto1.isGoto()); } @@ -285,6 +284,19 @@ } + public void testMacroFunction() { + Workbook w = new Workbook(); + FormulaParser fp = new FormulaParser("FOO()", w); + fp.parse(); + Ptg[] ptg = fp.getRPNPtg(); + + AbstractFunctionPtg tfunc = (AbstractFunctionPtg) ptg[0]; + assertEquals("externalflag", tfunc.getName()); + + NamePtg tname = (NamePtg) ptg[1]; + assertEquals("FOO", tname.toFormulaString(w)); + } + public static void main(String [] args) { System.out.println("Testing org.apache.poi.hssf.record.formula.FormulaParser"); junit.textui.TestRunner.run(TestFormulaParser.class); Index: jakarta-poi/src/testcases/org/apache/poi/hssf/usermodel/TestFormulas.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/testcases/org/apache/poi/hssf/usermodel/TestFormulas.java,v retrieving revision 1.30 diff -b -u -r1.30 TestFormulas.java --- jakarta-poi/src/testcases/org/apache/poi/hssf/usermodel/TestFormulas.java 4 May 2003 18:22:09 -0000 1.30 +++ jakarta-poi/src/testcases/org/apache/poi/hssf/usermodel/TestFormulas.java 28 Jul 2003 22:55:57 -0000 @@ -744,7 +744,7 @@ } public void testSheetFunctions() - throws java.io.IOException + throws IOException { String filename = System.getProperty("HSSF.testdata.path"); @@ -818,7 +818,7 @@ } public void testStringFormulas() - throws java.io.IOException + throws IOException { String readFilename = System.getProperty("HSSF.testdata.path"); @@ -852,7 +852,7 @@ public void testLogicalFormulas() - throws java.io.IOException + throws IOException { File file = File.createTempFile("testLogicalFormula",".xls"); @@ -880,7 +880,7 @@ } public void testDateFormulas() - throws java.io.IOException + throws IOException { String readFilename = System.getProperty("HSSF.testdata.path"); @@ -918,7 +918,7 @@ public void testIfFormulas() - throws java.io.IOException + throws IOException { String readFilename = System.getProperty("HSSF.testdata.path"); @@ -1008,7 +1008,7 @@ } public void testSumIf() - throws java.io.IOException + throws IOException { String readFilename = System.getProperty("HSSF.testdata.path"); String function ="SUMIF(A1:A5,\">4000\",B1:B5)"; @@ -1060,6 +1060,52 @@ assertTrue("sumif == 0 bytes", file.length() > 0); } + public void testSquareMacro() throws IOException { + File dir = new File(System.getProperty("HSSF.testdata.path")); + File xls = new File(dir, "SquareMacro.xls"); + FileInputStream in = new FileInputStream(xls); + HSSFWorkbook w; + try { + w = new HSSFWorkbook(in); + } finally { + in.close(); + } + HSSFSheet s0 = w.getSheetAt(0); + HSSFRow[] r = {s0.getRow(0), s0.getRow(1)}; + + HSSFCell a1 = r[0].getCell((short) 0); + assertEquals("square(1)", a1.getCellFormula()); + assertEquals(1d, a1.getNumericCellValue(), 1e-9); + + HSSFCell a2 = r[1].getCell((short) 0); + assertEquals("square(2)", a2.getCellFormula()); + assertEquals(4d, a2.getNumericCellValue(), 1e-9); + + HSSFCell b1 = r[0].getCell((short) 1); + assertEquals("IF(TRUE,square(1))", b1.getCellFormula()); + assertEquals(1d, b1.getNumericCellValue(), 1e-9); + + HSSFCell b2 = r[1].getCell((short) 1); + assertEquals("IF(TRUE,square(2))", b2.getCellFormula()); + assertEquals(4d, b2.getNumericCellValue(), 1e-9); + + HSSFCell c1 = r[0].getCell((short) 2); + assertEquals("square(square(1))", c1.getCellFormula()); + assertEquals(1d, c1.getNumericCellValue(), 1e-9); + + HSSFCell c2 = r[1].getCell((short) 2); + assertEquals("square(square(2))", c2.getCellFormula()); + assertEquals(16d, c2.getNumericCellValue(), 1e-9); + + HSSFCell d1 = r[0].getCell((short) 3); + assertEquals("square(one())", d1.getCellFormula()); + assertEquals(1d, d1.getNumericCellValue(), 1e-9); + + HSSFCell d2 = r[1].getCell((short) 3); + assertEquals("square(two())", d2.getCellFormula()); + assertEquals(4d, d2.getNumericCellValue(), 1e-9); + } + public static void main(String [] args) { System.out .println("Testing org.apache.poi.hssf.usermodel.TestFormulas");