Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.compat.cdc / org.gvsig.fmap.dal / org.gvsig.fmap.dal.db / org.gvsig.fmap.dal.db.mdb / src / main / java / org / gvsig / fmap / dal / store / mdb / expressionbuilderformatter / Constant.java @ 44951

History | View | Annotate | Download (2.28 KB)

1
package org.gvsig.fmap.dal.store.mdb.expressionbuilderformatter;
2

    
3
import java.text.MessageFormat;
4
import org.gvsig.expressionevaluator.ExpressionBuilder;
5
import org.gvsig.expressionevaluator.ExpressionBuilder.Value;
6
import org.gvsig.expressionevaluator.Formatter;
7
import org.gvsig.expressionevaluator.GeometryExpressionBuilder;
8
import static org.gvsig.expressionevaluator.GeometryExpressionBuilderHelper.GeometrySupportType.EWKB;
9
import static org.gvsig.expressionevaluator.GeometryExpressionBuilderHelper.GeometrySupportType.WKB;
10
import static org.gvsig.expressionevaluator.GeometryExpressionBuilderHelper.GeometrySupportType.WKT;
11
import org.gvsig.fmap.dal.SQLBuilder;
12
import org.gvsig.fmap.geom.Geometry;
13
import org.gvsig.fmap.geom.GeometryUtils;
14

    
15
/**
16
 *
17
 * @author jjdelcerro
18
 */
19
public class Constant implements Formatter<Value> {
20

    
21
    private final SQLBuilder sqlbuilder;
22
    private final Formatter<Value> formatter;
23
    
24
    public Constant(SQLBuilder sqlbuilder, Formatter<Value> formatter) {
25
        this.sqlbuilder = sqlbuilder;
26
        this.formatter = formatter;
27
    }
28
    
29
    @Override
30
    public boolean canApply(ExpressionBuilder.Value value) {
31
        if (value instanceof ExpressionBuilder.Constant) {
32
            Object x = ((ExpressionBuilder.Constant)value).value();
33
            if( x instanceof byte[] ) {
34
                return true;
35
            }
36
            if( x instanceof Geometry ) {
37
                return true;
38
            }
39
        }
40
        return false;
41
    }
42

    
43
    @Override
44
    public String format(Value constant) {
45
        Object x = ((ExpressionBuilder.Constant)constant).value();
46
        GeometryExpressionBuilder builder = this.sqlbuilder.expression();
47
        if( x instanceof byte[] ) {
48
            return builder.bytearray_0x((byte[]) x);
49
        }
50
        if( x instanceof Geometry ) {
51
            Geometry geometry = (Geometry) x;
52
            switch (builder.geometry_support_type()) {
53
                case EWKB:
54
                    return builder.bytearray_x(GeometryUtils.toEWKB(geometry));
55
                case WKB:
56
                    return builder.bytearray_x(GeometryUtils.toWKB(geometry));
57
                case WKT:
58
                default:
59
                    return builder.string(GeometryUtils.toWKT(geometry));
60
            }
61
            
62
        }
63
        return null;
64
    }
65
    
66
}