Revision 44207

View differences:

trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/feature/impl/DefaultFeatureStore.java
1962 1962
                    throw new VisitCanceledException();
1963 1963
                }
1964 1964
            }, query);
1965
            return null;
1966 1965
        } catch(VisitCanceledException ex) {
1967
            return feature.getValue();
1966

  
1968 1967
        } catch(DataException ex) {
1969 1968
            throw ex;
1970 1969
        } catch(Exception ex) {
1971 1970
            throw new RuntimeException("", ex);
1972 1971
        }
1972
        return feature.getValue();
1973 1973
    }
1974 1974

  
1975 1975
    @Override
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/feature/impl/featureset/FilteredIterator.java
25 25

  
26 26
import java.util.Iterator;
27 27
import java.util.NoSuchElementException;
28
import org.apache.commons.lang3.BooleanUtils;
28 29

  
29 30
import org.gvsig.fmap.dal.exception.DataEvaluatorException;
30 31
import org.gvsig.fmap.dal.exception.DataException;
......
120 121
	public boolean match(DefaultFeature feature) throws DataException {
121 122
		try {
122 123
			if (filter==null) {
123
				return true;
124
                            return true;
124 125
			}
125
			return ((Boolean) this.filter.evaluate(feature)).booleanValue();
126
                        Object x = this.filter.evaluate(feature);
127
                        if( x == null ) {
128
                            return false;
129
                        } else if( x instanceof Boolean ) {
130
                            return ((Boolean) x);
131
                        } else {
132
                            return true;
133
                        }
126 134
		} catch (EvaluatorException e) {
127 135
			throw new DataEvaluatorException(e);
128 136
		}
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.app/org.gvsig.app.mainplugin/src/main/java/org/gvsig/app/project/symboltables/ProjectSymbolTable.java
478 478
            Geometry geom = getGeom(args, 0);
479 479
            switch( args.length ) {
480 480
                case 2:
481
                    units = getUnits(args, 1);
481
                    units = getUnitsArea(args, 1);
482 482
                    break;
483 483
                case 3:
484 484
                    proj = getProjection(args, 1);
485
                    units = getUnits(args, 2);
485
                    units = getUnitsArea(args, 2);
486 486
                    break;
487 487
            }
488 488
            if (proj == null) {
......
519 519
            Geometry geom = getGeom(args, 0);
520 520
            switch( args.length ) {
521 521
                case 2:
522
                    units = getUnits(args, 1);
522
                    units = getUnitsArea(args, 1);
523 523
                    break;
524 524
                case 3:
525 525
                    proj = getProjection(args, 1);
526
                    units = getUnits(args, 2);
526
                    units = getUnitsArea(args, 2);
527 527
                    break;
528 528
            }
529 529
            if (proj == null) {
......
654 654
        return CRSFactory.getCRS(code);
655 655
    }
656 656

  
657
    private int getUnits(Object[] args, int i) {
657
    private int getUnitsArea(Object[] args, int i) {
658 658
        Object value = args[i];
659 659
        if (value == null) {
660 660
            throw new IllegalArgumentException("Illegal unit value 'null'");
......
678 678
        throw new IllegalArgumentException("Illegal unit name '" + name + "'");
679 679
    }
680 680

  
681
    private int getUnitsDistance(Object[] args, int i) {
682
        Object value = args[i];
683
        if (value == null) {
684
            throw new IllegalArgumentException("Illegal unit value 'null'");
685
        }
686
        if (value instanceof Number) {
687
            return ((Number) value).intValue();
688
        }
689
        String name = value.toString();
690
        String[] names = MapContext.getDistanceAbbr();
691
        for (int j = 0; j < names.length; j++) {
692
            if (name.equalsIgnoreCase(names[j])) {
693
                return j;
694
            }
695
        }
696
        names = MapContext.getDistanceNames();
697
        for (int j = 0; j < names.length; j++) {
698
            if (name.equalsIgnoreCase(names[j])) {
699
                return j;
700
            }
701
        }
702
        throw new IllegalArgumentException("Illegal unit name '" + name + "'");
703
    }
704

  
681 705
}
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.api/src/main/java/org/gvsig/expressionevaluator/ExpressionBuilder.java
11 11
public interface ExpressionBuilder {
12 12

  
13 13
    public static final String OPERATOR_NOT = "NOT";
14
    public static final String OPERATOR_NEGATE = "NEGATE";
14 15
    public static final String OPERATOR_IS = "IS";
15 16
    public static final String OPERATOR_AND = "AND";
16 17
    public static final String OPERATOR_OR = "OR";
17
    public static final String OPERATOR_EQ = "EQ";
18
    public static final String OPERATOR_NE = "NE";
19
    public static final String OPERATOR_GT = "GT";
20
    public static final String OPERATOR_GE = "GE";
21
    public static final String OPERATOR_LT = "LT";
22
    public static final String OPERATOR_LE = "LE";
18
    public static final String OPERATOR_EQ = "=";
19
    public static final String OPERATOR_NE = "<>";
20
    public static final String OPERATOR_GT = ">";
21
    public static final String OPERATOR_GE = ">=";
22
    public static final String OPERATOR_LT = "<";
23
    public static final String OPERATOR_LE = "<=";
23 24
    public static final String OPERATOR_LIKE = "LIKE";
24 25
    public static final String OPERATOR_ILIKE = "ILIKE";
25
    public static final String OPERATOR_ADD = "ADD";
26
    public static final String OPERATOR_SUBST = "SUBST";
27
    public static final String OPERATOR_MULT = "MULT";
28
    public static final String OPERATOR_DIV = "DIV";
29
    public static final String OPERATOR_CONCAT = "CONCAT";
26
    public static final String OPERATOR_ADD = "+";
27
    public static final String OPERATOR_SUBST = "-";
28
    public static final String OPERATOR_MULT = "*";
29
    public static final String OPERATOR_DIV = "/";
30
    public static final String OPERATOR_MOD = "%";
31
    public static final String OPERATOR_CONCAT = "||";
32
    public static final String OPERATOR_REGEXP = "~";
33
    public static final String OPERATOR_AND2 = "&&";
30 34
    
31 35
    public static final String FUNCTION_ST_SRID = "ST_SRID";
32 36
    public static final String FUNCTION_ST_ASTEXT = "ST_AsText";
......
114 118
    public static final String FUNCTION_INCR = "INCR";
115 119
    public static final String FUNCTION_DECR = "DECR";
116 120
    
121
    public static final String FUNCTION_RANGE = "RANGE";
122
    
117 123
    public enum GeometrySupportType {
118 124
        WKT,
119 125
        WKB,
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/AbstractBinaryOperator.java
8 8

  
9 9
public abstract class AbstractBinaryOperator extends AbstractFunction implements BinaryOperator {
10 10
    
11
    protected AbstractBinaryOperator(String group, String name, String description) {
12
        super(group, name, Range.is(2), description, " {{oper1}} " + name + " oper2 ");
11
    protected AbstractBinaryOperator(String group, String name, String description, boolean isSQLCompatible) {
12
        super(group, name, Range.is(2), description, " {{oper1}} " + name + " oper2 ", null, null, isSQLCompatible);
13 13
    }    
14 14

  
15
    protected AbstractBinaryOperator(String group, String name) {
16
        super(group, name, Range.is(2), null, " {{oper1}} " + name + " oper2 ");
15
    protected AbstractBinaryOperator(String group, String name, boolean isSQLCompatible) {
16
        this(group, name, null, isSQLCompatible);
17 17
    }
18 18

  
19 19
    @Override
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
1 1
package org.gvsig.expressionevaluator.impl.function.operator;
2 2

  
3
import static org.gvsig.expressionevaluator.ExpressionBuilder.OPERATOR_NEGATE;
3 4
import org.gvsig.expressionevaluator.Function;
4 5
import org.gvsig.expressionevaluator.Interpreter;
5 6

  
6 7

  
7 8
public class NegOperator extends AbstractUnaryOperator {
8 9

  
9
    public static final String NAME = "NEGATE";
10

  
11 10
    public NegOperator() {
12
        super(Function.GROUP_NUMERIC,NAME);   
11
        super(Function.GROUP_NUMERIC, OPERATOR_NEGATE, true);   
13 12
    }
14 13

  
15 14
    @Override
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
2 2

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

  
8 9
public class GtOperator extends AbstractBinaryOperator {
9 10

  
10
    public static final String NAME = ">";
11

  
12 11
    public GtOperator() {
13
        super(Function.GROUP_BOOLEAN,NAME);
12
        super(Function.GROUP_BOOLEAN, OPERATOR_GT, true);
14 13
    }
15 14

  
16 15
    @Override
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/IsOperator.java
2 2

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

  
8 9
public class IsOperator extends AbstractBinaryOperator {
9 10

  
10
    public static final String NAME = "IS";
11

  
12 11
    public IsOperator() {
13
        super(Function.GROUP_BOOLEAN, NAME);
12
        super(Function.GROUP_BOOLEAN, OPERATOR_IS, true);
14 13
    }
15 14

  
16 15
    @Override
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
2 2

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

  
8 9
public class LtOperator extends AbstractBinaryOperator {
9 10

  
10
    public static final String NAME = "<";
11

  
12 11
    public LtOperator() {
13
        super(Function.GROUP_BOOLEAN,NAME);
12
        super(Function.GROUP_BOOLEAN, OPERATOR_LT, true);
14 13
    }
15 14
    
16 15
    @Override
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/ModOperator.java
1 1
package org.gvsig.expressionevaluator.impl.function.operator;
2 2

  
3
import static org.gvsig.expressionevaluator.ExpressionBuilder.OPERATOR_MOD;
3 4
import org.gvsig.expressionevaluator.Function;
4 5
import org.gvsig.expressionevaluator.Interpreter;
5 6

  
6 7
public class ModOperator extends AbstractBinaryOperator {
7 8

  
8
    public static final String NAME = "%";
9

  
10 9
    public ModOperator() {
11
        super(Function.GROUP_NUMERIC, NAME);
10
        super(Function.GROUP_NUMERIC, OPERATOR_MOD, false);
12 11
    }
13 12

  
14 13
    @Override
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
1 1
package org.gvsig.expressionevaluator.impl.function.operator;
2 2

  
3
import static org.gvsig.expressionevaluator.ExpressionBuilder.OPERATOR_OR;
3 4
import org.gvsig.expressionevaluator.Function;
4 5
import org.gvsig.expressionevaluator.Interpreter;
5 6

  
6 7
public class OrOperator extends AbstractBinaryOperator {
7 8

  
8
    public static final String NAME = "OR";
9

  
10 9
    public OrOperator() {
11
        super(Function.GROUP_BOOLEAN,NAME);
12
        // this.addAlias("||");        
10
        super(Function.GROUP_BOOLEAN, OPERATOR_OR, true);
13 11
    }
14 12

  
15 13
    @Override
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
1 1
package org.gvsig.expressionevaluator.impl.function.operator;
2 2

  
3 3
import org.gvsig.expressionevaluator.Code;
4
import static org.gvsig.expressionevaluator.ExpressionBuilder.OPERATOR_DIV;
4 5
import org.gvsig.expressionevaluator.Function;
5 6
import org.gvsig.expressionevaluator.Interpreter;
6 7
import org.gvsig.expressionevaluator.Optimizer;
......
9 10
        extends AbstractBinaryOperator 
10 11
        implements Optimizer.FunctionOptimizer
11 12
    {
12
    public static final String NAME = "/";
13 13

  
14 14
    public DivOperator() {
15
        super(Function.GROUP_NUMERIC, NAME);
15
        super(Function.GROUP_NUMERIC, OPERATOR_DIV, true);
16 16
    }
17 17

  
18 18
    @Override
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/AbstractUnaryOperator.java
7 7

  
8 8
public abstract class AbstractUnaryOperator extends AbstractFunction implements UnaryOperator {
9 9
    
10
    protected AbstractUnaryOperator(String group, String name, String description) {
11
        super(group, name, Range.is(1), description, name + " {{oper}} ");
10
    protected AbstractUnaryOperator(String group, String name, String description, boolean sqlCompatible) {
11
        super(group, name, Range.is(1), description, name + " {{oper}} ", null, null, sqlCompatible);
12 12
    }    
13 13

  
14
    protected AbstractUnaryOperator(String group, String name) {
15
        super(group, name, Range.is(1), null, name + " {{oper}} ");
14
    protected AbstractUnaryOperator(String group, String name, boolean sqlCompatible) {
15
        this(group, name, null, sqlCompatible);
16 16
    }
17 17

  
18 18
    @Override
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
4 4
import org.gvsig.expressionevaluator.Code;
5 5
import org.gvsig.expressionevaluator.Code.Caller;
6 6
import org.gvsig.expressionevaluator.Code.Constant;
7
import org.gvsig.expressionevaluator.ExpressionBuilder;
8
import static org.gvsig.expressionevaluator.ExpressionBuilder.OPERATOR_ADD;
7 9
import org.gvsig.expressionevaluator.ExpressionRuntimeException;
8 10
import org.gvsig.expressionevaluator.Function;
9 11
import org.gvsig.expressionevaluator.Interpreter;
......
16 18
        implements FunctionOptimizer
17 19
    {
18 20

  
19
    public static final String NAME = "+";
20 21

  
21 22
    public AddOperator() {
22
        super(Function.GROUP_NUMERIC, NAME);
23
        super(Function.GROUP_NUMERIC, OPERATOR_ADD, true);
23 24
    }
24 25

  
25 26
    @Override
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
3 3
import java.util.Objects;
4 4
import java.util.regex.Matcher;
5 5
import java.util.regex.Pattern;
6
import static org.gvsig.expressionevaluator.ExpressionBuilder.OPERATOR_REGEXP;
6 7
import org.gvsig.expressionevaluator.Function;
7 8
import org.gvsig.expressionevaluator.Interpreter;
8 9

  
9 10
public class RegExpOperator extends AbstractBinaryOperator {
10 11

  
11
    public static final String NAME = "~";
12

  
13 12
    public RegExpOperator() {
14
        super(Function.GROUP_BOOLEAN, NAME);     
13
        super(Function.GROUP_BOOLEAN, OPERATOR_REGEXP, false);     
15 14
    }
16 15

  
17 16
    @Override
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
2 2

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

  
8 9
public class GeOperator extends AbstractBinaryOperator {
9 10

  
10
    public static final String NAME = ">=";
11

  
12 11
    public GeOperator() {
13
        super(Function.GROUP_BOOLEAN,NAME);
12
        super(Function.GROUP_BOOLEAN, OPERATOR_GE, true);
14 13
    }
15 14

  
16 15
    @Override
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
1 1
package org.gvsig.expressionevaluator.impl.function.operator;
2 2

  
3 3
import org.gvsig.expressionevaluator.Code;
4
import static org.gvsig.expressionevaluator.ExpressionBuilder.OPERATOR_MULT;
4 5
import org.gvsig.expressionevaluator.Function;
5 6
import org.gvsig.expressionevaluator.Interpreter;
6 7
import org.gvsig.expressionevaluator.Optimizer;
......
10 11
        implements Optimizer.FunctionOptimizer
11 12
    {
12 13

  
13
    public static final String NAME = "*";
14

  
15 14
    public MulOperator() {
16
        super(Function.GROUP_NUMERIC, NAME);
15
        super(Function.GROUP_NUMERIC, OPERATOR_MULT, true);
17 16
    }
18 17

  
19 18
    @Override
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
1 1
package org.gvsig.expressionevaluator.impl.function.operator;
2 2

  
3 3
import org.gvsig.expressionevaluator.Code;
4
import static org.gvsig.expressionevaluator.ExpressionBuilder.OPERATOR_SUBST;
4 5
import org.gvsig.expressionevaluator.Function;
5 6
import org.gvsig.expressionevaluator.Interpreter;
6 7
import org.gvsig.expressionevaluator.Optimizer;
......
10 11
        extends AbstractBinaryOperator 
11 12
        implements FunctionOptimizer
12 13
    {
13
    public static final String NAME = "-";
14

  
14
    
15 15
    public SubstOperator() {
16
        super(Function.GROUP_NUMERIC,NAME);
16
        super(Function.GROUP_NUMERIC, OPERATOR_SUBST, true);
17 17
    }
18 18

  
19 19
    @Override
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
1 1
package org.gvsig.expressionevaluator.impl.function.operator;
2 2

  
3
import static org.gvsig.expressionevaluator.ExpressionBuilder.OPERATOR_NOT;
3 4
import org.gvsig.expressionevaluator.Function;
4 5
import org.gvsig.expressionevaluator.Interpreter;
5 6

  
6 7

  
7 8
public class NotOperator extends AbstractUnaryOperator {
8 9

  
9
    public static final String NAME = "NOT";
10

  
11 10
    public NotOperator() {
12
        super(Function.GROUP_BOOLEAN,NAME);
11
        super(Function.GROUP_BOOLEAN, OPERATOR_NOT, true);
13 12
        this.addAlias("!");        
14 13
    }
15 14

  
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
2 2

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

  
8 9
public class LeOperator extends AbstractBinaryOperator {
9 10

  
10
    public static final String NAME = "<=";
11

  
12 11
    public LeOperator() {
13
        super(Function.GROUP_BOOLEAN,NAME);
12
        super(Function.GROUP_BOOLEAN, OPERATOR_LE, true);
14 13
    }
15 14
    
16 15
    @Override
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
1 1
package org.gvsig.expressionevaluator.impl.function.operator;
2 2

  
3
import static org.gvsig.expressionevaluator.ExpressionBuilder.OPERATOR_AND;
3 4
import org.gvsig.expressionevaluator.Function;
4 5
import org.gvsig.expressionevaluator.Interpreter;
5 6

  
6 7
public class AndOperator extends AbstractBinaryOperator {
7 8
    
8
    public static final String NAME = "AND";
9

  
10 9
    public AndOperator() {
11
        super(Function.GROUP_BOOLEAN, NAME);
12
        this.addAlias("&&");        
10
        super(Function.GROUP_BOOLEAN, OPERATOR_AND, true);
13 11
    }
14 12

  
15 13
    @Override
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
2 2

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

  
8 9
public class NeOperator extends AbstractBinaryOperator {
9 10

  
10
    public static final String NAME = "<>";
11

  
12 11
    public NeOperator() {
13
        super(Function.GROUP_BOOLEAN,NAME);
12
        super(Function.GROUP_BOOLEAN, OPERATOR_NE, true);
14 13
        this.addAlias("!=");
15 14
    }
16 15
    
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
2 2

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

  
8 9
public class EqOperator extends AbstractBinaryOperator {
9 10

  
10
    public static final String NAME = "=";
11

  
12 11
    public EqOperator() {
13
        super(Function.GROUP_BOOLEAN, NAME);
12
        super(Function.GROUP_BOOLEAN, OPERATOR_EQ, true);
14 13
    }
15 14

  
16 15
    @Override
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
5 5
import org.gvsig.expressionevaluator.Code;
6 6
import org.gvsig.expressionevaluator.Code.Caller;
7 7
import org.gvsig.expressionevaluator.Code.Constant;
8
import static org.gvsig.expressionevaluator.ExpressionBuilder.OPERATOR_CONCAT;
8 9
import org.gvsig.expressionevaluator.Function;
9 10
import org.gvsig.expressionevaluator.Interpreter;
10 11
import org.gvsig.expressionevaluator.Optimizer;
......
15 16
        implements FunctionOptimizer
16 17
    {
17 18
    
18
    public static final String NAME = "||";
19

  
20 19
    public ConcatOperator() {
21
        super(Function.GROUP_STRING, NAME);
20
        super(Function.GROUP_STRING, OPERATOR_CONCAT, true);
22 21
    }
23 22

  
24 23
    @Override
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/spatial/AndAndOperator.java
1 1
package org.gvsig.expressionevaluator.impl.function.spatial;
2 2

  
3
import static org.gvsig.expressionevaluator.ExpressionBuilder.OPERATOR_AND2;
3 4
import org.gvsig.expressionevaluator.impl.function.operator.*;
4 5
import org.gvsig.expressionevaluator.Function;
5 6
import org.gvsig.expressionevaluator.Interpreter;
......
8 9

  
9 10
public class AndAndOperator extends AbstractBinaryOperator {
10 11
    
11
    public static final String NAME = "&&";
12

  
13 12
    public AndAndOperator() {
14
        super(Function.GROUP_OGC, NAME);
13
        super(Function.GROUP_OGC, OPERATOR_AND2, true);
15 14
    }
16 15

  
17 16
    @Override
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/predicate/LikeOperator.java
5 5
import java.util.Map;
6 6
import java.util.regex.Matcher;
7 7
import java.util.regex.Pattern;
8
import static org.gvsig.expressionevaluator.ExpressionBuilder.OPERATOR_LIKE;
8 9
import org.gvsig.expressionevaluator.Function;
9 10
import org.gvsig.expressionevaluator.Interpreter;
10 11
import org.gvsig.expressionevaluator.impl.function.operator.AbstractBinaryOperator;
......
22 23
	protected static Map<String,Pattern> patterns = new HashMap<>();
23 24

  
24 25

  
25
    public static final String NAME = "LIKE";
26

  
27 26
    public LikeOperator() {
28
        super(Function.GROUP_STRING, NAME);
27
        super(Function.GROUP_STRING, OPERATOR_LIKE, true);
29 28
    }
30 29

  
31 30
    @Override
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/predicate/IlikeOperator.java
1 1
package org.gvsig.expressionevaluator.impl.function.predicate;
2 2

  
3
import static org.gvsig.expressionevaluator.ExpressionBuilder.OPERATOR_ILIKE;
3 4
import org.gvsig.expressionevaluator.Function;
4 5
import org.gvsig.expressionevaluator.Interpreter;
5 6
import org.gvsig.expressionevaluator.impl.function.operator.AbstractBinaryOperator;
6 7

  
7 8
public class IlikeOperator extends AbstractBinaryOperator {
8 9

  
9
    public static final String NAME = "ILIKE";
10

  
11 10
    public IlikeOperator() {
12
        super(Function.GROUP_STRING, NAME);
11
        super(Function.GROUP_STRING,  OPERATOR_ILIKE, true);
13 12
    }
14 13
    
15 14
    @Override
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/numeric/IncrFunction.java
26 26

  
27 27
    @Override
28 28
    public boolean allowConstantFolding() {
29
        return true;
29
        return false;
30 30
    }
31 31
    
32 32
    @Override
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/numeric/DecrFunction.java
24 24

  
25 25
    @Override
26 26
    public boolean allowConstantFolding() {
27
        return true;
27
        return false;
28 28
    }
29 29
    
30 30
    @Override
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/RangeFunction.java
2 2

  
3 3
import java.util.Iterator;
4 4
import org.apache.commons.lang3.Range;
5
import static org.gvsig.expressionevaluator.ExpressionBuilder.FUNCTION_RANGE;
5 6
import org.gvsig.expressionevaluator.ExpressionRuntimeException;
6 7
import org.gvsig.expressionevaluator.Function;
7 8
import org.gvsig.expressionevaluator.Interpreter;
......
9 10

  
10 11
public class RangeFunction extends AbstractFunction {
11 12

  
12
    public static final String NAME = "RANGE";
13
    
14 13
    public RangeFunction() {
15 14
        super(
16 15
            Function.GROUP_PROGRAMMING, 
17
            NAME, 
16
            FUNCTION_RANGE, 
18 17
            Range.between(1,3),
19 18
            "",
20
            NAME+"({{start}}, stop, step)",
19
            FUNCTION_RANGE+"({{start}}, stop, step)",
21 20
            null,
22 21
            "Iterable",
23
            true
22
            false
24 23
        );
25 24
    }
26 25
    
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/DefaultInterpreter.java
218 218
                    }
219 219
                    caller.function(function);
220 220
                }
221
                if( !function.isSQLCompatible() && this.sqlCompatible ) {
222
                    throw new ExpressionRuntimeException(code, I18N.Cant_use_non_SQL_compatible_functions(function.name()));
223
                }
221
//                if( !function.isSQLCompatible() && this.sqlCompatible ) {
222
//                    throw new ExpressionRuntimeException(code, I18N.Cant_use_non_SQL_compatible_functions(function.name()));
223
//                }
224 224
                Codes args = caller.parameters();
225 225
                try {
226 226
                    switch( caller.type() ) {
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/DefaultCodeBuilder.java
19 19
import org.gvsig.expressionevaluator.CodeBuilder;
20 20
import org.gvsig.expressionevaluator.Codes;
21 21
import org.gvsig.expressionevaluator.ExpressionBuilder;
22
import static org.gvsig.expressionevaluator.ExpressionBuilder.OPERATOR_ADD;
23
import static org.gvsig.expressionevaluator.ExpressionBuilder.OPERATOR_AND;
24
import static org.gvsig.expressionevaluator.ExpressionBuilder.OPERATOR_CONCAT;
25
import static org.gvsig.expressionevaluator.ExpressionBuilder.OPERATOR_DIV;
26
import static org.gvsig.expressionevaluator.ExpressionBuilder.OPERATOR_EQ;
27
import static org.gvsig.expressionevaluator.ExpressionBuilder.OPERATOR_GE;
28
import static org.gvsig.expressionevaluator.ExpressionBuilder.OPERATOR_GT;
29
import static org.gvsig.expressionevaluator.ExpressionBuilder.OPERATOR_ILIKE;
30
import static org.gvsig.expressionevaluator.ExpressionBuilder.OPERATOR_IS;
31
import static org.gvsig.expressionevaluator.ExpressionBuilder.OPERATOR_LE;
32
import static org.gvsig.expressionevaluator.ExpressionBuilder.OPERATOR_LIKE;
33
import static org.gvsig.expressionevaluator.ExpressionBuilder.OPERATOR_LT;
34
import static org.gvsig.expressionevaluator.ExpressionBuilder.OPERATOR_MOD;
35
import static org.gvsig.expressionevaluator.ExpressionBuilder.OPERATOR_MULT;
36
import static org.gvsig.expressionevaluator.ExpressionBuilder.OPERATOR_NE;
37
import static org.gvsig.expressionevaluator.ExpressionBuilder.OPERATOR_NEGATE;
38
import static org.gvsig.expressionevaluator.ExpressionBuilder.OPERATOR_NOT;
39
import static org.gvsig.expressionevaluator.ExpressionBuilder.OPERATOR_OR;
40
import static org.gvsig.expressionevaluator.ExpressionBuilder.OPERATOR_REGEXP;
41
import static org.gvsig.expressionevaluator.ExpressionBuilder.OPERATOR_SUBST;
22 42
import org.gvsig.expressionevaluator.ExpressionBuilder.Value;
23 43
import org.gvsig.expressionevaluator.ExpressionUtils;
24 44
import org.gvsig.expressionevaluator.Formatter;
25 45
import org.gvsig.expressionevaluator.Function;
26 46
import org.gvsig.expressionevaluator.Interpreter;
27 47
import org.gvsig.expressionevaluator.SymbolTable;
28
import org.gvsig.expressionevaluator.impl.function.operator.AddOperator;
29
import org.gvsig.expressionevaluator.impl.function.operator.AndOperator;
30
import org.gvsig.expressionevaluator.impl.function.operator.ConcatOperator;
31
import org.gvsig.expressionevaluator.impl.function.operator.DivOperator;
32
import org.gvsig.expressionevaluator.impl.function.operator.EqOperator;
33
import org.gvsig.expressionevaluator.impl.function.operator.GeOperator;
34
import org.gvsig.expressionevaluator.impl.function.operator.GtOperator;
35
import org.gvsig.expressionevaluator.impl.function.operator.IsOperator;
36
import org.gvsig.expressionevaluator.impl.function.operator.LeOperator;
37
import org.gvsig.expressionevaluator.impl.function.operator.LtOperator;
38
import org.gvsig.expressionevaluator.impl.function.operator.ModOperator;
39
import org.gvsig.expressionevaluator.impl.function.operator.MulOperator;
40
import org.gvsig.expressionevaluator.impl.function.operator.NeOperator;
41
import org.gvsig.expressionevaluator.impl.function.operator.NegOperator;
42
import org.gvsig.expressionevaluator.impl.function.operator.NotOperator;
43
import org.gvsig.expressionevaluator.impl.function.operator.OrOperator;
44
import org.gvsig.expressionevaluator.impl.function.operator.RegExpOperator;
45
import org.gvsig.expressionevaluator.impl.function.operator.SubstOperator;
46
import org.gvsig.expressionevaluator.impl.function.predicate.IlikeOperator;
47
import org.gvsig.expressionevaluator.impl.function.predicate.LikeOperator;
48 48
import org.gvsig.expressionevaluator.impl.function.programming.GetattrFunction;
49 49
import org.gvsig.expressionevaluator.impl.function.programming.GetitemFunction;
50 50
import org.gvsig.fmap.geom.Geometry;
......
417 417
            switch(this.type) {
418 418
                case UNARY_OPERATOR:
419 419
                    return builder.function(
420
                            NegOperator.NAME.equalsIgnoreCase(this.name())?
420
                            OPERATOR_NEGATE.equalsIgnoreCase(this.name())?
421 421
                                "-" :
422 422
                                this.name(),
423 423
                            this.parameters().get(0).toValue(builder)
......
455 455
            StringBuilder builder = new StringBuilder();
456 456
            switch(this.type) {
457 457
                case UNARY_OPERATOR:
458
                    if( NegOperator.NAME.equalsIgnoreCase(this.name()) ) {
458
                    if( OPERATOR_NEGATE.equalsIgnoreCase(this.name()) ) {
459 459
                        builder.append("-");
460 460
                    } else {
461 461
                        builder.append(this.name());
......
617 617
    
618 618
    @Override
619 619
    public Code not(Code op1) {
620
        return operator(NotOperator.NAME, op1);
620
        return operator(OPERATOR_NOT, op1);
621 621
    }
622 622

  
623 623
    @Override
624 624
    public Code negate(Code op1) {
625
        return operator(NegOperator.NAME, op1);
625
        return operator(OPERATOR_NEGATE, op1);
626 626
    }
627 627

  
628 628
    @Override
629 629
    public Code concat(Code op1, Code op2) {
630
        return operator(ConcatOperator.NAME, op1, op2);
630
        return operator(OPERATOR_CONCAT, op1, op2);
631 631
    }
632 632

  
633 633
    @Override
634 634
    public Code add(Code op1, Code op2) {
635
        return operator(AddOperator.NAME, op1, op2);
635
        return operator(OPERATOR_ADD, op1, op2);
636 636
    }
637 637

  
638 638
    @Override
639 639
    public Code subst(Code op1, Code op2) {
640
        return operator(SubstOperator.NAME, op1, op2);
640
        return operator(OPERATOR_SUBST, op1, op2);
641 641
    }
642 642

  
643 643
    @Override
644 644
    public Code mult(Code op1, Code op2) {
645
        return operator(MulOperator.NAME, op1, op2);
645
        return operator(OPERATOR_MULT, op1, op2);
646 646
    }
647 647

  
648 648
    @Override
649 649
    public Code div(Code op1, Code op2) {
650
        return operator(DivOperator.NAME, op1, op2);
650
        return operator(OPERATOR_DIV, op1, op2);
651 651
    }
652 652

  
653 653
    @Override
654 654
    public Code mod(Code op1, Code op2) {
655
        return operator(ModOperator.NAME, op1, op2);
655
        return operator(OPERATOR_MOD, op1, op2);
656 656
    }
657 657

  
658 658
    @Override
659 659
    public Code or(Code op1, Code op2) {
660
        return operator(OrOperator.NAME, op1, op2);
660
        return operator(OPERATOR_OR, op1, op2);
661 661
    }
662 662

  
663 663
    @Override
664 664
    public Code and(Code op1, Code op2) {
665
        return operator(AndOperator.NAME, op1, op2);
665
        return operator(OPERATOR_AND, op1, op2);
666 666
    }
667 667

  
668 668
    @Override
669 669
    public Code like(Code op1, Code op2) {
670
        return operator(LikeOperator.NAME, op1, op2);
670
        return operator(OPERATOR_LIKE, op1, op2);
671 671
    }
672 672

  
673 673
    @Override
674 674
    public Code ilike(Code op1, Code op2) {
675
        return operator(IlikeOperator.NAME, op1, op2);
675
        return operator(OPERATOR_ILIKE, op1, op2);
676 676
    }
677 677

  
678 678
    @Override
679 679
    public Code regexp(Code op1, Code op2) {
680
        return operator(RegExpOperator.NAME, op1, op2);
680
        return operator(OPERATOR_REGEXP, op1, op2);
681 681
    }
682 682

  
683 683
    @Override
684 684
    public Code lt(Code op1, Code op2) {
685
        return operator(LtOperator.NAME, op1, op2);
685
        return operator(OPERATOR_LT, op1, op2);
686 686
    }
687 687

  
688 688
    @Override
689 689
    public Code gt(Code op1, Code op2) {
690
        return operator(GtOperator.NAME, op1, op2);
690
        return operator(OPERATOR_GT, op1, op2);
691 691
    }
692 692

  
693 693
    @Override
694 694
    public Code le(Code op1, Code op2) {
695
        return operator(LeOperator.NAME, op1, op2);
695
        return operator(OPERATOR_LE, op1, op2);
696 696
    }
697 697

  
698 698
    @Override
699 699
    public Code ge(Code op1, Code op2) {
700
        return operator(GeOperator.NAME, op1, op2);
700
        return operator(OPERATOR_GE, op1, op2);
701 701
    }
702 702

  
703 703
    @Override
704 704
    public Code eq(Code op1, Code op2) {
705
        return operator(EqOperator.NAME, op1, op2);
705
        return operator(OPERATOR_EQ, op1, op2);
706 706
    }
707 707

  
708 708
    @Override
709 709
    public Code ne(Code op1, Code op2) {
710
        return operator(NeOperator.NAME, op1, op2);
710
        return operator(OPERATOR_NE, op1, op2);
711 711
    }
712 712

  
713 713
    @Override
714 714
    public Code is(Code op1, Code op2) {
715
        return operator(IsOperator.NAME, op1, op2);
715
        return operator(OPERATOR_IS, op1, op2);
716 716
    }
717 717

  
718 718
    @Override
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/grammars/BasicGrammarFactory.java
1 1
package org.gvsig.expressionevaluator.impl.grammars;
2 2

  
3 3
import static org.gvsig.expressionevaluator.ExpressionBuilder.FUNCTION_CAST;
4
import static org.gvsig.expressionevaluator.ExpressionBuilder.OPERATOR_REGEXP;
4 5
import org.gvsig.expressionevaluator.ExpressionEvaluatorLocator;
5 6
import org.gvsig.expressionevaluator.ExpressionEvaluatorManager;
6 7
import org.gvsig.expressionevaluator.Grammar;
......
15 16
import org.gvsig.expressionevaluator.impl.function.programming.ReturnFunction;
16 17
import org.gvsig.expressionevaluator.impl.function.programming.TryFunction;
17 18
import org.gvsig.expressionevaluator.impl.function.programming.WhileFunction;
18
import org.gvsig.expressionevaluator.impl.function.typeconversion.CastFunction;
19 19
import org.gvsig.expressionevaluator.spi.AbstractGrammarFactory;
20 20

  
21 21
/**
......
130 130
                .addRuleOnFalse(stmt.require_expression("PATTERN"))
131 131
            );
132 132
            stmt.code(
133
                    RegExpOperator.NAME,
133
                    OPERATOR_REGEXP,
134 134
                    stmt.args_names("VALUE","PATTERN")
135 135
            );
136 136
            theGrammar.addStatement(stmt);
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.swing/org.gvsig.expressionevaluator.swing.impl/src/main/java/org/gvsig/expressionevaluator/swing/impl/AbstractAutomaticExpressionChecker.java
17 17
import javax.swing.event.DocumentListener;
18 18
import javax.swing.text.JTextComponent;
19 19
import org.apache.commons.lang3.StringUtils;
20
import org.apache.commons.lang3.mutable.Mutable;
21
import org.apache.commons.lang3.mutable.MutableObject;
22
import org.gvsig.expressionevaluator.Code;
23
import org.gvsig.expressionevaluator.Code.Caller;
24
import org.gvsig.expressionevaluator.Code.Identifier;
20 25
import org.gvsig.expressionevaluator.Expression;
21 26
import org.gvsig.expressionevaluator.ExpressionEvaluatorLocator;
22 27
import org.gvsig.expressionevaluator.ExpressionEvaluatorManager;
23 28
import org.gvsig.expressionevaluator.ExpressionRuntimeException;
24 29
import org.gvsig.expressionevaluator.ExpressionSyntaxException;
30
import org.gvsig.expressionevaluator.Function;
25 31
import org.gvsig.expressionevaluator.MutableSymbolTable;
26 32
import org.gvsig.expressionevaluator.swing.ExpressionBuilderConfig;
27 33
import org.gvsig.tools.ToolsLocator;
34
import org.gvsig.tools.exception.BaseException;
28 35
import org.gvsig.tools.i18n.I18nManager;
29 36
import org.gvsig.tools.swing.api.ToolsSwingLocator;
30 37
import org.gvsig.tools.swing.api.ToolsSwingManager;
31 38
import org.gvsig.tools.swing.api.windowmanager.Dialog;
32 39
import org.gvsig.tools.swing.api.windowmanager.WindowManager;
33 40
import org.gvsig.tools.swing.api.windowmanager.WindowManager_v2;
41
import org.gvsig.tools.visitor.VisitCanceledException;
42
import org.gvsig.tools.visitor.Visitor;
34 43

  
35 44
/**
36 45
 *
......
173 182
            this.setMessage(JOptionPane.ERROR_MESSAGE, "Syntax error in expression");
174 183
            return;
175 184
        }
176
        expression.setSQLCompatible(this.config.isSQLCompatible());
185
        final Mutable<String> theTip = new MutableObject<>(null);
186
        expression.setSQLCompatible(false);
177 187
        if (this.config.getPreviewSymbolTable() == null) {
178 188
            try {
179 189
                ExpressionEvaluatorManager theManager = ExpressionEvaluatorLocator.getManager();
......
188 198
                Object theValue = expression.execute(this.config.getPreviewSymbolTable());
189 199
                this.setPreview(theValue);
190 200
            } catch (ExpressionRuntimeException ex) {
191
                this.setTip(ex.getTip());
201
                theTip.setValue(ex.getTip());
192 202
                this.setMessage(JOptionPane.ERROR_MESSAGE, "Runtime error. " + ex.getMessage());
193 203
            } catch (Exception ex) {
194 204
                this.setMessage(JOptionPane.ERROR_MESSAGE, "Runtime error. " + ex.getMessage());
195 205
            }
196 206
        }
207
        if( this.config.isSQLCompatible() ) {
208
            Code code = expression.getCode();
209
            try {
210
                code.accept(new Visitor() {
211
                    @Override
212
                    public void visit(Object obj) throws VisitCanceledException, BaseException {
213
                        Code code = (Code) obj;
214
                        switch(code.code()) {
215
                            case Code.CALLER:
216
                                Function function = ((Caller)code).function();
217
                                if( function!=null && !function.isSQLCompatible() ) {
218
                                    theTip.setValue(I18N.Avoid_the_use_of_functions_not_compatible_with_SQL_in_this_data_source(function.name()));
219
                                }
220
                                break;
221
                            case Code.IDENTIFIER:
222
                                if( config.getPreviewSymbolTable()!=null && 
223
                                        !config.getPreviewSymbolTable().isSQLCompatible(((Identifier)code).name()) ) {
224
                                    theTip.setValue(I18N.Avoid_the_use_of_functions_not_compatible_with_SQL_in_this_data_source(((Identifier)code).name()));
225
                                }
226
                                break;
227
                            case Code.METHOD:
228
                                theTip.setValue(I18N.Avoid_the_use_of_functions_not_compatible_with_SQL_in_this_data_source(((Caller)code).name()));
229
                                break;
230
                        }
231
                    }
232
                });
233
            } catch (BaseException ex) {
234
            }
235
        }
236
        if( !StringUtils.isBlank(theTip.getValue()) ) {
237
            this.setTip(theTip.getValue());
238
        }
197 239
    }
198 240

  
199 241
    protected boolean isTipEnabled() {
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.swing/org.gvsig.expressionevaluator.swing.impl/src/main/java/org/gvsig/expressionevaluator/swing/impl/I18N.java
1
package org.gvsig.expressionevaluator.swing.impl;
2

  
3
import org.apache.commons.lang3.Range;
4

  
5
/**
6
 *
7
 * @author jjdelcerro
8
 */
9
public class I18N {
10

  
11
    static String Avoid_the_use_of_functions_not_compatible_with_SQL_in_this_data_source(String name) {
12
        return String.format("Avoid the use of functions not compatible with SQL in this data source (%s).", name);
13
    }
14

  
15
}

Also available in: Unified diff