Revision 262

View differences:

tags/org.gvsig.mssqlserver-1.0.46/org.gvsig.mssqlserver.provider/src/test/java/org/gvsig/fmap/dal/store/jdbc2/SQLBuilderTest.java
1
//package org.gvsig.fmap.dal.store.jdbc2;
2
//
3
//import java.util.ArrayList;
4
//import java.util.List;
5
//import org.apache.commons.lang3.ArrayUtils;
6
//import org.cresques.cts.IProjection;
7
//import org.gvsig.fmap.crs.CRSFactory;
8
//import org.gvsig.expressionevaluator.ExpressionBuilder;
9
//import org.gvsig.expressionevaluator.ExpressionBuilder.Parameter;
10
//import org.gvsig.expressionevaluator.ExpressionBuilder.Variable;
11
//import org.gvsig.fmap.dal.SQLBuilder;
12
//import org.gvsig.fmap.dal.SQLBuilder.Privilege;
13
//import org.gvsig.fmap.dal.feature.spi.SQLBuilderBase;
14
//import org.gvsig.fmap.geom.DataTypes;
15
//import org.gvsig.fmap.geom.Geometry;
16
//import org.gvsig.fmap.geom.GeometryLocator;
17
//import org.gvsig.fmap.geom.GeometryManager;
18
//import org.gvsig.fmap.geom.primitive.Polygon;
19
//import org.gvsig.tools.junit.AbstractLibraryAutoInitTestCase;
20
//
21
//public class SQLBuilderTest extends AbstractLibraryAutoInitTestCase {
22
//    
23
//    @Override
24
//    protected void doSetUp() throws Exception {
25
//
26
//    }
27
////    
28
////    List<String> getVariableNames(ExpressionBuilder builder) {
29
////        List<String> vars = new ArrayList<>();
30
////        for (Variable var : builder.getVariables()) {
31
////            vars.add(var.getName());
32
////        }
33
////        return vars;
34
////    }
35
////    
36
////    List<String> getParameterNames(ExpressionBuilder builder) {
37
////        List<String> params = new ArrayList<>();
38
////        for (Parameter param : builder.getParameters()) {
39
////            String s;
40
////            switch(param.getType()) {
41
////                case Constant:
42
////                    Object value = param.getValue();
43
////                    if( value==null ) {
44
////                        s = "null";
45
////                    } else if( value instanceof String ) {
46
////                        s = "'" + (String)value + "'";
47
////                    } else {
48
////                        s = value.toString();
49
////                    }    
50
////                    break;
51
////                case Geometry:
52
////                case Variable:
53
////                default:
54
////                    s = "\"" + param.getName() + "\"";
55
////            }
56
////            params.add(s);
57
////        }
58
////        return params;
59
//    }
60
//    
61
// 
62
//    public void testCalulateEnvelope() throws Exception {
63
//        GeometryManager geometryManager = GeometryLocator.getGeometryManager();
64
//        IProjection proj = CRSFactory.getCRS("EPSG:4326");
65
//        
66
//        Polygon limit = geometryManager.createPolygon(Geometry.SUBTYPES.GEOM2D);
67
//        limit.addVertex(0, 0);
68
//        limit.addVertex(0, 100);
69
//        limit.addVertex(100, 100);
70
//        limit.addVertex(100, 0);
71
//        limit.addVertex(0, 0);
72
//        
73
//        SQLBuilder builder = new SQLBuilderBase();
74
//        
75
//        builder.select().column().value(
76
//            builder.getAsGeometry(
77
//              builder.ST_ExtentAggregate(
78
//                builder.column("the_geom")
79
//              )
80
//            )
81
//        ).as("envelope");
82
//        builder.select().from().table().database("master").schema("dbo").name("test1");
83
//        builder.select().where().set(
84
//            builder.ST_Intersects(
85
//                builder.ST_Envelope(
86
//                    builder.column("the_geom")
87
//                ),
88
//                builder.geometry(limit, proj)
89
//            )
90
//        );
91
//        builder.select().where().and(
92
//                builder.custom("x = 27")
93
//        );
94
//        
95
//        // SELECT ST_AsBinary(ST_Extent("the_geom")) AS "envelope" FROM "master"."dbo"."test1" WHERE ST_Intersects((ST_Envelope("the_geom")), (ST_GeomFromText('POLYGON ((0 0, 0 100, 100 100, 100 0, 0 0))', (4326)))) AND x = 27
96
//        
97
//        System.out.println("# Test:: testCalulateEnvelope");
98
//        System.out.println("# SQL:: " + builder.toString());
99
//        System.out.println("# Variables:: " + ArrayUtils.toString(getVariableNames(builder)));
100
//        System.out.println("# Parametros:: " + ArrayUtils.toString(getParameterNames(builder)));
101
//        assertEquals(
102
//                "SELECT ST_AsBinary(ST_Extent(\"the_geom\")) AS \"envelope\" FROM \"master\".\"dbo\".\"test1\" WHERE ST_Intersects((ST_Envelope(\"the_geom\")), (ST_GeomFromText('POLYGON ((0 0, 0 100, 100 100, 100 0, 0 0))', (4326)))) AND x = 27",
103
//                builder.toString()
104
//        );
105
//        assertEquals(
106
//                "[the_geom]",
107
//                ArrayUtils.toString(getVariableNames(builder))
108
//        );
109
//        assertEquals(
110
//                "[]",
111
//                ArrayUtils.toString(getParameterNames(builder))
112
//        );
113
//    }
114
//
115
//    public void testCount() throws Exception {
116
//        SQLBuilder builder = new SQLBuilderBase();
117
//        
118
//        builder.select().column().value(builder.count().all());
119
//        builder.select().from().table().database("master").schema("dbo").name("test1");
120
//        builder.select().from().subquery(null);
121
//        builder.select().where().set( builder.custom("pp = 200"));
122
//
123
//        System.out.println("# Test:: testCount");
124
//        System.out.println("# SQL:: " + builder.toString());
125
//        System.out.println("# Variables:: " + ArrayUtils.toString(getVariableNames(builder)));
126
//        System.out.println("# Parametros:: " + ArrayUtils.toString(getParameterNames(builder)));
127
//
128
//        //# Test:: testCount
129
//        //# SQL:: SELECT COUNT(*) FROM "master"."dbo"."test1" WHERE pp = 200
130
//        //# Variables:: []
131
//        //# Parametros:: []
132
//
133
//        assertEquals(
134
//                "SELECT COUNT(*) FROM \"master\".\"dbo\".\"test1\" WHERE pp = 200",
135
//                builder.toString()
136
//        );
137
//        assertEquals(
138
//                "[]",
139
//                ArrayUtils.toString(getVariableNames(builder))
140
//        );
141
//        assertEquals(
142
//                "[]",
143
//                ArrayUtils.toString(getParameterNames(builder))
144
//        );
145
//    }
146
//    
147
//    public void testCreateTable() throws Exception {
148
//        SQLBuilder builder = new SQLBuilderBase();
149
//
150
//        builder.create_table().table().database("master").schema("dbo").name("test1");
151
//        builder.create_table().add_column(
152
//                "name",
153
//                DataTypes.STRING,
154
//                45,
155
//                0,
156
//                false,
157
//                false,
158
//                true,
159
//                false,
160
//                null
161
//        );
162
//        builder.create_table().add_column(
163
//                "id",
164
//                DataTypes.INT,
165
//                0,
166
//                0,
167
//                true,
168
//                false,
169
//                false,
170
//                true,
171
//                0
172
//        );
173
//        builder.create_table().add_column(
174
//                "geom",
175
//                DataTypes.GEOMETRY,
176
//                0,
177
//                0,
178
//                false,
179
//                false,
180
//                true,
181
//                false,
182
//                null
183
//        );
184
//
185
//        
186
//        // CREATE TABLE "master"."dbo"."test1" ("name" VARCHAR(45) DEFAULT NULL NULL, "id" SERIAL DEFAULT '0' NOT NULL PRIMARY KEY, "geom" TEXT DEFAULT NULL NULL )
187
//        System.out.println("# Test:: testCreateTable");
188
//        System.out.println("# SQL:: " + builder.toString());
189
//        System.out.println("# Variables:: " + ArrayUtils.toString(getVariableNames(builder)));
190
//        System.out.println("# Parametros:: " + ArrayUtils.toString(getParameterNames(builder)));
191
//        assertEquals(
192
//                "CREATE TABLE \"master\".\"dbo\".\"test1\" (\"name\" VARCHAR(45) DEFAULT NULL NULL, \"id\" SERIAL DEFAULT '0' NOT NULL PRIMARY KEY, \"geom\" TEXT DEFAULT NULL NULL )",
193
//                builder.toString()
194
//        );
195
//        assertEquals(
196
//                "[]",
197
//                ArrayUtils.toString(getVariableNames(builder))
198
//        );
199
//        assertEquals(
200
//                "[]",
201
//                ArrayUtils.toString(getParameterNames(builder))
202
//        );
203
//    }
204
//
205
//    public void testDropTable() throws Exception {
206
//        SQLBuilder builder = new SQLBuilderBase();
207
//        
208
//        builder.drop_table().table().database("master").schema("dbo").name("test1");
209
//
210
//        // DROP TABLE "master"."dbo"."test1"; DELETE FROM GEOMETRY_COLUMNS WHERE f_table_schema = 'dbo' AND f_table_name = 'test1'
211
//        
212
//        System.out.println("# Test:: testDropTable");
213
//        System.out.println("# SQL:: " + builder.toString());
214
//        System.out.println("# Variables:: " + ArrayUtils.toString(getVariableNames(builder)));
215
//        System.out.println("# Parametros:: " + ArrayUtils.toString(getParameterNames(builder)));
216
//        assertEquals(
217
//                "DROP TABLE \"master\".\"dbo\".\"test1\"; DELETE FROM GEOMETRY_COLUMNS WHERE f_table_schema = 'dbo' AND f_table_name = 'test1'",
218
//                builder.toString()
219
//        );
220
//        assertEquals(
221
//                "[]",
222
//                ArrayUtils.toString(getVariableNames(builder))
223
//        );
224
//        assertEquals(
225
//                "[]",
226
//                ArrayUtils.toString(getParameterNames(builder))
227
//        );
228
//    }
229
//    
230
//    public void testFetchFeatureProviderByReference() throws Exception {
231
//        SQLBuilder builder = new SQLBuilderBase();
232
//        
233
//        String value = "yoyo";
234
//        builder.select().column().name("name");
235
//        builder.select().column().name("id");
236
//        builder.select().column().name("geom").as_geometry();
237
//        builder.select().from().table().database("master").schema("dbo").name("test1");
238
//        builder.select().where().set(
239
//            builder.eq(
240
//                builder.column("name"),
241
//                builder.parameter(value).as_constant()
242
//            )
243
//        );
244
//        builder.select().limit(1);
245
//
246
//        // SELECT "name", "id", ST_AsBinary("geom") FROM "master"."dbo"."test1" WHERE ( ("name") = (?) ) LIMIT 1
247
//
248
//        System.out.println("# Test:: testFetchFeatureProviderByReference");
249
//        System.out.println("# SQL:: " + builder.toString());
250
//        System.out.println("# Variables:: " + ArrayUtils.toString(getVariableNames(builder)));
251
//        System.out.println("# Parametros:: " + ArrayUtils.toString(getParameterNames(builder)));
252
//        assertEquals(
253
//                "SELECT \"name\", \"id\", ST_AsBinary(\"geom\") FROM \"master\".\"dbo\".\"test1\" WHERE ( (\"name\") = (?) ) LIMIT 1",
254
//                builder.toString()
255
//        );
256
//        assertEquals(
257
//                "[geom, id, name]",
258
//                ArrayUtils.toString(getVariableNames(builder))
259
//        );
260
//        assertEquals(
261
//                "['yoyo']",
262
//                ArrayUtils.toString(getParameterNames(builder))
263
//        );
264
//    }
265
//    
266
//    public void testFetchFeatureType() throws Exception {
267
//        SQLBuilder builder = new SQLBuilderBase();
268
//
269
//        builder.select().column().all();
270
//        builder.select().from().table().database("master").schema("dbo").name("test1");
271
//        builder.select().limit(1);
272
//
273
//        System.out.println("# Test:: testFetchFeatureType");
274
//        System.out.println("# SQL:: " + builder.toString());
275
//        System.out.println("# Variables:: " + ArrayUtils.toString(getVariableNames(builder)));
276
//        System.out.println("# Parametros:: " + ArrayUtils.toString(getParameterNames(builder)));
277
//        
278
//        //# Test:: testFetchFeatureType
279
//        //# SQL:: SELECT * FROM [master].[dbo].[test1] LIMMIT 1
280
//        //# Variables:: []
281
//        //# Parametros:: []        
282
//        
283
//        assertEquals(
284
//                "SELECT * FROM \"master\".\"dbo\".\"test1\" LIMIT 1",
285
//                builder.toString()
286
//        );
287
//        assertEquals(
288
//                "[]",
289
//                ArrayUtils.toString(getVariableNames(builder))
290
//        );
291
//        assertEquals(
292
//                "[]",
293
//                ArrayUtils.toString(getParameterNames(builder))
294
//        );
295
//    }
296
//        
297
//    public void testPerformDeletes() throws Exception {
298
//        SQLBuilder builder = new SQLBuilderBase();
299
//
300
//        builder.delete().table().database("master").schema("dbo").name("test1");
301
//        builder.delete().where().and(
302
//            builder.eq( 
303
//                builder.column("id1"),
304
//                builder.parameter("id1").as_variable()
305
//            )
306
//        );
307
//        builder.delete().where().and(
308
//            builder.eq( 
309
//                builder.column("id2"),
310
//                builder.parameter("id2").as_variable()
311
//            )
312
//        );
313
//
314
//        // DELETE FROM "master"."dbo"."test1" WHERE ( ("id1") = (?) ) AND ( ("id2") = (?) )
315
//
316
//        System.out.println("# Test:: testPerformDeletes");
317
//        System.out.println("# SQL:: " + builder.toString());
318
//        System.out.println("# Variables:: " + ArrayUtils.toString(getVariableNames(builder)));
319
//        System.out.println("# Parametros:: " + ArrayUtils.toString(getParameterNames(builder)));
320
//        assertEquals(
321
//                "DELETE FROM \"master\".\"dbo\".\"test1\" WHERE ( (\"id1\") = (?) ) AND ( (\"id2\") = (?) )",
322
//                builder.toString()
323
//        );
324
//        assertEquals(
325
//                "[id1, id2]",
326
//                ArrayUtils.toString(getVariableNames(builder))
327
//        );
328
//        assertEquals(
329
//                "[\"id1\", \"id2\"]",
330
//                ArrayUtils.toString(getParameterNames(builder))
331
//        );
332
//    }
333
//
334
//    public void testPerformInserts1() throws Exception {
335
//        IProjection proj = CRSFactory.getCRS("EPSG:4326");
336
//
337
//        SQLBuilder builder = new SQLBuilderBase();
338
//
339
//        builder.insert().table().database("master").schema("dbo").name("test1");
340
//        builder.insert().column().name("id").with_value(builder.parameter("id"));
341
//        builder.insert().column().name("name").with_value(builder.parameter("name"));
342
//        builder.insert().column().name("geom").with_value(builder.parameter("geom").as_geometry_variable().srs(proj));
343
//        
344
//        // INSERT INTO "master"."dbo"."test1" ( "id", "name", "geom" ) VALUES ( ?, ?, ST_GeomFromText(?, (4326)) )
345
//        
346
//        System.out.println("# Test:: testPerformInserts1");
347
//        System.out.println("# SQL:: " + builder.toString());
348
//        System.out.println("# Variables:: " + ArrayUtils.toString(getVariableNames(builder)));
349
//        System.out.println("# Parametros:: " + ArrayUtils.toString(getParameterNames(builder)));
350
//        assertEquals(
351
//                "INSERT INTO \"master\".\"dbo\".\"test1\" ( \"id\", \"name\", \"geom\" ) VALUES ( ?, ?, ST_GeomFromText(?, (4326)) )",
352
//                builder.toString()
353
//        );
354
//        assertEquals(
355
//                "[geom, id, name]",
356
//                ArrayUtils.toString(getVariableNames(builder))
357
//        );
358
//        assertEquals(
359
//                "[\"id\", \"name\", \"geom\"]",
360
//                ArrayUtils.toString(getParameterNames(builder))
361
//        );
362
//    }
363
//
364
//    public void testPerformInserts2() throws Exception {
365
//        IProjection proj = CRSFactory.getCRS("EPSG:4326");
366
//
367
//        SQLBuilder builder = new SQLBuilderBase();
368
//
369
//        builder.insert().table().database("master").schema("dbo").name("test1");
370
//        builder.insert().column().name("id").with_value(builder.parameter("id"));
371
//        builder.insert().column().name("name").with_value(builder.parameter("name"));
372
//        builder.insert().column().name("geom").with_value(builder.parameter("geom").as_geometry_variable().srs(builder.parameter().value(proj)));
373
//        
374
//        // INSERT INTO "master"."dbo"."test1" ( "id", "name", "geom" ) VALUES ( ?, ?, ST_GeomFromText(?, (?)) )
375
//        
376
//        System.out.println("# Test:: testPerformInserts2");
377
//        System.out.println("# SQL:: " + builder.toString());
378
//        System.out.println("# Variables:: " + ArrayUtils.toString(getVariableNames(builder)));
379
//        System.out.println("# Parametros:: " + ArrayUtils.toString(getParameterNames(builder)));
380
//        assertEquals(
381
//                "INSERT INTO \"master\".\"dbo\".\"test1\" ( \"id\", \"name\", \"geom\" ) VALUES ( ?, ?, ST_GeomFromText(?, (?)) )",
382
//                builder.toString()
383
//        );
384
//        assertEquals(
385
//                "[geom, id, name]",
386
//                ArrayUtils.toString(getVariableNames(builder))
387
//        );
388
//        assertEquals(
389
//                "[\"id\", \"name\", \"geom\", 4326]",
390
//                ArrayUtils.toString(getParameterNames(builder))
391
//        );
392
//    }
393
//
394
//    public void testPerformUpdates() throws Exception {
395
//        IProjection proj = CRSFactory.getCRS("EPSG:4326");
396
//
397
//        SQLBuilder builder = new SQLBuilderBase();
398
//
399
//        builder.update().table().database("master").schema("dbo").name("test1");
400
//        builder.update().where().and(
401
//            builder.eq(
402
//                builder.column("id"), 
403
//                builder.parameter("id").as_variable()
404
//            )
405
//        );
406
//        builder.update().column().name("name").with_value(builder.parameter("name"));
407
//        builder.update().column().name("geom").with_value(
408
//                builder.parameter("geom").as_geometry_variable().srs( builder.parameter().value(proj)) 
409
//        );
410
//
411
//        // UPDATE "master"."dbo"."test1" SET "name" = ?, "geom" = ST_GeomFromText(?, (?)) WHERE ( ("id") = (?) )
412
//
413
//        System.out.println("# Test:: testPerformUpdates");
414
//        System.out.println("# SQL:: " + builder.toString());
415
//        System.out.println("# Variables:: " + ArrayUtils.toString(getVariableNames(builder)));
416
//        System.out.println("# Parametros:: " + ArrayUtils.toString(getParameterNames(builder)));
417
//        assertEquals(
418
//                "UPDATE \"master\".\"dbo\".\"test1\" SET \"name\" = ?, \"geom\" = ST_GeomFromText(?, (?)) WHERE ( (\"id\") = (?) )",
419
//                builder.toString()
420
//        );
421
//        assertEquals(
422
//                "[geom, id, name]",
423
//                ArrayUtils.toString(getVariableNames(builder))
424
//        );
425
//        assertEquals(
426
//                "[\"name\", \"geom\", 4326, \"id\"]",
427
//                ArrayUtils.toString(getParameterNames(builder))
428
//        );
429
//    }
430
//
431
//    public void testGrant1() throws Exception {
432
//
433
//        SQLBuilder builder = new SQLBuilderBase();
434
//
435
//        builder.grant().table().database("master").schema("dbo").name("test1");
436
//        builder.grant().role("prueba").select().insert().update();
437
//        builder.grant().role("gis").all();
438
//                
439
//        
440
//        System.out.println("# Test:: testGrant1");
441
//        System.out.println("# SQL:: " + builder.toString());
442
//        System.out.println("# Variables:: " + ArrayUtils.toString(getVariableNames(builder)));
443
//        System.out.println("# Parametros:: " + ArrayUtils.toString(getParameterNames(builder)));
444
//        assertEquals(
445
//                "",
446
//                builder.toString()
447
//        );
448
//        assertEquals(
449
//                "[]",
450
//                ArrayUtils.toString(getVariableNames(builder))
451
//        );
452
//        assertEquals(
453
//                "[]",
454
//                ArrayUtils.toString(getParameterNames(builder))
455
//        );
456
//    }
457
//
458
//    public void testGrant2() throws Exception {
459
//
460
//        SQLBuilder builder = new SQLBuilderBase();
461
//
462
//        builder.grant().table().database("master").schema("dbo").name("test1");
463
//        builder.grant().role("prueba").privilege(Privilege.SELECT)
464
//                .privilege(Privilege.INSERT)
465
//                .privilege(Privilege.UPDATE);
466
//        builder.grant().role("gis").privilege(Privilege.ALL);
467
//                
468
//        
469
//        System.out.println("# Test:: testGrant2");
470
//        System.out.println("# SQL:: " + builder.toString());
471
//        System.out.println("# Variables:: " + ArrayUtils.toString(getVariableNames(builder)));
472
//        System.out.println("# Parametros:: " + ArrayUtils.toString(getParameterNames(builder)));
473
//        assertEquals(
474
//                "",
475
//                builder.toString()
476
//        );
477
//        assertEquals(
478
//                "[]",
479
//                ArrayUtils.toString(getVariableNames(builder))
480
//        );
481
//        assertEquals(
482
//                "[]",
483
//                ArrayUtils.toString(getParameterNames(builder))
484
//        );
485
//    }
486
//
487
//
488
//}
tags/org.gvsig.mssqlserver-1.0.46/org.gvsig.mssqlserver.provider/src/test/java/org/gvsig/mssqlserver/dal/MSSQLServerSQLBuilderTest.java
1
package org.gvsig.mssqlserver.dal;
2

  
3
import java.util.ArrayList;
4
import java.util.List;
5
import org.apache.commons.lang3.ArrayUtils;
6
import org.cresques.cts.IProjection;
7
import org.gvsig.fmap.crs.CRSFactory;
8
import org.gvsig.fmap.dal.DALLocator;
9
import org.gvsig.expressionevaluator.ExpressionBuilder;
10
import org.gvsig.expressionevaluator.ExpressionBuilder.Parameter;
11
import org.gvsig.expressionevaluator.ExpressionBuilder.Variable;
12
import org.gvsig.fmap.dal.SQLBuilder;
13
import org.gvsig.fmap.dal.spi.DataManagerProviderServices;
14
import org.gvsig.fmap.dal.store.db.DBHelper;
15
import org.gvsig.fmap.geom.DataTypes;
16
import org.gvsig.fmap.geom.Geometry;
17
import org.gvsig.fmap.geom.GeometryLocator;
18
import org.gvsig.fmap.geom.GeometryManager;
19
import org.gvsig.fmap.geom.primitive.Polygon;
20
import static org.gvsig.mssqlserver.dal.MSSQLServerLibrary.NAME;
21
import org.gvsig.tools.junit.AbstractLibraryAutoInitTestCase;
22

  
23
public class MSSQLServerSQLBuilderTest extends AbstractLibraryAutoInitTestCase {
24

  
25
    private MSSQLServerHelper helper;
26
    
27
    @Override
28
    protected void doSetUp() throws Exception {
29
        DataManagerProviderServices dataman = 
30
                (DataManagerProviderServices) DALLocator.getDataManager();
31

  
32
        DBHelper.registerParametersDefinition(
33
                NAME + "StoreParameters",
34
                MSSQLServerStoreParameters.class,
35
                dataman.getResourceAsStream(this, NAME + "Parameters.xml")
36
        );
37
        
38
        MSSQLServerStoreParameters params = new MSSQLServerStoreParameters();
39
        params.setHost("127.0.0.1");
40
        params.setDynValue("InstanceName", "SQLEXPRESS");
41
        params.setDBName("master");
42
        params.setSchema("dbo");
43
        params.setTable("test1");
44
        params.setPort(1433);
45
        params.setUser("sa");
46
        params.setPassword("123");
47
        helper = new MSSQLServerHelper(params);
48
    }
49
    
50
    
51
    public SQLBuilder createSQLBuilder() {
52
        return new MSSQLServerSQLBuilder(helper);
53
    }
54
 
55
    public void testCalulateEnvelope() throws Exception {
56
        GeometryManager geometryManager = GeometryLocator.getGeometryManager();
57
        IProjection proj = CRSFactory.getCRS("EPSG:4326");
58
        
59
        Polygon limit = geometryManager.createPolygon(Geometry.SUBTYPES.GEOM2D);
60
        limit.addVertex(0, 0);
61
        limit.addVertex(0, 100);
62
        limit.addVertex(100, 100);
63
        limit.addVertex(100, 0);
64
        limit.addVertex(0, 0);
65
        
66
        SQLBuilder sqlbuilder = createSQLBuilder();
67
        ExpressionBuilder expbuilder = sqlbuilder.expression();
68
        
69
        sqlbuilder.select().column().value(
70
            expbuilder.as_geometry(
71
              expbuilder.ST_ExtentAggregate(
72
                expbuilder.column("the_geom")
73
              )
74
            )
75
        ).as("envelope");
76
        sqlbuilder.select().from().table().database("master").schema("dbo").name("test1");
77
        sqlbuilder.select().where().set(
78
            expbuilder.ST_Intersects(
79
                expbuilder.ST_Envelope(
80
                    expbuilder.column("the_geom")
81
                ),
82
                expbuilder.geometry(limit, proj)
83
            )
84
        );
85
        sqlbuilder.select().where().and(
86
                expbuilder.custom("x = 27").add( expbuilder.variable("x") )
87
        );
88
        
89
        System.out.println("# Test:: testCalulateEnvelope");
90
        System.out.println("# SQL:: " + sqlbuilder.toString());
91
        System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names()));
92
        System.out.println("# Parametros:: " + ArrayUtils.toString(sqlbuilder.parameters_names()));
93
    
94
        //# Test:: testCalulateEnvelope
95
        //# SQL:: SELECT (geometry::EnvelopeAggregate([the_geom])).STAsBinary() AS [envelope] FROM [master].[dbo].[test1] WHERE (([the_geom]).STEnvelope()).STIntersects(geometry::STGeomFromWKB(0x000000000300000001000000050000000000000000000000000000000000000000000000004059000000000000405900000000000040590000000000004059000000000000000000000000000000000000000000000000000000000000, 4326)) AND x = 27
96
        //# Variables:: [the_geom, x]
97
        //# Parametros:: []    
98
        assertEquals(
99
                "SELECT (geometry::EnvelopeAggregate([the_geom])).STAsBinary() AS [envelope] FROM [master].[dbo].[test1] WHERE (([the_geom]).STEnvelope()).STIntersects(geometry::STGeomFromWKB(0x000000000300000001000000050000000000000000000000000000000000000000000000004059000000000000405900000000000040590000000000004059000000000000000000000000000000000000000000000000000000000000, 4326)) AND x = 27",
100
                sqlbuilder.toString()
101
        );
102
        assertEquals(
103
                "[the_geom, x]",
104
                ArrayUtils.toString(sqlbuilder.variables_names())
105
        );
106
        assertEquals(
107
                "[]",
108
                ArrayUtils.toString(sqlbuilder.parameters_names())
109
        );
110
    }
111

  
112
    public void testCount() throws Exception {
113
        SQLBuilder sqlbuilder = createSQLBuilder();
114
        ExpressionBuilder expbuilder = sqlbuilder.expression();
115
        
116
        sqlbuilder.select().column().value(sqlbuilder.count().all());
117
        sqlbuilder.select().from().table().database("master").schema("dbo").name("test1");
118
        sqlbuilder.select().from().subquery(null);
119
        sqlbuilder.select().where().set( expbuilder.custom("pp = 200").add(expbuilder.variable("pp")));
120

  
121
        System.out.println("# Test:: testCount");
122
        System.out.println("# SQL:: " + sqlbuilder.toString());
123
        System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names()));
124
        System.out.println("# Parametros:: " + ArrayUtils.toString(sqlbuilder.parameters_names()));
125

  
126
        //# Test:: testCount
127
        //# SQL:: SELECT COUNT(*) FROM [master].[dbo].[test1] WHERE pp = 200
128
        //# Variables:: []
129
        //# Parametros:: []
130
    
131
        assertEquals(
132
                "SELECT COUNT(*) FROM [master].[dbo].[test1] WHERE pp = 200",
133
                sqlbuilder.toString()
134
        );
135
        assertEquals(
136
                "[pp]",
137
                ArrayUtils.toString(sqlbuilder.variables_names())
138
        );
139
        assertEquals(
140
                "[]",
141
                ArrayUtils.toString(sqlbuilder.parameters_names())
142
        );
143
    }
144
    
145
    public void testUpdateStatistics() throws Exception {
146
        SQLBuilder sqlbuilder = createSQLBuilder();
147
        ExpressionBuilder expbuilder = sqlbuilder.expression();
148
        
149
        sqlbuilder.update_table_statistics().table().database("master").schema("dbo").name("test1");
150

  
151
        System.out.println("# Test:: testUpdateStatistics");
152
        System.out.println("# SQL:: " + sqlbuilder.toString());
153
        System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names()));
154
        System.out.println("# Parametros:: " + ArrayUtils.toString(sqlbuilder.parameters_names()));
155

  
156
        //# Test:: testUpdateStatistics
157
        //# SQL:: UPDATE STATISTICS [master].[dbo].[test1]
158
        //# Variables:: []
159
        //# Parametros:: []
160
    
161
        assertEquals(
162
                "UPDATE STATISTICS [master].[dbo].[test1]",
163
                sqlbuilder.toString()
164
        );
165
        assertEquals(
166
                "[]",
167
                ArrayUtils.toString(sqlbuilder.variables_names())
168
        );
169
        assertEquals(
170
                "[]",
171
                ArrayUtils.toString(sqlbuilder.parameters_names())
172
        );
173
    }
174
    
175
    public void testCreateTable() throws Exception {
176
        SQLBuilder sqlbuilder = createSQLBuilder();
177
        ExpressionBuilder expbuilder = sqlbuilder.expression();
178
        
179
        sqlbuilder.create_table().table().database("master").schema("dbo").name("test1");
180
        sqlbuilder.create_table().add_column(
181
                "name",
182
                DataTypes.STRING,
183
                45,
184
                0,
185
                false,
186
                false,
187
                true,
188
                false,
189
                null
190
        );
191
        sqlbuilder.create_table().add_column(
192
                "id",
193
                DataTypes.INT,
194
                0,
195
                0,
196
                true,
197
                false,
198
                false,
199
                true,
200
                0
201
        );
202
        sqlbuilder.create_table().add_column(
203
                "geom",
204
                DataTypes.GEOMETRY,
205
                0,
206
                0,
207
                false,
208
                false,
209
                true,
210
                false,
211
                null
212
        );
213

  
214
        System.out.println("# Test:: testCreateTable");
215
        System.out.println("# SQL:: " + sqlbuilder.toString());
216
        System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names()));
217
        System.out.println("# Parametros:: " + ArrayUtils.toString(sqlbuilder.parameters_names()));
218

  
219
        //# Test:: testCreateTable
220
        //# SQL:: CREATE TABLE [master].[dbo].[test1] ([name] VARCHAR(45) DEFAULT NULL NULL, [id] INT IDENTITY(1,1) DEFAULT '0' NOT NULL PRIMARY KEY, [geom] GEOMETRY DEFAULT NULL NULL )
221
        //# Variables:: []
222
        //# Parametros:: []
223

  
224
        assertEquals(
225
                "CREATE TABLE [master].[dbo].[test1] ([name] VARCHAR(45) DEFAULT NULL NULL, [id] INT IDENTITY(1,1) DEFAULT '0' NOT NULL PRIMARY KEY, [geom] GEOMETRY DEFAULT NULL NULL )",
226
                sqlbuilder.toString()
227
        );
228
        assertEquals(
229
                "[]",
230
                ArrayUtils.toString(sqlbuilder.variables_names())
231
        );
232
        assertEquals(
233
                "[]",
234
                ArrayUtils.toString(sqlbuilder.parameters_names())
235
        );
236
    }
237

  
238
    public void testDropTable() throws Exception {
239
        SQLBuilder sqlbuilder = createSQLBuilder();
240
        ExpressionBuilder expbuilder = sqlbuilder.expression();
241
        
242
        sqlbuilder.drop_table().table().database("master").schema("dbo").name("test1");
243

  
244
        System.out.println("# Test:: testDropTable");
245
        System.out.println("# SQL:: " + sqlbuilder.toString());
246
        System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names()));
247
        System.out.println("# Parametros:: " + ArrayUtils.toString(sqlbuilder.parameters_names()));
248

  
249
        //# Test:: testDropTable
250
        //# SQL:: DROP TABLE [master].[dbo].[test1]
251
        //# Variables:: []
252
        //# Parametros:: []
253
        
254
        assertEquals(
255
                "DROP TABLE [master].[dbo].[test1]",
256
                sqlbuilder.toString()
257
        );
258
        assertEquals(
259
                "[]",
260
                ArrayUtils.toString(sqlbuilder.variables_names())
261
        );
262
        assertEquals(
263
                "[]",
264
                ArrayUtils.toString(sqlbuilder.parameters_names())
265
        );
266
    }
267
    
268
    public void testFetchFeatureProviderByReference() throws Exception {
269
        SQLBuilder sqlbuilder = createSQLBuilder();
270
        ExpressionBuilder expbuilder = sqlbuilder.expression();
271
        
272
        String value = "yoyo";
273
        sqlbuilder.select().column().name("name");
274
        sqlbuilder.select().column().name("id");
275
        sqlbuilder.select().column().name("geom").as_geometry();
276
        sqlbuilder.select().from().table().database("master").schema("dbo").name("test1");
277
        sqlbuilder.select().where().set(
278
            expbuilder.eq(
279
                expbuilder.column("name"),
280
                expbuilder.parameter(value).as_constant()
281
            )
282
        );
283
        sqlbuilder.select().limit(1);
284

  
285
        System.out.println("# Test:: testFetchFeatureProviderByReference");
286
        System.out.println("# SQL:: " + sqlbuilder.toString());
287
        System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names()));
288
        System.out.println("# Parametros:: " + ArrayUtils.toString(sqlbuilder.parameters_names()));
289

  
290
        //# Test:: testFetchFeatureProviderByReference
291
        //# SQL:: SELECT TOP 1 [name], [id], ([geom]).STAsBinary() FROM [master].[dbo].[test1] WHERE ( ([name]) = (?) )
292
        //# Variables:: [geom, id, name]
293
        //# Parametros:: ['yoyo']
294

  
295
        assertEquals(
296
                "SELECT TOP 1 [name], [id], ([geom]).STAsBinary() FROM [master].[dbo].[test1] WHERE ( ([name]) = (?) )",
297
                sqlbuilder.toString()
298
        );
299
        assertEquals(
300
                "[geom, id, name]",
301
                ArrayUtils.toString(sqlbuilder.variables_names())
302
        );
303
        assertEquals(
304
                "['yoyo']",
305
                ArrayUtils.toString(sqlbuilder.parameters_names())
306
        );
307
    }
308
    
309
    public void testIsNull() throws Exception {
310
        SQLBuilder sqlbuilder = createSQLBuilder();
311
        ExpressionBuilder expbuilder = sqlbuilder.expression();
312
        
313
        sqlbuilder.select().column().name("name");
314
        sqlbuilder.select().column().name("id");
315
        sqlbuilder.select().column().name("geom").as_geometry();
316
        sqlbuilder.select().from().table().database("master").schema("dbo").name("test1");
317
        sqlbuilder.select().where().set(
318
            expbuilder.and(
319
                expbuilder.is_null(
320
                    expbuilder.column("name")
321
                ),
322
                expbuilder.not_is_null(
323
                    expbuilder.column("id")
324
                )
325
            )
326
        );
327
        sqlbuilder.select().limit(2);
328

  
329
        System.out.println("# Test:: testIsNull");
330
        System.out.println("# SQL:: " + sqlbuilder.toString());
331
        System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names()));
332
        System.out.println("# Parametros:: " + ArrayUtils.toString(sqlbuilder.parameters_names()));
333

  
334
        //# Test:: testIsNull
335
        //# SQL:: SELECT TOP 2 [name], [id], ([geom]).STAsBinary() FROM [master].[dbo].[test1] WHERE ( ([name]) IS NULL ) AND ( ([id]) NOT IS NULL )
336
        //# Variables:: [geom, id, name]
337
        //# Parametros:: []
338

  
339
        assertEquals(
340
                "SELECT TOP 2 [name], [id], ([geom]).STAsBinary() FROM [master].[dbo].[test1] WHERE ( ([name]) IS NULL ) AND ( ([id]) NOT IS NULL )",
341
                sqlbuilder.toString()
342
        );
343
        assertEquals(
344
                "[geom, id, name]",
345
                ArrayUtils.toString(sqlbuilder.variables_names())
346
        );
347
        assertEquals(
348
                "[]",
349
                ArrayUtils.toString(sqlbuilder.parameters_names())
350
        );
351
    }
352
    
353
    public void testFetchFeatureType() throws Exception {
354
        SQLBuilder sqlbuilder = createSQLBuilder();
355
        ExpressionBuilder expbuilder = sqlbuilder.expression();
356
        
357
        sqlbuilder.select().column().all();
358
        sqlbuilder.select().from().table().database("master").schema("dbo").name("test1");
359
        sqlbuilder.select().limit(1);
360

  
361
        System.out.println("# Test:: testFetchFeatureType");
362
        System.out.println("# SQL:: " + sqlbuilder.toString());
363
         System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names()));
364
        System.out.println("# Parametros:: " + ArrayUtils.toString(sqlbuilder.parameters_names()));
365

  
366
        //# Test:: testFetchFeatureType
367
        //# SQL:: SELECT TOP 1 * FROM [master].[dbo].[test1]
368
        //# Variables:: []
369
        //# Parametros:: []
370
    
371
        assertEquals(
372
                "SELECT TOP 1 * FROM [master].[dbo].[test1]",
373
                sqlbuilder.toString()
374
        );
375
        assertEquals(
376
                "[]",
377
                ArrayUtils.toString(sqlbuilder.variables_names())
378
        );
379
        assertEquals(
380
                "[]",
381
                ArrayUtils.toString(sqlbuilder.parameters_names())
382
        );
383
    }
384
        
385
    public void testPerformDeletes() throws Exception {
386
        SQLBuilder sqlbuilder = createSQLBuilder();
387
        ExpressionBuilder expbuilder = sqlbuilder.expression();
388
        
389
        sqlbuilder.delete().table().database("master").schema("dbo").name("test1");
390
        sqlbuilder.delete().where().and(
391
            expbuilder.eq( 
392
                expbuilder.column("id1"),
393
                expbuilder.parameter("id1").as_variable()
394
            )
395
        );
396
        sqlbuilder.delete().where().and(
397
            expbuilder.eq( 
398
                expbuilder.column("id2"),
399
                expbuilder.parameter("id2").as_variable()
400
            )
401
        );
402

  
403
        System.out.println("# Test:: testPerformDeletes");
404
        System.out.println("# SQL:: " + sqlbuilder.toString());
405
        System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names()));
406
        System.out.println("# Parametros:: " + ArrayUtils.toString(sqlbuilder.parameters_names()));
407

  
408
        //# Test:: testPerformDeletes
409
        //# SQL:: DELETE FROM [master].[dbo].[test1] WHERE ( ([id1]) = (?) ) AND ( ([id2]) = (?) )
410
        //# Variables:: [id1, id2]
411
        //# Parametros:: ["id1", "id2"]
412

  
413
        assertEquals(
414
                "DELETE FROM [master].[dbo].[test1] WHERE ( ([id1]) = (?) ) AND ( ([id2]) = (?) )",
415
                sqlbuilder.toString()
416
        );
417
        assertEquals(
418
                "[id1, id2]",
419
                ArrayUtils.toString(sqlbuilder.variables_names())
420
        );
421
        assertEquals(
422
                "[\"id1\", \"id2\"]",
423
                ArrayUtils.toString(sqlbuilder.parameters_names())
424
        );
425
    }
426

  
427
    public void testPerformInserts1() throws Exception {
428
        IProjection proj = CRSFactory.getCRS("EPSG:4326");
429

  
430
        SQLBuilder sqlbuilder = createSQLBuilder();
431
        ExpressionBuilder expbuilder = sqlbuilder.expression();
432
        
433
        sqlbuilder.insert().table().database("master").schema("dbo").name("test1");
434
        sqlbuilder.insert().column().name("id").with_value(expbuilder.parameter("id"));
435
        sqlbuilder.insert().column().name("name").with_value(expbuilder.parameter("name"));
436
        sqlbuilder.insert().column().name("geom").with_value(expbuilder.parameter("geom").as_geometry_variable().srs(proj));
437
        
438
        System.out.println("# Test:: testPerformInserts1");
439
        System.out.println("# SQL:: " + sqlbuilder.toString());
440
        System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names()));
441
        System.out.println("# Parametros:: " + ArrayUtils.toString(sqlbuilder.parameters_names()));
442

  
443
        //# Test:: testPerformInserts1
444
        //# SQL:: INSERT INTO [master].[dbo].[test1] ( [id], [name], [geom] ) VALUES ( ?, ?, geometry::STGeomFromWKB(?, 4326) )
445
        //# Variables:: [geom, id, name]
446
        //# Parametros:: ["id", "name", "geom"]
447
        
448
        assertEquals(
449
                "INSERT INTO [master].[dbo].[test1] ( [id], [name], [geom] ) VALUES ( ?, ?, geometry::STGeomFromWKB(?, 4326) )",
450
                sqlbuilder.toString()
451
        );
452
        assertEquals(
453
                "[geom, id, name]",
454
                ArrayUtils.toString(sqlbuilder.variables_names())
455
        );
456
        assertEquals(
457
                "[\"id\", \"name\", \"geom\"]",
458
                ArrayUtils.toString(sqlbuilder.parameters_names())
459
        );
460
    }
461

  
462
    public void testPerformInserts2() throws Exception {
463
        IProjection proj = CRSFactory.getCRS("EPSG:4326");
464

  
465
        SQLBuilder sqlbuilder = createSQLBuilder();
466
        ExpressionBuilder expbuilder = sqlbuilder.expression();
467
        
468
        sqlbuilder.insert().table().database("master").schema("dbo").name("test1");
469
        sqlbuilder.insert().column().name("id").with_value(expbuilder.parameter("id"));
470
        sqlbuilder.insert().column().name("name").with_value(expbuilder.parameter("name"));
471
        sqlbuilder.insert().column().name("geom").with_value(expbuilder.parameter("geom").as_geometry_variable().srs(proj));
472
        
473
        System.out.println("# Test:: testPerformInserts2");
474
        System.out.println("# SQL:: " + sqlbuilder.toString());
475
        System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names()));
476
        System.out.println("# Parametros:: " + ArrayUtils.toString(sqlbuilder.parameters_names()));
477
    
478
        //# Test:: testPerformInserts2
479
        //# SQL:: INSERT INTO [master].[dbo].[test1] ( [id], [name], [geom] ) VALUES ( ?, ?, geometry::STGeomFromWKB(?, ?) )
480
        //# Variables:: [geom, id, name]
481
        //# Parametros:: ["id", "name", "geom", 4326]
482

  
483
        assertEquals(
484
                "INSERT INTO [master].[dbo].[test1] ( [id], [name], [geom] ) VALUES ( ?, ?, geometry::STGeomFromWKB(?, ?) )",
485
                sqlbuilder.toString()
486
        );
487
        assertEquals(
488
                "[geom, id, name]",
489
                ArrayUtils.toString(sqlbuilder.variables_names())
490
        );
491
        assertEquals(
492
                "[\"id\", \"name\", \"geom\", 4326]",
493
                ArrayUtils.toString(sqlbuilder.parameters_names())
494
        );
495
    }
496

  
497
    public void testPerformUpdates() throws Exception {
498
        IProjection proj = CRSFactory.getCRS("EPSG:4326");
499

  
500
        SQLBuilder sqlbuilder = createSQLBuilder();
501
        ExpressionBuilder expbuilder = sqlbuilder.expression();
502
        
503
        sqlbuilder.update().table().database("master").schema("dbo").name("test1");
504
        sqlbuilder.update().where().and(
505
            expbuilder.eq(
506
                expbuilder.column("id"), 
507
                expbuilder.parameter("id").as_variable()
508
            )
509
        );
510
        sqlbuilder.update().column().name("name").with_value(expbuilder.parameter("name"));
511
        sqlbuilder.update().column().name("geom").with_value(
512
                expbuilder.parameter("geom").as_geometry_variable().srs(
513
                        expbuilder.parameter().value(proj))
514
        );
515

  
516
        System.out.println("# Test:: testPerformUpdates");
517
        System.out.println("# SQL:: " + sqlbuilder.toString());
518
        System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names()));
519
        System.out.println("# Parametros:: " + ArrayUtils.toString(sqlbuilder.parameters_names()));
520

  
521
        //# Test:: testPerformUpdates
522
        //# SQL:: UPDATE [master].[dbo].[test1] SET [name] = ?, [geom] = geometry::STGeomFromWKB(?, ?) WHERE ( ([id]) = (?) )
523
        //# Variables:: [geom, id, name]
524
        //# Parametros:: ["name", "geom", 4326, "id"]
525

  
526
        assertEquals(
527
                "UPDATE [master].[dbo].[test1] SET [name] = ?, [geom] = geometry::STGeomFromWKB(?, ?) WHERE ( ([id]) = (?) )",
528
                sqlbuilder.toString()
529
        );
530
        assertEquals(
531
                "[geom, id, name]",
532
                ArrayUtils.toString(sqlbuilder.variables_names())
533
        );
534
        assertEquals(
535
                "[\"name\", \"geom\", 4326, \"id\"]",
536
                ArrayUtils.toString(sqlbuilder.parameters_names())
537
        );
538
    }
539

  
540
}
tags/org.gvsig.mssqlserver-1.0.46/org.gvsig.mssqlserver.provider/src/main/java/org/gvsig/mssqlserver/dal/MSSQLServerExplorerParameters.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
*
3
* Copyright (C) 2007-2008 Infrastructures and Transports Department
4
* of the Valencian Government (CIT)
5
*
6
* This program is free software; you can redistribute it and/or
7
* modify it under the terms of the GNU General Public License
8
* as published by the Free Software Foundation; either version 2
9
* of the License, or (at your option) any later version.
10
*
11
* This program is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
* GNU General Public License for more details.
15
*
16
* You should have received a copy of the GNU General Public License
17
* along with this program; if not, write to the Free Software
18
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
* MA  02110-1301, USA.
20
*
21
 */
22
/**
23
 *
24
 */
25
package org.gvsig.mssqlserver.dal;
26

  
27
import org.apache.commons.lang3.StringUtils;
28
import org.gvsig.fmap.dal.exception.ValidateDataParametersException;
29
import org.gvsig.fmap.dal.store.jdbc.JDBCServerExplorerParameters;
30

  
31
public class MSSQLServerExplorerParameters extends
32
        JDBCServerExplorerParameters {
33

  
34
    public MSSQLServerExplorerParameters() {
35
        super(
36
                MSSQLServerLibrary.NAME + "ServerExplorerParameters",
37
                MSSQLServerLibrary.NAME
38
        );
39
    }
40

  
41
    @Override
42
    public String getUrl() {
43
        String url = super.getUrl();
44
        if( StringUtils.isEmpty(url) ) {
45
            url = MSSQLServerHelper.getConnectionURL(this);
46
            this.setUrl(url);
47
        }
48
        return url;
49
    }
50

  
51
    @Override
52
    public void validate() throws ValidateDataParametersException {
53
        if (getJDBCDriverClassName() == null) {
54
            setJDBCDriverClassName(MSSQLServerHelper.MSSQLServerJDBCDriver);
55
        }
56
        if (getPort() == null) {
57
            setPort(MSSQLServerHelper.PORT);
58
        }
59
        if( getDynValue("instanceName") == null ) {
60
            setDynValue("InstanceName", MSSQLServerHelper.INSTANCE_NAME);
61
        }
62
        super.validate();
63
    }
64
}
tags/org.gvsig.mssqlserver-1.0.46/org.gvsig.mssqlserver.provider/src/main/java/org/gvsig/mssqlserver/dal/MSSQLServerLibrary.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 */
22
package org.gvsig.mssqlserver.dal;
23

  
24
import org.gvsig.fmap.dal.DALLibrary;
25
import org.gvsig.fmap.dal.DALLocator;
26
import org.gvsig.fmap.dal.spi.DataManagerProviderServices;
27
import org.gvsig.fmap.dal.store.db.DBHelper;
28
import org.gvsig.fmap.dal.store.jdbc2.JDBCLibrary;
29
import org.gvsig.fmap.dal.store.jdbc2.spi.JDBCStoreProviderBase;
30
import org.gvsig.metadata.exceptions.MetadataException;
31
import org.gvsig.tools.library.AbstractLibrary;
32
import org.gvsig.tools.library.LibraryException;
33

  
34
public class MSSQLServerLibrary extends AbstractLibrary {
35

  
36
    // com.microsoft.sqlserver.jdbc.SQLServerDriver
37

  
38
    public static final String NAME = "MSSQLServer";
39

  
40
    @Override
41
    public void doRegistration() {
42
        registerAsServiceOf(DALLibrary.class);
43
        require(JDBCLibrary.class);
44
    }
45

  
46
    @Override
47
    protected void doInitialize() throws LibraryException {
48
    }
49

  
50
    @Override
51
    protected void doPostInitialize() throws LibraryException {
52
        LibraryException ex = null;
53

  
54
        DataManagerProviderServices dataman = 
55
                (DataManagerProviderServices) DALLocator.getDataManager();
56

  
57
        DBHelper.registerParametersDefinition(
58
                NAME + "StoreParameters",
59
                MSSQLServerStoreParameters.class,
60
                dataman.getResourceAsStream(this, NAME + "Parameters.xml")
61
        );
62
        DBHelper.registerParametersDefinition(
63
                NAME + "NewStoreParameters",
64
                MSSQLServerNewStoreParameters.class,
65
                dataman.getResourceAsStream(this, NAME + "Parameters.xml")
66
        );
67
        DBHelper.registerParametersDefinition(
68
                NAME + "ServerExplorerParameters",
69
                MSSQLServerExplorerParameters.class,
70
                dataman.getResourceAsStream(this, NAME + "Parameters.xml")
71
        );
72
//        DBHelper.registerParametersDefinition(
73
//                NAME + "ResourceParameters",
74
//                MSSQLServerResourceParameters.class,
75
//                dataman.getResourceAsStream(this, NAME + "Parameters.xml")
76
//        );
77
        try {
78
            DBHelper.registerMetadataDefinition(
79
                NAME,
80
                JDBCStoreProviderBase.class,
81
                dataman.getResourceAsStream(this, NAME + "Metadata.xml")
82
            );
83
        } catch (MetadataException e) {
84
            ex = new LibraryException(this.getClass(), e);
85
        }
86

  
87
//        ResourceManagerProviderServices resman = (ResourceManagerProviderServices) DALLocator
88
//                .getResourceManager();
89
//
90
//        if (!resman.getResourceProviders().contains(NAME)) {
91
//            resman.register(NAME,
92
//                "Resource for " + NAME,
93
//                MSSQLServerResource.class,
94
//                MSSQLServerResourceParameters.class
95
//            );
96
//        }
97

  
98
        if (!dataman.getStoreProviderRegister().exits(NAME)) {
99
            dataman.registerStoreProviderFactory(new MSSQLServerStoreProviderFactory());
100
        }
101

  
102
        if (!dataman.getServerExplorerRegister().exits(NAME)) {
103
            dataman.registerServerExplorerFactory(new MSSQLServerExplorerFactory());
104
        }
105
        if (ex != null) {
106
            throw ex;
107
        }
108
    }
109

  
110
}
tags/org.gvsig.mssqlserver-1.0.46/org.gvsig.mssqlserver.provider/src/main/java/org/gvsig/mssqlserver/dal/MSSQLServerSQLBuilder.java
1
package org.gvsig.mssqlserver.dal;
2

  
3
import java.text.MessageFormat;
4
import java.util.ArrayList;
5
import java.util.List;
6
import org.gvsig.expressionevaluator.ExpressionBuilder;
7
import org.gvsig.expressionevaluator.Formatter;
8
import org.gvsig.fmap.dal.DataTypes;
9
import org.gvsig.fmap.dal.store.jdbc2.spi.JDBCSQLBuilderBase;
10
import org.gvsig.fmap.geom.primitive.Envelope;
11
import org.gvsig.mssqlserver.dal.expressionbuilderformatter.MSSQLServerFormatter;
12

  
13
public class MSSQLServerSQLBuilder extends JDBCSQLBuilderBase {
14
    
15
    protected Formatter formatter = null;
16
    public static final String FORMAT_ST_GEOMFROMEWKB= "geometry::STGeomFromWKB({0}, {1})";
17
    public static final String FORMAT_ST_GEOMFROMWKB= "geometry::STGeomFromWKB({0}, {1})";
18
    public static final String FORMAT_ST_GEOMFROMTEXT= "geometry::STGeomFromText({0}, {1})";
19
    public static final String FORMAT_OPERATOR_ILIKE = "LOWER({0}) LIKE LOWER({1})";
20
    public static final String FORMAT_OPERATOR_NOTISNULL = "( ({0}) IS NOT NULL )";
21
    
22
//    public interface MSSQLServerSQLConfig extends SQLConfig {
23
//        public static final String ST_GeomFromTextEx = "ST_GeomFromTextEx";
24
//        public static final String ST_GeomFromWKBEx = "ST_GeomFromWKBEx";
25
//        public static final String ST_GeomFromEWKBEx = "ST_GeomFromEWKBEx";
26
//        public static final String ST_ExtentAggregateEx = "ST_ExtentAggregateEx";
27
//        public static final String ST_UnionAggregateEx = "ST_UnionAggregateEx";
28
//    }
29
 
30
    public MSSQLServerSQLBuilder(MSSQLServerHelper helper) {
31
        super(helper);
32
        
33
        this.defaultSchema = "dbo";
34
        this.allowAutomaticValues = true;
35
        this.geometrySupportType = this.helper.getGeometrySupportType();
36
        this.hasSpatialFunctions = this.helper.hasSpatialFunctions();
37

  
38
        STMT_DELETE_GEOMETRY_COLUMN_FROM_TABLE_schema_table = null;
39
        STMT_DELETE_GEOMETRY_COLUMN_FROM_TABLE_table = null;
40
 
41
        this.STMT_UPDATE_TABLE_STATISTICS_table ="UPDATE STATISTICS {0}";
42

  
43
        this.type_geometry = "GEOMETRY";
44
        this.constant_true = "1=1"; // TODO ?
45
        this.constant_false = "1<>1"; // TODO ?
46
    
47
        this.type_boolean = "BIT";
48
        this.type_double = "FLOAT"; //float con 53 bits de mantisa = float(54)
49
        this.type_numeric_p = "NUMERIC({0})";
50
        this.type_numeric_ps = "NUMERIC({0},{1})";
51
        this.type_bigdecimal = "NUMERIC({0},{1})";
52
        this.type_float = "REAL"; //float con 24 bits de mantisa = float(24)
53
        this.type_int = "INT";
54
        this.type_long = "BIGINT";        
55
        this.type_byte = "TINYINT";
56
        
57
        this.type_date = "DATE";
58
        this.type_time = "TIME";
59

  
60
        this.type_char = "CHAR(1)";
61
        this.type_string = "TEXT";
62
        this.type_string_p = "VARCHAR({0})";
63

  
64
        this.type_version = "VARCHAR(30)";
65
        this.type_URI = "TEXT";
66
        this.type_URL = "TEXT";
67
        this.type_FILE = "TEXT";
68
        this.type_FOLDER = "TEXT";
69
        
70
        this.type_bytearray = "VARBINARY";
71
        
72
        this.type_timestamp = "TIMESTAMP";
73

  
74
//       DID this.ST_SRID, "(({0}).STSrid)");
75
//       DID this.ST_AsText, "({0}).STAsText()");
76
//       DID this.ST_AsBinary, "({0}).STAsBinary()");
77
//       DID this.ST_AsEWKB, "({0}).STAsBinary()");
78
//       DID this.ST_ExtentAggregate, "geometry::EnvelopeAggregate({0})");
79
//       DID this.ST_UnionAggregate, "geometry::UnionAggregate({0})");
80
//       DID this.ST_Contains, "(({0}).STContains({1})=1)");
81
//       DID this.ST_Crosses, "(({0}).STCrosses({1})=1)");
82
//       DID this.ST_Disjoint, "(({0}).STDisjoint({1})=1)");
83
//       DID this.ST_Equals, "(({0}).STEquals({1})=1)");
84
//       DID this.ST_IsClosed, "(({0}).STIsClosed()=1)");
85
//       DID this.ST_Overlaps, "(({0}).STOverlaps({1})=1)");
86
//       DID this.ST_Touches, "(({0}).STTouches({1})=1)");
87
//       DID this.ST_Within, "(({0}).STWithin ({1})=1)");
88
//       DID this.ST_Envelope, "({0}).STEnvelope()");
89
//       DID this.ST_Intersects, "(({0}).STIntersects({1})=1)");
90
//       DID this.ST_GeomFromText, "geometry::STGeomFromText({0}, {1})");
91
//       DID this.ST_GeomFromWKB, "geometry::STGeomFromWKB({0}, {1})");
92
//       DID this.ST_GeomFromEWKB, "geometry::STGeomFromWKB({0}, {1})");
93
//       DID this.ST_Simplify, "({0}).Reduce({1})");
94
//        this.lcase, "LOWER({0})");
95
//        this.ucase, "UPPER({0})");
96
//
97
//        config.set(MSSQLServerSQLConfig.ST_ExtentAggregateEx, "{1}::EnvelopeAggregate({0})");
98
//        config.set(MSSQLServerSQLConfig.ST_UnionAggregateEx, "{1}::UnionAggregate({0})");
99
//        config.set(MSSQLServerSQLConfig.ST_GeomFromTextEx, "{2}::STGeomFromText({0}, {1})");
100
//        config.set(MSSQLServerSQLConfig.ST_GeomFromWKBEx, "{2}::STGeomFromWKB({0}, {1})");
101
//        config.set(MSSQLServerSQLConfig.ST_GeomFromEWKBEx, "{2}::STGeomFromWKB({0}, {1})");
102

  
103
    }
104

  
105
    @Override
106
    public MSSQLServerHelper getHelper() {
107
        return (MSSQLServerHelper) helper;
108
    }
109
    
110
    @Override
111
    protected Formatter formatter() {
112
        if( this.formatter==null ) {
113
            this.formatter = new MSSQLServerFormatter(this);
114
        }
115
        return this.formatter;
116
    }
117
    
118
    protected class MSSQLServerDropTableBuilder extends DropTableBuilderBase {
119

  
120
        @Override
121
           public List<String> toStrings(Formatter formatter) {
122
            List<String> sqls = new ArrayList<>();
123

  
124
            sqls.add(
125
                    MessageFormat.format(
126
                            STMT_DROP_TABLE_table,
127
                            this.table.toString(formatter)
128
                    )
129
            );
130
            return sqls;
131
        }
132
    }
133
    
134
    public class MSSQLServerCreateIndexBuilder extends CreateIndexBuilderBase {
135

  
136
        private Envelope boundingBox;
137
        
138
        public MSSQLServerCreateIndexBuilder() {
139
            super();
140
            this.boundingBox = null;
141
        }
142
        
143
        public void setBoundingBox(Envelope boundingBox) {
144
            this.boundingBox = boundingBox;
145
        }
146
        
147
        private double getXMin() {
148
            // https://alastaira.wordpress.com/2011/07/26/determining-the-geographic-extent-of-spatial-features-in-a-sql-server-table/
149
            return Math.min(boundingBox.getUpperCorner().getX(), boundingBox.getLowerCorner().getX());
150
        }
151
        
152
        private double getYMin() {
153
            return Math.min(boundingBox.getUpperCorner().getY(), boundingBox.getLowerCorner().getY());
154
        }
155
        
156
        private double getXMax() {
157
            return Math.max(boundingBox.getUpperCorner().getX(), boundingBox.getLowerCorner().getX());
158
        }
159
        
160
        private double getYMax() {
161
            return Math.max(boundingBox.getUpperCorner().getY(), boundingBox.getLowerCorner().getY());
162
        }
163
        
164
        @Override
165
        public List<String> toStrings() {
166
            StringBuilder builder = new StringBuilder();
167
            if( this.isSpatial ) {
168
                builder.append("CREATE SPATIAL INDEX ");
169
                builder.append(as_identifier(this.indexName));
170
                builder.append(" ON ");
171
                builder.append(this.table.toString());
172
                builder.append(" ( ");
173
                boolean is_first_column = true;
174
                for( String column : this.columns) {
175
                    if( is_first_column ) {
176
                        is_first_column = false;
177
                    } else {
178
                        builder.append(", ");
179
                    }
180
                    builder.append(column);
181
                }
182
                builder.append(" ) ");
183
                builder.append("USING GEOMETRY_GRID ");
184
                builder.append("WITH( ");
185
                builder.append("BOUNDING_BOX  = ( ");
186
                builder.append("xmin  = ").append(this.getXMin()).append(", ");
187
                builder.append("ymin  = ").append(this.getYMin()).append(", ");
188
                builder.append("xmax  = ").append(this.getXMax()).append(", ");
189
                builder.append("ymax  = ").append(this.getYMax());
190
                builder.append(" )");
191
//                builder.append(", DROP_EXISTING = ON");
192
//                builder.append(", GRIDS  = ( LEVEL_1  = MEDIUM, LEVEL_2  = MEDIUM, LEVEL_3  = MEDIUM, LEVEL_4  = MEDIUM)");
193
//                builder.append(", CELLS_PER_OBJECT  = 16");
194
//                builder.append(", STATISTICS_NORECOMPUTE = OFF");
195
//                builder.append(", ALLOW_ROW_LOCKS = ON");
196
//                builder.append(", ALLOW_PAGE_LOCKS = ON");
197
                builder.append(" ) ");
198
            } else {
199
                builder.append("CREATE ");
200
                if( this.isUnique ) {
201
                    builder.append("UNIQUE ");
202
                }
203
                builder.append("INDEX ");
204
//                if( this.ifNotExist ) {
205
//                    builder.append("IF NOT EXISTS ");
206
//                }
207
                builder.append(as_identifier(this.indexName));
208
                builder.append(" ON ");
209
                builder.append(this.table.toString());
210
                builder.append(" ( ");
211
                boolean is_first_column = true;
212
                for( String column : this.columns) {
213
                    if( is_first_column ) {
214
                        is_first_column = false;
215
                    } else {
216
                        builder.append(", ");
217
                    }
218
                    builder.append(column);
219
                }
220
                builder.append(" )");
221
            }
222
            List<String> sqls = new ArrayList<>();
223
            sqls.add(builder.toString());
224
            return sqls;
225
        }
226
        
227
    }
228
    
229
//    public class MSSQLServerParameter extends ParameterBase {
230
//
231
//        public MSSQLServerParameter() {
232
//            super();
233
//        }
234
//
235
//        @Override
236
//        public String toString() {
237
//            if( this.type == ParameterType.Geometry ) {
238
//                String spatialType = getHelper().getSpatialType(this.getName());
239
//                switch( config.getGeometryTypeSupport() ) {
240
//                    case EWKB:
241
//                        return MessageFormat.format(
242
//                                config.getString(MSSQLServerSQLConfig.ST_GeomFromEWKBEx),
243
//                                "?",
244
//                                String.valueOf(this.srs.toString()),
245
//                                custom(spatialType)
246
//                        );
247
//                    case NATIVE:
248
//                    case WKB:
249
//                        return MessageFormat.format(
250
//                                config.getString(MSSQLServerSQLConfig.ST_GeomFromWKBEx),
251
//                                "?",
252
//                                String.valueOf(this.srs.toString()),
253
//                                custom(spatialType)
254
//                        );
255
//                    case WKT:
256
//                    default:
257
//                        return MessageFormat.format(
258
//                                config.getString(MSSQLServerSQLConfig.ST_GeomFromTextEx),
259
//                                "?",
260
//                                String.valueOf(this.srs.toString()),
261
//                                custom(spatialType)
262
//                        );                        
263
//                }                            
264
//            }
265
//            return super.toString();
266
//        }
267
//    }
268
//    
269
//    public class MSSQLServerGeometryValue extends GeometryValueBase {
270
//        
271
//        public MSSQLServerGeometryValue(Geometry geometry, IProjection projection) {
272
//            super(geometry, projection);
273
//        }
274
//        
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff