aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosh Micich <josh@apache.org>2009-07-23 21:45:56 +0000
committerJosh Micich <josh@apache.org>2009-07-23 21:45:56 +0000
commita08033880154c45f0f57157360f2533a85398d2a (patch)
tree4f5cf1efc5dead71fd00e0b4738f4c4694409881
parent60836558ade474c541ed8087c5cbeb9501c613b2 (diff)
downloadpoi-a08033880154c45f0f57157360f2533a85398d2a.tar.gz
poi-a08033880154c45f0f57157360f2533a85398d2a.zip
Converted ConcatEval to singleton
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@797238 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--src/java/org/apache/poi/hssf/record/formula/eval/ConcatEval.java63
-rwxr-xr-xsrc/java/org/apache/poi/ss/formula/OperationEvaluatorFactory.java6
2 files changed, 32 insertions, 37 deletions
diff --git a/src/java/org/apache/poi/hssf/record/formula/eval/ConcatEval.java b/src/java/org/apache/poi/hssf/record/formula/eval/ConcatEval.java
index 3833f94b9e..b79abe7af6 100644
--- a/src/java/org/apache/poi/hssf/record/formula/eval/ConcatEval.java
+++ b/src/java/org/apache/poi/hssf/record/formula/eval/ConcatEval.java
@@ -17,47 +17,44 @@
package org.apache.poi.hssf.record.formula.eval;
-import org.apache.poi.hssf.record.formula.ConcatPtg;
-
/**
* @author Amol S. Deshmukh &lt; amolweb at ya hoo dot com &gt;
- *
*/
public final class ConcatEval implements OperationEval {
- private ConcatPtg delegate;
-
- public ConcatEval(ConcatPtg ptg) {
- delegate = ptg;
- }
-
- public Eval evaluate(Eval[] args, int srcRow, short srcCol) {
- if(args.length != 2) {
- return ErrorEval.VALUE_INVALID;
- }
- StringBuffer sb = new StringBuffer();
- try {
- for (int i = 0; i < 2; i++) {
-
- ValueEval ve = OperandResolver.getSingleValue(args[i], srcRow, srcCol);
- if (ve instanceof StringValueEval) {
- StringValueEval sve = (StringValueEval) ve;
- sb.append(sve.getStringValue());
- } else if (ve == BlankEval.INSTANCE) {
- // do nothing
- } else {
- throw new RuntimeException("Unexpected value type ("
- + ve.getClass().getName() + ")");
- }
+ public static final OperationEval instance = new ConcatEval();
+
+ private ConcatEval() {
+ // enforce singleton
+ }
+
+ public Eval evaluate(Eval[] args, int srcRow, short srcCol) {
+ if(args.length != 2) {
+ return ErrorEval.VALUE_INVALID;
+ }
+ StringBuffer sb = new StringBuffer();
+ try {
+ for (int i = 0; i < 2; i++) {
+
+ ValueEval ve = OperandResolver.getSingleValue(args[i], srcRow, srcCol);
+ if (ve instanceof StringValueEval) {
+ StringValueEval sve = (StringValueEval) ve;
+ sb.append(sve.getStringValue());
+ } else if (ve == BlankEval.INSTANCE) {
+ // do nothing
+ } else {
+ throw new RuntimeException("Unexpected value type ("
+ + ve.getClass().getName() + ")");
+ }
}
} catch (EvaluationException e) {
return e.getErrorEval();
}
-
- return new StringEval(sb.toString());
- }
- public int getNumberOfOperands() {
- return delegate.getNumberOfOperands();
- }
+ return new StringEval(sb.toString());
+ }
+
+ public int getNumberOfOperands() {
+ return 2;
+ }
}
diff --git a/src/java/org/apache/poi/ss/formula/OperationEvaluatorFactory.java b/src/java/org/apache/poi/ss/formula/OperationEvaluatorFactory.java
index 12c7fcda0b..22e1b1cb9a 100755
--- a/src/java/org/apache/poi/ss/formula/OperationEvaluatorFactory.java
+++ b/src/java/org/apache/poi/ss/formula/OperationEvaluatorFactory.java
@@ -84,6 +84,7 @@ final class OperationEvaluatorFactory {
m.put(LessThanPtg.class, LessThanEval.instance);
m.put(NotEqualPtg.class, NotEqualEval.instance);
+ m.put(ConcatPtg.class, ConcatEval.instance);
m.put(AddPtg.class, AddEval.instance);
m.put(DividePtg.class, DivideEval.instance);
m.put(MultiplyPtg.class, MultiplyEval.instance);
@@ -112,16 +113,13 @@ final class OperationEvaluatorFactory {
if (result != null) {
return result;
}
-
+
if (ptgClass == FuncPtg.class) {
return new FuncVarEval((FuncPtg)ptg);
}
if (ptgClass == FuncVarPtg.class) {
return new FuncVarEval((FuncVarPtg)ptg);
}
- if (ptgClass == ConcatPtg.class) {
- return new ConcatEval((ConcatPtg)ptg);
- }
throw new RuntimeException("Unexpected operation ptg class (" + ptgClass.getName() + ")");
}
}