Revision 44431

View differences:

trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/spatial/STMakePointFunction.java
1
package org.gvsig.expressionevaluator.impl.function.spatial;
2

  
3
import org.apache.commons.lang3.Range;
4
import static org.gvsig.expressionevaluator.ExpressionBuilder.FUNCTION_ST_MAKEPOINT;
5
import org.gvsig.expressionevaluator.Interpreter;
6
import org.gvsig.expressionevaluator.spi.AbstractFunction;
7
import org.gvsig.fmap.geom.Geometry;
8
import org.gvsig.fmap.geom.GeometryUtils;
9

  
10
public class STMakePointFunction extends AbstractFunction {
11

  
12
    public STMakePointFunction() {
13
        super("OGC", FUNCTION_ST_MAKEPOINT, Range.between(2,4));
14
    }
15
    
16
    @Override
17
    public boolean allowConstantFolding() {
18
        return true;
19
    }
20
    
21
    @Override
22
    public Object call(Interpreter interpreter, Object[] args) throws Exception {
23
        double x = this.getDouble(args, 0);
24
        double y = this.getDouble(args, 1);
25
        Geometry geom;
26
        switch(args.length) {
27
            default:
28
            case 2:
29
                geom = GeometryUtils.createPoint(x, y);
30
                break;
31
            case 3:
32
                double z = this.getDouble(args, 2);
33
                geom = GeometryUtils.createPoint(x, y, z);
34
                break;
35
            case 4:
36
                z = this.getDouble(args, 2);
37
                double m = this.getDouble(args, 3);
38
                geom = GeometryUtils.createPoint(x, y, z, m);
39
                break;
40
        }
41
        return geom;
42
    }
43
    
44
}
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/STPointFunction.java
4 4
import static org.gvsig.expressionevaluator.ExpressionBuilder.FUNCTION_ST_POINT;
5 5
import org.gvsig.expressionevaluator.Interpreter;
6 6
import org.gvsig.expressionevaluator.spi.AbstractFunction;
7
import org.gvsig.fmap.geom.Geometry;
8 7
import org.gvsig.fmap.geom.GeometryUtils;
8
import org.gvsig.fmap.geom.primitive.Point;
9 9

  
10 10
public class STPointFunction extends AbstractFunction {
11 11

  
12 12
    public STPointFunction() {
13
        super("OGC", FUNCTION_ST_POINT, Range.between(2,4));
13
        super("OGC", FUNCTION_ST_POINT, Range.is(2));
14 14
    }
15 15
    
16 16
    @Override
......
22 22
    public Object call(Interpreter interpreter, Object[] args) throws Exception {
23 23
        double x = this.getDouble(args, 0);
24 24
        double y = this.getDouble(args, 1);
25
        Geometry geom;
26
        switch(args.length) {
27
            default:
28
            case 2:
29
                geom = GeometryUtils.createPoint(x, y);
30
                break;
31
            case 3:
32
                double z = this.getDouble(args, 2);
33
                geom = GeometryUtils.createPoint(x, y, z);
34
                break;
35
            case 4:
36
                z = this.getDouble(args, 2);
37
                double m = this.getDouble(args, 3);
38
                geom = GeometryUtils.createPoint(x, y, z, m);
39
                break;
40
        }
25
        Point geom = GeometryUtils.createPoint(x, y);
41 26
        return geom;
42 27
    }
43 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/DefaultExpressionBuilder.java
1755 1755
    }
1756 1756

  
1757 1757
    @Override
1758
    public Function ST_MakePoint(Value x, Value y) {
1759
       return function(FUNCTION_ST_MAKEPOINT, x, y);
1760
    }
1761

  
1762
    @Override
1763
    public Function ST_MakePoint(Value x, Value y, Value z) {
1764
       return function(FUNCTION_ST_MAKEPOINT, x, y, z);
1765
    }
1766

  
1767
    @Override
1768
    public Function ST_MakePoint(Value x, Value y, Value z, Value m) {
1769
       return function(FUNCTION_ST_MAKEPOINT, x, y, z, m);
1770
    }
1771

  
1772
    @Override
1758 1773
    public Function ST_SetSRID(Value geom, Value srid) {
1759 1774
       return function(FUNCTION_ST_POINT, geom, srid);
1760 1775
    }
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/symboltable/OGCSymbolTable.java
23 23
import org.gvsig.expressionevaluator.impl.function.spatial.STIntersectsFunction;
24 24
import org.gvsig.expressionevaluator.impl.function.spatial.STIsSimpleFunction;
25 25
import org.gvsig.expressionevaluator.impl.function.spatial.STIsValidFunction;
26
import org.gvsig.expressionevaluator.impl.function.spatial.STMakePointFunction;
26 27
import org.gvsig.expressionevaluator.impl.function.spatial.STNumGeometriesFunction;
27 28
import org.gvsig.expressionevaluator.impl.function.spatial.STNumPointsFunction;
28 29
import org.gvsig.expressionevaluator.impl.function.spatial.STOverlapsFunction;
......
93 94
        this.addFunction(new STSRIDFunction());
94 95
        this.addFunction(new STSetSRIDFunction());
95 96
        this.addFunction(new STPointFunction());
97
        this.addFunction(new STMakePointFunction());
96 98
        
97 99
        this.addFunction(new AndAndOperator());
98 100
    }    
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
52 52
    public static final String FUNCTION_ST_WITHIN = "ST_Within";
53 53
    public static final String FUNCTION_ST_SETSRID = "ST_SetSRID";
54 54
    public static final String FUNCTION_ST_POINT = "ST_Point";
55
    public static final String FUNCTION_ST_MAKEPOINT = "ST_MakePoint";
55 56
    public static final String FUNCTION_ST_UNIONAGGREGATE = "ST_UnionAggregate";
56 57
    public static final String FUNCTION_ST_EXTENTAGGREGATE = "ST_ExtentAggregate";
57 58

  
......
418 419

  
419 420
    public Function ST_Point(Value x, Value y);
420 421

  
422
    public Function ST_MakePoint(Value x, Value y);
423

  
424
    public Function ST_MakePoint(Value x, Value y, Value z);
425

  
426
    public Function ST_MakePoint(Value x, Value y, Value z, Value m);
427

  
421 428
    public Function ST_PointN(Value geom, Value n);
422 429

  
423 430
    public Function ST_SRID(Value geom);

Also available in: Unified diff