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
;
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;
43 switch (operands
.length
) {
45 retval
= ErrorEval
.VALUE_INVALID
;
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();
57 retval
= ErrorEval
.VALUE_INVALID
;
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();
71 retval
= ErrorEval
.VALUE_INVALID
;
78 boolean b
= s0
.equals(s1
);
79 retval
= b ? BoolEval
.TRUE
: BoolEval
.FALSE
;