Statistics
| Revision:

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

History | View | Annotate | Download (2.39 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 656 jjdelcerro
import org.gvsig.fmap.dal.DALLocator;
7 516 jjdelcerro
import org.gvsig.fmap.dal.SQLBuilder;
8 920 omartinez
import org.gvsig.fmap.dal.store.jdbc2.spi.expressionbuilder.formatters.ComputedAttribute;
9 843 omartinez
import org.gvsig.fmap.dal.store.jdbc2.spi.expressionbuilder.formatters.Exists;
10 930 omartinez
import org.gvsig.fmap.dal.store.jdbc2.spi.expressionbuilder.formatters.ToDouble;
11
import org.gvsig.fmap.dal.store.jdbc2.spi.expressionbuilder.formatters.ToInteger;
12
import org.gvsig.fmap.dal.store.jdbc2.spi.expressionbuilder.formatters.ToLong;
13 516 jjdelcerro
14
/**
15
 *
16
 * @author jjdelcerro
17
 */
18
public class PostgreSQLFormatter implements Formatter<Value> {
19
20
    private final SQLBuilder builder;
21
    private final Formatter<ExpressionBuilder.Value>[] formatters;
22
23 656 jjdelcerro
    @SuppressWarnings("LeakingThisInConstructor")
24 516 jjdelcerro
    public PostgreSQLFormatter(SQLBuilder builder) {
25
26
        this.builder = builder;
27
        this.formatters = new Formatter[]{
28
            new Decode(this.builder, this),
29
            new Constant(this.builder, this),
30
            new ILike(this.builder, this),
31 570 jjdelcerro
            new IfNull(this.builder, this),
32 516 jjdelcerro
            new IsNull(this.builder, this),
33 656 jjdelcerro
            new IsNotNull(this.builder, this),
34 516 jjdelcerro
            new ST_ExtentAggregate(this.builder, this),
35 527 jjdelcerro
            new ST_GeomFromWKB(this.builder, this),
36
            new ST_GeomFromText(this.builder, this),
37 656 jjdelcerro
            new Getattr(this.builder, this),
38 843 omartinez
//            new Iff(this),
39
            new Exists(this),
40 920 omartinez
            new ComputedAttribute(this.builder, this),
41 930 omartinez
            new ToInteger(this.builder, this),
42
            new ToDouble(this.builder, this),
43
            new ToLong(this.builder, this),
44 656 jjdelcerro
            DALLocator.getDataManager().createDALExpressionBuilder().formatter(this),
45 516 jjdelcerro
        };
46
    }
47
48
    @Override
49
    public boolean canApply(Value value) {
50
        for (Formatter<Value> formatter : formatters) {
51
            if (formatter.canApply(value)) {
52
                return true;
53
            }
54
        }
55
        return false;
56
    }
57
58
    @Override
59
    public String format(Value value) {
60
        for (Formatter<Value> formatter : formatters) {
61
            if (formatter.canApply(value)) {
62
                return formatter.format(value);
63
            }
64
        }
65
        return value.toString(this);
66
    }
67
68
}