diff --git a/src/scratchpad/src/org/apache/poi/hssf/record/formula/eval/FunctionEval.java b/src/scratchpad/src/org/apache/poi/hssf/record/formula/eval/FunctionEval.java index e6108c868..391050916 100644 --- a/src/scratchpad/src/org/apache/poi/hssf/record/formula/eval/FunctionEval.java +++ b/src/scratchpad/src/org/apache/poi/hssf/record/formula/eval/FunctionEval.java @@ -23,7 +23,7 @@ public abstract class FunctionEval implements OperationEval { private static Function[] produceFunctions() { Function[] retval = new Function[368]; retval[0] = new Count(); // COUNT - retval[1] = null; // Specialflag(); // SPECIALFLAG + retval[1] = new If(); // IF retval[2] = new IsNa(); // ISNA retval[3] = new IsError(); // ISERROR retval[4] = new Sum(); // SUM diff --git a/src/scratchpad/src/org/apache/poi/hssf/record/formula/functions/If.java b/src/scratchpad/src/org/apache/poi/hssf/record/formula/functions/If.java new file mode 100644 index 000000000..15dc990d5 --- /dev/null +++ b/src/scratchpad/src/org/apache/poi/hssf/record/formula/functions/If.java @@ -0,0 +1,39 @@ +/* + * Created on Nov 25, 2006 + * + */ +package org.apache.poi.hssf.record.formula.functions; + +import org.apache.poi.hssf.record.formula.eval.BoolEval; +import org.apache.poi.hssf.record.formula.eval.ErrorEval; +import org.apache.poi.hssf.record.formula.eval.Eval; + +/** + * @author Amol S. Deshmukh < amolweb at ya hoo dot com > + * + */ +public class If implements Function { + + public Eval evaluate(Eval[] evals, int srcCellRow, short srcCellCol) { + Eval retval = null; + Eval evalWhenFalse = BoolEval.FALSE; + switch (evals.length) { + case 3: + evalWhenFalse = evals[2]; + case 2: + BoolEval beval = (BoolEval) evals[0]; + if (beval.getBooleanValue()) { + retval = evals[1]; + } + else { + retval = evalWhenFalse; + } + break; + default: + retval = ErrorEval.UNKNOWN_ERROR; + } + return retval; + } + + +}