Statistics
| Revision:

gvsig-sqlite / trunk / org.gvsig.spatialite / org.gvsig.spatialite.provider / src / main / java / org / gvsig / spatialite / dal / expressionbuilderformatter / SpatiaLiteFormatter.java @ 196

History | View | Annotate | Download (1.5 KB)

1
package org.gvsig.spatialite.dal.expressionbuilderformatter;
2

    
3
import org.gvsig.expressionevaluator.ExpressionBuilder;
4
import org.gvsig.expressionevaluator.ExpressionBuilder.Value;
5
import org.gvsig.expressionevaluator.Formatter;
6
import org.gvsig.fmap.dal.SQLBuilder;
7

    
8
/**
9
 *
10
 * @author jjdelcerro
11
 */
12
public class SpatiaLiteFormatter implements Formatter<Value> {
13

    
14
    private final SQLBuilder builder;
15
    private final Formatter<ExpressionBuilder.Value>[] formatters;
16

    
17
    public SpatiaLiteFormatter(SQLBuilder builder) {
18

    
19
        this.builder = builder;
20
        this.formatters = new Formatter[]{
21
            new DECODE_hex_constant(this.builder, this),
22
            new ILike(this.builder, this),
23
            new IsNull(this.builder, this),
24
            new ST_AsEWKB(this.builder, this),
25
            new ST_ExtentAggregate(this.builder, this),
26
            new ST_GeomFromEWKB(this.builder, this),
27
            new ST_Intersects(this.builder, this),
28
            new ST_UnionAggregate(this.builder, this)
29
        };
30
    }
31

    
32
    @Override
33
    public boolean canApply(Value value) {
34
        for (Formatter<Value> formatter : formatters) {
35
            if (formatter.canApply(value)) {
36
                return true;
37
            }
38
        }
39
        return false;
40
    }
41

    
42
    @Override
43
    public String format(Value value) {
44
        for (Formatter<Value> formatter : formatters) {
45
            if (formatter.canApply(value)) {
46
                return formatter.format(value);
47
            }
48
        }
49
        return value.toString(this);
50
    }
51
    
52
}