Revision 45691

View differences:

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
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