? formula4.patch ? build/classes ? build/contrib ? build/examples ? build/java ? build/scratchpad ? build/testcases ? src/documentation/xdocs/.nbattrs ? src/documentation/xdocs/hdf/.nbattrs ? src/documentation/xdocs/hpsf/.nbattrs ? src/documentation/xdocs/hssf/.nbattrs ? src/documentation/xdocs/news/.nbattrs ? src/documentation/xdocs/plan/.nbattrs ? src/documentation/xdocs/poifs/.nbattrs ? src/documentation/xdocs/resolutions/.nbattrs ? src/documentation/xdocs/utils/.nbattrs ? src/java/org/apache/poi/hssf/model/.nbattrs ? src/java/org/apache/poi/hssf/record/.nbattrs ? src/java/org/apache/poi/hssf/record/formula/.nbattrs ? src/java/org/apache/poi/hssf/record/formula/NumberPtg.java ? src/java/org/apache/poi/hssf/usermodel/.nbattrs ? tools/antipede/lib/temp Index: src/documentation/xdocs/who.xml =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/documentation/xdocs/who.xml,v retrieving revision 1.12 diff -u -r1.12 who.xml --- src/documentation/xdocs/who.xml 14 Apr 2002 06:42:28 -0000 1.12 +++ src/documentation/xdocs/who.xml 29 Apr 2002 14:51:31 -0000 @@ -50,6 +50,7 @@
Index: src/java/org/apache/poi/hssf/record/formula/FormulaParser.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/FormulaParser.java,v retrieving revision 1.10 diff -u -r1.10 FormulaParser.java --- src/java/org/apache/poi/hssf/record/formula/FormulaParser.java 29 Apr 2002 00:33:28 -0000 1.10 +++ src/java/org/apache/poi/hssf/record/formula/FormulaParser.java 29 Apr 2002 14:52:14 -0000 @@ -247,16 +247,14 @@ tokens.add(new FunctionPtg(name,(byte)numArgs)); } else if (Look == ':') { // this is a AreaReference String first = name; - GetChar(); + Match(':'); String second = GetName(); - tokens.add(new AreaPtg(first+":"+second)); - //String second = ; + tokens.add(new AreaPtg(first+":"+second)); } else { //this can be either a cell ref or a named range !! - boolean cellRef = true ; //we should probably do it with reg exp?? if (cellRef) { - tokens.add(new ReferencePtg(name)); //TODO we need to pass in Name somewhere?? + tokens.add(new ReferencePtg(name)); }else { //handle after named range is integrated!! } @@ -270,7 +268,7 @@ numArgs++; Expression(); } - while (Look == ',') { + while (Look == ',') { //TODO handle EmptyArgs Match(','); Expression(); numArgs++; @@ -289,10 +287,17 @@ } else if (IsAlpha(Look)){ Ident(); }else{ - - IntPtg p = new IntPtg(); - p.setValue(Short.parseShort(GetNum())); - tokens.add(p); + String number = GetNum(); + if (Look=='.') { + Match('.'); + String decimalPart = null; + if (IsDigit(Look)) number = number +"."+ GetNum(); //this also takes care of someone entering "1234." + tokens.add(new NumberPtg(number)); + } else { + //IntPtg p = new IntPtg(GetNum()); // removing since a ptg should be able to create itself from parser results. + //p.setValue(Short.parseShort(GetNum())); + tokens.add(new IntPtg(number)); //TODO:what if the number is too big to be a short? ..add factory to return Int or Number! + } } } @@ -489,6 +494,8 @@ wb.write(out); out.close(); + + System.out.println(file.getCanonicalPath()); } catch (java.io.IOException ioe) { ioe.printStackTrace(); } Index: src/java/org/apache/poi/hssf/record/formula/FunctionPtg.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/FunctionPtg.java,v retrieving revision 1.3 diff -u -r1.3 FunctionPtg.java --- src/java/org/apache/poi/hssf/record/formula/FunctionPtg.java 29 Apr 2002 01:25:28 -0000 1.3 +++ src/java/org/apache/poi/hssf/record/formula/FunctionPtg.java 29 Apr 2002 14:52:17 -0000 @@ -1,16 +1,9 @@ -/* - * DummyFunctionPtg.java - * - * - */ - - package org.apache.poi.hssf.record.formula; import java.util.List; /** * This class provides functions with variable arguments. - * @author aviks + * @author Avik Sengupta * @author Andrew C. Oliver (acoliver at apache dot org) * @version */ Index: 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.4 diff -u -r1.4 IntPtg.java --- src/java/org/apache/poi/hssf/record/formula/IntPtg.java 28 Apr 2002 16:33:57 -0000 1.4 +++ src/java/org/apache/poi/hssf/record/formula/IntPtg.java 29 Apr 2002 14:52:24 -0000 @@ -95,6 +95,10 @@ field_1_value = Short.parseShort(val); } + // IntPtg should be able to create itself, shouldnt have to call setValue + protected IntPtg(String formulaToken) { + setValue(Short.parseShort(formulaToken)); + } public void setValue(short value) { Index: 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.10 diff -u -r1.10 Ptg.java --- src/java/org/apache/poi/hssf/record/formula/Ptg.java 29 Apr 2002 01:25:28 -0000 1.10 +++ src/java/org/apache/poi/hssf/record/formula/Ptg.java 29 Apr 2002 14:52:38 -0000 @@ -71,16 +71,16 @@ public abstract class Ptg { - /** Creates new Ptg */ - - public Ptg() - { - } - + /** convert infix order ptg list to rpn order ptg list * @return List ptgs in RPN order * @param infixPtgs List of ptgs in infix order */ + + /* DO NOI REMOVE + *we keep this method in case we wish to change the way we parse + *It needs a getPrecedence in OperationsPtg + public static List ptgsToRpn(List infixPtgs) { java.util.Stack operands = new java.util.Stack(); java.util.List retval = new java.util.Stack(); @@ -123,7 +123,7 @@ } return retval; } - + */ @@ -284,18 +284,7 @@ public abstract void writeBytes(byte [] array, int offset); public abstract String toFormulaString(); - - /** - * Ptg's should override this - */ -// public boolean isNextStringToken(String formula, int pos) { -// return false; -// } - - public int getPrecedence() { - return 100; - } - + public int getStringLength() { return 0; }