Revision 43388 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
H2SpatialSQLBuilder.java | ||
---|---|---|
48 | 48 |
|
49 | 49 |
config.set(SQLConfig.ST_GeomFromEWKB, "GeomFromWKB({0}, {1})"); |
50 | 50 |
config.set(SQLConfig.ST_AsEWKB, "AsWKB(({0}))"); |
51 |
config.set(SQLConfig.ST_Intersects, "( (({0}) && ({1})) AND ST_Intersects(({0}),({1}) ))"); |
|
51 | 52 |
|
52 | 53 |
config.set(SQLConfig.lcase, "LOWER({0})"); |
53 | 54 |
config.set(SQLConfig.ucase, "UPPER({0})"); |
... | ... | |
79 | 80 |
config.set(SQLConfig.type_FOLDER, "VARCHAR"); |
80 | 81 |
} |
81 | 82 |
|
82 |
public class SpatiaLiteTableNameBuilderBase extends TableNameBuilderBase {
|
|
83 |
public class H2SpatialTableNameBuilderBase extends TableNameBuilderBase {
|
|
83 | 84 |
|
84 | 85 |
@Override |
85 | 86 |
public boolean has_schema() { |
... | ... | |
93 | 94 |
|
94 | 95 |
} |
95 | 96 |
|
96 |
protected class SpatiaLiteCreateTableBuilder extends CreateTableBuilderBase {
|
|
97 |
protected class H2SpatialCreateTableBuilder extends CreateTableBuilderBase {
|
|
97 | 98 |
|
98 | 99 |
@Override |
99 | 100 |
public List<String> toStrings() { |
... | ... | |
134 | 135 |
} |
135 | 136 |
} else { |
136 | 137 |
if( column.getType() == DataTypes.DATE ) { |
137 |
builder.append(" DEFAULT ( date('"); |
|
138 |
builder.append(column.getDefaultValue().toString()); |
|
139 |
builder.append("') )"); |
|
138 |
builder.append(" DEFAULT ( TIMESTAMP '"); |
|
139 |
Date d = (Date) column.getDefaultValue(); |
|
140 |
builder.append(MessageFormat.format( "{0,date,yyyy-MM-dd HH:mm:ss.S}",d)); |
|
141 |
builder.append("' )"); |
|
140 | 142 |
} else { |
141 | 143 |
builder.append(" DEFAULT '"); |
142 | 144 |
builder.append(column.getDefaultValue().toString()); |
... | ... | |
178 | 180 |
} |
179 | 181 |
} |
180 | 182 |
|
181 |
public class SpatiaLiteSelectBuilderBase extends SelectBuilderBase {
|
|
183 |
public class H2SpatialSelectBuilderBase extends SelectBuilderBase {
|
|
182 | 184 |
|
183 | 185 |
protected boolean isValid(StringBuilder message) { |
184 | 186 |
if( message == null ) { |
... | ... | |
197 | 199 |
|
198 | 200 |
@Override |
199 | 201 |
public String toString() { |
200 |
// SpatiaLite requiere que si se especifica OFFSET deba especificarse |
|
201 |
// LIMIT obligatoriamente. Se le puede poner un LIMIT -1 cuando |
|
202 |
// queramos un OFFSET sin especificar un LIMIT. |
|
203 | 202 |
StringBuilder builder = new StringBuilder(); |
204 | 203 |
if( !isValid(builder) ) { |
205 | 204 |
throw new IllegalStateException(builder.toString()); |
... | ... | |
261 | 260 |
|
262 | 261 |
@Override |
263 | 262 |
public String bytearray(byte[] data) { |
264 |
// SpatiaLite usa un formato diferencte para especificar un array de
|
|
263 |
// H2Spatial usa un formato diferencte para especificar un array de
|
|
265 | 264 |
// bytes. En lugar de 0x... usa x'...' . |
266 | 265 |
StringBuilder builder = new StringBuilder(); |
267 | 266 |
builder.append("x'"); |
... | ... | |
343 | 342 |
|
344 | 343 |
@Override |
345 | 344 |
protected TableNameBuilder createTableNameBuilder() { |
346 |
return new SpatiaLiteTableNameBuilderBase();
|
|
345 |
return new H2SpatialTableNameBuilderBase();
|
|
347 | 346 |
} |
348 | 347 |
|
349 | 348 |
@Override |
350 | 349 |
protected CreateTableBuilder createCreateTableBuilder() { |
351 |
return new SpatiaLiteCreateTableBuilder();
|
|
350 |
return new H2SpatialCreateTableBuilder();
|
|
352 | 351 |
} |
353 | 352 |
|
354 | 353 |
@Override |
355 | 354 |
protected SelectBuilder createSelectBuilder() { |
356 |
return new SpatiaLiteSelectBuilderBase();
|
|
355 |
return new H2SpatialSelectBuilderBase();
|
|
357 | 356 |
} |
358 | 357 |
|
359 | 358 |
} |
Also available in: Unified diff