Statistics
| Revision:

root / trunk / org.gvsig.postgresql / org.gvsig.postgresql.provider / src / main / java / org / gvsig / postgresql / dal / expressionbuilderformatter / PostgreSQLFormatter.java @ 1341

History | View | Annotate | Download (3.15 KB)

1
package org.gvsig.postgresql.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.$Identifier;
11
import org.gvsig.fmap.dal.store.jdbc2.spi.expressionbuilder.formatters.ComputedAttribute;
12
import org.gvsig.fmap.dal.store.jdbc2.spi.expressionbuilder.formatters.Exists;
13
import org.gvsig.fmap.dal.store.jdbc2.spi.expressionbuilder.formatters.Iif;
14
import org.gvsig.fmap.dal.store.jdbc2.spi.expressionbuilder.formatters.In;
15
import org.gvsig.fmap.dal.store.jdbc2.spi.expressionbuilder.formatters.ToDouble;
16
import org.gvsig.fmap.dal.store.jdbc2.spi.expressionbuilder.formatters.ToInteger;
17
import org.gvsig.fmap.dal.store.jdbc2.spi.expressionbuilder.formatters.ToLong;
18
import org.gvsig.fmap.dal.store.jdbc2.spi.expressionbuilder.formatters.ToString;
19

    
20
/**
21
 *
22
 * @author jjdelcerro
23
 */
24
public class PostgreSQLFormatter implements Formatter<Value> {
25

    
26
    private final SQLBuilder builder;
27
    private final Formatter<ExpressionBuilder.Value>[] formatters;
28

    
29
    @SuppressWarnings("LeakingThisInConstructor")
30
    public PostgreSQLFormatter(SQLBuilder builder) {
31

    
32
        this.builder = builder;
33
        this.formatters = new Formatter[]{
34
            new Decode(this.builder, this),
35
            new Constant(this.builder, this),
36
            new ILike(this.builder, this),
37
            new IfNull(this.builder, this),
38
            new Iif(this.builder, this),
39
            new IsNull(this.builder, this),
40
            new IsNotNull(this.builder, this),
41
            new ST_ExtentAggregate(this.builder, this),
42
            new ST_GeomFromWKB(this.builder, this),
43
            new ST_GeomFromText(this.builder, this),
44
            new Getattr(this.builder, this),
45
//            new Iff(this),
46
            new Exists(this),
47
            new $Constant(this.builder, this),
48
            new $Identifier(this.builder, this),
49
            new ComputedAttribute(this.builder, this),
50
            new ToString(this.builder, this),
51
            new ToInteger(this.builder, this),
52
            new ToDouble(this.builder, this),
53
            new ToLong(this.builder, this),
54
            new JsonValue(this.builder, this),
55
            new Sum(this.builder, this),
56
            new Cast(this),
57
            new In(this),
58
            DALLocator.getDataManager().createDALExpressionBuilder().formatter(this),
59
        };
60
    }
61

    
62
    @Override
63
    public boolean canApply(Value value) {
64
        for (Formatter<Value> formatter : formatters) {
65
            if (formatter.canApply(value)) {
66
                return true;
67
            }
68
        }
69
        return false;
70
    }
71

    
72
    @Override
73
    public String format(Value value) {
74
        for (Formatter<Value> formatter : formatters) {
75
            if (formatter.canApply(value)) {
76
                return formatter.format(value);
77
            }
78
        }
79
        return value.toString(this);
80
    }
81
    
82
}