Revision 43521 trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/operator/EqOperator.java

View differences:

EqOperator.java
1 1
package org.gvsig.expressionevaluator.impl.function.operator;
2 2

  
3
import org.apache.commons.lang3.ObjectUtils;
4
import org.apache.commons.math.util.MathUtils;
5
import org.gvsig.expressionevaluator.Function;
6
import org.gvsig.expressionevaluator.Interpreter;
7

  
3 8
public class EqOperator extends AbstractBinaryOperator {
4 9

  
5 10
    public EqOperator() {
6
        super("=");
11
        super(Function.GROUP_BOOLEAN, "=");
7 12
    }
8
    
13

  
9 14
    @Override
10
    public Object call(Object op1, Object op2) {               
15
    public Object call(Interpreter interpreter, Object op1, Object op2) {
16
        Double accuracy = interpreter.getAccuracy();
17
        if( accuracy!=null ) {
18
            if( op1!=null && op2!= null && (
19
                op1 instanceof Double || op2 instanceof Double ||
20
                op1 instanceof Float || op2 instanceof Float) ) {
21
                boolean value = MathUtils.compareTo(((Number)op1).doubleValue(), ((Number)op2).doubleValue(), accuracy) == 0;
22
                return value;
23
            }
24
        }
11 25
        if( op2 instanceof Comparable && op2 instanceof Comparable ) {
12
            boolean value = ((Comparable)op1).compareTo((Comparable)op2) == 0;
26
            boolean value = ObjectUtils.compare((Comparable)op1,(Comparable)op2) == 0;
13 27
            return value;
14 28
        }
15
        throw new IllegalArgumentException("Types not allowed in '"+name()+"' operand.");
29
        throw new IllegalArgumentException("Types not allowed in '" + name() + "' operand.");
16 30
    }
17 31

  
18 32
}

Also available in: Unified diff