Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.plugin / org.gvsig.sqlite / org.gvsig.sqlite.provider / src / main / java / org / gvsig / sqlite / dal / expressionbuilderformatter / SQLiteFormatter.java @ 47579

History | View | Annotate | Download (3.7 KB)

1
package org.gvsig.sqlite.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.expressionevaluator.spi.formatter.value.Cast;
7
import org.gvsig.fmap.dal.DALLocator;
8
import org.gvsig.fmap.dal.SQLBuilder;
9
import org.gvsig.fmap.dal.store.jdbc2.spi.expressionbuilder.formatters.$Constant;
10
import org.gvsig.fmap.dal.store.jdbc2.spi.expressionbuilder.formatters.$HostExpression;
11
import org.gvsig.fmap.dal.store.jdbc2.spi.expressionbuilder.formatters.$Identifier;
12
import org.gvsig.fmap.dal.store.jdbc2.spi.expressionbuilder.formatters.ComputedAttribute;
13
import org.gvsig.fmap.dal.store.jdbc2.spi.expressionbuilder.formatters.Exists;
14
import org.gvsig.fmap.dal.store.jdbc2.spi.expressionbuilder.formatters.ILike;
15
import org.gvsig.fmap.dal.store.jdbc2.spi.expressionbuilder.formatters.In;
16
import org.gvsig.fmap.dal.store.jdbc2.spi.expressionbuilder.formatters.IsNotNull;
17
import org.gvsig.fmap.dal.store.jdbc2.spi.expressionbuilder.formatters.IsNull;
18
import org.gvsig.fmap.dal.store.jdbc2.spi.expressionbuilder.formatters.ToDouble;
19
import org.gvsig.fmap.dal.store.jdbc2.spi.expressionbuilder.formatters.ToInteger;
20
import org.gvsig.fmap.dal.store.jdbc2.spi.expressionbuilder.formatters.ToLong;
21
import org.gvsig.fmap.dal.store.jdbc2.spi.expressionbuilder.formatters.ToString;
22

    
23
/**
24
 *
25
 * @author jjdelcerro
26
 */
27
public class SQLiteFormatter implements Formatter<Value> {
28

    
29
    private final SQLBuilder builder;
30
    private final Formatter<ExpressionBuilder.Value>[] formatters;
31

    
32
    @SuppressWarnings("LeakingThisInConstructor")
33
    public SQLiteFormatter(SQLBuilder builder) {
34

    
35
        this.builder = builder;
36
        this.formatters = new Formatter[]{
37
            new IsNotNull(this.builder, this),
38
            new IsNull(this.builder, this),
39
            new ILike(this.builder, this),
40
            new Exists(this),
41
            new In(this),
42
            new Cast(this),
43

    
44
            new ST_AsEWKB(this.builder, this),
45
            new ST_GeomFromEWKB(this.builder, this),
46
            new ST_Intersects(this.builder, this),
47
            new ST_Contains(this.builder, this),
48
            new ST_CoveredBy(this.builder, this),
49
            new ST_Covers(this.builder, this),
50
            new ST_Crosses(this.builder, this),
51
            new ST_Overlaps(this.builder, this),
52
//            new ST_ExtentAggregate(this.builder, this),
53
            new Decode(this.builder, this),
54
            new Constant(this.builder, this),
55
            new ST_AsBinary(this.builder, this),
56
            new Getattr(this.builder, this),
57
            new $Constant(this.builder, this),
58
            new $Identifier(this.builder, this),
59
            new $HostExpression(this.builder, this),
60
            new ComputedAttribute(this.builder, this),
61
            new ToInteger(this.builder, this),
62
            new ToDouble(this.builder, this),
63
            new ToLong(this.builder, this),
64
            new ToString(this.builder, this),
65
            new MOD(this.builder, this),
66
            new Time(this.builder, this),
67
            new Date(this.builder, this),
68
            DALLocator.getDataManager().createDALExpressionBuilder().formatter(this),
69
        };
70
    }
71

    
72
    @Override
73
    public boolean canApply(Value value) {
74
        for (Formatter<Value> formatter : formatters) {
75
            if (formatter.canApply(value)) {
76
                return true;
77
            }
78
        }
79
        return false;
80
    }
81

    
82
    @Override
83
    public String format(Value value) {
84
        for (Formatter<Value> formatter : formatters) {
85
            if (formatter.canApply(value)) {
86
                return formatter.format(value);
87
            }
88
        }
89
        return value.toString(this);
90
    }
91
    
92
}