Revision 43521

View differences:

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/Interpreter.java
3 3
public interface Interpreter {
4 4

  
5 5
    public void setSymbolTable(SymbolTable symbolTable);
6
    
6

  
7 7
    public SymbolTable getSymbolTable();
8
    
8

  
9 9
    public Object run(Code code);
10

  
11
    public void link(Code code);
12

  
13
    public Double getAccuracy();
14

  
15
    public void setAccuracy(Double accuracy);
10 16
    
11
    public void link(Code code);
17
    public Code getCurrentCode();
12 18
}
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/Function.java
5 5

  
6 6
public interface Function {
7 7

  
8
    public final String GROUP_NUMERIC = "Numeric";
9
    public final String GROUP_STRING = "String";
10
    public final String GROUP_DATETIME = "Datetime";
11
    public final String GROUP_BOOLEAN = "Boolean";
12
    public final String GROUP_OGC = "OGC";
13
   
8 14
    public String group();
9 15

  
10 16
    public String name();
......
13 19

  
14 20
    public String description();
15 21

  
22
    public String template();
23
    
16 24
    public String[] descriptionArgs();
17 25

  
18
    public Object call(Object[] args) throws Exception;
26
    public Object call(Interpreter interpreter, Object[] args) throws Exception;
19 27
    
20 28
    public void addAlias(String name);
21 29
    
22 30
    public List<String> alias();
31
    
32
    public boolean isOperator();
23 33
}
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/ExpressionEvaluatorLocator.java
1
package org.gvsig.expressionevaluator;
2

  
3
import org.gvsig.tools.locator.AbstractLocator;
4
import org.gvsig.tools.locator.LocatorException;
5

  
6

  
7
public class ExpressionEvaluatorLocator extends AbstractLocator {
8

  
9
    private static final String LOCATOR_NAME = "ExpressionEvaluatorLocator";
10

  
11
    public static final String MANAGER_NAME = "ExpressionEvaluatorManager";
12

  
13
    private static final String MANAGER_DESCRIPTION = "ExpressionEvaluator of gvSIG";
14

  
15
    /**
16
     * Unique instance.
17
     */
18
    private static final ExpressionEvaluatorLocator instance = new ExpressionEvaluatorLocator();
19

  
20
    /**
21
     * Return the singleton instance.
22
     *
23
     * @return the singleton instance
24
     */
25
    public static ExpressionEvaluatorLocator getInstance() {
26
        return instance;
27
    }
28

  
29
    /**
30
     * Returns the Locator name.
31
     *
32
     * @return String containing the locator name.
33
     */
34
    @Override
35
    public String getLocatorName() {
36
        return LOCATOR_NAME;
37
    }
38

  
39
    public static ExpressionEvaluatorManager getManager() throws LocatorException {
40
        return (ExpressionEvaluatorManager) getInstance().get(MANAGER_NAME);
41
    }
42

  
43
    public static void registerManager(Class clazz) {
44
        getInstance().register(MANAGER_NAME, MANAGER_DESCRIPTION, clazz);
45
    }
46

  
47
    public static void registerDefaultManager(Class clazz) {
48
        getInstance().registerDefault(MANAGER_NAME, MANAGER_DESCRIPTION, clazz);
49
    }
50

  
51
}
0 52

  
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/ExpressionEvaluatorLibrary.java
20 20

  
21 21
    @Override
22 22
    protected void doInitialize() throws LibraryException {
23
        // Do nothing
24 23
    }
25 24

  
26 25
    @Override
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/Code.java
10 10
    public static final int CONSTANT = 0;
11 11
    public static final int IDENTIFIER = 1;
12 12
    public static final int CALLER = 2;
13
    
13

  
14 14
    public interface Constant extends Code {
15 15

  
16 16
        public Object value();
......
40 40
        public static final int FUNCTION = 0;
41 41
        public static final int BINARY_OPERATOR = 1;
42 42
        public static final int UNARY_OPERATOR = 2;
43
        
43

  
44 44
        public String name();
45 45

  
46
        public Object call(Object[] args) throws Exception;
47
        
46
        public Object call(Interpreter interpreter, Object[] args) throws Exception;
47

  
48 48
        public Function function();
49 49

  
50 50
        public Function function(Function function);
......
52 52
        public Arguments args();
53 53

  
54 54
        public int type();
55

  
55 56
    }
56 57

  
57 58
    int code();
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/Compiler.java
6 6
    public void setLexicalAnalyzer(LexicalAnalyzer lex);
7 7
    
8 8
    public void setCodeBuilder(CodeBuilder codeBuilder);
9
        
9
    
10 10
    public Code compileExpression(String expression);
11 11

  
12 12
}
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/spi/AbstractFunction.java
9 9
import org.gvsig.fmap.geom.primitive.Point;
10 10

  
11 11
public abstract class AbstractFunction implements Function {
12

  
12
 
13 13
    private final String name;
14 14
    private final String group;
15 15
    private final Range argc;
16 16
    private final String description;
17 17
    private final String[] descriptionArgs;
18 18
    private List<String> alias;
19
    private String template;
19 20

  
20
    protected AbstractFunction(String group, String name, Range argc, String description, String[] descriptionArgs) {
21
    protected AbstractFunction(String group, String name, Range argc, String description, String template, String[] descriptionArgs) {
21 22
        this.name = name;
22 23
        this.group = group;
23 24
        this.argc = argc;
24 25
        this.description = description;
26
        this.template = template;
25 27
        this.descriptionArgs = descriptionArgs;
26 28
    }
27 29

  
30
    protected AbstractFunction(String group, String name, Range argc, String desription, String template) {
31
        this(group, name, argc, desription, template, null);
32
    }
33

  
28 34
    protected AbstractFunction(String group, String name, Range argc) {
29
        this(group, name, argc, null, null);
35
        this(group, name, argc, null, null, null);
30 36
    }
31 37

  
32 38
    @Override
......
67 73
        return this.alias;
68 74
    }
69 75

  
76
    @Override
77
    public String template() {
78
        return this.template;
79
    }
80

  
81
    @Override
82
    public boolean isOperator() {
83
        return false;
84
    }
85
    
70 86
    protected int getInt(Object args[], int n) {
71 87
        if( args.length < n  ) {
72 88
            throw new IllegalArgumentException("Required argument "+n+" and only found " + args.length +" arguments in call to '"+name()+"'.");
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/ExpressionEvaluatorManager.java
1 1

  
2 2
package org.gvsig.expressionevaluator;
3 3

  
4
import org.gvsig.fmap.dal.EvaluatorFactory;
4 5

  
6

  
5 7
public interface ExpressionEvaluatorManager {
6 8
    
7 9
    public Object evaluate(String source);
......
23 25
    public Compiler createCompiler();
24 26
    
25 27
    public Interpreter createInterpreter();
28
    
29
    public ExpressionEvaluator createEvaluator(String expression);
26 30
        
27
}
31
    public ExpressionEvaluator createEvaluator();
32
        
33
    public EvaluatorFactory createEvaluatorFactory();
34
    
35
    public Double getAccuracy();
36
    
37
    public void setAccuracy(Double accuracy);     
38
    }
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/SymbolTable.java
2 2

  
3 3
import java.util.Iterator;
4 4

  
5
public interface SymbolTable {
5
public interface SymbolTable extends Iterable<Function>{
6 6

  
7 7
    public Function function(String name);
8 8
    
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/ExpressionEvaluator.java
1
package org.gvsig.expressionevaluator;
2

  
3
import org.gvsig.tools.evaluator.EvaluatorWithDescriptions;
4

  
5
public interface ExpressionEvaluator extends EvaluatorWithDescriptions {
6

  
7
    public void compile();
8

  
9
    public Code getCode();
10

  
11
    public Compiler getCompiler();
12

  
13
    public void setCompiler(Compiler compiler);
14

  
15
    public Interpreter getInterpreter();
16

  
17
    public void setInterpreter(Interpreter interpreter);
18

  
19
    public LexicalAnalyzer getLexer();
20

  
21
    public void setLexer(LexicalAnalyzer lexer);
22

  
23
    public String getSource();
24

  
25
    public void setSource(String source);
26

  
27
    public SymbolTable getSymbolTable();
28

  
29
    public void setSymbolTable(SymbolTable symbolTable);
30

  
31
    public Double getAccuracy();
32
    
33
    public void setAccuracy(Double accuracy);     
34
    
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/SQLSymbolTable.java
263 263
    public Iterator<Function> iterfuncs() {
264 264
        return this.functions.values().iterator();
265 265
    }
266

  
267
    @Override
268
    public Iterator<Function> iterator() {
269
        return iterfuncs();
270
    }
266 271
    
267 272
}
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/DefaultCompiler.java
26 26
    public void setCodeBuilder(CodeBuilder codeBuilder) {
27 27
        this.codeBuilder = codeBuilder;
28 28
    }
29
    
30 29
    @Override
31 30
    public Code compileExpression(String expression) {
32 31
        this.lexer.setSource(expression);
......
103 102
                op2 = parse_sum();
104 103
                op1 = codeBuilder.eq(op1, op2);
105 104
                break;
106
            case Token.PRED_IS: {
105
            case Token.OP_NE:
107 106
                lexer.next();
108
                Token next = lexer.look();
109
                if( next.getType() == Token.NOTNULL ) {
110
                    op1 = codeBuilder.is(op1, codeBuilder.constant(null));
111
                    op1 = codeBuilder.not(op1);
112
                } else {
113
                    op2 = parse_sum();
114
                    op1 = codeBuilder.is(op1, op2);
107
                op2 = parse_sum();
108
                op1 = codeBuilder.ne(op1, op2);
109
                break;
110
            case Token.PRED_IS: {
111
                    lexer.next();
112
                    Token next = lexer.look();
113
                    if( next.getType() == Token.NOTNULL ) {
114
                        op1 = codeBuilder.is(op1, codeBuilder.constant(null));
115
                        op1 = codeBuilder.not(op1);
116
                    } else {
117
                        op2 = parse_sum();
118
                        op1 = codeBuilder.is(op1, op2);
119
                    }
115 120
                }
116
            }
117
            break;
121
                break;
118 122
            case Token.ISNULL:
119 123
                lexer.next();
120 124
                op1 = codeBuilder.is(op1, codeBuilder.constant(null));
121 125
                break;
122
            case Token.OP_NE:
123
                lexer.next();
124
                op2 = parse_sum();
125
                op1 = codeBuilder.ne(op1, op2);
126
                break;
127 126
            case Token.PRED_LIKE:
128 127
                lexer.next();
129 128
                op2 = parse_sum();
......
194 193
        Token token = lexer.look();
195 194
        switch( token.getType() ) {
196 195
        case Token.PARENTHESIS_OPEN: {
197
            lexer.next();
198
            Code value = parseExpression();
199
            Token next = lexer.next();
200
            if( next.getType() != Token.PARENTHESIS_CLOSE ) {
201
                throw new RuntimeException();
196
                lexer.next();
197
                Code value = parseExpression();
198
                Token next = lexer.next();
199
                if( next.getType() != Token.PARENTHESIS_CLOSE ) {
200
                    throw new RuntimeException();
201
                }
202
                return value;
202 203
            }
203
            return value;
204
        }
205 204
        case Token.IDENTIFIER: {
206
            lexer.next();
207
            String id = (String) token.getLiteral();
208
            Token next = lexer.look();
209
            if( next.getType() == Token.PARENTHESIS_OPEN ) {
210 205
                lexer.next();
211
                Arguments args = parseArgs();
212
                next = lexer.next();
213
                if( next.getType() != Token.PARENTHESIS_CLOSE ) {
214
                    throw new RuntimeException("Expected ')'.");
206
                String id = (String) token.getLiteral();
207
                Token next = lexer.look();
208
                if( next.getType() == Token.PARENTHESIS_OPEN ) {
209
                    lexer.next();
210
                    Arguments args = parseArgs();
211
                    next = lexer.next();
212
                    if( next.getType() != Token.PARENTHESIS_CLOSE ) {
213
                        throw new RuntimeException("Expected ')'.");
214
                    }
215
                    return codeBuilder.function(id, args);
216
                } else {
217
                    return codeBuilder.identifier(id);
215 218
                }
216
                return codeBuilder.function(id, args);
217
            } else {
218
                return codeBuilder.identifier(id);
219 219
            }
220
        }
221 220
        case Token.STRING_LITERAL:
222 221
            lexer.next();
223 222
            return codeBuilder.constant(token.getValue());
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/DefaultExpressionEvaluatorManager.java
1
package org.gvsig.expressionevaluator.impl;
2

  
3
import org.gvsig.expressionevaluator.Code;
4
import org.gvsig.expressionevaluator.CodeBuilder;
5
import org.gvsig.expressionevaluator.Compiler;
6
import org.gvsig.expressionevaluator.ExpressionEvaluator;
7
import org.gvsig.expressionevaluator.ExpressionEvaluatorManager;
8
import org.gvsig.expressionevaluator.Interpreter;
9
import org.gvsig.expressionevaluator.LexicalAnalyzer;
10
import org.gvsig.expressionevaluator.MutableSymbolTable;
11
import org.gvsig.expressionevaluator.SymbolTable;
12
import org.gvsig.fmap.dal.EvaluatorFactory;
13
import org.gvsig.integration.DefaultEvaluatorFactory;
14
import org.gvsig.integration.DefaultExpressionEvaluator;
15

  
16

  
17
public class DefaultExpressionEvaluatorManager implements ExpressionEvaluatorManager {
18

  
19
    private Double accuracy;
20

  
21
    public DefaultExpressionEvaluatorManager() {
22
        
23
    }
24
    
25
    @Override
26
    public Object evaluate(String source) {
27
        DefaultInterpreter interpreter = new DefaultInterpreter();
28
        DefaultCompiler compiler = new DefaultCompiler();
29
        Code code = compiler.compileExpression(source);
30
        return interpreter.run(code);
31
    }
32

  
33
    @Override
34
    public Object evaluate(SymbolTable symbolTable, String source) {
35
        DefaultInterpreter interpreter = new DefaultInterpreter();
36
        DefaultCompiler compiler = new DefaultCompiler();
37
        Code code = compiler.compileExpression(source);
38
        interpreter.setSymbolTable(symbolTable);
39
        return interpreter.run(code);
40
    }
41

  
42
    @Override
43
    public Object evaluate(SymbolTable symbolTable, Code code) {
44
        DefaultInterpreter interpreter = new DefaultInterpreter();
45
        interpreter.setSymbolTable(symbolTable);
46
        return interpreter.run(code);
47
    }
48

  
49
    @Override
50
    public Code compile(String source) {
51
        DefaultCompiler compiler = new DefaultCompiler();
52
        return compiler.compileExpression(source);
53
    }
54

  
55
    @Override
56
    public Code compile(LexicalAnalyzer lex, String source) {
57
        DefaultCompiler compiler = new DefaultCompiler();
58
        compiler.setLexicalAnalyzer(lex);
59
        return compiler.compileExpression(source);
60
    }
61

  
62
    @Override
63
    public MutableSymbolTable createSymbolTable() {
64
        return new DefaultSymbolTable();
65
    }
66

  
67
    @Override
68
    public LexicalAnalyzer createLexicalAnalyzer() {
69
        return new SQLLexicalAnalyzer();
70
    }
71

  
72
    @Override
73
    public CodeBuilder createCodeBuilder() {
74
        return new DefaultCodeBuilder();
75
    }
76

  
77
    @Override
78
    public Compiler createCompiler() {
79
        return new DefaultCompiler();
80
    }
81

  
82
    @Override
83
    public Interpreter createInterpreter() {
84
        return new DefaultInterpreter();
85
    }
86

  
87
    @Override
88
    public ExpressionEvaluator createEvaluator(String expression) {
89
        DefaultExpressionEvaluator e = new DefaultExpressionEvaluator();
90
        e.setSource(expression);
91
        return e;
92
    }
93

  
94
    @Override
95
    public ExpressionEvaluator createEvaluator() {
96
        return new DefaultExpressionEvaluator();
97
    }
98

  
99
    @Override
100
    public EvaluatorFactory createEvaluatorFactory() {
101
        return new DefaultEvaluatorFactory();
102
    }
103

  
104
    @Override
105
    public Double getAccuracy() {
106
        return this.accuracy;
107
    }
108

  
109
    @Override
110
    public void setAccuracy(Double accuracy) {
111
        this.accuracy = accuracy;
112
    }
113
    
114
}
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/DefaultSymbolTable.java
90 90
    public Iterator<Function> iterfuncs() {
91 91
        return this.functions.values().iterator();
92 92
    }
93

  
94
    @Override
95
    public Iterator<Function> iterator() {
96
        return iterfuncs();
97
    }
93 98
    
94 99
}
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
1 1
package org.gvsig.expressionevaluator.impl.function.operator;
2 2

  
3
import org.gvsig.expressionevaluator.Function;
4
import org.gvsig.expressionevaluator.Interpreter;
5

  
3 6
public class AddOperator extends AbstractBinaryOperator {
4 7

  
5 8
    public AddOperator() {
6
        super("+");
9
        super(Function.GROUP_NUMERIC, "+");
7 10
    }
8 11

  
9 12
    @Override
10
    public Object call(Object op1, Object op2) {       
13
    public Object call(Interpreter interpreter, Object op1, Object op2) {       
11 14
        int type = this.getType(op1, op2);
12 15
        if( (type & TYPE_DOUBLE) == TYPE_DOUBLE ) {
13 16
            double value = ((Number) op1).doubleValue() + ((Number) op2).doubleValue();
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
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 GeOperator extends AbstractBinaryOperator {
4 9

  
5 10
    public GeOperator() {
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 29
        throw new IllegalArgumentException("Types not allowed in '"+name()+"' operand.");
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
import org.gvsig.expressionevaluator.Function;
4
import org.gvsig.expressionevaluator.Interpreter;
5

  
3 6
public class MulOperator extends AbstractBinaryOperator {
4 7

  
5 8
    public MulOperator() {
6
        super("*");
9
        super(Function.GROUP_NUMERIC, "*");
7 10
    }
8 11

  
9 12
    @Override
10
    public Object call(Object op1, Object op2) {       
13
    public Object call(Interpreter interpreter, Object op1, Object op2) {       
11 14
        int type = this.getType(op1, op2);
12 15
        if( (type & TYPE_DOUBLE) == TYPE_DOUBLE ) {
13 16
            double value = ((Number) op1).doubleValue() * ((Number) op2).doubleValue();
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/UnaryOperator.java
1 1
package org.gvsig.expressionevaluator.impl.function.operator;
2 2

  
3 3
import org.gvsig.expressionevaluator.Function;
4
import org.gvsig.expressionevaluator.Interpreter;
4 5

  
5 6

  
6 7
public interface UnaryOperator extends Function {
7 8
    
8
    public Object call(Object op);
9
    public Object call(Interpreter interpreter, Object op);
9 10
}
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
import org.gvsig.expressionevaluator.Function;
4
import org.gvsig.expressionevaluator.Interpreter;
5

  
3 6
public class SubstOperator extends AbstractBinaryOperator {
4 7

  
5 8
    public SubstOperator() {
6
        super("-");
9
        super(Function.GROUP_NUMERIC,"-");
7 10
    }
8 11

  
9 12
    @Override
10
    public Object call(Object op1, Object op2) {       
13
    public Object call(Interpreter interpreter, Object op1, Object op2) {       
11 14
        int type = this.getType(op1, op2);
12 15
        if( (type & TYPE_DOUBLE) == TYPE_DOUBLE ) {
13 16
            double value = ((Number) op1).doubleValue() - ((Number) op2).doubleValue();
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
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 LeOperator extends AbstractBinaryOperator {
4 9

  
5 10
    public LeOperator() {
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 29
        throw new IllegalArgumentException("Types not allowed in '"+name()+"' operand.");
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 org.gvsig.expressionevaluator.Function;
4
import org.gvsig.expressionevaluator.Interpreter;
3 5

  
6

  
4 7
public class NotOperator extends AbstractUnaryOperator {
5 8

  
6 9
    public NotOperator() {
7
        super("NOT");
10
        super(Function.GROUP_BOOLEAN,"NOT");
8 11
        this.addAlias("!");        
9 12
    }
10 13

  
11 14
    @Override
12
    public Object call(Object arg) {
15
    public Object call(Interpreter interpreter, Object arg) {
13 16
        if( ! (arg instanceof Boolean) ) {
14 17
            throw new IllegalArgumentException("NOT operator require a boolean");
15 18
        }
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
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 NeOperator extends AbstractBinaryOperator {
4 9

  
5 10
    public NeOperator() {
6
        super("<>");
11
        super(Function.GROUP_BOOLEAN,"<>");
7 12
        this.addAlias("!=");
8 13
    }
9

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

  
3 6
public class AndOperator extends AbstractBinaryOperator {
4 7

  
5 8
    public AndOperator() {
6
        super("AND");
9
        super(Function.GROUP_BOOLEAN, "AND");
7 10
        this.addAlias("&&");        
8 11
    }
9 12

  
10 13
    @Override
11
    public Object call(Object op1, Object op2) {       
14
    public Object call(Interpreter interpreter, Object op1, Object op2) {       
12 15
        if( op1 instanceof Boolean && op2 instanceof Boolean ) {
13 16
            boolean value = ((Boolean) op1) && ((Boolean) op2);
14 17
            return value;
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
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
}
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
2 2

  
3 3
import java.util.Date;
4 4
import org.apache.commons.lang3.Range;
5
import org.gvsig.expressionevaluator.Interpreter;
5 6
import org.gvsig.expressionevaluator.spi.AbstractFunction;
6 7

  
7 8

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

  
14
    protected AbstractBinaryOperator(String name) {
15
        this(name, null);
15
    protected AbstractBinaryOperator(String group, String name) {
16
        this(group, name, null);
16 17
    }
17 18

  
18 19
    @Override
19
    public Object call(Object[] args) {
20
        return call(args[0], args[1]);
20
    public Object call(Interpreter interpreter, Object[] args) {
21
        return call(interpreter, args[0], args[1]);
21 22
        
22 23
    }
24

  
25
    @Override
26
    public boolean isOperator() {
27
        return true;
28
    }
23 29
    
24 30
    protected static final int TYPE_INT =     0b0000001;
25 31
    protected static final int TYPE_LONG =    0b0000010;
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
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 GtOperator extends AbstractBinaryOperator {
4 9

  
5 10
    public GtOperator() {
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 29
        throw new IllegalArgumentException("Types not allowed in '"+name()+"' operand.");
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
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 LtOperator extends AbstractBinaryOperator {
4 9

  
5 10
    public LtOperator() {
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 29
        throw new IllegalArgumentException("Types not allowed in '"+name()+"' operand.");
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 org.gvsig.expressionevaluator.Function;
4
import org.gvsig.expressionevaluator.Interpreter;
5

  
3 6
public class ModOperator extends AbstractBinaryOperator {
4 7

  
5 8
    public ModOperator() {
6
        super("%");
9
        super(Function.GROUP_NUMERIC, "%");
7 10
    }
8 11

  
9 12
    @Override
10
    public Object call(Object op1, Object op2) {       
13
    public Object call(Interpreter interpreter, Object op1, Object op2) {       
11 14
        int type = this.getType(op1, op2);
12 15
        if( (type & TYPE_DOUBLE) == TYPE_DOUBLE ) {
13 16
            double value = ((Number) op1).doubleValue() % ((Number) op2).doubleValue();
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 org.gvsig.expressionevaluator.Function;
4
import org.gvsig.expressionevaluator.Interpreter;
5

  
3 6
public class OrOperator extends AbstractBinaryOperator {
4 7

  
5 8
    public OrOperator() {
6
        super("OR");
9
        super(Function.GROUP_BOOLEAN,"OR");
7 10
        this.addAlias("||");        
8 11
    }
9 12

  
10 13
    @Override
11
    public Object call(Object op1, Object op2) {       
14
    public Object call(Interpreter interpreter, Object op1, Object op2) {       
12 15
        if( op1 instanceof Boolean && op2 instanceof Boolean ) {
13 16
            boolean value = ((Boolean) op1) || ((Boolean) op2);
14 17
            return value;
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
1 1
package org.gvsig.expressionevaluator.impl.function.operator;
2 2

  
3 3
import org.apache.commons.lang3.Range;
4
import org.gvsig.expressionevaluator.Interpreter;
4 5
import org.gvsig.expressionevaluator.spi.AbstractFunction;
5 6

  
6 7

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

  
13
    protected AbstractUnaryOperator(String name) {
14
        this(name, null);
14
    protected AbstractUnaryOperator(String group, String name) {
15
        this(group, name, null);
15 16
    }
16 17

  
17 18
    @Override
18
    public Object call(Object[] args) {
19
        return call(args[0]);
19
    public Object call(Interpreter interpreter, Object[] args) {
20
        return call(interpreter, args[0]);
20 21
        
21 22
    }
22 23
    
24
    @Override
25
    public boolean isOperator() {
26
        return true;
27
    }
23 28
}
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
import org.gvsig.expressionevaluator.Function;
4
import org.gvsig.expressionevaluator.Interpreter;
5

  
3 6
public class DivOperator extends AbstractBinaryOperator {
4 7

  
5 8
    public DivOperator() {
6
        super("/");
9
        super(Function.GROUP_NUMERIC, "/");
7 10
    }
8 11

  
9 12
    @Override
10
    public Object call(Object op1, Object op2) {               
13
    public Object call(Interpreter interpreter, Object op1, Object op2) {               
11 14
        int type = this.getType(op1, op2);
12 15
        if( (type & TYPE_DOUBLE) == TYPE_DOUBLE ) {
13 16
            double value = ((Number) op1).doubleValue() / ((Number) op2).doubleValue();
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/BinaryOperator.java
1 1
package org.gvsig.expressionevaluator.impl.function.operator;
2 2

  
3 3
import org.gvsig.expressionevaluator.Function;
4
import org.gvsig.expressionevaluator.Interpreter;
4 5

  
5 6

  
6 7
public interface BinaryOperator extends Function {
7 8
    
8
    public Object call(Object op1, Object op2);
9
    public Object call(Interpreter interpreter, Object op1, Object op2);
10

  
9 11
}
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/STOverlapsFunction.java
1 1
package org.gvsig.expressionevaluator.impl.function.spatial;
2 2

  
3 3
import org.apache.commons.lang3.Range;
4
import org.gvsig.expressionevaluator.Interpreter;
4 5
import org.gvsig.expressionevaluator.spi.AbstractFunction;
5 6

  
6 7
public class STOverlapsFunction extends AbstractFunction {
......
10 11
    }
11 12
    
12 13
    @Override
13
    public Object call(Object[] args)  throws Exception {
14
    public Object call(Interpreter interpreter, Object[] args) throws Exception {
14 15
        boolean r = getGeom(args, 0).overlaps(getGeom(args, 1));
15 16
        return r;
16 17
    }
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/STCoversFunction.java
1 1
package org.gvsig.expressionevaluator.impl.function.spatial;
2 2

  
3 3
import org.apache.commons.lang3.Range;
4
import org.gvsig.expressionevaluator.Interpreter;
4 5
import org.gvsig.expressionevaluator.spi.AbstractFunction;
5 6

  
6 7
public class STCoversFunction extends AbstractFunction {
......
10 11
    }
11 12
    
12 13
    @Override
13
    public Object call(Object[] args)  throws Exception {
14
    public Object call(Interpreter interpreter, Object[] args) throws Exception {
14 15
        boolean r = getGeom(args, 0).covers(getGeom(args, 1));
15 16
        return r;
16 17
    }
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/STWithinFunction.java
1 1
package org.gvsig.expressionevaluator.impl.function.spatial;
2 2

  
3 3
import org.apache.commons.lang3.Range;
4
import org.gvsig.expressionevaluator.Interpreter;
4 5
import org.gvsig.expressionevaluator.spi.AbstractFunction;
5 6

  
6 7
public class STWithinFunction extends AbstractFunction {
......
10 11
    }
11 12
    
12 13
    @Override
13
    public Object call(Object[] args)  throws Exception {
14
    public Object call(Interpreter interpreter, Object[] args) throws Exception {
14 15
        boolean r = getGeom(args, 0).within(getGeom(args, 1));
15 16
        return r;
16 17
    }
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/STYFunction.java
1 1
package org.gvsig.expressionevaluator.impl.function.spatial;
2 2

  
3 3
import org.apache.commons.lang3.Range;
4
import org.gvsig.expressionevaluator.Interpreter;
4 5
import org.gvsig.expressionevaluator.spi.AbstractFunction;
5 6

  
6 7
public class STYFunction extends AbstractFunction {
......
10 11
    }
11 12
    
12 13
    @Override
13
    public Object call(Object[] args)  throws Exception {
14
    public Object call(Interpreter interpreter, Object[] args) throws Exception {
14 15
        double r = getPoint(args, 0).getY();
15 16
        return r;
16 17
    }
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/STAreaFunction.java
1 1
package org.gvsig.expressionevaluator.impl.function.spatial;
2 2

  
3 3
import org.apache.commons.lang3.Range;
4
import org.gvsig.expressionevaluator.Interpreter;
4 5
import org.gvsig.expressionevaluator.spi.AbstractFunction;
5 6

  
6 7
public class STAreaFunction extends AbstractFunction {
......
10 11
    }
11 12
    
12 13
    @Override
13
    public Object call(Object[] args)  throws Exception {
14
    public Object call(Interpreter interpreter, Object[] args) throws Exception {
14 15
        double r = getGeom(args, 0).area();
15 16
        return r;
16 17
    }
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/STAsTextFunction.java
1 1
package org.gvsig.expressionevaluator.impl.function.spatial;
2 2

  
3 3
import org.apache.commons.lang3.Range;
4
import org.gvsig.expressionevaluator.Interpreter;
4 5
import org.gvsig.expressionevaluator.spi.AbstractFunction;
5 6

  
6 7
public class STAsTextFunction extends AbstractFunction {
......
10 11
    }
11 12
    
12 13
    @Override
13
    public Object call(Object[] args)  throws Exception {
14
    public Object call(Interpreter interpreter, Object[] args) throws Exception {
14 15
        String r = getGeom(args, 0).convertToWKT();
15 16
        return r;
16 17
    }
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/STGeometryNFunction.java
1 1
package org.gvsig.expressionevaluator.impl.function.spatial;
2 2

  
3 3
import org.apache.commons.lang3.Range;
4
import org.gvsig.expressionevaluator.Interpreter;
4 5
import org.gvsig.expressionevaluator.spi.AbstractFunction;
5 6
import org.gvsig.fmap.geom.Geometry;
6 7
import org.gvsig.fmap.geom.aggregate.Aggregate;
......
13 14
    }
14 15
    
15 16
    @Override
16
    public Object call(Object[] args)  throws Exception {
17
    public Object call(Interpreter interpreter, Object[] args) throws Exception {
17 18
        Geometry geom = getGeom(args, 0);
18 19
        if( geom instanceof Aggregate ) {
19 20
            Primitive r = ((Aggregate) geom).getPrimitiveAt(getInt(args, 1));
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/STEnvelopeFunction.java
1 1
package org.gvsig.expressionevaluator.impl.function.spatial;
2 2

  
3 3
import org.apache.commons.lang3.Range;
4
import org.gvsig.expressionevaluator.Interpreter;
4 5
import org.gvsig.expressionevaluator.spi.AbstractFunction;
5 6
import org.gvsig.fmap.geom.Geometry;
6 7
import org.gvsig.fmap.geom.primitive.Envelope;
......
12 13
    }
13 14
    
14 15
    @Override
15
    public Object call(Object[] args)  throws Exception {
16
    public Object call(Interpreter interpreter, Object[] args) throws Exception {
16 17
        Envelope r = getGeom(args, 0).getEnvelope();
17 18
        return r;
18 19
    }
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/STContainsFunction.java
1 1
package org.gvsig.expressionevaluator.impl.function.spatial;
2 2

  
3 3
import org.apache.commons.lang3.Range;
4
import org.gvsig.expressionevaluator.Interpreter;
4 5
import org.gvsig.expressionevaluator.spi.AbstractFunction;
5 6

  
6 7
public class STContainsFunction extends AbstractFunction {
......
10 11
    }
11 12
    
12 13
    @Override
13
    public Object call(Object[] args)  throws Exception {
14
    public Object call(Interpreter interpreter, Object[] args) throws Exception {
14 15
        boolean r = getGeom(args, 0).contains(getGeom(args, 1));
15 16
        return r;
16 17
    }
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/STCoveredByFunction.java
1 1
package org.gvsig.expressionevaluator.impl.function.spatial;
2 2

  
3 3
import org.apache.commons.lang3.Range;
4
import org.gvsig.expressionevaluator.Interpreter;
4 5
import org.gvsig.expressionevaluator.spi.AbstractFunction;
5 6

  
6 7
public class STCoveredByFunction extends AbstractFunction {
......
10 11
    }
11 12
    
12 13
    @Override
13
    public Object call(Object[] args)  throws Exception {
14
    public Object call(Interpreter interpreter, Object[] args) throws Exception {
14 15
        boolean r = getGeom(args, 0).coveredBy(getGeom(args, 1));
15 16
        return r;
16 17
    }
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/STIntersectsFunction.java
1 1
package org.gvsig.expressionevaluator.impl.function.spatial;
2 2

  
3 3
import org.apache.commons.lang3.Range;
4
import org.gvsig.expressionevaluator.Interpreter;
4 5
import org.gvsig.expressionevaluator.spi.AbstractFunction;
5 6

  
6 7
public class STIntersectsFunction extends AbstractFunction {
......
10 11
    }
11 12
    
12 13
    @Override
13
    public Object call(Object[] args)  throws Exception {
14
    public Object call(Interpreter interpreter, Object[] args) throws Exception {
14 15
        boolean r = getGeom(args, 0).intersects(getGeom(args, 1));
15 16
        return r;
16 17
    }
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/STUnionFunction.java
1 1
package org.gvsig.expressionevaluator.impl.function.spatial;
2 2

  
3 3
import org.apache.commons.lang3.Range;
4
import org.gvsig.expressionevaluator.Interpreter;
4 5
import org.gvsig.expressionevaluator.spi.AbstractFunction;
5 6
import org.gvsig.fmap.geom.Geometry;
6 7

  
......
11 12
    }
12 13
    
13 14
    @Override
14
    public Object call(Object[] args)  throws Exception {
15
    public Object call(Interpreter interpreter, Object[] args) throws Exception {
15 16
        Geometry r = getGeom(args, 0).union(getGeom(args, 1));
16 17
        return r;
17 18
    }
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/STDistanceFunction.java
1 1
package org.gvsig.expressionevaluator.impl.function.spatial;
2 2

  
3 3
import org.apache.commons.lang3.Range;
4
import org.gvsig.expressionevaluator.Interpreter;
4 5
import org.gvsig.expressionevaluator.spi.AbstractFunction;
5 6

  
6 7
public class STDistanceFunction extends AbstractFunction {
......
10 11
    }
11 12
    
12 13
    @Override
13
    public Object call(Object[] args)  throws Exception {
14
    public Object call(Interpreter interpreter, Object[] args) throws Exception {
14 15
        double r = getGeom(args, 0).distance(getGeom(args, 1));
15 16
        return r;
16 17
    }
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/STIsValidFunction.java
1 1
package org.gvsig.expressionevaluator.impl.function.spatial;
2 2

  
3 3
import org.apache.commons.lang3.Range;
4
import org.gvsig.expressionevaluator.Interpreter;
4 5
import org.gvsig.expressionevaluator.spi.AbstractFunction;
5 6
import org.gvsig.fmap.geom.Geometry;
6 7

  
......
11 12
    }
12 13
    
13 14
    @Override
14
    public Object call(Object[] args)  throws Exception {
15
    public Object call(Interpreter interpreter, Object[] args) throws Exception {
15 16
        boolean r = getGeom(args, 0).isValid();
16 17
        return r;
17 18
    }
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/STNumPointsFunction.java
1 1
package org.gvsig.expressionevaluator.impl.function.spatial;
2 2

  
3 3
import org.apache.commons.lang3.Range;
4
import org.gvsig.expressionevaluator.Interpreter;
4 5
import org.gvsig.expressionevaluator.spi.AbstractFunction;
5 6
import org.gvsig.fmap.geom.Geometry;
6 7
import org.gvsig.fmap.geom.primitive.OrientablePrimitive;
......
12 13
    }
13 14
    
14 15
    @Override
15
    public Object call(Object[] args)  throws Exception {
16
    public Object call(Interpreter interpreter, Object[] args) throws Exception {
16 17
        Geometry geom = getGeom(args, 0);
17 18
        if ( geom instanceof OrientablePrimitive ) {
18 19
            int n = ((OrientablePrimitive) geom).getNumVertices();
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/STIntersectionFunction.java
1 1
package org.gvsig.expressionevaluator.impl.function.spatial;
2 2

  
3 3
import org.apache.commons.lang3.Range;
4
import org.gvsig.expressionevaluator.Interpreter;
4 5
import org.gvsig.expressionevaluator.spi.AbstractFunction;
5 6
import org.gvsig.fmap.geom.Geometry;
6 7

  
......
11 12
    }
12 13
    
13 14
    @Override
14
    public Object call(Object[] args)  throws Exception {
15
    public Object call(Interpreter interpreter, Object[] args) throws Exception {
15 16
        Geometry r = getGeom(args, 0).intersection(getGeom(args, 1));
16 17
        return r;
17 18
    }
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/STCentroidFunction.java
1 1
package org.gvsig.expressionevaluator.impl.function.spatial;
2 2

  
3 3
import org.apache.commons.lang3.Range;
4
import org.gvsig.expressionevaluator.Interpreter;
4 5
import org.gvsig.expressionevaluator.spi.AbstractFunction;
5 6
import org.gvsig.fmap.geom.primitive.Point;
6 7

  
......
11 12
    }
12 13
    
13 14
    @Override
14
    public Object call(Object[] args)  throws Exception {
15
    public Object call(Interpreter interpreter, Object[] args) throws Exception {
15 16
        Point r = getGeom(args, 0).centroid();
16 17
        return r;
17 18
    }
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/STPointNFunction.java
1 1
package org.gvsig.expressionevaluator.impl.function.spatial;
2 2

  
3 3
import org.apache.commons.lang3.Range;
4
import org.gvsig.expressionevaluator.Interpreter;
4 5
import org.gvsig.expressionevaluator.spi.AbstractFunction;
5 6
import org.gvsig.fmap.geom.Geometry;
6 7
import org.gvsig.fmap.geom.primitive.OrientablePrimitive;
......
13 14
    }
14 15
    
15 16
    @Override
16
    public Object call(Object[] args)  throws Exception {
17
    public Object call(Interpreter interpreter, Object[] args) throws Exception {
17 18
        Geometry geom = getGeom(args, 0);
18 19
        if ( geom instanceof OrientablePrimitive ) {
19 20
            Point n = ((OrientablePrimitive) geom).getVertex(getInt(args, 1));
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/STStartPointFunction.java
1 1
package org.gvsig.expressionevaluator.impl.function.spatial;
2 2

  
3 3
import org.apache.commons.lang3.Range;
4
import org.gvsig.expressionevaluator.Interpreter;
4 5
import org.gvsig.expressionevaluator.spi.AbstractFunction;
5 6
import org.gvsig.fmap.geom.Geometry;
6 7
import org.gvsig.fmap.geom.primitive.OrientablePrimitive;
......
13 14
    }
14 15
    
15 16
    @Override
16
    public Object call(Object[] args)  throws Exception {
17
    public Object call(Interpreter interpreter, Object[] args) throws Exception {
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff