Author: centic
Date: Mon Aug 12 20:27:08 2013
New Revision: 1513247

URL: http://svn.apache.org/r1513247
Log:
Bug 55195: use interface instead of implementation for
NumericValueEval and others.

Modified:
    poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFFormulaEvaluator.java
    
poi/trunk/src/java/org/apache/poi/ss/formula/functions/MultiOperandNumericFunction.java
    
poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFFormulaEvaluator.java

Modified: 
poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFFormulaEvaluator.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFFormulaEvaluator.java?rev=1513247&r1=1513246&r2=1513247&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFFormulaEvaluator.java 
(original)
+++ poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFFormulaEvaluator.java 
Mon Aug 12 20:27:08 2013
@@ -22,8 +22,8 @@ import org.apache.poi.ss.formula.IStabil
 import org.apache.poi.ss.formula.WorkbookEvaluator;
 import org.apache.poi.ss.formula.eval.BoolEval;
 import org.apache.poi.ss.formula.eval.ErrorEval;
-import org.apache.poi.ss.formula.eval.NumberEval;
-import org.apache.poi.ss.formula.eval.StringEval;
+import org.apache.poi.ss.formula.eval.NumericValueEval;
+import org.apache.poi.ss.formula.eval.StringValueEval;
 import org.apache.poi.ss.formula.eval.ValueEval;
 import org.apache.poi.ss.formula.udf.UDFFinder;
 import org.apache.poi.ss.usermodel.Cell;
@@ -348,20 +348,20 @@ public class HSSFFormulaEvaluator implem
 
        /**
         * Returns a CellValue wrapper around the supplied ValueEval instance.
-        * @param eval
+        * @param cell
         */
        private CellValue evaluateFormulaCellValue(Cell cell) {
                ValueEval eval = _bookEvaluator.evaluate(new 
HSSFEvaluationCell((HSSFCell)cell));
-               if (eval instanceof NumberEval) {
-                       NumberEval ne = (NumberEval) eval;
-                       return new CellValue(ne.getNumberValue());
-               }
                if (eval instanceof BoolEval) {
                        BoolEval be = (BoolEval) eval;
                        return CellValue.valueOf(be.getBooleanValue());
                }
-               if (eval instanceof StringEval) {
-                       StringEval ne = (StringEval) eval;
+               if (eval instanceof NumericValueEval) {
+                       NumericValueEval ne = (NumericValueEval) eval;
+                       return new CellValue(ne.getNumberValue());
+               }
+               if (eval instanceof StringValueEval) {
+                       StringValueEval ne = (StringValueEval) eval;
                        return new CellValue(ne.getStringValue());
                }
                if (eval instanceof ErrorEval) {

Modified: 
poi/trunk/src/java/org/apache/poi/ss/formula/functions/MultiOperandNumericFunction.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ss/formula/functions/MultiOperandNumericFunction.java?rev=1513247&r1=1513246&r2=1513247&view=diff
==============================================================================
--- 
poi/trunk/src/java/org/apache/poi/ss/formula/functions/MultiOperandNumericFunction.java
 (original)
+++ 
poi/trunk/src/java/org/apache/poi/ss/formula/functions/MultiOperandNumericFunction.java
 Mon Aug 12 20:27:08 2013
@@ -22,9 +22,10 @@ import org.apache.poi.ss.formula.eval.Bo
 import org.apache.poi.ss.formula.eval.ErrorEval;
 import org.apache.poi.ss.formula.eval.EvaluationException;
 import org.apache.poi.ss.formula.eval.NumberEval;
+import org.apache.poi.ss.formula.eval.NumericValueEval;
 import org.apache.poi.ss.formula.eval.OperandResolver;
 import org.apache.poi.ss.formula.eval.RefEval;
-import org.apache.poi.ss.formula.eval.StringEval;
+import org.apache.poi.ss.formula.eval.StringValueEval;
 import org.apache.poi.ss.formula.eval.ValueEval;
 import org.apache.poi.ss.formula.TwoDEval;
 
@@ -165,20 +166,24 @@ public abstract class MultiOperandNumeri
                if (ve == null) {
                        throw new IllegalArgumentException("ve must not be 
null");
                }
-               if (ve instanceof NumberEval) {
-                       NumberEval ne = (NumberEval) ve;
-                       temp.add(ne.getNumberValue());
+               if (ve instanceof BoolEval) {
+                       if (!isViaReference || _isReferenceBoolCounted) {
+                               BoolEval boolEval = (BoolEval) ve;
+                               temp.add(boolEval.getNumberValue());
+                       }
                        return;
                }
-               if (ve instanceof ErrorEval) {
-                       throw new EvaluationException((ErrorEval) ve);
+               if (ve instanceof NumericValueEval) {
+                       NumericValueEval ne = (NumericValueEval) ve;
+                       temp.add(ne.getNumberValue());
+                       return;
                }
-               if (ve instanceof StringEval) {
+               if (ve instanceof StringValueEval) {
                        if (isViaReference) {
                                // ignore all ref strings
                                return;
                        }
-                       String s = ((StringEval) ve).getStringValue();
+                       String s = ((StringValueEval) ve).getStringValue();
                        Double d = OperandResolver.parseDouble(s);
                        if(d == null) {
                                throw new 
EvaluationException(ErrorEval.VALUE_INVALID);
@@ -186,12 +191,8 @@ public abstract class MultiOperandNumeri
                        temp.add(d.doubleValue());
                        return;
                }
-               if (ve instanceof BoolEval) {
-                       if (!isViaReference || _isReferenceBoolCounted) {
-                               BoolEval boolEval = (BoolEval) ve;
-                               temp.add(boolEval.getNumberValue());
-                       }
-                       return;
+               if (ve instanceof ErrorEval) {
+                       throw new EvaluationException((ErrorEval) ve);
                }
                if (ve == BlankEval.instance) {
                        if (_isBlankCounted) {

Modified: 
poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFFormulaEvaluator.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFFormulaEvaluator.java?rev=1513247&r1=1513246&r2=1513247&view=diff
==============================================================================
--- 
poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFFormulaEvaluator.java
 (original)
+++ 
poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFFormulaEvaluator.java
 Mon Aug 12 20:27:08 2013
@@ -59,6 +59,7 @@ public final class TestHSSFFormulaEvalua
        /**
         * Test for bug due to attempt to convert a cached formula error result 
to a boolean
         */
+       @Override
        public void testUpdateCachedFormulaResultFromErrorToNumber_bug46479() {
 
                HSSFWorkbook wb = new HSSFWorkbook();
@@ -132,6 +133,7 @@ public final class TestHSSFFormulaEvalua
                public EvalCountListener() {
                        _evalCount = 0;
                }
+               @Override
                public void onStartEvaluate(EvaluationCell cell, ICacheEntry 
entry) {
                        _evalCount++;
                }



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@poi.apache.org
For additional commands, e-mail: commits-h...@poi.apache.org

Reply via email to