Revision 44296
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/DefaultExpressionBuilder.java | ||
---|---|---|
96 | 96 |
|
97 | 97 |
@Override |
98 | 98 |
public String toString(Formatter<Value> formatter) { |
99 |
if( formatter.canApply(this) ) { |
|
99 |
if( formatter!=null && formatter.canApply(this) ) {
|
|
100 | 100 |
return formatter.format(this); |
101 | 101 |
} |
102 | 102 |
return MessageFormat.format(FORMAT_GROUP, this.value.toString()); |
... | ... | |
123 | 123 |
|
124 | 124 |
@Override |
125 | 125 |
public String toString(Formatter<Value> formatter) { |
126 |
if( formatter.canApply(this) ) { |
|
126 |
if( formatter!=null && formatter.canApply(this) ) {
|
|
127 | 127 |
return formatter.format(this); |
128 | 128 |
} |
129 | 129 |
return identifier(this.name); |
... | ... | |
328 | 328 |
|
329 | 329 |
@Override |
330 | 330 |
public String toString(Formatter<Value> formatter) { |
331 |
if( formatter.canApply(this) ) { |
|
331 |
if( formatter!=null && formatter.canApply(this) ) {
|
|
332 | 332 |
return formatter.format(this); |
333 | 333 |
} |
334 | 334 |
switch (this.type) { |
... | ... | |
420 | 420 |
|
421 | 421 |
@Override |
422 | 422 |
public String toString(Formatter<Value> formatter) { |
423 |
if( formatter.canApply(this) ) { |
|
423 |
if( formatter!=null && formatter.canApply(this) ) {
|
|
424 | 424 |
return formatter.format(this); |
425 | 425 |
} |
426 | 426 |
if( this.value==null ) { |
... | ... | |
522 | 522 |
|
523 | 523 |
@Override |
524 | 524 |
public String toString(Formatter<Value> formatter) { |
525 |
if( formatter.canApply(this) ) { |
|
525 |
if( formatter!=null && formatter.canApply(this) ) {
|
|
526 | 526 |
return formatter.format(this); |
527 | 527 |
} |
528 | 528 |
return Objects.toString(this.value, ""); |
... | ... | |
578 | 578 |
|
579 | 579 |
@Override |
580 | 580 |
public String toString(Formatter<Value> formatter) { |
581 |
if( formatter.canApply(this) ) { |
|
581 |
if( formatter!=null && formatter.canApply(this) ) {
|
|
582 | 582 |
return formatter.format(this); |
583 | 583 |
} |
584 | 584 |
if( this.format==null ) { |
... | ... | |
634 | 634 |
|
635 | 635 |
@Override |
636 | 636 |
public String toString(Formatter<Value> formatter) { |
637 |
if( formatter.canApply(this) ) { |
|
637 |
if( formatter!=null && formatter.canApply(this) ) {
|
|
638 | 638 |
return formatter.format(this); |
639 | 639 |
} |
640 | 640 |
StringBuilder builder = new StringBuilder(); |
... | ... | |
713 | 713 |
|
714 | 714 |
@Override |
715 | 715 |
public String toString(Formatter<Value> formatter) { |
716 |
if( formatter.canApply(this) ) { |
|
716 |
if( formatter!=null && formatter.canApply(this) ) {
|
|
717 | 717 |
return formatter.format(this); |
718 | 718 |
} |
719 | 719 |
if( this.format==null ) { |
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.spi/src/main/java/org/gvsig/fmap/dal/feature/spi/SQLBuilderBase.java | ||
---|---|---|
328 | 328 |
// |
329 | 329 |
// @Override |
330 | 330 |
// public String toString(Formatter<Value> formatter) { |
331 |
// if (formatter.canApply(this)) { |
|
331 |
// if (formatter!=null && formatter.canApply(this)) {
|
|
332 | 332 |
// return formatter.format(this); |
333 | 333 |
// } |
334 | 334 |
// return as_identifier(this.name); |
... | ... | |
429 | 429 |
|
430 | 430 |
@Override |
431 | 431 |
public String toString(Formatter<Value> formatter) { |
432 |
if (formatter.canApply(this)) { |
|
432 |
if (formatter!=null && formatter.canApply(this)) {
|
|
433 | 433 |
return formatter.format(this); |
434 | 434 |
} |
435 | 435 |
if (this.has_database()) { |
... | ... | |
488 | 488 |
|
489 | 489 |
@Override |
490 | 490 |
public String toString(Formatter formatter) { |
491 |
if (formatter.canApply(this)) { |
|
491 |
if (formatter!=null && formatter.canApply(this)) {
|
|
492 | 492 |
return formatter.format(this); |
493 | 493 |
} |
494 | 494 |
if (this.all) { |
... | ... | |
553 | 553 |
|
554 | 554 |
@Override |
555 | 555 |
public String toString(Formatter<Value> formatter) { |
556 |
if (formatter.canApply(this)) { |
|
556 |
if (formatter!=null && formatter.canApply(this)) {
|
|
557 | 557 |
return formatter.format(this); |
558 | 558 |
} |
559 | 559 |
if (!StringUtils.isEmpty(passthrough)) { |
... | ... | |
651 | 651 |
|
652 | 652 |
@Override |
653 | 653 |
public String toString(Formatter<Value> formatter) { |
654 |
if (formatter.canApply(this)) { |
|
654 |
if (formatter!=null && formatter.canApply(this)) {
|
|
655 | 655 |
return formatter.format(this); |
656 | 656 |
} |
657 | 657 |
StringBuilder builder = new StringBuilder(); |
... | ... | |
728 | 728 |
|
729 | 729 |
@Override |
730 | 730 |
public String toString(Formatter<Value> formatter) { |
731 |
if (formatter.canApply(this)) { |
|
731 |
if (formatter!=null && formatter.canApply(this)) {
|
|
732 | 732 |
return formatter.format(this); |
733 | 733 |
} |
734 | 734 |
if (!StringUtils.isEmpty(this.custom)) { |
... | ... | |
903 | 903 |
|
904 | 904 |
@Override |
905 | 905 |
public String toString(Formatter<Value> formatter) { |
906 |
if (formatter.canApply(this)) { |
|
906 |
if (formatter!=null && formatter.canApply(this)) {
|
|
907 | 907 |
return formatter.format(this); |
908 | 908 |
} |
909 | 909 |
StringBuilder builder = new StringBuilder(); |
... | ... | |
988 | 988 |
|
989 | 989 |
@Override |
990 | 990 |
public String toString(Formatter<Value> formatter) { |
991 |
if (formatter.canApply(this)) { |
|
991 |
if (formatter!=null && formatter.canApply(this)) {
|
|
992 | 992 |
return formatter.format(this); |
993 | 993 |
} |
994 | 994 |
StringBuilder builder = new StringBuilder(); |
... | ... | |
1141 | 1141 |
|
1142 | 1142 |
@Override |
1143 | 1143 |
public String toString(Formatter<Value> formatter) { |
1144 |
if (formatter.canApply(this)) { |
|
1144 |
if (formatter!=null && formatter.canApply(this)) {
|
|
1145 | 1145 |
return formatter.format(this); |
1146 | 1146 |
} |
1147 | 1147 |
StringBuilder builder = new StringBuilder(); |
... | ... | |
1210 | 1210 |
|
1211 | 1211 |
@Override |
1212 | 1212 |
public String toString(Formatter<Value> formatter) { |
1213 |
if (formatter.canApply(this)) { |
|
1213 |
if (formatter!=null && formatter.canApply(this)) {
|
|
1214 | 1214 |
return formatter.format(this); |
1215 | 1215 |
} |
1216 | 1216 |
StringBuilder builder = new StringBuilder(); |
... | ... | |
1327 | 1327 |
|
1328 | 1328 |
@Override |
1329 | 1329 |
public String toString(Formatter<Value> formatter) { |
1330 |
if (formatter.canApply(this)) { |
|
1330 |
if (formatter!=null && formatter.canApply(this)) {
|
|
1331 | 1331 |
return formatter.format(this); |
1332 | 1332 |
} |
1333 | 1333 |
/* |
... | ... | |
1420 | 1420 |
|
1421 | 1421 |
@Override |
1422 | 1422 |
public String toString(Formatter<Value> formatter) { |
1423 |
if (formatter.canApply(this)) { |
|
1423 |
if (formatter!=null && formatter.canApply(this)) {
|
|
1424 | 1424 |
return formatter.format(this); |
1425 | 1425 |
} |
1426 | 1426 |
/* |
... | ... | |
1514 | 1514 |
|
1515 | 1515 |
@Override |
1516 | 1516 |
public String toString(Formatter<Value> formatter) { |
1517 |
if (formatter.canApply(this)) { |
|
1517 |
if (formatter!=null && formatter.canApply(this)) {
|
|
1518 | 1518 |
return formatter.format(this); |
1519 | 1519 |
} |
1520 | 1520 |
StringBuilder builder = new StringBuilder(); |
... | ... | |
1702 | 1702 |
|
1703 | 1703 |
@Override |
1704 | 1704 |
public String toString(Formatter<Value> formatter) { |
1705 |
if (formatter.canApply(this)) { |
|
1705 |
if (formatter!=null && formatter.canApply(this)) {
|
|
1706 | 1706 |
return formatter.format(this); |
1707 | 1707 |
} |
1708 | 1708 |
StringBuilder builder = new StringBuilder(); |
... | ... | |
1766 | 1766 |
} |
1767 | 1767 |
} else { |
1768 | 1768 |
builder.append(" DEFAULT '"); |
1769 |
builder.append(column.getDefaultValue().toString());
|
|
1769 |
builder.append(Objects.toString(column.getDefaultValue(),""));
|
|
1770 | 1770 |
builder.append("'"); |
1771 | 1771 |
} |
1772 | 1772 |
if (column.allowNulls()) { |
... | ... | |
1912 | 1912 |
|
1913 | 1913 |
@Override |
1914 | 1914 |
public String toString(Formatter<Value> formatter) { |
1915 |
if (formatter.canApply(this)) { |
|
1915 |
if (formatter!=null && formatter.canApply(this)) {
|
|
1916 | 1916 |
return formatter.format(this); |
1917 | 1917 |
} |
1918 | 1918 |
StringBuilder builder = new StringBuilder(); |
... | ... | |
1998 | 1998 |
} |
1999 | 1999 |
} else { |
2000 | 2000 |
builder.append(" DEFAULT '"); |
2001 |
builder.append(column.getDefaultValue().toString());
|
|
2001 |
builder.append(Objects.toString(column.getDefaultValue(),""));
|
|
2002 | 2002 |
builder.append("'"); |
2003 | 2003 |
} |
2004 | 2004 |
if (column.allowNulls()) { |
... | ... | |
2068 | 2068 |
|
2069 | 2069 |
@Override |
2070 | 2070 |
public String toString(Formatter<Value> formatter) { |
2071 |
if (formatter.canApply(this)) { |
|
2071 |
if (formatter!=null && formatter.canApply(this)) {
|
|
2072 | 2072 |
return formatter.format(this); |
2073 | 2073 |
} |
2074 | 2074 |
return this.value.toString(formatter); |
... | ... | |
2121 | 2121 |
|
2122 | 2122 |
@Override |
2123 | 2123 |
public String toString(Formatter<Value> formatter) { |
2124 |
if (formatter.canApply(this)) { |
|
2124 |
if (formatter!=null && formatter.canApply(this)) {
|
|
2125 | 2125 |
return formatter.format(this); |
2126 | 2126 |
} |
2127 | 2127 |
/* |
... | ... | |
2193 | 2193 |
|
2194 | 2194 |
@Override |
2195 | 2195 |
public String toString(Formatter<Value> formatter) { |
2196 |
if (formatter.canApply(this)) { |
|
2196 |
if (formatter!=null && formatter.canApply(this)) {
|
|
2197 | 2197 |
return formatter.format(this); |
2198 | 2198 |
} |
2199 | 2199 |
StringBuilder builder = new StringBuilder(); |
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.h2/src/test/java/org/gvsig/fmap/dal/store/h2/H2SpatialSQLBuilderTest.java | ||
---|---|---|
76 | 76 |
System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names())); |
77 | 77 |
System.out.println("# Parametros:: " + ArrayUtils.toString(sqlbuilder.parameters_names())); |
78 | 78 |
assertEquals( |
79 |
"SELECT ST_AsBinary(ST_Extent(\"the_geom\")) AS \"envelope\" FROM \"test1\" WHERE (( ((ST_Envelope(\"the_geom\")) && (ST_GeomFromWKB((DECODE('000000000300000001000000050000000000000000000000000000000000000000000000004059000000000000405900000000000040590000000000004059000000000000000000000000000000000000000000000000000000000000','hex')), (4326)))) AND ST_Intersects((ST_Envelope(\"the_geom\")),(ST_GeomFromWKB((DECODE('000000000300000001000000050000000000000000000000000000000000000000000000004059000000000000405900000000000040590000000000004059000000000000000000000000000000000000000000000000000000000000','hex')), (4326))) )) AND x = 27)",
|
|
79 |
"SELECT ST_AsBinary(ST_Extent(\"the_geom\")) AS \"envelope\" FROM \"test1\" WHERE (( ((ST_Envelope(\"the_geom\")) && (ST_GeomFromWKB((x'000000000300000001000000050000000000000000000000000000000000000000000000004059000000000000405900000000000040590000000000004059000000000000000000000000000000000000000000000000000000000000'), (4326)))) AND ST_Intersects((ST_Envelope(\"the_geom\")),(ST_GeomFromWKB((x'000000000300000001000000050000000000000000000000000000000000000000000000004059000000000000405900000000000040590000000000004059000000000000000000000000000000000000000000000000000000000000'), (4326))) )) AND x = 27)",
|
|
80 | 80 |
sqlbuilder.toString() |
81 | 81 |
); |
82 | 82 |
assertEquals( |
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.h2/src/main/java/org/gvsig/fmap/dal/store/h2/H2SpatialSQLBuilder.java | ||
---|---|---|
6 | 6 |
import java.util.ArrayList; |
7 | 7 |
import java.util.Date; |
8 | 8 |
import java.util.List; |
9 |
import java.util.Objects; |
|
9 | 10 |
import org.apache.commons.lang3.tuple.Pair; |
10 | 11 |
import org.gvsig.expressionevaluator.ExpressionBuilder.Parameter; |
11 | 12 |
import org.gvsig.expressionevaluator.Formatter; |
... | ... | |
177 | 178 |
} |
178 | 179 |
} else { |
179 | 180 |
builder.append(" DEFAULT '"); |
180 |
builder.append(column.getDefaultValue().toString());
|
|
181 |
builder.append(Objects.toString(column.getDefaultValue(),""));
|
|
181 | 182 |
builder.append("'"); |
182 | 183 |
} |
183 | 184 |
if (column.allowNulls()) { |
... | ... | |
312 | 313 |
builder.append("' )"); |
313 | 314 |
} else { |
314 | 315 |
builder.append(" DEFAULT '"); |
315 |
builder.append(column.getDefaultValue().toString());
|
|
316 |
builder.append(Objects.toString(column.getDefaultValue(),""));
|
|
316 | 317 |
builder.append("'"); |
317 | 318 |
} |
318 | 319 |
} |
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.h2/src/main/java/org/gvsig/fmap/dal/store/h2/expressionbuilderformatter/Decode.java | ||
---|---|---|
1 |
package org.gvsig.fmap.dal.store.h2.expressionbuilderformatter; |
|
2 |
|
|
3 |
import java.util.List; |
|
4 |
import java.util.Objects; |
|
5 |
import org.apache.commons.lang3.StringUtils; |
|
6 |
import org.gvsig.expressionevaluator.ExpressionBuilder; |
|
7 |
import static org.gvsig.expressionevaluator.ExpressionBuilder.FUNCTION_DECODE; |
|
8 |
import org.gvsig.expressionevaluator.ExpressionBuilder.Function; |
|
9 |
import org.gvsig.expressionevaluator.ExpressionBuilder.Value; |
|
10 |
import org.gvsig.expressionevaluator.Formatter; |
|
11 |
import org.gvsig.fmap.dal.SQLBuilder; |
|
12 |
|
|
13 |
/** |
|
14 |
* |
|
15 |
* @author jjdelcerro |
|
16 |
*/ |
|
17 |
public class Decode implements Formatter<Value> { |
|
18 |
|
|
19 |
private final SQLBuilder sqlbuilder; |
|
20 |
private final Formatter<Value> formatter; |
|
21 |
|
|
22 |
public Decode(SQLBuilder sqlbuilder, Formatter<Value> formatter) { |
|
23 |
this.sqlbuilder = sqlbuilder; |
|
24 |
this.formatter = formatter; |
|
25 |
} |
|
26 |
|
|
27 |
@Override |
|
28 |
public boolean canApply(ExpressionBuilder.Value value) { |
|
29 |
if (value instanceof ExpressionBuilder.Function) { |
|
30 |
if( StringUtils.equalsIgnoreCase(FUNCTION_DECODE, ((Function) value).name()) ) { |
|
31 |
List<Value> parameters = ((Function) value).parameters(); |
|
32 |
if( parameters.size()==2) { |
|
33 |
Value p1 = parameters.get(0); |
|
34 |
Value p2 = parameters.get(1); |
|
35 |
if( p1 instanceof ExpressionBuilder.Constant && |
|
36 |
p2 instanceof ExpressionBuilder.Constant && |
|
37 |
((ExpressionBuilder.Constant)p1).value() instanceof String && |
|
38 |
((ExpressionBuilder.Constant)p2).value() instanceof String |
|
39 |
) { |
|
40 |
String p2value = ((ExpressionBuilder.Constant)p2).value().toString(); |
|
41 |
if( StringUtils.equalsIgnoreCase(p2value, "hex") ) { |
|
42 |
return true; |
|
43 |
} |
|
44 |
} |
|
45 |
|
|
46 |
} |
|
47 |
} |
|
48 |
} |
|
49 |
return false; |
|
50 |
} |
|
51 |
|
|
52 |
@Override |
|
53 |
public String format(Value function) { |
|
54 |
List<Value> parameters = ((Function) function).parameters(); |
|
55 |
Value p1 = parameters.get(0); |
|
56 |
String p1value = Objects.toString(((ExpressionBuilder.Constant)p1).value(), ""); |
|
57 |
String r = "X'"+p1value+"'"; |
|
58 |
return r; |
|
59 |
} |
|
60 |
|
|
61 |
} |
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.h2/src/main/java/org/gvsig/fmap/dal/store/h2/expressionbuilderformatter/Constant.java | ||
---|---|---|
1 |
package org.gvsig.fmap.dal.store.h2.expressionbuilderformatter; |
|
2 |
|
|
3 |
import java.text.MessageFormat; |
|
4 |
import org.gvsig.expressionevaluator.ExpressionBuilder; |
|
5 |
import org.gvsig.expressionevaluator.ExpressionBuilder.Value; |
|
6 |
import org.gvsig.expressionevaluator.Formatter; |
|
7 |
import org.gvsig.fmap.dal.SQLBuilder; |
|
8 |
import org.gvsig.fmap.geom.Geometry; |
|
9 |
import org.gvsig.fmap.geom.GeometryUtils; |
|
10 |
|
|
11 |
/** |
|
12 |
* |
|
13 |
* @author jjdelcerro |
|
14 |
*/ |
|
15 |
public class Constant implements Formatter<Value> { |
|
16 |
|
|
17 |
private static final String FORMAT_ST_GEOMFROMWKB = "ST_GeomFromWKB(({0}), ({1}))"; |
|
18 |
private static final String FORMAT_ST_GEOMFROMEWKB = "ST_GeomFromEWKB(({0}), ({1}))"; |
|
19 |
|
|
20 |
private final SQLBuilder sqlbuilder; |
|
21 |
private final Formatter<Value> formatter; |
|
22 |
|
|
23 |
public Constant(SQLBuilder sqlbuilder, Formatter<Value> formatter) { |
|
24 |
this.sqlbuilder = sqlbuilder; |
|
25 |
this.formatter = formatter; |
|
26 |
} |
|
27 |
|
|
28 |
@Override |
|
29 |
public boolean canApply(ExpressionBuilder.Value value) { |
|
30 |
if (value instanceof ExpressionBuilder.Constant) { |
|
31 |
Object x = ((ExpressionBuilder.Constant)value).value(); |
|
32 |
if( x instanceof byte[] ) { |
|
33 |
return true; |
|
34 |
} |
|
35 |
if( x instanceof Geometry ) { |
|
36 |
return true; |
|
37 |
} |
|
38 |
} |
|
39 |
return false; |
|
40 |
} |
|
41 |
|
|
42 |
@Override |
|
43 |
public String format(Value constant) { |
|
44 |
Object x = ((ExpressionBuilder.Constant)constant).value(); |
|
45 |
ExpressionBuilder builder = this.sqlbuilder.expression(); |
|
46 |
if( x instanceof byte[] ) { |
|
47 |
return builder.bytearray_x((byte[]) x); |
|
48 |
} |
|
49 |
if( x instanceof Geometry ) { |
|
50 |
Geometry geometry = (Geometry) x; |
|
51 |
switch (builder.geometry_support_type()) { |
|
52 |
case EWKB: |
|
53 |
return MessageFormat.format( |
|
54 |
FORMAT_ST_GEOMFROMEWKB, |
|
55 |
builder.bytearray_x(GeometryUtils.toEWKB(geometry)), |
|
56 |
String.valueOf(builder.srs_id(geometry.getProjection())) |
|
57 |
); |
|
58 |
case WKB: |
|
59 |
return MessageFormat.format( |
|
60 |
FORMAT_ST_GEOMFROMWKB, |
|
61 |
builder.bytearray_x(GeometryUtils.toWKB(geometry)), |
|
62 |
String.valueOf(builder.srs_id(geometry.getProjection())) |
|
63 |
); |
|
64 |
case WKT: |
|
65 |
default: |
|
66 |
return constant.toString(null); |
|
67 |
} |
|
68 |
|
|
69 |
} |
|
70 |
return null; |
|
71 |
} |
|
72 |
|
|
73 |
} |
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.h2/src/main/java/org/gvsig/fmap/dal/store/h2/expressionbuilderformatter/H2SpatialFormatter.java | ||
---|---|---|
24 | 24 |
new ST_AsEWKB(this.builder, this), |
25 | 25 |
new ST_GeomFromEWKB(this.builder, this), |
26 | 26 |
new ST_Intersects(this.builder, this), |
27 |
new ST_ExtentAggregate(this.builder, this) |
|
27 |
new ST_ExtentAggregate(this.builder, this), |
|
28 |
new Decode(this.builder, this), |
|
29 |
new Constant(this.builder, this) |
|
28 | 30 |
}; |
29 | 31 |
} |
30 | 32 |
|
Also available in: Unified diff