Move the FormulaEvaluator code out of scratchpad
[poi.git] / src / java / org / apache / poi / hssf / record / formula / functions / Exact.java
blob63dc18d77134cb5fa10cd07b12839d97c53da07d
1 /*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
18 * Created on May 15, 2005
21 package org.apache.poi.hssf.record.formula.functions;
23 import org.apache.poi.hssf.record.formula.eval.BlankEval;
24 import org.apache.poi.hssf.record.formula.eval.BoolEval;
25 import org.apache.poi.hssf.record.formula.eval.ErrorEval;
26 import org.apache.poi.hssf.record.formula.eval.Eval;
27 import org.apache.poi.hssf.record.formula.eval.StringEval;
28 import org.apache.poi.hssf.record.formula.eval.StringValueEval;
29 import org.apache.poi.hssf.record.formula.eval.ValueEval;
31 /**
32 * @author Amol S. Deshmukh < amolweb at ya hoo dot com >
35 public class Exact extends TextFunction {
38 public Eval evaluate(Eval[] operands, int srcCellRow, short srcCellCol) {
39 ValueEval retval = null;
40 String s0 = null;
41 String s1 = null;
43 switch (operands.length) {
44 default:
45 retval = ErrorEval.VALUE_INVALID;
46 break;
47 case 2:
48 ValueEval ve = singleOperandEvaluate(operands[0], srcCellRow, srcCellCol);
49 if (ve instanceof StringValueEval) {
50 StringValueEval sve = (StringValueEval) ve;
51 s0 = sve.getStringValue();
53 else if (ve instanceof BlankEval) {
54 s0 = StringEval.EMPTY_INSTANCE.getStringValue();
56 else {
57 retval = ErrorEval.VALUE_INVALID;
58 break;
61 if (retval == null) {
62 ve = singleOperandEvaluate(operands[1], srcCellRow, srcCellCol);
63 if (ve instanceof StringValueEval) {
64 StringValueEval sve = (StringValueEval) ve;
65 s1 = sve.getStringValue();
67 else if (ve instanceof BlankEval) {
68 s1 = StringEval.EMPTY_INSTANCE.getStringValue();
70 else {
71 retval = ErrorEval.VALUE_INVALID;
72 break;
77 if (retval == null) {
78 boolean b = s0.equals(s1);
79 retval = b ? BoolEval.TRUE : BoolEval.FALSE;
82 return retval;