Revision 45691 trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.h2spatial/org.gvsig.h2spatial.h2gis132/org.gvsig.h2spatial.h2gis132.provider/src/main/java/org/gvsig/fmap/dal/store/h2/H2SpatialSQLBuilder.java
H2SpatialSQLBuilder.java | ||
---|---|---|
189 | 189 |
sqls.add(builder.toString()); |
190 | 190 |
|
191 | 191 |
if( column.isGeometry() ) { |
192 |
String constraint_name = "constraint_" + this.table().getName() + "_" + column.getName()+"_geom";
|
|
192 |
String constraint_name = "constraint_" + this.table().getName() + "_" + column.getName() + "_geom";
|
|
193 | 193 |
String sql; |
194 |
if( column.getGeometrySRSId()==null ) { |
|
195 |
sql = MessageFormat.format( |
|
196 |
"ALTER TABLE \"{0}\".\"{1}\" ADD CONSTRAINT IF NOT EXISTS \"{2}\" CHECK NVL2(\"{3}\", ST_GeometryTypeCode(\"{3}\") = {4,number,###} AND ST_CoordDim(\"{3}\") = {5,number,###}, TRUE)", |
|
197 |
this.table().getSchema(), |
|
198 |
this.table().getName(), |
|
199 |
constraint_name, |
|
200 |
column.getName(), |
|
201 |
sqlgeometrytype(column.getGeometryType(),column.getGeometrySubtype()), |
|
202 |
sqlgeometrynumdimension(column.getGeometryType(),column.getGeometrySubtype()), |
|
203 |
column.getGeometrySRSId() |
|
204 |
); |
|
194 |
if (column.getGeometrySRSId() == null) { |
|
195 |
if ((int) sqlgeometrytype(column.getGeometryType(), column.getGeometrySubtype()) == 0) { |
|
196 |
sql = MessageFormat.format( |
|
197 |
"ALTER TABLE \"{0}\".\"{1}\" ADD CONSTRAINT IF NOT EXISTS \"{2}\" CHECK NVL2(\"{3}\", ST_CoordDim(\"{3}\") = {4,number,###}, TRUE)", |
|
198 |
this.table().getSchema(), |
|
199 |
this.table().getName(), |
|
200 |
constraint_name, |
|
201 |
column.getName(), |
|
202 |
(int)sqlgeometrynumdimension(column.getGeometryType(), column.getGeometrySubtype()) |
|
203 |
); |
|
204 |
} else { |
|
205 |
sql = MessageFormat.format( |
|
206 |
"ALTER TABLE \"{0}\".\"{1}\" ADD CONSTRAINT IF NOT EXISTS \"{2}\" CHECK NVL2(\"{3}\", ST_GeometryTypeCode(\"{3}\") = {4,number,###} AND ST_CoordDim(\"{3}\") = {5,number,###}, TRUE)", |
|
207 |
this.table().getSchema(), |
|
208 |
this.table().getName(), |
|
209 |
constraint_name, |
|
210 |
column.getName(), |
|
211 |
(int)sqlgeometrytype(column.getGeometryType(), column.getGeometrySubtype()), |
|
212 |
(int)sqlgeometrynumdimension(column.getGeometryType(), column.getGeometrySubtype()) |
|
213 |
); |
|
214 |
} |
|
205 | 215 |
} else { |
206 |
sql = MessageFormat.format( |
|
207 |
"ALTER TABLE \"{0}\".\"{1}\" ADD CONSTRAINT IF NOT EXISTS \"{2}\" CHECK NVL2(\"{3}\", ST_GeometryTypeCode(\"{3}\") = {4,number,###} AND ST_CoordDim(\"{3}\") = {5,number,###} AND ST_SRID(\"{3}\") = {6,number,#####}, TRUE)", |
|
208 |
this.table().getSchema(), |
|
209 |
this.table().getName(), |
|
210 |
constraint_name, |
|
211 |
column.getName(), |
|
212 |
sqlgeometrytype(column.getGeometryType(),column.getGeometrySubtype()), |
|
213 |
sqlgeometrynumdimension(column.getGeometryType(),column.getGeometrySubtype()), |
|
214 |
column.getGeometrySRSId() |
|
215 |
); |
|
216 |
if ((int) sqlgeometrytype(column.getGeometryType(), column.getGeometrySubtype()) == 0) { |
|
217 |
sql = MessageFormat.format( |
|
218 |
"ALTER TABLE \"{0}\".\"{1}\" ADD CONSTRAINT IF NOT EXISTS \"{2}\" CHECK NVL2(\"{3}\", ST_CoordDim(\"{3}\") = {4,number,###} AND ST_SRID(\"{3}\") = {5,number,#####}, TRUE)", |
|
219 |
this.table().getSchema(), |
|
220 |
this.table().getName(), |
|
221 |
constraint_name, |
|
222 |
column.getName(), |
|
223 |
(int)sqlgeometrynumdimension(column.getGeometryType(), column.getGeometrySubtype()), |
|
224 |
(int)column.getGeometrySRSId() |
|
225 |
); |
|
226 |
} else { |
|
227 |
sql = MessageFormat.format( |
|
228 |
"ALTER TABLE \"{0}\".\"{1}\" ADD CONSTRAINT IF NOT EXISTS \"{2}\" CHECK NVL2(\"{3}\", ST_GeometryTypeCode(\"{3}\") = {4,number,###} AND ST_CoordDim(\"{3}\") = {5,number,###} AND ST_SRID(\"{3}\") = {6,number,#####}, TRUE)", |
|
229 |
this.table().getSchema(), |
|
230 |
this.table().getName(), |
|
231 |
constraint_name, |
|
232 |
column.getName(), |
|
233 |
(int)sqlgeometrytype(column.getGeometryType(), column.getGeometrySubtype()), |
|
234 |
(int)sqlgeometrynumdimension(column.getGeometryType(), column.getGeometrySubtype()), |
|
235 |
(int)column.getGeometrySRSId() |
|
236 |
); |
|
237 |
} |
|
216 | 238 |
} |
217 | 239 |
sqls.add(sql); |
218 | 240 |
} |
... | ... | |
312 | 334 |
// https://github.com/orbisgis/h2gis/wiki/1.-Spatial-data#geometry-columns-view |
313 | 335 |
// https://github.com/orbisgis/h2gis/blob/master/h2gis-functions/src/main/java/org/h2gis/functions/spatial/type/GeometryTypeFromConstraint.java |
314 | 336 |
// |
315 |
if( column.getGeometrySRSId()==null ) { |
|
316 |
builder.append( |
|
317 |
MessageFormat.format( |
|
318 |
" CHECK NVL2(\"{0}\", ST_GeometryTypeCode(\"{0}\") = {1} AND ST_CoordDim(\"{0}\") = {2}, TRUE)", |
|
319 |
column.getName(), |
|
320 |
sqlgeometrytype(column.getGeometryType(),column.getGeometrySubtype()), |
|
321 |
sqlgeometrynumdimension(column.getGeometryType(),column.getGeometrySubtype()) ) |
|
322 |
); |
|
337 |
if (column.getGeometrySRSId() == null) { |
|
338 |
if ((int) sqlgeometrytype(column.getGeometryType(), column.getGeometrySubtype()) == 0) { |
|
339 |
builder.append( |
|
340 |
MessageFormat.format( |
|
341 |
" CHECK NVL2(\"{0}\", ST_CoordDim(\"{0}\") = {1}, TRUE)", |
|
342 |
column.getName(), |
|
343 |
sqlgeometrynumdimension(column.getGeometryType(), column.getGeometrySubtype())) |
|
344 |
); |
|
345 |
} else { |
|
346 |
builder.append( |
|
347 |
MessageFormat.format( |
|
348 |
" CHECK NVL2(\"{0}\", ST_GeometryTypeCode(\"{0}\") = {1} AND ST_CoordDim(\"{0}\") = {2}, TRUE)", |
|
349 |
column.getName(), |
|
350 |
sqlgeometrytype(column.getGeometryType(), column.getGeometrySubtype()), |
|
351 |
sqlgeometrynumdimension(column.getGeometryType(), column.getGeometrySubtype())) |
|
352 |
); |
|
353 |
} |
|
323 | 354 |
} else { |
324 |
builder.append( |
|
325 |
MessageFormat.format( |
|
326 |
" CHECK NVL2(\"{0}\", ST_GeometryTypeCode(\"{0}\") = {1,number,###} AND ST_CoordDim(\"{0}\") = {2,number,###} AND ST_SRID(\"{0}\") = {3,number,#####}, TRUE)", |
|
327 |
column.getName(), |
|
328 |
sqlgeometrytype(column.getGeometryType(),column.getGeometrySubtype()), |
|
329 |
sqlgeometrynumdimension(column.getGeometryType(),column.getGeometrySubtype()), |
|
330 |
column.getGeometrySRSId() |
|
331 |
) |
|
332 |
); |
|
355 |
if ((int) sqlgeometrytype(column.getGeometryType(), column.getGeometrySubtype()) == 0) { |
|
356 |
builder.append( |
|
357 |
MessageFormat.format( |
|
358 |
" CHECK NVL2(\"{0}\", ST_CoordDim(\"{0}\") = {1,number,###} AND ST_SRID(\"{0}\") = {2,number,#####}, TRUE)", |
|
359 |
column.getName(), |
|
360 |
(int) sqlgeometrynumdimension(column.getGeometryType(), column.getGeometrySubtype()), |
|
361 |
(int) column.getGeometrySRSId() |
|
362 |
) |
|
363 |
); |
|
364 |
|
|
365 |
} else { |
|
366 |
builder.append( |
|
367 |
MessageFormat.format( |
|
368 |
" CHECK NVL2(\"{0}\", ST_GeometryTypeCode(\"{0}\") = {1,number,###} AND ST_CoordDim(\"{0}\") = {2,number,###} AND ST_SRID(\"{0}\") = {3,number,#####}, TRUE)", |
|
369 |
column.getName(), |
|
370 |
(int) sqlgeometrytype(column.getGeometryType(), column.getGeometrySubtype()), |
|
371 |
(int) sqlgeometrynumdimension(column.getGeometryType(), column.getGeometrySubtype()), |
|
372 |
(int) column.getGeometrySRSId() |
|
373 |
) |
|
374 |
); |
|
375 |
} |
|
333 | 376 |
} |
334 | 377 |
} else { |
335 | 378 |
if (column.isPrimaryKey()) { |
Also available in: Unified diff