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 516 jjdelcerro
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 1270 fdiaz
import org.gvsig.expressionevaluator.spi.formatter.value.Cast;
7 656 jjdelcerro
import org.gvsig.fmap.dal.DALLocator;
8 516 jjdelcerro
import org.gvsig.fmap.dal.SQLBuilder;
9 1121 fdiaz
import org.gvsig.fmap.dal.store.jdbc2.spi.expressionbuilder.formatters.$Constant;
10
import org.gvsig.fmap.dal.store.jdbc2.spi.expressionbuilder.formatters.$Identifier;
11 920 omartinez
import org.gvsig.fmap.dal.store.jdbc2.spi.expressionbuilder.formatters.ComputedAttribute;
12 843 omartinez
import org.gvsig.fmap.dal.store.jdbc2.spi.expressionbuilder.formatters.Exists;
13 1341 jjdelcerro
import org.gvsig.fmap.dal.store.jdbc2.spi.expressionbuilder.formatters.Iif;
14 1289 jjdelcerro
import org.gvsig.fmap.dal.store.jdbc2.spi.expressionbuilder.formatters.In;
15 930 omartinez
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 1121 fdiaz
import org.gvsig.fmap.dal.store.jdbc2.spi.expressionbuilder.formatters.ToString;
19 516 jjdelcerro
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 656 jjdelcerro
    @SuppressWarnings("LeakingThisInConstructor")
30 516 jjdelcerro
    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 570 jjdelcerro
            new IfNull(this.builder, this),
38 1341 jjdelcerro
            new Iif(this.builder, this),
39 516 jjdelcerro
            new IsNull(this.builder, this),
40 656 jjdelcerro
            new IsNotNull(this.builder, this),
41 516 jjdelcerro
            new ST_ExtentAggregate(this.builder, this),
42 527 jjdelcerro
            new ST_GeomFromWKB(this.builder, this),
43
            new ST_GeomFromText(this.builder, this),
44 656 jjdelcerro
            new Getattr(this.builder, this),
45 843 omartinez
//            new Iff(this),
46
            new Exists(this),
47 1121 fdiaz
            new $Constant(this.builder, this),
48
            new $Identifier(this.builder, this),
49 920 omartinez
            new ComputedAttribute(this.builder, this),
50 1121 fdiaz
            new ToString(this.builder, this),
51 930 omartinez
            new ToInteger(this.builder, this),
52
            new ToDouble(this.builder, this),
53
            new ToLong(this.builder, this),
54 980 omartinez
            new JsonValue(this.builder, this),
55 1132 fdiaz
            new Sum(this.builder, this),
56 1270 fdiaz
            new Cast(this),
57 1289 jjdelcerro
            new In(this),
58 656 jjdelcerro
            DALLocator.getDataManager().createDALExpressionBuilder().formatter(this),
59 516 jjdelcerro
        };
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
}