Revision 45307

View differences:

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/programming/CaseFunction.java
68 68
        for( int n=0; n<count; n++ ) {
69 69
            Object condition_o = getObject(interpreter, args, n);
70 70
            Boolean condition = (Boolean) toBoolean.coerce(condition_o);
71
            if( condition ) {
71
            if( condition!=null && condition==true ) {
72 72
                needElse = false;
73 73
                value = getObject(interpreter, args, n+firstValue);
74 74
            }
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/DivOperator.java
21 21
    }
22 22
    
23 23
    @Override
24
    public Object call(Interpreter interpreter, Object op1, Object op2) {               
24
    public Object call(Interpreter interpreter, Object op1, Object op2) {
25
        if (op1 == null || op2 == null) {
26
            return null;
27
        }
25 28
        int type = this.getType(op1, op2);
26 29
        if( (type & TYPE_DOUBLE) == TYPE_DOUBLE ) {
27 30
            double value = getDouble(op1,1) / getDouble(op2,2);
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/AddOperator.java
28 28
    }
29 29
    
30 30
    @Override
31
    public Object call(Interpreter interpreter, Object op1, Object op2) {       
31
    public Object call(Interpreter interpreter, Object op1, Object op2) {
32
        if (op1 == null || op2 == null) {
33
            return null;
34
        }
32 35
        int type = this.getType(op1, op2);
33 36
        if( (type & TYPE_DOUBLE) == TYPE_DOUBLE ) {
34 37
            double value = getDouble(op1,1) + getDouble(op2,2);
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/RegExpOperator.java
20 20
    
21 21
    @Override
22 22
    public Object call(Interpreter interpreter, Object op1, Object op2) { 
23
        if (op1 == null || op2 == null) {
24
            return null;
25
        }
23 26
        String re = Objects.toString(op2, "");
24 27
        Pattern exp = (Pattern) interpreter.getCache().get(this.getClass(), re);
25 28
        if( exp == null ) {
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/GeOperator.java
18 18
    }
19 19
    
20 20
    @Override
21
    public Object call(Interpreter interpreter, Object op1, Object op2) {       
21
    public Object call(Interpreter interpreter, Object op1, Object op2) {
22
        if (op1 == null || op2 == null) {
23
            return null;
24
        }
22 25
        int type = this.getType(op1, op2);
23 26
        if( (type & TYPE_NULL) == TYPE_NULL ) {
24 27
            return false;
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/MulOperator.java
21 21
    }
22 22
    
23 23
    @Override
24
    public Object call(Interpreter interpreter, Object op1, Object op2) {       
24
    public Object call(Interpreter interpreter, Object op1, Object op2) {
25
        if (op1 == null || op2 == null) {
26
            return null;
27
        }
25 28
        int type = this.getType(op1, op2);
26 29
        if( (type & TYPE_DOUBLE) == TYPE_DOUBLE ) {
27 30
            double value = getDouble(op1,1) * getDouble(op2,2);
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/SubstOperator.java
22 22
    }
23 23
    
24 24
    @Override
25
    public Object call(Interpreter interpreter, Object op1, Object op2) {       
25
    public Object call(Interpreter interpreter, Object op1, Object op2) {
26
        if (op1 == null || op2 == null) {
27
            return null;
28
        }
26 29
        int type = this.getType(op1, op2);
27 30
        if( (type & TYPE_DOUBLE) == TYPE_DOUBLE ) {
28 31
            double value = getDouble(op1,1) - getDouble(op2,2);
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/NotOperator.java
19 19
    
20 20
    @Override
21 21
    public Object call(Interpreter interpreter, Object arg) {
22
        if (arg==null) {
23
            return null;
24
        }
22 25
        if( ! (arg instanceof Boolean) ) {
23 26
            throw new IllegalArgumentException("NOT operator require a boolean");
24 27
        }
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/LeOperator.java
18 18
    }
19 19
    
20 20
    @Override
21
    public Object call(Interpreter interpreter, Object op1, Object op2) {       
21
    public Object call(Interpreter interpreter, Object op1, Object op2) {      
22
        if (op1 == null || op2 == null) {
23
            return null;
24
        }
22 25
        int type = this.getType(op1, op2);
23 26
        if( (type & TYPE_NULL) == TYPE_NULL ) {
24 27
            return false;
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/AndOperator.java
16 16
    }
17 17
    
18 18
    @Override
19
    public Object call(Interpreter interpreter, Object op1, Object op2) {       
19
    public Object call(Interpreter interpreter, Object op1, Object op2) {    
20 20
        if( op1 instanceof Boolean && op2 instanceof Boolean ) {
21 21
            boolean value = getBoolean(op1,1) && getBoolean(op2,2);
22 22
            return value;
23 23
        }
24
        
25
        if (op1==null && op2==null) {
26
            return null;
27
        } else if (op1==null||op2==null) {
28
            Boolean boolValue = null;
29
            if (op2 == null && op1 instanceof Boolean) {
30
                boolValue = getBoolean(op1,1);
31
            } else if (op1 == null && op2 instanceof Boolean){ 
32
                boolValue = getBoolean(op2,2);
33
            }
34
            if (boolValue==null || boolValue==true) {
35
                return null;
36
            } else {
37
                return false;
38
            }
39
        }
40
      
24 41
        throw new IllegalArgumentException("Types not allowed in '"+name()+"' operand.");
25 42
    }
26 43
    
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/NeOperator.java
18 18
    }
19 19
    
20 20
    @Override
21
    public Object call(Interpreter interpreter, Object op1, Object op2) {       
21
    public Object call(Interpreter interpreter, Object op1, Object op2) {
22
        if (op1 == null || op2 == null) {
23
            return null;
24
        }
22 25
        if( op1==op2 ) {
23 26
            return false;
24 27
        }
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
18 18
    
19 19
    @Override
20 20
    public Object call(Interpreter interpreter, Object op1, Object op2) {
21
        if (op1 == null || op2 == null) {
22
            return null;
23
        }
21 24
        if( op1==op2 ) {
22 25
            return true;
23 26
        }
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/ConcatOperator.java
26 26
    }
27 27
    
28 28
    @Override
29
    public Object call(Interpreter interpreter, Object op1, Object op2) {       
29
    public Object call(Interpreter interpreter, Object op1, Object op2) {
30
        if (op1 == null || op2 == null) {
31
            return null;
32
        }
30 33
        return Objects.toString(op1, "")+Objects.toString(op2, "");
31 34
    }
32 35

  
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/NegOperator.java
19 19
    
20 20
    @Override
21 21
    public Object call(Interpreter interpreter, Object arg) {
22
        if (arg == null) {
23
            return null;
24
        }
22 25
        if( !(arg instanceof Number) ) {
23 26
            throw new IllegalArgumentException("NEGATE function require a number");
24 27
        }
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/GtOperator.java
18 18
    }
19 19
    
20 20
    @Override
21
    public Object call(Interpreter interpreter, Object op1, Object op2) {       
21
    public Object call(Interpreter interpreter, Object op1, Object op2) {
22
        if (op1 == null || op2 == null) {
23
            return null;
24
        }
22 25
        int type = this.getType(op1, op2);
23 26
        if( (type & TYPE_NULL) == TYPE_NULL ) {
24 27
            return false;
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/LtOperator.java
18 18
    }
19 19
    
20 20
    @Override
21
    public Object call(Interpreter interpreter, Object op1, Object op2) {       
21
    public Object call(Interpreter interpreter, Object op1, Object op2) {
22
        if (op1 == null || op2 == null) {
23
            return null;
24
        }
22 25
        int type = this.getType(op1, op2);
23 26
        if( (type & TYPE_NULL) == TYPE_NULL ) {
24 27
            return false;
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/OrOperator.java
16 16
    }
17 17
    
18 18
    @Override
19
    public Object call(Interpreter interpreter, Object op1, Object op2) {       
19
    public Object call(Interpreter interpreter, Object op1, Object op2) {        
20 20
        if( op1 instanceof Boolean && op2 instanceof Boolean ) {
21 21
            boolean value = getBoolean(op1,1) || getBoolean(op2,2);
22 22
            return value;
23 23
        }
24
        
25
        if (op1==null && op2==null) {
26
            return null;
27
        } else if (op1==null||op2==null) {
28
            Boolean boolValue = null;
29
            if (op2 == null && op1 instanceof Boolean) {
30
                boolValue = getBoolean(op1,1);
31
            } else if (op1 == null && op2 instanceof Boolean){ 
32
                boolValue = getBoolean(op2,2);
33
            }
34
            if (boolValue==null || boolValue==false) {
35
                return null;
36
            } else {
37
                return true;
38
            }
39
        }
40
 
24 41
        throw new IllegalArgumentException("Types not allowed in '"+name()+"' operand.");
25 42
    }
26 43
    

Also available in: Unified diff