From a08033880154c45f0f57157360f2533a85398d2a Mon Sep 17 00:00:00 2001 From: Josh Micich Date: Thu, 23 Jul 2009 21:45:56 +0000 Subject: [PATCH] Converted ConcatEval to singleton git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@797238 13f79535-47bb-0310-9956-ffa450edef68 --- .../hssf/record/formula/eval/ConcatEval.java | 63 +++++++++---------- .../ss/formula/OperationEvaluatorFactory.java | 6 +- 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 < amolweb at ya hoo dot com > - * */ 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() + ")"); } } -- 2.39.5