Revision 213
trunk/org.gvsig.mssqlserver/org.gvsig.mssqlserver.provider/src/main/java/org/gvsig/mssqlserver/dal/operations/MSSQLServerFetchFeatureTypeOperation.java | ||
---|---|---|
6 | 6 |
import java.sql.Statement; |
7 | 7 |
import java.util.List; |
8 | 8 |
import org.cresques.cts.IProjection; |
9 |
import org.gvsig.expressionevaluator.ExpressionBuilder; |
|
9 | 10 |
import org.gvsig.fmap.dal.exception.DataException; |
10 | 11 |
import org.gvsig.fmap.dal.feature.EditableFeatureAttributeDescriptor; |
11 | 12 |
import org.gvsig.fmap.dal.feature.EditableFeatureType; |
... | ... | |
68 | 69 |
private IProjection getProjectionOfColumn(String columnName) { |
69 | 70 |
|
70 | 71 |
JDBCSQLBuilderBase sqlbuilder = this.createSQLBuilder(); |
72 |
ExpressionBuilder expbuilder = sqlbuilder.expression(); |
|
73 |
|
|
71 | 74 |
sqlbuilder.select().limit(1); |
72 | 75 |
sqlbuilder.select().column().value( |
73 |
sqlbuilder.ST_SRID(sqlbuilder.column(columnName))
|
|
76 |
expbuilder.ST_SRID(expbuilder.column(columnName))
|
|
74 | 77 |
); |
75 | 78 |
sqlbuilder.select().where().set( |
76 |
sqlbuilder.and(
|
|
77 |
sqlbuilder.notIsNull(sqlbuilder.column(columnName)),
|
|
78 |
sqlbuilder.notIsNull(sqlbuilder.ST_SRID(sqlbuilder.column(columnName)))
|
|
79 |
expbuilder.and(
|
|
80 |
expbuilder.not_is_null(expbuilder.column(columnName)),
|
|
81 |
expbuilder.not_is_null(expbuilder.ST_SRID(expbuilder.column(columnName)))
|
|
79 | 82 |
) |
80 | 83 |
); |
81 | 84 |
sqlbuilder.select().from().table() |
trunk/org.gvsig.mssqlserver/org.gvsig.mssqlserver.provider/src/main/java/org/gvsig/mssqlserver/dal/MSSQLServerHelper.java | ||
---|---|---|
31 | 31 |
import java.util.List; |
32 | 32 |
import org.apache.commons.dbcp.BasicDataSource; |
33 | 33 |
import org.apache.commons.lang3.StringUtils; |
34 |
import org.gvsig.expressionevaluator.ExpressionBuilder; |
|
34 | 35 |
import org.gvsig.fmap.dal.DataParameters; |
35 | 36 |
import org.gvsig.fmap.dal.DataTypes; |
36 | 37 |
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor; |
... | ... | |
314 | 315 |
String columnName |
315 | 316 |
) throws JDBCSQLException { |
316 | 317 |
JDBCSQLBuilderBase sqlbuilder = createSQLBuilder(); |
318 |
ExpressionBuilder expbuilder = sqlbuilder.expression(); |
|
319 |
|
|
317 | 320 |
sqlbuilder.select().column().value( |
318 |
sqlbuilder.getAsGeometry(
|
|
319 |
sqlbuilder.ST_ExtentAggregate(
|
|
320 |
sqlbuilder.column(columnName)
|
|
321 |
expbuilder.as_geometry(
|
|
322 |
expbuilder.ST_ExtentAggregate(
|
|
323 |
expbuilder.column(columnName)
|
|
321 | 324 |
) |
322 | 325 |
) |
323 | 326 |
); |
... | ... | |
355 | 358 |
} |
356 | 359 |
|
357 | 360 |
@Override |
358 |
public SQLBuilder.GeometrySupportType getGeometrySupportType() {
|
|
359 |
return SQLBuilder.GeometrySupportType.WKB;
|
|
361 |
public ExpressionBuilder.GeometrySupportType getGeometrySupportType() {
|
|
362 |
return ExpressionBuilder.GeometrySupportType.WKB;
|
|
360 | 363 |
} |
361 | 364 |
|
362 | 365 |
@Override |
trunk/org.gvsig.mssqlserver/org.gvsig.mssqlserver.provider/src/main/java/org/gvsig/mssqlserver/dal/expressionbuilderformatter/ST_GeomFromWKB.java | ||
---|---|---|
1 |
package org.gvsig.mssqlserver.dal.expressionbuilderformatter; |
|
2 |
|
|
3 |
import java.text.MessageFormat; |
|
4 |
import java.util.List; |
|
5 |
import org.apache.commons.lang3.StringUtils; |
|
6 |
import org.gvsig.expressionevaluator.ExpressionBuilder; |
|
7 |
import org.gvsig.expressionevaluator.ExpressionBuilder.Function; |
|
8 |
import org.gvsig.expressionevaluator.ExpressionBuilder.Value; |
|
9 |
import org.gvsig.expressionevaluator.Formatter; |
|
10 |
import org.gvsig.fmap.dal.SQLBuilder; |
|
11 |
|
|
12 |
/** |
|
13 |
* |
|
14 |
* @author jjdelcerro |
|
15 |
*/ |
|
16 |
class ST_GeomFromWKB implements Formatter<Value> { |
|
17 |
|
|
18 |
private final Formatter<Value> formatter; |
|
19 |
private final SQLBuilder builder; |
|
20 |
|
|
21 |
public ST_GeomFromWKB(SQLBuilder builder, Formatter<Value> formatter) { |
|
22 |
this.builder = builder; |
|
23 |
this.formatter = formatter; |
|
24 |
} |
|
25 |
|
|
26 |
@Override |
|
27 |
public boolean canApply(Value value) { |
|
28 |
if (value instanceof Function) { |
|
29 |
return StringUtils.equalsIgnoreCase(ExpressionBuilder.FUNCTION_ST_GEOMFROMWKB, ((Function) value).name()); |
|
30 |
} |
|
31 |
return false; |
|
32 |
} |
|
33 |
|
|
34 |
@Override |
|
35 |
public String format(Value function) { |
|
36 |
List<Value> parameters = ((Function) function).parameters(); |
|
37 |
String p1 = parameters.get(0).toString(formatter); |
|
38 |
String p2 = parameters.get(1).toString(formatter); |
|
39 |
String r = MessageFormat.format("geometry::STGeomFromWKB({0}, {1})", p1, p2); |
|
40 |
return r; |
|
41 |
} |
|
42 |
|
|
43 |
} |
trunk/org.gvsig.mssqlserver/org.gvsig.mssqlserver.provider/src/main/java/org/gvsig/mssqlserver/dal/expressionbuilderformatter/ST_GeomFromText.java | ||
---|---|---|
1 |
package org.gvsig.mssqlserver.dal.expressionbuilderformatter; |
|
2 |
|
|
3 |
import java.text.MessageFormat; |
|
4 |
import java.util.List; |
|
5 |
import org.apache.commons.lang3.StringUtils; |
|
6 |
import org.gvsig.expressionevaluator.ExpressionBuilder; |
|
7 |
import org.gvsig.expressionevaluator.ExpressionBuilder.Function; |
|
8 |
import org.gvsig.expressionevaluator.ExpressionBuilder.Value; |
|
9 |
import org.gvsig.expressionevaluator.Formatter; |
|
10 |
import org.gvsig.fmap.dal.SQLBuilder; |
|
11 |
|
|
12 |
/** |
|
13 |
* |
|
14 |
* @author jjdelcerro |
|
15 |
*/ |
|
16 |
class ST_GeomFromText implements Formatter<Value> { |
|
17 |
|
|
18 |
private final Formatter<Value> formatter; |
|
19 |
private final SQLBuilder builder; |
|
20 |
|
|
21 |
public ST_GeomFromText(SQLBuilder builder, Formatter<Value> formatter) { |
|
22 |
this.builder = builder; |
|
23 |
this.formatter = formatter; |
|
24 |
} |
|
25 |
|
|
26 |
@Override |
|
27 |
public boolean canApply(Value value) { |
|
28 |
if (value instanceof Function) { |
|
29 |
return StringUtils.equalsIgnoreCase(ExpressionBuilder.FUNCTION_ST_GEOMFROMTEXT, ((Function) value).name()); |
|
30 |
} |
|
31 |
return false; |
|
32 |
} |
|
33 |
|
|
34 |
@Override |
|
35 |
public String format(Value function) { |
|
36 |
List<Value> parameters = ((Function) function).parameters(); |
|
37 |
String p1 = parameters.get(0).toString(formatter); |
|
38 |
String p2 = parameters.get(1).toString(formatter); |
|
39 |
String r = MessageFormat.format("geometry::STGeomFromText({0}, {1})", p1, p2); |
|
40 |
return r; |
|
41 |
} |
|
42 |
|
|
43 |
} |
trunk/org.gvsig.mssqlserver/org.gvsig.mssqlserver.provider/src/main/java/org/gvsig/mssqlserver/dal/expressionbuilderformatter/ST_Crosses.java | ||
---|---|---|
1 |
package org.gvsig.mssqlserver.dal.expressionbuilderformatter; |
|
2 |
|
|
3 |
import java.text.MessageFormat; |
|
4 |
import java.util.List; |
|
5 |
import org.apache.commons.lang3.StringUtils; |
|
6 |
|
|
7 |
import org.gvsig.expressionevaluator.ExpressionBuilder; |
|
8 |
import static org.gvsig.expressionevaluator.ExpressionBuilder.FUNCTION_ST_ASEWKB; |
|
9 |
import org.gvsig.expressionevaluator.ExpressionBuilder.Function; |
|
10 |
import org.gvsig.expressionevaluator.ExpressionBuilder.Constant; |
|
11 |
import org.gvsig.expressionevaluator.ExpressionBuilder.Value; |
|
12 |
import org.gvsig.expressionevaluator.Formatter; |
|
13 |
import org.gvsig.fmap.dal.SQLBuilder; |
|
14 |
|
|
15 |
/** |
|
16 |
* |
|
17 |
* @author jjdelcerro |
|
18 |
*/ |
|
19 |
class ST_Crosses implements Formatter<Value> { |
|
20 |
|
|
21 |
private final Formatter<Value> formatter; |
|
22 |
private final SQLBuilder builder; |
|
23 |
|
|
24 |
public ST_Crosses(SQLBuilder builder, Formatter<Value> formatter) { |
|
25 |
this.builder = builder; |
|
26 |
this.formatter = formatter; |
|
27 |
} |
|
28 |
|
|
29 |
@Override |
|
30 |
public boolean canApply(Value value) { |
|
31 |
if (value instanceof Function) { |
|
32 |
return StringUtils.equalsIgnoreCase(ExpressionBuilder.FUNCTION_ST_CROSSES, ((Function) value).name()); |
|
33 |
} |
|
34 |
return false; |
|
35 |
} |
|
36 |
|
|
37 |
@Override |
|
38 |
public String format(Value function) { |
|
39 |
List<Value> parameters = ((Function) function).parameters(); |
|
40 |
String p1 = parameters.get(0).toString(formatter); |
|
41 |
String p2 = parameters.get(1).toString(formatter); |
|
42 |
String r = MessageFormat.format("(({0}).STCrosses({1})=1)", p1, p2); |
|
43 |
return r; |
|
44 |
} |
|
45 |
|
|
46 |
} |
trunk/org.gvsig.mssqlserver/org.gvsig.mssqlserver.provider/src/main/java/org/gvsig/mssqlserver/dal/expressionbuilderformatter/ST_Disjoint.java | ||
---|---|---|
1 |
package org.gvsig.mssqlserver.dal.expressionbuilderformatter; |
|
2 |
|
|
3 |
import java.text.MessageFormat; |
|
4 |
import java.util.List; |
|
5 |
import org.apache.commons.lang3.StringUtils; |
|
6 |
|
|
7 |
import org.gvsig.expressionevaluator.ExpressionBuilder; |
|
8 |
import static org.gvsig.expressionevaluator.ExpressionBuilder.FUNCTION_ST_ASEWKB; |
|
9 |
import org.gvsig.expressionevaluator.ExpressionBuilder.Function; |
|
10 |
import org.gvsig.expressionevaluator.ExpressionBuilder.Constant; |
|
11 |
import org.gvsig.expressionevaluator.ExpressionBuilder.Value; |
|
12 |
import org.gvsig.expressionevaluator.Formatter; |
|
13 |
import org.gvsig.fmap.dal.SQLBuilder; |
|
14 |
|
|
15 |
/** |
|
16 |
* |
|
17 |
* @author jjdelcerro |
|
18 |
*/ |
|
19 |
class ST_Disjoint implements Formatter<Value> { |
|
20 |
|
|
21 |
private final Formatter<Value> formatter; |
|
22 |
private final SQLBuilder builder; |
|
23 |
|
|
24 |
public ST_Disjoint(SQLBuilder builder, Formatter<Value> formatter) { |
|
25 |
this.builder = builder; |
|
26 |
this.formatter = formatter; |
|
27 |
} |
|
28 |
|
|
29 |
@Override |
|
30 |
public boolean canApply(Value value) { |
|
31 |
if (value instanceof Function) { |
|
32 |
return StringUtils.equalsIgnoreCase(ExpressionBuilder.FUNCTION_ST_DISJOINT, ((Function) value).name()); |
|
33 |
} |
|
34 |
return false; |
|
35 |
} |
|
36 |
|
|
37 |
@Override |
|
38 |
public String format(Value function) { |
|
39 |
List<Value> parameters = ((Function) function).parameters(); |
|
40 |
String p1 = parameters.get(0).toString(formatter); |
|
41 |
String p2 = parameters.get(1).toString(formatter); |
|
42 |
String r = MessageFormat.format("(({0}).ST_Disjoint({1})=1)", p1, p2); |
|
43 |
return r; |
|
44 |
} |
|
45 |
|
|
46 |
} |
trunk/org.gvsig.mssqlserver/org.gvsig.mssqlserver.provider/src/main/java/org/gvsig/mssqlserver/dal/expressionbuilderformatter/ST_Intersects.java | ||
---|---|---|
1 |
package org.gvsig.mssqlserver.dal.expressionbuilderformatter; |
|
2 |
|
|
3 |
import java.text.MessageFormat; |
|
4 |
import java.util.List; |
|
5 |
import org.apache.commons.lang3.StringUtils; |
|
6 |
|
|
7 |
import org.gvsig.expressionevaluator.ExpressionBuilder; |
|
8 |
import static org.gvsig.expressionevaluator.ExpressionBuilder.FUNCTION_ST_ASEWKB; |
|
9 |
import org.gvsig.expressionevaluator.ExpressionBuilder.Function; |
|
10 |
import org.gvsig.expressionevaluator.ExpressionBuilder.Constant; |
|
11 |
import org.gvsig.expressionevaluator.ExpressionBuilder.Value; |
|
12 |
import org.gvsig.expressionevaluator.Formatter; |
|
13 |
import org.gvsig.fmap.dal.SQLBuilder; |
|
14 |
|
|
15 |
/** |
|
16 |
* |
|
17 |
* @author jjdelcerro |
|
18 |
*/ |
|
19 |
class ST_Intersects implements Formatter<Value> { |
|
20 |
|
|
21 |
private final Formatter<Value> formatter; |
|
22 |
private final SQLBuilder builder; |
|
23 |
|
|
24 |
public ST_Intersects(SQLBuilder builder, Formatter<Value> formatter) { |
|
25 |
this.builder = builder; |
|
26 |
this.formatter = formatter; |
|
27 |
} |
|
28 |
|
|
29 |
@Override |
|
30 |
public boolean canApply(Value value) { |
|
31 |
if (value instanceof Function) { |
|
32 |
return StringUtils.equalsIgnoreCase(ExpressionBuilder.FUNCTION_ST_INTERSECTS, ((Function) value).name()); |
|
33 |
} |
|
34 |
return false; |
|
35 |
} |
|
36 |
|
|
37 |
@Override |
|
38 |
public String format(Value function) { |
|
39 |
List<Value> parameters = ((Function) function).parameters(); |
|
40 |
String p1 = parameters.get(0).toString(formatter); |
|
41 |
String p2 = parameters.get(1).toString(formatter); |
|
42 |
String r = MessageFormat.format("(({0}).STIntersects({1})=1)", p1, p2); |
|
43 |
return r; |
|
44 |
} |
|
45 |
|
|
46 |
} |
trunk/org.gvsig.mssqlserver/org.gvsig.mssqlserver.provider/src/main/java/org/gvsig/mssqlserver/dal/expressionbuilderformatter/MSSQLParameter.java | ||
---|---|---|
1 |
package org.gvsig.mssqlserver.dal.expressionbuilderformatter; |
|
2 |
|
|
3 |
import java.text.MessageFormat; |
|
4 |
import org.cresques.cts.IProjection; |
|
5 |
import org.gvsig.expressionevaluator.ExpressionBuilder; |
|
6 |
import org.gvsig.expressionevaluator.ExpressionBuilder.Parameter; |
|
7 |
import org.gvsig.expressionevaluator.ExpressionBuilder.Value; |
|
8 |
import org.gvsig.expressionevaluator.Formatter; |
|
9 |
import org.gvsig.fmap.dal.SQLBuilder; |
|
10 |
import org.gvsig.fmap.geom.Geometry; |
|
11 |
import org.gvsig.fmap.geom.GeometryUtils; |
|
12 |
import org.gvsig.mssqlserver.dal.MSSQLServerSQLBuilder; |
|
13 |
|
|
14 |
/** |
|
15 |
* |
|
16 |
* @author jjdelcerro |
|
17 |
*/ |
|
18 |
class MSSQLParameter implements Formatter<Value> { |
|
19 |
|
|
20 |
private final Formatter<Value> formatter; |
|
21 |
private final MSSQLServerSQLBuilder builder; |
|
22 |
private final ExpressionBuilder expbuilder; |
|
23 |
|
|
24 |
public MSSQLParameter(SQLBuilder builder, Formatter<Value> formatter) { |
|
25 |
this.builder = (MSSQLServerSQLBuilder) builder; |
|
26 |
this.formatter = formatter; |
|
27 |
this.expbuilder = builder.expression(); |
|
28 |
} |
|
29 |
|
|
30 |
@Override |
|
31 |
public boolean canApply(Value value) { |
|
32 |
return value instanceof Parameter; |
|
33 |
} |
|
34 |
|
|
35 |
// public Object value(Object value) { |
|
36 |
// try { |
|
37 |
// switch (this.type()) { |
|
38 |
// case Constant: |
|
39 |
// if (value instanceof Geometry) { |
|
40 |
// Geometry geometry = (Geometry) value; |
|
41 |
// switch (this.expbuilder.geometry_support_type()) { |
|
42 |
// case EWKB: |
|
43 |
// return GeometryUtils.toEWKB(geometry); |
|
44 |
// case WKB: |
|
45 |
// return GeometryUtils.toWKB(geometry); |
|
46 |
// case WKT: |
|
47 |
// default: |
|
48 |
// return GeometryUtils.toWKT(geometry); |
|
49 |
// } |
|
50 |
// } else if (value instanceof IProjection) { |
|
51 |
// return this.expbuilder.srs_id((IProjection) value); |
|
52 |
// } |
|
53 |
// return value; |
|
54 |
// case Variable: |
|
55 |
// case Geometry: |
|
56 |
// default: |
|
57 |
// return value; |
|
58 |
// } |
|
59 |
// } catch (Exception ex) { |
|
60 |
// throw new RuntimeException("Can't get value from parameter.", ex); |
|
61 |
// } |
|
62 |
// } |
|
63 |
|
|
64 |
private String getSRS(Parameter param) { |
|
65 |
if( param.srs()!=null ) { |
|
66 |
return param.srs().toString(formatter); |
|
67 |
} |
|
68 |
if( param instanceof Geometry ) { |
|
69 |
IProjection proj = ((Geometry)param).getProjection(); |
|
70 |
Object s = this.expbuilder.srs_id(proj); |
|
71 |
if( s == null ) { |
|
72 |
throw new IllegalArgumentException("A parameter of type Geometry with an invalid SRS."); |
|
73 |
} |
|
74 |
return s.toString(); |
|
75 |
} |
|
76 |
throw new IllegalArgumentException("The parameter of type Geometry need a SRS."); |
|
77 |
} |
|
78 |
@Override |
|
79 |
public String format(Value function) { |
|
80 |
Parameter value = (Parameter) function; |
|
81 |
switch (value.type()) { |
|
82 |
case Constant: |
|
83 |
if (value instanceof Geometry) { |
|
84 |
switch (this.expbuilder.geometry_support_type()) { |
|
85 |
case EWKB: |
|
86 |
case WKB: |
|
87 |
return MessageFormat.format( |
|
88 |
this.builder.FORMAT_ST_GEOMFROMWKB, |
|
89 |
"?", |
|
90 |
this.getSRS(value) |
|
91 |
); |
|
92 |
case WKT: |
|
93 |
default: |
|
94 |
return MessageFormat.format( |
|
95 |
this.builder.FORMAT_ST_GEOMFROMTEXT, |
|
96 |
"?", |
|
97 |
this.getSRS(value) |
|
98 |
); |
|
99 |
} |
|
100 |
} |
|
101 |
case Variable: |
|
102 |
default: |
|
103 |
return "?"; |
|
104 |
case Geometry: |
|
105 |
switch (this.expbuilder.geometry_support_type()) { |
|
106 |
case EWKB: |
|
107 |
case WKB: |
|
108 |
return MessageFormat.format( |
|
109 |
this.builder.FORMAT_ST_GEOMFROMWKB, |
|
110 |
"?", |
|
111 |
this.getSRS(value) |
|
112 |
); |
|
113 |
case WKT: |
|
114 |
default: |
|
115 |
return MessageFormat.format( |
|
116 |
this.builder.FORMAT_ST_GEOMFROMTEXT, |
|
117 |
"?", |
|
118 |
this.getSRS(value) |
|
119 |
); |
|
120 |
} |
|
121 |
} |
|
122 |
} |
|
123 |
} |
|
124 |
|
trunk/org.gvsig.mssqlserver/org.gvsig.mssqlserver.provider/src/main/java/org/gvsig/mssqlserver/dal/expressionbuilderformatter/ST_Equals.java | ||
---|---|---|
1 |
package org.gvsig.mssqlserver.dal.expressionbuilderformatter; |
|
2 |
|
|
3 |
import java.text.MessageFormat; |
|
4 |
import java.util.List; |
|
5 |
import org.apache.commons.lang3.StringUtils; |
|
6 |
|
|
7 |
import org.gvsig.expressionevaluator.ExpressionBuilder; |
|
8 |
import static org.gvsig.expressionevaluator.ExpressionBuilder.FUNCTION_ST_ASEWKB; |
|
9 |
import org.gvsig.expressionevaluator.ExpressionBuilder.Function; |
|
10 |
import org.gvsig.expressionevaluator.ExpressionBuilder.Constant; |
|
11 |
import org.gvsig.expressionevaluator.ExpressionBuilder.Value; |
|
12 |
import org.gvsig.expressionevaluator.Formatter; |
|
13 |
import org.gvsig.fmap.dal.SQLBuilder; |
|
14 |
|
|
15 |
/** |
|
16 |
* |
|
17 |
* @author jjdelcerro |
|
18 |
*/ |
|
19 |
class ST_Equals implements Formatter<Value> { |
|
20 |
|
|
21 |
private final Formatter<Value> formatter; |
|
22 |
private final SQLBuilder builder; |
|
23 |
|
|
24 |
public ST_Equals(SQLBuilder builder, Formatter<Value> formatter) { |
|
25 |
this.builder = builder; |
|
26 |
this.formatter = formatter; |
|
27 |
} |
|
28 |
|
|
29 |
@Override |
|
30 |
public boolean canApply(Value value) { |
|
31 |
if (value instanceof Function) { |
|
32 |
return StringUtils.equalsIgnoreCase(ExpressionBuilder.FUNCTION_ST_EQUALS, ((Function) value).name()); |
|
33 |
} |
|
34 |
return false; |
|
35 |
} |
|
36 |
|
|
37 |
@Override |
|
38 |
public String format(Value function) { |
|
39 |
List<Value> parameters = ((Function) function).parameters(); |
|
40 |
String p1 = parameters.get(0).toString(formatter); |
|
41 |
String p2 = parameters.get(1).toString(formatter); |
|
42 |
String r = MessageFormat.format("(({0}).STEquals({1})=1)", p1, p2); |
|
43 |
return r; |
|
44 |
} |
|
45 |
|
|
46 |
} |
trunk/org.gvsig.mssqlserver/org.gvsig.mssqlserver.provider/src/main/java/org/gvsig/mssqlserver/dal/expressionbuilderformatter/ST_Overlaps.java | ||
---|---|---|
1 |
package org.gvsig.mssqlserver.dal.expressionbuilderformatter; |
|
2 |
|
|
3 |
import java.text.MessageFormat; |
|
4 |
import java.util.List; |
|
5 |
import org.apache.commons.lang3.StringUtils; |
|
6 |
|
|
7 |
import org.gvsig.expressionevaluator.ExpressionBuilder; |
|
8 |
import static org.gvsig.expressionevaluator.ExpressionBuilder.FUNCTION_ST_ASEWKB; |
|
9 |
import org.gvsig.expressionevaluator.ExpressionBuilder.Function; |
|
10 |
import org.gvsig.expressionevaluator.ExpressionBuilder.Constant; |
|
11 |
import org.gvsig.expressionevaluator.ExpressionBuilder.Value; |
|
12 |
import org.gvsig.expressionevaluator.Formatter; |
|
13 |
import org.gvsig.fmap.dal.SQLBuilder; |
|
14 |
|
|
15 |
/** |
|
16 |
* |
|
17 |
* @author jjdelcerro |
|
18 |
*/ |
|
19 |
class ST_Overlaps implements Formatter<Value> { |
|
20 |
|
|
21 |
private final Formatter<Value> formatter; |
|
22 |
private final SQLBuilder builder; |
|
23 |
|
|
24 |
public ST_Overlaps(SQLBuilder builder, Formatter<Value> formatter) { |
|
25 |
this.builder = builder; |
|
26 |
this.formatter = formatter; |
|
27 |
} |
|
28 |
|
|
29 |
@Override |
|
30 |
public boolean canApply(Value value) { |
|
31 |
if (value instanceof Function) { |
|
32 |
return StringUtils.equalsIgnoreCase(ExpressionBuilder.FUNCTION_ST_OVERLAPS, ((Function) value).name()); |
|
33 |
} |
|
34 |
return false; |
|
35 |
} |
|
36 |
|
|
37 |
@Override |
|
38 |
public String format(Value function) { |
|
39 |
List<Value> parameters = ((Function) function).parameters(); |
|
40 |
String p1 = parameters.get(0).toString(formatter); |
|
41 |
String p2 = parameters.get(1).toString(formatter); |
|
42 |
String r = MessageFormat.format("(({0}).STOverlaps({1})=1)", p1, p2); |
|
43 |
return r; |
|
44 |
} |
|
45 |
|
|
46 |
} |
trunk/org.gvsig.mssqlserver/org.gvsig.mssqlserver.provider/src/main/java/org/gvsig/mssqlserver/dal/expressionbuilderformatter/MSSQLVariable.java | ||
---|---|---|
1 |
package org.gvsig.mssqlserver.dal.expressionbuilderformatter; |
|
2 |
|
|
3 |
import org.apache.commons.lang3.StringUtils; |
|
4 |
import org.gvsig.expressionevaluator.ExpressionBuilder; |
|
5 |
import static org.gvsig.expressionevaluator.ExpressionBuilder.EMPTY_FORMATTER; |
|
6 |
import org.gvsig.expressionevaluator.ExpressionBuilder.Value; |
|
7 |
import org.gvsig.expressionevaluator.ExpressionBuilder.Variable; |
|
8 |
import org.gvsig.expressionevaluator.Formatter; |
|
9 |
import org.gvsig.fmap.dal.SQLBuilder; |
|
10 |
|
|
11 |
/** |
|
12 |
* |
|
13 |
* @author jjdelcerro |
|
14 |
*/ |
|
15 |
class MSSQLVariable implements Formatter<Value> { |
|
16 |
|
|
17 |
private final Formatter<Value> formatter; |
|
18 |
private final SQLBuilder builder; |
|
19 |
private final ExpressionBuilder expbuilder; |
|
20 |
|
|
21 |
public MSSQLVariable(SQLBuilder builder, Formatter<Value> formatter) { |
|
22 |
this.builder = builder; |
|
23 |
this.formatter = formatter; |
|
24 |
this.expbuilder = builder.expression(); |
|
25 |
} |
|
26 |
|
|
27 |
@Override |
|
28 |
public boolean canApply(Value value) { |
|
29 |
return value instanceof Variable; |
|
30 |
} |
|
31 |
|
|
32 |
@Override |
|
33 |
public String format(Value function) { |
|
34 |
String name = ((Variable) function).name(); |
|
35 |
|
|
36 |
if (StringUtils.isEmpty(name)) { |
|
37 |
return this.expbuilder.toString(EMPTY_FORMATTER); |
|
38 |
} |
|
39 |
|
|
40 |
return this.builder.as_identifier(name); |
|
41 |
|
|
42 |
} |
|
43 |
} |
|
44 |
|
trunk/org.gvsig.mssqlserver/org.gvsig.mssqlserver.provider/src/main/java/org/gvsig/mssqlserver/dal/expressionbuilderformatter/ST_UnionAggregate.java | ||
---|---|---|
1 |
package org.gvsig.mssqlserver.dal.expressionbuilderformatter; |
|
2 |
|
|
3 |
import java.text.MessageFormat; |
|
4 |
import java.util.List; |
|
5 |
import org.apache.commons.lang3.StringUtils; |
|
6 |
import org.gvsig.expressionevaluator.ExpressionBuilder; |
|
7 |
import static org.gvsig.expressionevaluator.ExpressionBuilder.FUNCTION_ST_ASEWKB; |
|
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 |
class ST_UnionAggregate implements Formatter<Value> { |
|
18 |
|
|
19 |
private final Formatter<Value> formatter; |
|
20 |
private final SQLBuilder builder; |
|
21 |
|
|
22 |
public ST_UnionAggregate(SQLBuilder builder, Formatter<Value> formatter) { |
|
23 |
this.builder = builder; |
|
24 |
this.formatter = formatter; |
|
25 |
} |
|
26 |
|
|
27 |
@Override |
|
28 |
public boolean canApply(Value value) { |
|
29 |
if (value instanceof Function) { |
|
30 |
return StringUtils.equalsIgnoreCase(ExpressionBuilder.FUNCTION_ST_UNIONAGGREGATE, ((Function) value).name()); |
|
31 |
} |
|
32 |
return false; |
|
33 |
} |
|
34 |
|
|
35 |
@Override |
|
36 |
public String format(Value function) { |
|
37 |
List<Value> parameters = ((Function) function).parameters(); |
|
38 |
String p1 = parameters.get(0).toString(formatter); |
|
39 |
String r = MessageFormat.format("geometry::UnionAggregate({0})", p1); |
|
40 |
return r; |
|
41 |
} |
|
42 |
|
|
43 |
} |
trunk/org.gvsig.mssqlserver/org.gvsig.mssqlserver.provider/src/main/java/org/gvsig/mssqlserver/dal/expressionbuilderformatter/ST_SRID.java | ||
---|---|---|
1 |
package org.gvsig.mssqlserver.dal.expressionbuilderformatter; |
|
2 |
|
|
3 |
import java.text.MessageFormat; |
|
4 |
import java.util.List; |
|
5 |
import org.apache.commons.lang3.StringUtils; |
|
6 |
import org.gvsig.expressionevaluator.ExpressionBuilder; |
|
7 |
import org.gvsig.expressionevaluator.ExpressionBuilder.Function; |
|
8 |
import org.gvsig.expressionevaluator.ExpressionBuilder.Value; |
|
9 |
import org.gvsig.expressionevaluator.Formatter; |
|
10 |
import org.gvsig.fmap.dal.SQLBuilder; |
|
11 |
|
|
12 |
/** |
|
13 |
* |
|
14 |
* @author jjdelcerro |
|
15 |
*/ |
|
16 |
class ST_SRID implements Formatter<Value> { |
|
17 |
|
|
18 |
private final Formatter<Value> formatter; |
|
19 |
private final SQLBuilder builder; |
|
20 |
|
|
21 |
public ST_SRID(SQLBuilder builder, Formatter<Value> formatter) { |
|
22 |
this.builder = builder; |
|
23 |
this.formatter = formatter; |
|
24 |
} |
|
25 |
|
|
26 |
@Override |
|
27 |
public boolean canApply(Value value) { |
|
28 |
if (value instanceof Function) { |
|
29 |
return StringUtils.equalsIgnoreCase(ExpressionBuilder.FUNCTION_ST_SRID, ((Function) value).name()); |
|
30 |
} |
|
31 |
return false; |
|
32 |
} |
|
33 |
|
|
34 |
@Override |
|
35 |
public String format(Value function) { |
|
36 |
List<Value> parameters = ((Function) function).parameters(); |
|
37 |
String p1 = parameters.get(0).toString(formatter); |
|
38 |
String r = MessageFormat.format("(({0}).STSrid)", p1); |
|
39 |
return r; |
|
40 |
} |
|
41 |
|
|
42 |
} |
trunk/org.gvsig.mssqlserver/org.gvsig.mssqlserver.provider/src/main/java/org/gvsig/mssqlserver/dal/expressionbuilderformatter/ST_Within.java | ||
---|---|---|
1 |
package org.gvsig.mssqlserver.dal.expressionbuilderformatter; |
|
2 |
|
|
3 |
import java.text.MessageFormat; |
|
4 |
import java.util.List; |
|
5 |
import org.apache.commons.lang3.StringUtils; |
|
6 |
|
|
7 |
import org.gvsig.expressionevaluator.ExpressionBuilder; |
|
8 |
import static org.gvsig.expressionevaluator.ExpressionBuilder.FUNCTION_ST_ASEWKB; |
|
9 |
import org.gvsig.expressionevaluator.ExpressionBuilder.Function; |
|
10 |
import org.gvsig.expressionevaluator.ExpressionBuilder.Constant; |
|
11 |
import org.gvsig.expressionevaluator.ExpressionBuilder.Value; |
|
12 |
import org.gvsig.expressionevaluator.Formatter; |
|
13 |
import org.gvsig.fmap.dal.SQLBuilder; |
|
14 |
|
|
15 |
/** |
|
16 |
* |
|
17 |
* @author jjdelcerro |
|
18 |
*/ |
|
19 |
class ST_Within implements Formatter<Value> { |
|
20 |
|
|
21 |
private final Formatter<Value> formatter; |
|
22 |
private final SQLBuilder builder; |
|
23 |
|
|
24 |
public ST_Within(SQLBuilder builder, Formatter<Value> formatter) { |
|
25 |
this.builder = builder; |
|
26 |
this.formatter = formatter; |
|
27 |
} |
|
28 |
|
|
29 |
@Override |
|
30 |
public boolean canApply(Value value) { |
|
31 |
if (value instanceof Function) { |
|
32 |
return StringUtils.equalsIgnoreCase(ExpressionBuilder.FUNCTION_ST_WITHIN, ((Function) value).name()); |
|
33 |
} |
|
34 |
return false; |
|
35 |
} |
|
36 |
|
|
37 |
@Override |
|
38 |
public String format(Value function) { |
|
39 |
List<Value> parameters = ((Function) function).parameters(); |
|
40 |
String p1 = parameters.get(0).toString(formatter); |
|
41 |
String p2 = parameters.get(1).toString(formatter); |
|
42 |
String r = MessageFormat.format("(({0}).STWithin({1})=1)", p1, p2); |
|
43 |
return r; |
|
44 |
} |
|
45 |
|
|
46 |
} |
trunk/org.gvsig.mssqlserver/org.gvsig.mssqlserver.provider/src/main/java/org/gvsig/mssqlserver/dal/expressionbuilderformatter/MSSQLConstant.java | ||
---|---|---|
1 |
package org.gvsig.mssqlserver.dal.expressionbuilderformatter; |
|
2 |
|
|
3 |
import java.text.MessageFormat; |
|
4 |
import java.util.List; |
|
5 |
import java.util.Objects; |
|
6 |
import org.apache.commons.lang3.StringUtils; |
|
7 |
import org.cresques.cts.IProjection; |
|
8 |
import org.gvsig.expressionevaluator.ExpressionBuilder; |
|
9 |
import org.gvsig.expressionevaluator.ExpressionBuilder.Constant; |
|
10 |
import static org.gvsig.expressionevaluator.ExpressionBuilder.EMPTY_FORMATTER; |
|
11 |
import org.gvsig.expressionevaluator.ExpressionBuilder.Function; |
|
12 |
import org.gvsig.expressionevaluator.ExpressionBuilder.Value; |
|
13 |
import org.gvsig.expressionevaluator.Formatter; |
|
14 |
import org.gvsig.fmap.dal.SQLBuilder; |
|
15 |
import org.gvsig.fmap.dal.feature.spi.SQLBuilderBase; |
|
16 |
import org.gvsig.fmap.geom.Geometry; |
|
17 |
import org.gvsig.fmap.geom.GeometryUtils; |
|
18 |
|
|
19 |
/** |
|
20 |
* |
|
21 |
* @author jjdelcerro |
|
22 |
*/ |
|
23 |
class MSSQLConstant implements Formatter<Value> { |
|
24 |
|
|
25 |
private final Formatter<Value> formatter; |
|
26 |
private final SQLBuilder builder; |
|
27 |
private final ExpressionBuilder expbuilder; |
|
28 |
|
|
29 |
public MSSQLConstant(SQLBuilder builder, Formatter<Value> formatter) { |
|
30 |
this.builder = builder; |
|
31 |
this.formatter = formatter; |
|
32 |
this.expbuilder = builder.expression(); |
|
33 |
} |
|
34 |
|
|
35 |
@Override |
|
36 |
public boolean canApply(Value value) { |
|
37 |
return value instanceof Constant; |
|
38 |
} |
|
39 |
|
|
40 |
@Override |
|
41 |
public String format(Value function) { |
|
42 |
Object value = ((Constant) function).value(); |
|
43 |
|
|
44 |
if( value==null ) { |
|
45 |
return "NULL"; |
|
46 |
} |
|
47 |
if( value instanceof byte[] ) { |
|
48 |
return this.expbuilder.bytearray_0x((byte[]) value); |
|
49 |
} |
|
50 |
if (value instanceof String) { |
|
51 |
return this.builder.as_string((String) value); |
|
52 |
} |
|
53 |
if( value instanceof Geometry ) { |
|
54 |
Geometry geometry = (Geometry) value; |
|
55 |
switch (this.builder.geometry_support_type()) { |
|
56 |
case EWKB: |
|
57 |
case WKB: |
|
58 |
String p1 = this.expbuilder.bytearray_0x(GeometryUtils.toWKB(geometry)); |
|
59 |
String p2 = String.valueOf(this.expbuilder.srs_id(geometry.getProjection())); |
|
60 |
String r = MessageFormat.format("geometry::STGeomFromWKB({0}, {1})", p1, p2); |
|
61 |
return r; |
|
62 |
case WKT: |
|
63 |
default: |
|
64 |
String p3 = this.expbuilder.bytearray_0x(GeometryUtils.toWKB(geometry)); |
|
65 |
String p4 = String.valueOf(this.expbuilder.srs_id(geometry.getProjection())); |
|
66 |
String r1 = MessageFormat.format("geometry::STGeomFromText({0}, {1})", p3, p4); |
|
67 |
return r1; |
|
68 |
} |
|
69 |
} |
|
70 |
if( value instanceof IProjection ) { |
|
71 |
return Objects.toString(this.expbuilder.srs_id((IProjection)(value))); |
|
72 |
} |
|
73 |
if (value instanceof Boolean) { |
|
74 |
// TODO correct values |
|
75 |
if (((Boolean) value)) { |
|
76 |
return "(1=1)"; |
|
77 |
} else { |
|
78 |
return "(1<>1)"; |
|
79 |
} |
|
80 |
} |
|
81 |
return Objects.toString(value, ""); |
|
82 |
} |
|
83 |
} |
|
84 |
|
trunk/org.gvsig.mssqlserver/org.gvsig.mssqlserver.provider/src/main/java/org/gvsig/mssqlserver/dal/expressionbuilderformatter/MSSQLServerFormatter.java | ||
---|---|---|
1 |
/* |
|
2 |
* To change this license header, choose License Headers in Project Properties. |
|
3 |
* To change this template file, choose Tools | Templates |
|
4 |
* and open the template in the editor. |
|
5 |
*/ |
|
6 |
package org.gvsig.mssqlserver.dal.expressionbuilderformatter; |
|
7 |
|
|
8 |
import org.gvsig.expressionevaluator.ExpressionBuilder; |
|
9 |
import org.gvsig.expressionevaluator.Formatter; |
|
10 |
import org.gvsig.fmap.dal.SQLBuilder; |
|
11 |
|
|
12 |
/** |
|
13 |
* |
|
14 |
* @author osc |
|
15 |
*/ |
|
16 |
public class MSSQLServerFormatter implements Formatter<ExpressionBuilder.Value> { |
|
17 |
|
|
18 |
private final SQLBuilder builder; |
|
19 |
private final Formatter<ExpressionBuilder.Value>[] formatters; |
|
20 |
|
|
21 |
public MSSQLServerFormatter(SQLBuilder builder) { |
|
22 |
|
|
23 |
this.builder = builder; |
|
24 |
this.formatters = new Formatter[]{ |
|
25 |
new ST_AsBinary(this.builder, this), |
|
26 |
new ST_AsText(this.builder, this), |
|
27 |
new ST_Contains(this.builder, this), |
|
28 |
new ST_Crosses(this.builder, this), |
|
29 |
new ST_Disjoint(this.builder, this), |
|
30 |
new ST_Envelope(this.builder, this), |
|
31 |
new ST_Equals(this.builder, this), |
|
32 |
new ST_ExtentAggregate(this.builder, this), |
|
33 |
new ST_GeomFromText(this.builder, this), |
|
34 |
new ST_GeomFromWKB(this.builder, this), |
|
35 |
new ST_Intersects(this.builder, this), |
|
36 |
new ST_IsClosed(this.builder, this), |
|
37 |
new ST_Overlaps(this.builder, this), |
|
38 |
new ST_SRID(this.builder, this), |
|
39 |
new ST_Touches(this.builder, this), |
|
40 |
new ST_UnionAggregate(this.builder, this), |
|
41 |
new ST_Within(this.builder, this), |
|
42 |
new MSSQLConstant(this.builder, this), |
|
43 |
new MSSQLVariable(this.builder, this), |
|
44 |
new MSSQLParameter(this.builder, this) |
|
45 |
|
|
46 |
// new ILike(this.builder, this), |
|
47 |
// new IsNull(this.builder, this), |
|
48 |
// new IsNotNull(this.builder, this) |
|
49 |
// new ST_AsEWKB(this.builder, this), |
|
50 |
// new ST_ExtentAggregate(this.builder, this), |
|
51 |
// new ST_GeomFromEWKB(this.builder, this), |
|
52 |
// new ST_Intersects(this.builder, this), |
|
53 |
// new ST_UnionAggregate(this.builder, this) |
|
54 |
}; |
|
55 |
} |
|
56 |
|
|
57 |
@Override |
|
58 |
public boolean canApply(ExpressionBuilder.Value value) { |
|
59 |
for (Formatter<ExpressionBuilder.Value> formatter : formatters) { |
|
60 |
if (formatter.canApply(value)) { |
|
61 |
return true; |
|
62 |
} |
|
63 |
} |
|
64 |
return false; |
|
65 |
} |
|
66 |
|
|
67 |
@Override |
|
68 |
public String format(ExpressionBuilder.Value value) { |
|
69 |
for (Formatter<ExpressionBuilder.Value> formatter : formatters) { |
|
70 |
if (formatter.canApply(value)) { |
|
71 |
return formatter.format(value); |
|
72 |
} |
|
73 |
} |
|
74 |
return value.toString(this); |
|
75 |
} |
|
76 |
|
|
77 |
} |
trunk/org.gvsig.mssqlserver/org.gvsig.mssqlserver.provider/src/main/java/org/gvsig/mssqlserver/dal/expressionbuilderformatter/ST_IsClosed.java | ||
---|---|---|
1 |
package org.gvsig.mssqlserver.dal.expressionbuilderformatter; |
|
2 |
|
|
3 |
import java.text.MessageFormat; |
|
4 |
import java.util.List; |
|
5 |
import org.apache.commons.lang3.StringUtils; |
|
6 |
import org.gvsig.expressionevaluator.ExpressionBuilder; |
|
7 |
import org.gvsig.expressionevaluator.ExpressionBuilder.Function; |
|
8 |
import org.gvsig.expressionevaluator.ExpressionBuilder.Value; |
|
9 |
import org.gvsig.expressionevaluator.Formatter; |
|
10 |
import org.gvsig.fmap.dal.SQLBuilder; |
|
11 |
|
|
12 |
/** |
|
13 |
* |
|
14 |
* @author jjdelcerro |
|
15 |
*/ |
|
16 |
class ST_IsClosed implements Formatter<Value> { |
|
17 |
|
|
18 |
private final Formatter<Value> formatter; |
|
19 |
private final SQLBuilder builder; |
|
20 |
|
|
21 |
public ST_IsClosed(SQLBuilder builder, Formatter<Value> formatter) { |
|
22 |
this.builder = builder; |
|
23 |
this.formatter = formatter; |
|
24 |
} |
|
25 |
|
|
26 |
@Override |
|
27 |
public boolean canApply(Value value) { |
|
28 |
if (value instanceof Function) { |
|
29 |
return StringUtils.equalsIgnoreCase(ExpressionBuilder.FUNCTION_ST_ISCLOSED, ((Function) value).name()); |
|
30 |
} |
|
31 |
return false; |
|
32 |
} |
|
33 |
|
|
34 |
@Override |
|
35 |
public String format(Value function) { |
|
36 |
List<Value> parameters = ((Function) function).parameters(); |
|
37 |
String p1 = parameters.get(0).toString(formatter); |
|
38 |
String r = MessageFormat.format("(({0}).STIsClosed()=1)", p1); |
|
39 |
return r; |
|
40 |
} |
|
41 |
|
|
42 |
} |
trunk/org.gvsig.mssqlserver/org.gvsig.mssqlserver.provider/src/main/java/org/gvsig/mssqlserver/dal/expressionbuilderformatter/ST_AsBinary.java | ||
---|---|---|
1 |
package org.gvsig.mssqlserver.dal.expressionbuilderformatter; |
|
2 |
|
|
3 |
import java.text.MessageFormat; |
|
4 |
import java.util.List; |
|
5 |
import org.apache.commons.lang3.StringUtils; |
|
6 |
import org.gvsig.expressionevaluator.ExpressionBuilder; |
|
7 |
import org.gvsig.expressionevaluator.ExpressionBuilder.Function; |
|
8 |
import org.gvsig.expressionevaluator.ExpressionBuilder.Value; |
|
9 |
import org.gvsig.expressionevaluator.Formatter; |
|
10 |
import org.gvsig.fmap.dal.SQLBuilder; |
|
11 |
|
|
12 |
/** |
|
13 |
* |
|
14 |
* @author jjdelcerro |
|
15 |
*/ |
|
16 |
class ST_AsBinary implements Formatter<Value> { |
|
17 |
|
|
18 |
private final Formatter<Value> formatter; |
|
19 |
private final SQLBuilder builder; |
|
20 |
|
|
21 |
public ST_AsBinary(SQLBuilder builder, Formatter<Value> formatter) { |
|
22 |
this.builder = builder; |
|
23 |
this.formatter = formatter; |
|
24 |
} |
|
25 |
|
|
26 |
@Override |
|
27 |
public boolean canApply(Value value) { |
|
28 |
if (value instanceof Function) { |
|
29 |
return StringUtils.equalsIgnoreCase(ExpressionBuilder.FUNCTION_ST_ASBINARY, ((Function) value).name()); |
|
30 |
} |
|
31 |
return false; |
|
32 |
} |
|
33 |
|
|
34 |
@Override |
|
35 |
public String format(Value function) { |
|
36 |
List<Value> parameters = ((Function) function).parameters(); |
|
37 |
String p1 = parameters.get(0).toString(formatter); |
|
38 |
String r = MessageFormat.format("({0}).STAsBinary()", p1); |
|
39 |
return r; |
|
40 |
} |
|
41 |
|
|
42 |
} |
trunk/org.gvsig.mssqlserver/org.gvsig.mssqlserver.provider/src/main/java/org/gvsig/mssqlserver/dal/expressionbuilderformatter/ST_AsText.java | ||
---|---|---|
1 |
package org.gvsig.mssqlserver.dal.expressionbuilderformatter; |
|
2 |
|
|
3 |
import java.text.MessageFormat; |
|
4 |
import java.util.List; |
|
5 |
import org.apache.commons.lang3.StringUtils; |
|
6 |
import org.gvsig.expressionevaluator.ExpressionBuilder; |
|
7 |
import org.gvsig.expressionevaluator.ExpressionBuilder.Function; |
|
8 |
import org.gvsig.expressionevaluator.ExpressionBuilder.Value; |
|
9 |
import org.gvsig.expressionevaluator.Formatter; |
|
10 |
import org.gvsig.fmap.dal.SQLBuilder; |
|
11 |
|
|
12 |
/** |
|
13 |
* |
|
14 |
* @author jjdelcerro |
|
15 |
*/ |
|
16 |
class ST_AsText implements Formatter<Value> { |
|
17 |
|
|
18 |
private final Formatter<Value> formatter; |
|
19 |
private final SQLBuilder builder; |
|
20 |
|
|
21 |
public ST_AsText(SQLBuilder builder, Formatter<Value> formatter) { |
|
22 |
this.builder = builder; |
|
23 |
this.formatter = formatter; |
|
24 |
} |
|
25 |
|
|
26 |
@Override |
|
27 |
public boolean canApply(Value value) { |
|
28 |
if (value instanceof Function) { |
|
29 |
return StringUtils.equalsIgnoreCase(ExpressionBuilder.FUNCTION_ST_ASTEXT, ((Function) value).name()); |
|
30 |
} |
|
31 |
return false; |
|
32 |
} |
|
33 |
|
|
34 |
@Override |
|
35 |
public String format(Value function) { |
|
36 |
List<Value> parameters = ((Function) function).parameters(); |
|
37 |
String p1 = parameters.get(0).toString(formatter); |
|
38 |
String r = MessageFormat.format("({0}).STAsText()", p1); |
|
39 |
return r; |
|
40 |
} |
|
41 |
|
|
42 |
} |
trunk/org.gvsig.mssqlserver/org.gvsig.mssqlserver.provider/src/main/java/org/gvsig/mssqlserver/dal/expressionbuilderformatter/ST_Touches.java | ||
---|---|---|
1 |
package org.gvsig.mssqlserver.dal.expressionbuilderformatter; |
|
2 |
|
|
3 |
import java.text.MessageFormat; |
|
4 |
import java.util.List; |
|
5 |
import org.apache.commons.lang3.StringUtils; |
|
6 |
|
|
7 |
import org.gvsig.expressionevaluator.ExpressionBuilder; |
|
8 |
import static org.gvsig.expressionevaluator.ExpressionBuilder.FUNCTION_ST_ASEWKB; |
|
9 |
import org.gvsig.expressionevaluator.ExpressionBuilder.Function; |
|
10 |
import org.gvsig.expressionevaluator.ExpressionBuilder.Constant; |
|
11 |
import org.gvsig.expressionevaluator.ExpressionBuilder.Value; |
|
12 |
import org.gvsig.expressionevaluator.Formatter; |
|
13 |
import org.gvsig.fmap.dal.SQLBuilder; |
|
14 |
|
|
15 |
/** |
|
16 |
* |
|
17 |
* @author jjdelcerro |
|
18 |
*/ |
|
19 |
class ST_Touches implements Formatter<Value> { |
|
20 |
|
|
21 |
private final Formatter<Value> formatter; |
|
22 |
private final SQLBuilder builder; |
|
23 |
|
|
24 |
public ST_Touches(SQLBuilder builder, Formatter<Value> formatter) { |
|
25 |
this.builder = builder; |
|
26 |
this.formatter = formatter; |
|
27 |
} |
|
28 |
|
|
29 |
@Override |
|
30 |
public boolean canApply(Value value) { |
|
31 |
if (value instanceof Function) { |
|
32 |
return StringUtils.equalsIgnoreCase(ExpressionBuilder.FUNCTION_ST_TOUCHES, ((Function) value).name()); |
|
33 |
} |
|
34 |
return false; |
|
35 |
} |
|
36 |
|
|
37 |
@Override |
|
38 |
public String format(Value function) { |
|
39 |
List<Value> parameters = ((Function) function).parameters(); |
|
40 |
String p1 = parameters.get(0).toString(formatter); |
|
41 |
String p2 = parameters.get(1).toString(formatter); |
|
42 |
String r = MessageFormat.format("(({0}).STTouches({1})=1)", p1, p2); |
|
43 |
return r; |
|
44 |
} |
|
45 |
|
|
46 |
} |
trunk/org.gvsig.mssqlserver/org.gvsig.mssqlserver.provider/src/main/java/org/gvsig/mssqlserver/dal/expressionbuilderformatter/ST_Envelope.java | ||
---|---|---|
1 |
package org.gvsig.mssqlserver.dal.expressionbuilderformatter; |
|
2 |
|
|
3 |
import java.text.MessageFormat; |
|
4 |
import java.util.List; |
|
5 |
import org.apache.commons.lang3.StringUtils; |
|
6 |
import org.gvsig.expressionevaluator.ExpressionBuilder; |
|
7 |
import org.gvsig.expressionevaluator.ExpressionBuilder.Function; |
|
8 |
import org.gvsig.expressionevaluator.ExpressionBuilder.Value; |
|
9 |
import org.gvsig.expressionevaluator.Formatter; |
|
10 |
import org.gvsig.fmap.dal.SQLBuilder; |
|
11 |
|
|
12 |
/** |
|
13 |
* |
|
14 |
* @author jjdelcerro |
|
15 |
*/ |
|
16 |
class ST_Envelope implements Formatter<Value> { |
|
17 |
|
|
18 |
private final Formatter<Value> formatter; |
|
19 |
private final SQLBuilder builder; |
|
20 |
|
|
21 |
public ST_Envelope(SQLBuilder builder, Formatter<Value> formatter) { |
|
22 |
this.builder = builder; |
|
23 |
this.formatter = formatter; |
|
24 |
} |
|
25 |
|
|
26 |
@Override |
|
27 |
public boolean canApply(Value value) { |
|
28 |
if (value instanceof Function) { |
|
29 |
return StringUtils.equalsIgnoreCase(ExpressionBuilder.FUNCTION_ST_ENVELOPE, ((Function) value).name()); |
|
30 |
} |
|
31 |
return false; |
|
32 |
} |
|
33 |
|
|
34 |
@Override |
|
35 |
public String format(Value function) { |
|
36 |
List<Value> parameters = ((Function) function).parameters(); |
|
37 |
String p1 = parameters.get(0).toString(formatter); |
|
38 |
String r = MessageFormat.format("(({0}).STEnvelope())", p1); |
|
39 |
return r; |
|
40 |
} |
|
41 |
|
|
42 |
} |
trunk/org.gvsig.mssqlserver/org.gvsig.mssqlserver.provider/src/main/java/org/gvsig/mssqlserver/dal/expressionbuilderformatter/ST_Contains.java | ||
---|---|---|
1 |
package org.gvsig.mssqlserver.dal.expressionbuilderformatter; |
|
2 |
|
|
3 |
import java.text.MessageFormat; |
|
4 |
import java.util.List; |
|
5 |
import org.apache.commons.lang3.StringUtils; |
|
6 |
|
|
7 |
import org.gvsig.expressionevaluator.ExpressionBuilder; |
|
8 |
import static org.gvsig.expressionevaluator.ExpressionBuilder.FUNCTION_ST_ASEWKB; |
|
9 |
import org.gvsig.expressionevaluator.ExpressionBuilder.Function; |
|
10 |
import org.gvsig.expressionevaluator.ExpressionBuilder.Constant; |
|
11 |
import org.gvsig.expressionevaluator.ExpressionBuilder.Value; |
|
12 |
import org.gvsig.expressionevaluator.Formatter; |
|
13 |
import org.gvsig.fmap.dal.SQLBuilder; |
|
14 |
|
|
15 |
/** |
|
16 |
* |
|
17 |
* @author jjdelcerro |
|
18 |
*/ |
|
19 |
class ST_Contains implements Formatter<Value> { |
|
20 |
|
|
21 |
private final Formatter<Value> formatter; |
|
22 |
private final SQLBuilder builder; |
|
23 |
|
|
24 |
public ST_Contains(SQLBuilder builder, Formatter<Value> formatter) { |
|
25 |
this.builder = builder; |
|
26 |
this.formatter = formatter; |
|
27 |
} |
|
28 |
|
|
29 |
@Override |
|
30 |
public boolean canApply(Value value) { |
|
31 |
if (value instanceof Function) { |
|
32 |
return StringUtils.equalsIgnoreCase(ExpressionBuilder.FUNCTION_ST_CONTAINS, ((Function) value).name()); |
|
33 |
} |
|
34 |
return false; |
|
35 |
} |
|
36 |
|
|
37 |
@Override |
|
38 |
public String format(Value function) { |
|
39 |
List<Value> parameters = ((Function) function).parameters(); |
|
40 |
String p1 = parameters.get(0).toString(formatter); |
|
41 |
String p2 = parameters.get(1).toString(formatter); |
|
42 |
String r = MessageFormat.format("(({0}).STContains({1})=1)", p1, p2); |
|
43 |
return r; |
|
44 |
} |
|
45 |
|
|
46 |
} |
trunk/org.gvsig.mssqlserver/org.gvsig.mssqlserver.provider/src/main/java/org/gvsig/mssqlserver/dal/expressionbuilderformatter/ST_ExtentAggregate.java | ||
---|---|---|
1 |
package org.gvsig.mssqlserver.dal.expressionbuilderformatter; |
|
2 |
|
|
3 |
import java.text.MessageFormat; |
|
4 |
import java.util.List; |
|
5 |
import org.apache.commons.lang3.StringUtils; |
|
6 |
import org.gvsig.expressionevaluator.ExpressionBuilder; |
|
7 |
import static org.gvsig.expressionevaluator.ExpressionBuilder.FUNCTION_ST_ASEWKB; |
|
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 |
class ST_ExtentAggregate implements Formatter<Value> { |
|
18 |
|
|
19 |
private final Formatter<Value> formatter; |
|
20 |
private final SQLBuilder builder; |
|
21 |
|
|
22 |
public ST_ExtentAggregate(SQLBuilder builder, Formatter<Value> formatter) { |
|
23 |
this.builder = builder; |
|
24 |
this.formatter = formatter; |
|
25 |
} |
|
26 |
|
|
27 |
@Override |
|
28 |
public boolean canApply(Value value) { |
|
29 |
if (value instanceof Function) { |
|
30 |
return StringUtils.equalsIgnoreCase(ExpressionBuilder.FUNCTION_ST_EXTENTAGGREGATE, ((Function) value).name()); |
|
31 |
} |
|
32 |
return false; |
|
33 |
} |
|
34 |
|
|
35 |
@Override |
|
36 |
public String format(Value function) { |
|
37 |
List<Value> parameters = ((Function) function).parameters(); |
|
38 |
String p1 = parameters.get(0).toString(formatter); |
|
39 |
String r = MessageFormat.format("geometry::EnvelopeAggregate({0})", p1); |
|
40 |
return r; |
|
41 |
} |
|
42 |
|
|
43 |
} |
trunk/org.gvsig.mssqlserver/org.gvsig.mssqlserver.provider/src/main/java/org/gvsig/mssqlserver/dal/MSSQLServerSQLBuilder.java | ||
---|---|---|
3 | 3 |
import java.text.MessageFormat; |
4 | 4 |
import java.util.ArrayList; |
5 | 5 |
import java.util.List; |
6 |
import org.apache.commons.lang3.StringUtils; |
|
6 | 7 |
import org.cresques.cts.IProjection; |
8 |
import org.gvsig.expressionevaluator.ExpressionBuilder; |
|
9 |
import org.gvsig.expressionevaluator.Formatter; |
|
7 | 10 |
import org.gvsig.fmap.dal.DataTypes; |
8 | 11 |
import org.gvsig.fmap.dal.store.jdbc2.spi.JDBCSQLBuilderBase; |
9 | 12 |
import org.gvsig.fmap.geom.Geometry; |
10 | 13 |
import org.gvsig.fmap.geom.primitive.Envelope; |
14 |
import org.gvsig.mssqlserver.dal.expressionbuilderformatter.MSSQLServerFormatter; |
|
11 | 15 |
|
12 | 16 |
public class MSSQLServerSQLBuilder extends JDBCSQLBuilderBase { |
13 |
|
|
14 |
public interface MSSQLServerSQLConfig extends SQLConfig { |
|
15 |
public static final String ST_GeomFromTextEx = "ST_GeomFromTextEx"; |
|
16 |
public static final String ST_GeomFromWKBEx = "ST_GeomFromWKBEx"; |
|
17 |
public static final String ST_GeomFromEWKBEx = "ST_GeomFromEWKBEx"; |
|
18 |
public static final String ST_ExtentAggregateEx = "ST_ExtentAggregateEx"; |
|
19 |
public static final String ST_UnionAggregateEx = "ST_UnionAggregateEx"; |
|
20 |
} |
|
17 |
|
|
18 |
protected Formatter formatter = null; |
|
19 |
public static final String FORMAT_ST_GEOMFROMEWKB= "geometry::STGeomFromWKB({0}, {1})"; |
|
20 |
public static final String FORMAT_ST_GEOMFROMWKB= "geometry::STGeomFromWKB({0}, {1})"; |
|
21 |
public static final String FORMAT_ST_GEOMFROMTEXT= "geometry::STGeomFromText({0}, {1})"; |
|
22 |
|
|
23 |
// public interface MSSQLServerSQLConfig extends SQLConfig { |
|
24 |
// public static final String ST_GeomFromTextEx = "ST_GeomFromTextEx"; |
|
25 |
// public static final String ST_GeomFromWKBEx = "ST_GeomFromWKBEx"; |
|
26 |
// public static final String ST_GeomFromEWKBEx = "ST_GeomFromEWKBEx"; |
|
27 |
// public static final String ST_ExtentAggregateEx = "ST_ExtentAggregateEx"; |
|
28 |
// public static final String ST_UnionAggregateEx = "ST_UnionAggregateEx"; |
|
29 |
// } |
|
21 | 30 |
|
22 | 31 |
public MSSQLServerSQLBuilder(MSSQLServerHelper helper) { |
23 | 32 |
super(helper); |
24 | 33 |
|
25 |
config.set(SQLConfig.default_schema, "dbo");
|
|
26 |
config.set(SQLConfig.allowAutomaticValues, true);
|
|
27 |
config.set(SQLConfig.geometry_type_support, helper.getGeometrySupportType());
|
|
28 |
config.set(SQLConfig.has_spatial_functions, helper.hasSpatialFunctions());
|
|
34 |
this.defaultSchema = "dbo";
|
|
35 |
this.allowAutomaticValues = true;
|
|
36 |
this.geometrySupportType = this.helper.getGeometrySupportType();
|
|
37 |
this.hasSpatialFunctions = this.helper.hasSpatialFunctions();
|
|
29 | 38 |
|
30 |
config.remove_functionality(SQLConfig.DELETE_GEOMETRY_COLUMN_FROM_TABLE_schema_table);
|
|
31 |
config.remove_functionality(SQLConfig.DELETE_GEOMETRY_COLUMN_FROM_TABLE_table);
|
|
39 |
STMT_DELETE_GEOMETRY_COLUMN_FROM_TABLE_schema_table = null;
|
|
40 |
STMT_DELETE_GEOMETRY_COLUMN_FROM_TABLE_table = null;
|
|
32 | 41 |
|
33 |
config.set(SQLConfig.UPDATE_TABLE_STATISTICS_table,"UPDATE STATISTICS {0}");
|
|
42 |
this.STMT_UPDATE_TABLE_STATISTICS_table ="UPDATE STATISTICS {0}";
|
|
34 | 43 |
|
35 |
config.set(SQLConfig.type_geometry, "GEOMETRY"); |
|
44 |
this.type_geometry = "GEOMETRY"; |
|
45 |
this.constant_true = "1=1"; // TODO ? |
|
46 |
this.constant_false = "1<>1"; // TODO ? |
|
47 |
|
|
48 |
this.type_boolean = "BIT"; |
|
49 |
this.type_double = "FLOAT"; //float con 53 bits de mantisa = float(54) |
|
50 |
this.type_numeric_p = "NUMERIC({0})"; |
|
51 |
this.type_numeric_ps = "NUMERIC({0},{1})"; |
|
52 |
this.type_bigdecimal = "NUMERIC({0},{1})"; |
|
53 |
this.type_float = "REAL"; //float con 24 bits de mantisa = float(24) |
|
54 |
this.type_int = "INT"; |
|
55 |
this.type_long = "BIGINT"; |
|
56 |
this.type_byte = "TINYINT"; |
|
36 | 57 |
|
37 |
config.set(SQLConfig.type_boolean, "BIT"); |
|
38 |
config.set(SQLConfig.type_double, "FLOAT"); //float con 53 bits de mantisa, float(54) |
|
39 |
config.set(SQLConfig.type_numeric_p, "NUMERIC({0})"); |
|
40 |
config.set(SQLConfig.type_numeric_ps, "NUMERIC({0},{1})"); |
|
41 |
config.set(SQLConfig.type_bigdecimal, "NUMERIC({0},{1})"); |
|
42 |
config.set(SQLConfig.type_float, "REAL"); //float con 24 bits de mantisa, float(24) |
|
43 |
config.set(SQLConfig.type_int, "INT"); |
|
44 |
config.set(SQLConfig.type_long, "BIGINT"); |
|
45 |
config.set(SQLConfig.type_byte, "TINYINT"); |
|
46 |
|
|
47 |
config.set(SQLConfig.type_date, "DATE"); |
|
48 |
config.set(SQLConfig.type_time, "TIME"); |
|
58 |
this.type_date = "DATE"; |
|
59 |
this.type_time = "TIME"; |
|
49 | 60 |
|
50 |
config.set(SQLConfig.type_char, "CHAR(1)");
|
|
51 |
config.set(SQLConfig.type_string, "TEXT");
|
|
52 |
config.set(SQLConfig.type_string_p, "VARCHAR({0})");
|
|
61 |
this.type_char = "CHAR(1)";
|
|
62 |
this.type_string = "TEXT";
|
|
63 |
this.type_string_p = "VARCHAR({0})";
|
|
53 | 64 |
|
54 |
config.set(SQLConfig.type_version, "VARCHAR(30)");
|
|
55 |
config.set(SQLConfig.type_URI, "TEXT");
|
|
56 |
config.set(SQLConfig.type_URL, "TEXT");
|
|
57 |
config.set(SQLConfig.type_FILE, "TEXT");
|
|
58 |
config.set(SQLConfig.type_FOLDER, "TEXT");
|
|
65 |
this.type_version = "VARCHAR(30)";
|
|
66 |
this.type_URI = "TEXT";
|
|
67 |
this.type_URL = "TEXT";
|
|
68 |
this.type_FILE = "TEXT";
|
|
69 |
this.type_FOLDER = "TEXT";
|
|
59 | 70 |
|
60 |
config.set(SQLConfig.type_bytearray, "VARBINARY");
|
|
71 |
this.type_bytearray = "VARBINARY";
|
|
61 | 72 |
|
62 |
config.set(SQLConfig.type_timestamp, "TIMESTAMP");
|
|
73 |
this.type_timestamp = "TIMESTAMP";
|
|
63 | 74 |
|
64 |
config.set(SQLConfig.ST_SRID, "(({0}).STSrid)"); |
|
65 |
config.set(SQLConfig.ST_AsText, "({0}).STAsText()"); |
|
66 |
config.set(SQLConfig.ST_AsBinary, "({0}).STAsBinary()"); |
|
67 |
config.set(SQLConfig.ST_AsEWKB, "({0}).STAsBinary()"); |
|
68 |
config.set(SQLConfig.ST_ExtentAggregate, "geometry::EnvelopeAggregate({0})"); |
|
69 |
config.set(SQLConfig.ST_UnionAggregate, "geometry::UnionAggregate({0})"); |
|
70 |
config.set(SQLConfig.ST_Contains, "(({0}).STContains({1})=1)"); |
|
71 |
config.set(SQLConfig.ST_Crosses, "(({0}).STCrosses({1})=1)"); |
|
72 |
config.set(SQLConfig.ST_Disjoint, "(({0}).STDisjoint({1})=1)"); |
|
73 |
config.set(SQLConfig.ST_Equals, "(({0}).STEquals({1})=1)"); |
|
74 |
config.set(SQLConfig.ST_IsClosed, "(({0}).STIsClosed()=1)"); |
|
75 |
config.set(SQLConfig.ST_Overlaps, "(({0}).STOverlaps({1})=1)"); |
|
76 |
config.set(SQLConfig.ST_Touches, "(({0}).STTouches({1})=1)"); |
|
77 |
config.set(SQLConfig.ST_Within, "(({0}).STWithin ({1})=1)"); |
|
78 |
config.set(SQLConfig.ST_Envelope, "({0}).STEnvelope()"); |
|
79 |
config.set(SQLConfig.ST_Intersects, "(({0}).STIntersects({1})=1)"); |
|
80 |
config.set(SQLConfig.ST_GeomFromText, "geometry::STGeomFromText({0}, {1})"); |
|
81 |
config.set(SQLConfig.ST_GeomFromWKB, "geometry::STGeomFromWKB({0}, {1})"); |
|
82 |
config.set(SQLConfig.ST_GeomFromEWKB, "geometry::STGeomFromWKB({0}, {1})"); |
|
83 |
config.set(SQLConfig.ST_Simplify, "({0}).Reduce({1})"); |
|
84 |
config.set(SQLConfig.lcase, "LOWER({0})"); |
|
85 |
config.set(SQLConfig.ucase, "UPPER({0})"); |
|
86 |
config.set(SQLConfig.operator_ILIKE, "LOWER({0}) LIKE LOWER({1})"); |
|
87 |
config.set(SQLConfig.notIsNull,"( ({0}) IS NOT NULL )" ); |
|
75 |
// DID this.ST_SRID, "(({0}).STSrid)"); |
|
76 |
// DID this.ST_AsText, "({0}).STAsText()"); |
|
77 |
// DID this.ST_AsBinary, "({0}).STAsBinary()"); |
|
78 |
// this.ST_AsEWKB, "({0}).STAsBinary()"); |
|
79 |
// DID this.ST_ExtentAggregate, "geometry::EnvelopeAggregate({0})"); |
|
80 |
// DID this.ST_UnionAggregate, "geometry::UnionAggregate({0})"); |
|
81 |
// DID this.ST_Contains, "(({0}).STContains({1})=1)"); |
|
82 |
// DID this.ST_Crosses, "(({0}).STCrosses({1})=1)"); |
|
83 |
// DID this.ST_Disjoint, "(({0}).STDisjoint({1})=1)"); |
|
84 |
// DID this.ST_Equals, "(({0}).STEquals({1})=1)"); |
|
85 |
// DID this.ST_IsClosed, "(({0}).STIsClosed()=1)"); |
|
86 |
// DID this.ST_Overlaps, "(({0}).STOverlaps({1})=1)"); |
|
87 |
// DID this.ST_Touches, "(({0}).STTouches({1})=1)"); |
|
88 |
// DID this.ST_Within, "(({0}).STWithin ({1})=1)"); |
|
89 |
// DID this.ST_Envelope, "({0}).STEnvelope()"); |
|
90 |
// DID this.ST_Intersects, "(({0}).STIntersects({1})=1)"); |
|
91 |
// DID this.ST_GeomFromText, "geometry::STGeomFromText({0}, {1})"); |
|
92 |
// DID this.ST_GeomFromWKB, "geometry::STGeomFromWKB({0}, {1})"); |
|
93 |
// DID this.ST_GeomFromEWKB, "geometry::STGeomFromWKB({0}, {1})"); |
|
94 |
// this.ST_Simplify, "({0}).Reduce({1})"); |
|
95 |
// this.lcase, "LOWER({0})"); |
|
96 |
// this.ucase, "UPPER({0})"); |
|
97 |
// this.operator_ILIKE, "LOWER({0}) LIKE LOWER({1})"); |
|
98 |
// this.notIsNull,"( ({0}) IS NOT NULL )" ); |
|
99 |
// |
|
100 |
// config.set(MSSQLServerSQLConfig.ST_ExtentAggregateEx, "{1}::EnvelopeAggregate({0})"); |
|
101 |
// config.set(MSSQLServerSQLConfig.ST_UnionAggregateEx, "{1}::UnionAggregate({0})"); |
|
102 |
// config.set(MSSQLServerSQLConfig.ST_GeomFromTextEx, "{2}::STGeomFromText({0}, {1})"); |
|
103 |
// config.set(MSSQLServerSQLConfig.ST_GeomFromWKBEx, "{2}::STGeomFromWKB({0}, {1})"); |
|
104 |
// config.set(MSSQLServerSQLConfig.ST_GeomFromEWKBEx, "{2}::STGeomFromWKB({0}, {1})"); |
|
88 | 105 |
|
89 |
config.set(MSSQLServerSQLConfig.ST_ExtentAggregateEx, "{1}::EnvelopeAggregate({0})"); |
|
90 |
config.set(MSSQLServerSQLConfig.ST_UnionAggregateEx, "{1}::UnionAggregate({0})"); |
|
91 |
config.set(MSSQLServerSQLConfig.ST_GeomFromTextEx, "{2}::STGeomFromText({0}, {1})"); |
|
92 |
config.set(MSSQLServerSQLConfig.ST_GeomFromWKBEx, "{2}::STGeomFromWKB({0}, {1})"); |
|
93 |
config.set(MSSQLServerSQLConfig.ST_GeomFromEWKBEx, "{2}::STGeomFromWKB({0}, {1})"); |
|
94 |
|
|
95 | 106 |
} |
96 | 107 |
|
97 | 108 |
@Override |
98 |
public MSSQLServerSQLConfig getConfig() { |
|
99 |
return (MSSQLServerSQLConfig) super.config; |
|
100 |
} |
|
101 |
|
|
102 |
@Override |
|
103 | 109 |
public MSSQLServerHelper getHelper() { |
104 | 110 |
return (MSSQLServerHelper) helper; |
105 | 111 |
} |
112 |
|
|
113 |
@Override |
|
114 |
protected Formatter formatter() { |
|
115 |
if( this.formatter==null ) { |
|
116 |
this.formatter = new MSSQLServerFormatter(this); |
|
117 |
} |
|
118 |
return this.formatter; |
|
119 |
} |
|
120 |
|
|
121 |
protected class MSSQLServerDropTableBuilder extends DropTableBuilderBase { |
|
106 | 122 |
|
123 |
@Override |
|
124 |
public List<String> toStrings(Formatter formatter) { |
|
125 |
List<String> sqls = new ArrayList<>(); |
|
126 |
|
|
127 |
sqls.add( |
|
128 |
MessageFormat.format( |
|
129 |
STMT_DROP_TABLE_table, |
|
130 |
this.table.toString(formatter) |
|
131 |
) |
|
132 |
); |
|
133 |
return sqls; |
|
134 |
} |
|
135 |
} |
|
136 |
|
|
107 | 137 |
public class MSSQLServerCreateIndexBuilder extends CreateIndexBuilderBase { |
108 | 138 |
|
109 | 139 |
private Envelope boundingBox; |
... | ... | |
139 | 169 |
StringBuilder builder = new StringBuilder(); |
140 | 170 |
if( this.isSpatial ) { |
141 | 171 |
builder.append("CREATE SPATIAL INDEX "); |
142 |
builder.append(identifier(this.indexName)); |
|
172 |
builder.append(as_identifier(this.indexName));
|
|
143 | 173 |
builder.append(" ON "); |
144 | 174 |
builder.append(this.table.toString()); |
145 | 175 |
builder.append(" ( "); |
... | ... | |
177 | 207 |
// if( this.ifNotExist ) { |
178 | 208 |
// builder.append("IF NOT EXISTS "); |
179 | 209 |
// } |
180 |
builder.append(identifier(this.indexName)); |
|
210 |
builder.append(as_identifier(this.indexName));
|
|
181 | 211 |
builder.append(" ON "); |
182 | 212 |
builder.append(this.table.toString()); |
183 | 213 |
builder.append(" ( "); |
... | ... | |
199 | 229 |
|
200 | 230 |
} |
201 | 231 |
|
202 |
public class MSSQLServerParameter extends ParameterBase { |
|
232 |
// public class MSSQLServerParameter extends ParameterBase { |
|
233 |
// |
|
234 |
// public MSSQLServerParameter() { |
|
235 |
// super(); |
|
236 |
// } |
|
237 |
// |
|
238 |
// @Override |
Also available in: Unified diff