Revision 999
trunk/org.gvsig.postgresql/org.gvsig.postgresql.provider/src/main/java/org/gvsig/postgresql/dal/expressionbuilderformatter/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