You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ce...@apache.org on 2013/08/12 22:27:09 UTC

svn commit: r1513247 - in /poi/trunk/src: java/org/apache/poi/hssf/usermodel/HSSFFormulaEvaluator.java java/org/apache/poi/ss/formula/functions/MultiOperandNumericFunction.java testcases/org/apache/poi/hssf/usermodel/TestHSSFFormulaEvaluator.java

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-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org