Revision 999 trunk/org.gvsig.postgresql/org.gvsig.postgresql.provider/src/main/java/org/gvsig/postgresql/dal/expressionbuilderformatter/JsonValue.java

View differences:

JsonValue.java
9 9
import org.gvsig.expressionevaluator.ExpressionBuilder.Value;
10 10
import org.gvsig.expressionevaluator.Formatter;
11 11
import org.gvsig.fmap.dal.SQLBuilder;
12
import org.gvsig.tools.dataTypes.DataTypes;
12 13

  
13 14
/**
14 15
 *
......
18 19

  
19 20
    private final Formatter<Value> formatter;
20 21
    private final SQLBuilder builder;
21
    
22

  
22 23
    public JsonValue(SQLBuilder builder, Formatter<Value> formatter) {
23 24
        this.builder = builder;
24 25
        this.formatter = formatter;
25 26
    }
26
    
27

  
27 28
    @Override
28 29
    public boolean canApply(Value value) {
29 30
        if (value instanceof Function) {
......
37 38

  
38 39
    @Override
39 40
    public String format(Value function) {
40
            List<Value> parameters = ((Function) function).parameters();
41
            String p1 = parameters.get(0).toString(formatter);
42
            String p2 = parameters.get(1).toString(formatter);
43

  
44
            String r = MessageFormat.format(
41
        List<Value> parameters = ((Function) function).parameters();
42
        String p1 = parameters.get(0).toString(formatter);
43
        String p2 = parameters.get(1).toString(formatter);
44
        String p3 = null;
45
        if(parameters.size()==3) {
46
          p3 = parameters.get(2).toString(formatter).replace("'", "");
47
        }
48
        
49
        String r;
50
        if (p3 != null) {
51
            r = MessageFormat.format(
52
                    "jsonb_path_query_first({0}::jsonb, {1})::{2}",
53
                    p1,
54
                    p2,
55
                    p3
56
            );
57
        } else {
58
            r = MessageFormat.format(
45 59
                    "jsonb_path_query_first({0}::jsonb, {1})",
46 60
                    p1,
47 61
                    p2
48 62
            );
49
            return r;
50
            
63
        }
64
        return r;
65

  
51 66
    }
52
    
67

  
53 68
}

Also available in: Unified diff