svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.plugin / org.gvsig.sqlite / org.gvsig.sqlite.provider / src / test / java / org / gvsig / sqlite / dal / SQLiteSQLBuilderTest.java @ 47606
History | View | Annotate | Download (29.3 KB)
1 |
package org.gvsig.sqlite.dal; |
---|---|
2 |
|
3 |
import junit.framework.TestCase; |
4 |
import org.apache.commons.io.FilenameUtils; |
5 |
import org.apache.commons.lang3.ArrayUtils; |
6 |
import org.cresques.cts.IProjection; |
7 |
import org.gvsig.expressionevaluator.ExpressionBuilder; |
8 |
import org.gvsig.expressionevaluator.GeometryExpressionBuilder; |
9 |
import org.gvsig.fmap.crs.CRSFactory; |
10 |
import org.gvsig.fmap.dal.DALLocator; |
11 |
import org.gvsig.fmap.dal.SQLBuilder; |
12 |
import static org.gvsig.fmap.dal.SQLBuilder.PROP_FEATURE_TYPE; |
13 |
import static org.gvsig.fmap.dal.SQLBuilder.PROP_TABLE; |
14 |
import static org.gvsig.fmap.dal.SQLBuilder.PROP_TABLENAME; |
15 |
import org.gvsig.fmap.dal.SQLBuilder.Privilege; |
16 |
import org.gvsig.fmap.dal.feature.EditableFeatureType; |
17 |
import org.gvsig.fmap.dal.feature.spi.SQLBuilderBase; |
18 |
import org.gvsig.fmap.dal.store.jdbc2.OperationsFactory.TableReference; |
19 |
import org.gvsig.fmap.dal.store.jdbc2.spi.operations.OperationsFactoryBase; |
20 |
import org.gvsig.fmap.geom.DataTypes; |
21 |
import org.gvsig.fmap.geom.Geometry; |
22 |
import org.gvsig.fmap.geom.GeometryLocator; |
23 |
import org.gvsig.fmap.geom.GeometryManager; |
24 |
import org.gvsig.fmap.geom.primitive.Polygon; |
25 |
import org.gvsig.sqlite.dal.geopackage.GeopackageUtils; |
26 |
import org.gvsig.sqlite.dal.geopackage.index.GeopackageIndexRTree; |
27 |
import org.gvsig.tools.library.impl.DefaultLibrariesInitializer; |
28 |
|
29 |
public class SQLiteSQLBuilderTest extends TestCase { |
30 |
|
31 |
public SQLiteSQLBuilderTest(String testName) { |
32 |
super(testName);
|
33 |
} |
34 |
|
35 |
@Override
|
36 |
protected void setUp() throws Exception { |
37 |
super.setUp();
|
38 |
new DefaultLibrariesInitializer().fullInitialize();
|
39 |
} |
40 |
|
41 |
@Override
|
42 |
protected void tearDown() throws Exception { |
43 |
super.tearDown();
|
44 |
} |
45 |
|
46 |
private SQLBuilder createSQLBuilder() throws Exception { |
47 |
SQLiteHelper helper = TestUtils.createJDBCHelper(); |
48 |
return new SQLiteSQLBuilder(helper); |
49 |
} |
50 |
|
51 |
public void testCalculateEnvelopeOfColumn() throws Exception { |
52 |
|
53 |
TableReference table = new OperationsFactoryBase.DefaultTableReference("master","dbo","test1", null); |
54 |
String columnName = "the_geom"; |
55 |
|
56 |
SQLBuilder sqlbuilder = createSQLBuilder(); |
57 |
GeometryExpressionBuilder expbuilder = sqlbuilder.expression(); |
58 |
|
59 |
sqlbuilder.select().column().value( |
60 |
expbuilder.as_geometry( |
61 |
expbuilder.ST_ExtentAggregate( |
62 |
expbuilder.column(columnName) |
63 |
) |
64 |
) |
65 |
); |
66 |
//sqlbuilder.select().group_by(expbuilder.column(columnName));
|
67 |
sqlbuilder.select().from().table() |
68 |
.database(table.getDatabase()) |
69 |
.schema(table.getSchema()) |
70 |
.name(table.getTable()); |
71 |
sqlbuilder.select().from().subquery(table.getSubquery()); |
72 |
|
73 |
sqlbuilder.select().where().and( |
74 |
expbuilder.not_is_null(expbuilder.column(columnName)) |
75 |
); |
76 |
String exp = "SELECT ( ST_Extent(\"the_geom\") ) FROM \"test1\" WHERE ( (\"the_geom\") IS NOT NULL )"; |
77 |
|
78 |
System.out.println("# Test:: testCalculateEnvelopeOfColumn"); |
79 |
System.out.println("# SQL:: " + sqlbuilder.toString()); |
80 |
System.out.println("# EXP:: " + exp); |
81 |
System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names())); |
82 |
System.out.println("# Parametros:: " + ArrayUtils.toString(sqlbuilder.parameters_names())); |
83 |
assertEquals( |
84 |
exp, |
85 |
sqlbuilder.toString() |
86 |
); |
87 |
assertEquals( |
88 |
"[the_geom]",
|
89 |
ArrayUtils.toString(sqlbuilder.variables_names()) |
90 |
); |
91 |
assertEquals( |
92 |
"[]",
|
93 |
ArrayUtils.toString(sqlbuilder.parameters_names()) |
94 |
); |
95 |
} |
96 |
|
97 |
public void testCalculateEnvelope() throws Exception { |
98 |
try {
|
99 |
GeometryManager geometryManager = GeometryLocator.getGeometryManager(); |
100 |
IProjection proj = CRSFactory.getCRS("EPSG:4326");
|
101 |
|
102 |
Polygon limit = geometryManager.createPolygon(Geometry.SUBTYPES.GEOM2D);
|
103 |
limit.addVertex(0, 0); |
104 |
limit.addVertex(0, 100); |
105 |
limit.addVertex(100, 100); |
106 |
limit.addVertex(100, 0); |
107 |
limit.addVertex(0, 0); |
108 |
|
109 |
SQLBuilder sqlbuilder = createSQLBuilder(); |
110 |
GeometryExpressionBuilder expbuilder = sqlbuilder.expression(); |
111 |
|
112 |
sqlbuilder.select().column().value( |
113 |
expbuilder.as_geometry( |
114 |
expbuilder.ST_ExtentAggregate( |
115 |
expbuilder.column("Geometry")
|
116 |
) |
117 |
) |
118 |
).as("envelope");
|
119 |
sqlbuilder.select().from().table().database("master").schema("dbo").name("test"); |
120 |
sqlbuilder.select().where().set( |
121 |
expbuilder.ST_Intersects( |
122 |
expbuilder.ST_Envelope( |
123 |
expbuilder.column("Geometry")
|
124 |
), |
125 |
expbuilder.geometry(limit, proj) |
126 |
) |
127 |
); |
128 |
sqlbuilder.select().where().and( |
129 |
expbuilder.custom("Long = 27")
|
130 |
); |
131 |
String exp = "SELECT ( ST_Extent(\"Geometry\") ) AS \"envelope\" FROM \"test\" WHERE (ST_Intersects((ST_Envelope(\"Geometry\")),((x'010300000001000000050000000000000000000000000000000000000000000000000000000000000000005940000000000000594000000000000059400000000000005940000000000000000000000000000000000000000000000000'))) AND Long = 27)"; |
132 |
System.out.println("# Test:: testCalulateEnvelope"); |
133 |
System.out.println("# SQL:: " + sqlbuilder.toString()); |
134 |
System.out.println("# EXP:: " + exp); |
135 |
System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names())); |
136 |
System.out.println("# Parametros:: " + ArrayUtils.toString(sqlbuilder.parameters_names())); |
137 |
assertEquals( |
138 |
exp, |
139 |
sqlbuilder.toString() |
140 |
); |
141 |
assertEquals( |
142 |
"[Geometry]",
|
143 |
ArrayUtils.toString(sqlbuilder.variables_names()) |
144 |
); |
145 |
assertEquals( |
146 |
"[]",
|
147 |
ArrayUtils.toString(sqlbuilder.parameters_names()) |
148 |
); |
149 |
} catch (Throwable th) { |
150 |
th.printStackTrace(); |
151 |
throw th;
|
152 |
} |
153 |
} |
154 |
|
155 |
public void testCalculateEnvelopeWithSpatialIndex() throws Exception { |
156 |
try {
|
157 |
GeometryManager geometryManager = GeometryLocator.getGeometryManager(); |
158 |
IProjection proj = CRSFactory.getCRS("EPSG:4326");
|
159 |
|
160 |
Polygon limit = geometryManager.createPolygon(Geometry.SUBTYPES.GEOM2D);
|
161 |
limit.addVertex(0, 0); |
162 |
limit.addVertex(0, 100); |
163 |
limit.addVertex(100, 100); |
164 |
limit.addVertex(100, 0); |
165 |
limit.addVertex(0, 0); |
166 |
|
167 |
SQLBuilder sqlbuilder = createSQLBuilder(); |
168 |
GeometryExpressionBuilder expbuilder = sqlbuilder.expression(); |
169 |
|
170 |
sqlbuilder.select().column().value( |
171 |
expbuilder.as_geometry( |
172 |
expbuilder.ST_ExtentAggregate( |
173 |
expbuilder.column("Geometry")
|
174 |
) |
175 |
) |
176 |
).as("envelope");
|
177 |
sqlbuilder.select().from().table().database("master").schema("dbo").name("test"); |
178 |
sqlbuilder.select().where().set( |
179 |
expbuilder.ST_Intersects( |
180 |
expbuilder.column("Geometry"),
|
181 |
expbuilder.geometry(limit, proj) |
182 |
) |
183 |
); |
184 |
sqlbuilder.select().where().and( |
185 |
expbuilder.custom("Long = 27")
|
186 |
); |
187 |
String exp = "SELECT ( ST_Extent(\"Geometry\") ) AS \"envelope\" FROM \"test\" WHERE (( ((\"Long\" IN (SELECT \"rtree_test_Geometry\".\"id\" FROM \"rtree_test_Geometry\" WHERE \"rtree_test_Geometry\".\"minx\" <= (100.0) AND \"rtree_test_Geometry\".\"miny\" <= (100.0) AND \"rtree_test_Geometry\".\"maxx\" >= (0.0) AND \"rtree_test_Geometry\".\"maxy\" >= (0.0)))) AND ST_Intersects((\"Geometry\"),((x'010300000001000000050000000000000000000000000000000000000000000000000000000000000000005940000000000000594000000000000059400000000000005940000000000000000000000000000000000000000000000000')) )) AND Long = 27)"; |
188 |
EditableFeatureType ft = DALLocator.getDataManager().createFeatureType(); |
189 |
ft.add("Geometry", DataTypes.GEOMETRY)
|
190 |
.setGeometryType(Geometry.TYPES.POLYGON, Geometry.SUBTYPES.GEOM2D) |
191 |
.setSRS(proj) |
192 |
.setIsIndexed(true);
|
193 |
ft.add("Long",DataTypes.INTEGER).setIsPrimaryKey(true); |
194 |
GeopackageIndexRTree index = new GeopackageIndexRTree();
|
195 |
index.setHasIndex(ft.getDefaultGeometryAttribute(), true);
|
196 |
|
197 |
sqlbuilder.setProperties( |
198 |
sqlbuilder.select(), |
199 |
null,
|
200 |
PROP_FEATURE_TYPE, ft.getNotEditableCopy(), |
201 |
PROP_TABLENAME, "test"
|
202 |
); |
203 |
|
204 |
System.out.println("# Test:: testCalculateEnvelopeWithSpatialIndex"); |
205 |
System.out.println("# SQL:: " + sqlbuilder.toString()); |
206 |
System.out.println("# EXP:: " + exp); |
207 |
System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names())); |
208 |
System.out.println("# Parametros:: " + ArrayUtils.toString(sqlbuilder.parameters_names())); |
209 |
assertEquals( |
210 |
exp, |
211 |
sqlbuilder.toString() |
212 |
); |
213 |
assertEquals( |
214 |
"[Geometry]",
|
215 |
ArrayUtils.toString(sqlbuilder.variables_names()) |
216 |
); |
217 |
assertEquals( |
218 |
"[]",
|
219 |
ArrayUtils.toString(sqlbuilder.parameters_names()) |
220 |
); |
221 |
} catch (Throwable th){ |
222 |
th.printStackTrace(); |
223 |
throw th;
|
224 |
} |
225 |
} |
226 |
|
227 |
public void testCount() throws Exception { |
228 |
SQLBuilder sqlbuilder = createSQLBuilder(); |
229 |
ExpressionBuilder expbuilder = sqlbuilder.expression(); |
230 |
|
231 |
sqlbuilder.select().column().value(sqlbuilder.count().all()); |
232 |
sqlbuilder.select().from().table().database("master").schema("dbo").name("test1"); |
233 |
sqlbuilder.select().from().subquery(null);
|
234 |
sqlbuilder.select().where().set( expbuilder.custom("pp = 200"));
|
235 |
|
236 |
String exp = "SELECT COUNT(*) FROM \"test1\" WHERE pp = 200"; |
237 |
System.out.println("# Test:: testCount"); |
238 |
System.out.println("# SQL:: " + sqlbuilder.toString()); |
239 |
System.out.println("# EXP:: " + exp); |
240 |
System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names())); |
241 |
System.out.println("# Parametros:: " + ArrayUtils.toString(sqlbuilder.parameters_names())); |
242 |
|
243 |
//# Test:: testCount
|
244 |
//# SQL:: SELECT COUNT(*) FROM "test1" WHERE pp = 200
|
245 |
//# Variables:: []
|
246 |
//# Parametros:: []
|
247 |
|
248 |
assertEquals( |
249 |
exp, |
250 |
sqlbuilder.toString() |
251 |
); |
252 |
assertEquals( |
253 |
"[]",
|
254 |
ArrayUtils.toString(sqlbuilder.variables_names()) |
255 |
); |
256 |
assertEquals( |
257 |
"[]",
|
258 |
ArrayUtils.toString(sqlbuilder.parameters_names()) |
259 |
); |
260 |
} |
261 |
|
262 |
public void testCreateTable() throws Exception { |
263 |
SQLBuilder sqlbuilder = createSQLBuilder(); |
264 |
ExpressionBuilder expbuilder = sqlbuilder.expression(); |
265 |
|
266 |
IProjection proj = CRSFactory.getCRS("EPSG:4326");
|
267 |
|
268 |
sqlbuilder.create_table().table().database("master").schema("dbo").name("test1"); |
269 |
sqlbuilder.create_table().add_column( |
270 |
"name",
|
271 |
DataTypes.STRING, |
272 |
45,
|
273 |
0,
|
274 |
0,
|
275 |
false,
|
276 |
false,
|
277 |
true,
|
278 |
false,
|
279 |
null
|
280 |
); |
281 |
sqlbuilder.create_table().add_column( |
282 |
"id",
|
283 |
DataTypes.INT, |
284 |
0,
|
285 |
0,
|
286 |
0,
|
287 |
true,
|
288 |
false,
|
289 |
false,
|
290 |
true,
|
291 |
0
|
292 |
); |
293 |
|
294 |
sqlbuilder.create_table().add_geometry_column("geom", Geometry.TYPES.MULTIPOLYGON, Geometry.SUBTYPES.GEOM2D, proj, true, true); |
295 |
|
296 |
String exp = "CREATE TABLE IF NOT EXISTS gpkg_contents (table_name TEXT NOT NULL PRIMARY KEY,data_type TEXT NOT NULL,identifier TEXT UNIQUE,description TEXT DEFAULT '',last_change DATETIME NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ','now')),min_x DOUBLE, min_y DOUBLE,max_x DOUBLE, max_y DOUBLE,srs_id INTEGER,CONSTRAINT fk_gc_r_srs_id FOREIGN KEY (srs_id) REFERENCES gpkg_spatial_ref_sys(srs_id)); CREATE TABLE IF NOT EXISTS gpkg_extensions ( " |
297 |
+ "table_name TEXT, "
|
298 |
+ "column_name TEXT, "
|
299 |
+ "extension_name TEXT NOT NULL, "
|
300 |
+ "definition TEXT NOT NULL, "
|
301 |
+ "scope TEXT NOT NULL, "
|
302 |
+ "CONSTRAINT ge_tce UNIQUE (table_name, column_name, extension_name) ); CREATE TABLE IF NOT EXISTS \"gpkg_geometry_columns\" ( "
|
303 |
+ "\"table_name\" TEXT NOT NULL, "
|
304 |
+ "\"column_name\" TEXT NOT NULL, "
|
305 |
+ "\"geometry_type_name\" TEXT NOT NULL, "
|
306 |
+ "\"srs_id\" INTEGER NOT NULL, "
|
307 |
+ "\"z\" TINYINT NOT NULL, "
|
308 |
+ "\"m\" TINYINT NOT NULL, "
|
309 |
+ "CONSTRAINT \"pk_geom_cols\" PRIMARY KEY(\"table_name\",\"column_name\"), "
|
310 |
+ "CONSTRAINT \"fk_gc_tn\" FOREIGN KEY(\"table_name\") REFERENCES \"gpkg_contents\"(\"table_name\"), "
|
311 |
+ "CONSTRAINT \"uk_gc_table_name\" UNIQUE(\"table_name\"), "
|
312 |
+ "CONSTRAINT \"fk_gc_srs\" FOREIGN KEY(\"srs_id\") REFERENCES \"gpkg_spatial_ref_sys\"(\"srs_id\") "
|
313 |
+ "); INSERT INTO \"gpkg_contents\" (\"table_name\", \"data_type\", \"identifier\", \"description\", \"last_change\", \"min_x\", \"min_y\", \"max_x\", \"max_y\", \"srs_id\") VALUES ('test1', 'features', 'test1', '', '*', NULL, NULL, NULL, NULL, NULL); CREATE TABLE \"test1\" (\"name\" VARCHAR(45) DEFAULT NULL, \"id\" MEDIUMINT PRIMARY KEY AUTOINCREMENT DEFAULT '0' NOT NULL, \"geom\" BLOB DEFAULT NULL ); INSERT INTO \"gpkg_geometry_columns\" (\"table_name\", \"column_name\", \"geometry_type_name\", \"srs_id\", \"z\", \"m\") VALUES ('test1', 'geom', 'MULTIPOLYGON', '4326', '0', '0')";
|
314 |
|
315 |
// CREATE TABLE "test1" ("name" VARCHAR(45) DEFAULT NULL, "id" INTEGER PRIMARY KEY AUTO_INCREMENT DEFAULT '0' NOT NULL, "geom" GEOMETRY ); ALTER TABLE "test1" ADD CONSTRAINT IF NOT EXISTS "constraint_test1_geom_dim" CHECK ST_CoordDim("geom") = 2
|
316 |
System.out.println("# Test:: testCreateTable"); |
317 |
System.out.println("# SQL:: " + sqlbuilder.toString()); |
318 |
System.out.println("# EXP:: " + exp); |
319 |
System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names())); |
320 |
System.out.println("# Parametros:: " + ArrayUtils.toString(sqlbuilder.parameters_names())); |
321 |
assertTrue(FilenameUtils.wildcardMatch(sqlbuilder.toString(), exp)); |
322 |
assertEquals( |
323 |
"[]",
|
324 |
ArrayUtils.toString(sqlbuilder.variables_names()) |
325 |
); |
326 |
assertEquals( |
327 |
"[]",
|
328 |
ArrayUtils.toString(sqlbuilder.parameters_names()) |
329 |
); |
330 |
} |
331 |
|
332 |
public void testDropTable() throws Exception { |
333 |
SQLBuilder sqlbuilder = createSQLBuilder(); |
334 |
ExpressionBuilder expbuilder = sqlbuilder.expression(); |
335 |
|
336 |
sqlbuilder.drop_table().table().database("master").schema("dbo").name("test1"); |
337 |
|
338 |
// DROP TABLE "test1"
|
339 |
|
340 |
String exp = "DELETE FROM \"gpkg_geometry_columns\" WHERE \"table_name\" = 'test1'; DELETE FROM \"gpkg_contents\" WHERE \"identifier\" = 'test1'; DELETE FROM \"gpkg_extensions\" WHERE \"table_name\" = 'test1'; DROP TABLE \"test1\""; |
341 |
System.out.println("# Test:: testDropTable"); |
342 |
System.out.println("# SQL:: " + sqlbuilder.toString()); |
343 |
System.out.println("# EXP:: " + exp); |
344 |
System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names())); |
345 |
System.out.println("# Parametros:: " + ArrayUtils.toString(sqlbuilder.parameters_names())); |
346 |
assertEquals( |
347 |
exp, |
348 |
sqlbuilder.toString() |
349 |
); |
350 |
assertEquals( |
351 |
"[]",
|
352 |
ArrayUtils.toString(sqlbuilder.variables_names()) |
353 |
); |
354 |
assertEquals( |
355 |
"[]",
|
356 |
ArrayUtils.toString(sqlbuilder.parameters_names()) |
357 |
); |
358 |
} |
359 |
|
360 |
public void testFetchFeatureProviderByReference() throws Exception { |
361 |
SQLBuilder sqlbuilder = new SQLBuilderBase();
|
362 |
ExpressionBuilder expbuilder = sqlbuilder.expression(); |
363 |
|
364 |
String value = "yoyo"; |
365 |
sqlbuilder.select().column().name("name");
|
366 |
sqlbuilder.select().column().name("id");
|
367 |
sqlbuilder.select().column().name("geom").as_geometry();
|
368 |
sqlbuilder.select().from().table().database("master").schema("dbo").name("test1"); |
369 |
sqlbuilder.select().where().set( |
370 |
expbuilder.eq( |
371 |
expbuilder.column("name"),
|
372 |
expbuilder.parameter(value).as_constant() |
373 |
) |
374 |
); |
375 |
sqlbuilder.select().limit(1);
|
376 |
|
377 |
// SELECT "name", "id", ST_AsBinary("geom") FROM "master"."dbo"."test1" WHERE ( ("name") = (?) ) LIMIT 1
|
378 |
|
379 |
String exp = "SELECT \"name\", \"id\", ST_AsBinary(\"geom\") FROM \"master\".\"dbo\".\"test1\" WHERE ( (\"name\") = (?) ) LIMIT 1"; |
380 |
System.out.println("# Test:: testFetchFeatureProviderByReference"); |
381 |
System.out.println("# SQL:: " + sqlbuilder.toString()); |
382 |
System.out.println("# EXP:: " + exp); |
383 |
System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names())); |
384 |
System.out.println("# Parametros:: " + ArrayUtils.toString(sqlbuilder.parameters_names())); |
385 |
assertEquals( |
386 |
exp, |
387 |
sqlbuilder.toString() |
388 |
); |
389 |
assertEquals( |
390 |
"[geom, id, name]",
|
391 |
ArrayUtils.toString(sqlbuilder.variables_names()) |
392 |
); |
393 |
assertEquals( |
394 |
"['yoyo']",
|
395 |
ArrayUtils.toString(sqlbuilder.parameters_names()) |
396 |
); |
397 |
} |
398 |
|
399 |
public void testFetchFeatureType() throws Exception { |
400 |
SQLBuilder sqlbuilder = createSQLBuilder(); |
401 |
ExpressionBuilder expbuilder = sqlbuilder.expression(); |
402 |
|
403 |
sqlbuilder.select().column().all(); |
404 |
sqlbuilder.select().from().table().database("master").schema("dbo").name("test1"); |
405 |
sqlbuilder.select().limit(1);
|
406 |
|
407 |
String exp = "SELECT * FROM \"test1\" LIMIT 1"; |
408 |
|
409 |
System.out.println("# Test:: testFetchFeatureType"); |
410 |
System.out.println("# SQL:: " + sqlbuilder.toString()); |
411 |
System.out.println("# EXP:: " + exp); |
412 |
System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names())); |
413 |
System.out.println("# Parametros:: " + ArrayUtils.toString(sqlbuilder.parameters_names())); |
414 |
|
415 |
//# Test:: testFetchFeatureType
|
416 |
//# SQL:: SELECT * FROM "test1" LIMIT 1
|
417 |
//# Variables:: []
|
418 |
//# Parametros:: []
|
419 |
|
420 |
assertEquals( |
421 |
exp, |
422 |
sqlbuilder.toString() |
423 |
); |
424 |
assertEquals( |
425 |
"[]",
|
426 |
ArrayUtils.toString(sqlbuilder.variables_names()) |
427 |
); |
428 |
assertEquals( |
429 |
"[]",
|
430 |
ArrayUtils.toString(sqlbuilder.parameters_names()) |
431 |
); |
432 |
} |
433 |
|
434 |
public void testPerformDeletes() throws Exception { |
435 |
SQLBuilder sqlbuilder = createSQLBuilder(); |
436 |
ExpressionBuilder expbuilder = sqlbuilder.expression(); |
437 |
|
438 |
sqlbuilder.delete().table().database("master").schema("dbo").name("test1"); |
439 |
sqlbuilder.delete().where().and( |
440 |
expbuilder.eq( |
441 |
expbuilder.column("id1"),
|
442 |
expbuilder.parameter("id1").as_variable()
|
443 |
) |
444 |
); |
445 |
sqlbuilder.delete().where().and( |
446 |
expbuilder.eq( |
447 |
expbuilder.column("id2"),
|
448 |
expbuilder.parameter("id2").as_variable()
|
449 |
) |
450 |
); |
451 |
|
452 |
String exp = "DELETE FROM \"test1\" WHERE (( (\"id1\") = (?) ) AND ( (\"id2\") = (?) ))"; |
453 |
|
454 |
System.out.println("# Test:: testPerformDeletes"); |
455 |
System.out.println("# SQL:: " + sqlbuilder.toString()); |
456 |
System.out.println("# EXP:: " + exp); |
457 |
System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names())); |
458 |
System.out.println("# Parametros:: " + ArrayUtils.toString(sqlbuilder.parameters_names())); |
459 |
assertEquals( |
460 |
exp, |
461 |
sqlbuilder.toString() |
462 |
); |
463 |
assertEquals( |
464 |
"[id1, id2]",
|
465 |
ArrayUtils.toString(sqlbuilder.variables_names()) |
466 |
); |
467 |
assertEquals( |
468 |
"[\"id1\", \"id2\"]",
|
469 |
ArrayUtils.toString(sqlbuilder.parameters_names()) |
470 |
); |
471 |
} |
472 |
|
473 |
public void testPerformInserts1() throws Exception { |
474 |
IProjection proj = CRSFactory.getCRS("EPSG:4326");
|
475 |
|
476 |
SQLBuilder sqlbuilder = createSQLBuilder(); |
477 |
GeometryExpressionBuilder expbuilder = sqlbuilder.expression(); |
478 |
|
479 |
sqlbuilder.insert().table().database("master").schema("dbo").name("test1"); |
480 |
sqlbuilder.insert().column().name("id").with_value(expbuilder.parameter("id")); |
481 |
sqlbuilder.insert().column().name("name").with_value(expbuilder.parameter("name")); |
482 |
sqlbuilder.insert().column().name("geom").with_value(expbuilder.parameter("geom").as_geometry_variable().srs(proj)); |
483 |
|
484 |
String exp ="INSERT INTO \"test1\" ( \"id\", \"name\", \"geom\" ) VALUES ( ?, ?, ? )"; |
485 |
System.out.println("# Test:: testPerformInserts1"); |
486 |
System.out.println("# SQL:: " + sqlbuilder.toString()); |
487 |
System.out.println("# EXP:: " + exp); |
488 |
System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names())); |
489 |
System.out.println("# Parametros:: " + ArrayUtils.toString(sqlbuilder.parameters_names())); |
490 |
assertEquals( |
491 |
exp, |
492 |
sqlbuilder.toString() |
493 |
); |
494 |
assertEquals( |
495 |
"[geom, id, name]",
|
496 |
ArrayUtils.toString(sqlbuilder.variables_names()) |
497 |
); |
498 |
assertEquals( |
499 |
"[\"id\", \"name\", \"geom\"]",
|
500 |
ArrayUtils.toString(sqlbuilder.parameters_names()) |
501 |
); |
502 |
} |
503 |
|
504 |
public void testPerformInserts2() throws Exception { |
505 |
IProjection proj = CRSFactory.getCRS("EPSG:4326");
|
506 |
|
507 |
SQLBuilder sqlbuilder = createSQLBuilder(); |
508 |
GeometryExpressionBuilder expbuilder = sqlbuilder.expression(); |
509 |
|
510 |
sqlbuilder.insert().table().database("master").schema("dbo").name("test1"); |
511 |
sqlbuilder.insert().column().name("id").with_value(expbuilder.parameter("id")); |
512 |
sqlbuilder.insert().column().name("name").with_value(expbuilder.parameter("name")); |
513 |
sqlbuilder.insert().column().name("geom").with_value(expbuilder.parameter("geom").as_geometry_variable().srs(proj)); |
514 |
|
515 |
String exp = "INSERT INTO \"test1\" ( \"id\", \"name\", \"geom\" ) VALUES ( ?, ?, ? )"; |
516 |
System.out.println("# Test:: testPerformInserts2"); |
517 |
System.out.println("# SQL:: " + sqlbuilder.toString()); |
518 |
System.out.println("# EXP:: " + exp); |
519 |
System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names())); |
520 |
System.out.println("# Parametros:: " + ArrayUtils.toString(sqlbuilder.parameters_names())); |
521 |
assertEquals( |
522 |
exp, |
523 |
sqlbuilder.toString() |
524 |
); |
525 |
assertEquals( |
526 |
"[geom, id, name]",
|
527 |
ArrayUtils.toString(sqlbuilder.variables_names()) |
528 |
); |
529 |
assertEquals( |
530 |
"[\"id\", \"name\", \"geom\"]",
|
531 |
ArrayUtils.toString(sqlbuilder.parameters_names()) |
532 |
); |
533 |
} |
534 |
|
535 |
public void testPerformUpdates1() throws Exception { |
536 |
IProjection proj = CRSFactory.getCRS("EPSG:4326");
|
537 |
|
538 |
SQLBuilder sqlbuilder = createSQLBuilder(); |
539 |
GeometryExpressionBuilder expbuilder = sqlbuilder.expression(); |
540 |
|
541 |
sqlbuilder.update().table().database("master").schema("dbo").name("test1"); |
542 |
sqlbuilder.update().where().and( |
543 |
expbuilder.eq( |
544 |
expbuilder.column("id"),
|
545 |
expbuilder.parameter("id").as_variable()
|
546 |
) |
547 |
); |
548 |
sqlbuilder.update().column().name("name").with_value(expbuilder.parameter("name")); |
549 |
sqlbuilder.update().column().name("geom").with_value(
|
550 |
expbuilder.parameter("geom").as_geometry_variable().srs(proj)
|
551 |
); |
552 |
String exp = "UPDATE \"test1\" SET \"name\" = ?, \"geom\" = ? WHERE ( (\"id\") = (?) )"; |
553 |
|
554 |
System.out.println("# Test:: testPerformUpdates"); |
555 |
System.out.println("# SQL:: " + sqlbuilder.toString()); |
556 |
System.out.println("# EXP:: " + exp); |
557 |
System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names())); |
558 |
System.out.println("# Parametros:: " + ArrayUtils.toString(sqlbuilder.parameters_names())); |
559 |
assertEquals( |
560 |
exp, |
561 |
sqlbuilder.toString() |
562 |
); |
563 |
assertEquals( |
564 |
"[geom, id, name]",
|
565 |
ArrayUtils.toString(sqlbuilder.variables_names()) |
566 |
); |
567 |
assertEquals( |
568 |
"[\"name\", \"geom\", \"id\"]",
|
569 |
ArrayUtils.toString(sqlbuilder.parameters_names()) |
570 |
); |
571 |
} |
572 |
|
573 |
public void testPerformUpdates2() throws Exception { |
574 |
IProjection proj = CRSFactory.getCRS("EPSG:4326");
|
575 |
|
576 |
SQLBuilder sqlbuilder = createSQLBuilder(); |
577 |
GeometryExpressionBuilder expbuilder = sqlbuilder.expression(); |
578 |
|
579 |
sqlbuilder.update().table().database("master").schema("dbo").name("test1"); |
580 |
sqlbuilder.update().where().and( |
581 |
expbuilder.eq( |
582 |
expbuilder.column("id"),
|
583 |
expbuilder.parameter("id").as_variable()
|
584 |
) |
585 |
); |
586 |
sqlbuilder.update().column().name("name").with_value(expbuilder.parameter("name")); |
587 |
sqlbuilder.update().column().name("geom").with_value(
|
588 |
expbuilder.parameter("geom").as_geometry_variable()
|
589 |
.srs(expbuilder.parameter().value(proj)) |
590 |
); |
591 |
|
592 |
String exp = "UPDATE \"test1\" SET \"name\" = ?, \"geom\" = ? WHERE ( (\"id\") = (?) )"; |
593 |
|
594 |
System.out.println("# Test:: testPerformUpdates"); |
595 |
System.out.println("# SQL:: " + sqlbuilder.toString()); |
596 |
System.out.println("# EXP:: " + exp); |
597 |
System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names())); |
598 |
System.out.println("# Parametros:: " + ArrayUtils.toString(sqlbuilder.parameters_names())); |
599 |
assertEquals( |
600 |
exp, |
601 |
sqlbuilder.toString() |
602 |
); |
603 |
assertEquals( |
604 |
"[geom, id, name]",
|
605 |
ArrayUtils.toString(sqlbuilder.variables_names()) |
606 |
); |
607 |
assertEquals( |
608 |
"[\"name\", \"geom\", \"id\"]",
|
609 |
ArrayUtils.toString(sqlbuilder.parameters_names()) |
610 |
); |
611 |
} |
612 |
|
613 |
public void testGrant1() throws Exception { |
614 |
|
615 |
SQLBuilder sqlbuilder = createSQLBuilder(); |
616 |
ExpressionBuilder expbuilder = sqlbuilder.expression(); |
617 |
|
618 |
sqlbuilder.grant().table().database("master").schema("dbo").name("test1"); |
619 |
sqlbuilder.grant().role("prueba").select().insert().update();
|
620 |
sqlbuilder.grant().role("gis").all();
|
621 |
|
622 |
String exp = ""; |
623 |
|
624 |
System.out.println("# Test:: testGrant1"); |
625 |
System.out.println("# SQL:: " + sqlbuilder.toString()); |
626 |
System.out.println("# EXP:: " + exp); |
627 |
System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names())); |
628 |
System.out.println("# Parametros:: " + ArrayUtils.toString(sqlbuilder.parameters_names())); |
629 |
assertEquals( |
630 |
exp, |
631 |
sqlbuilder.toString() |
632 |
); |
633 |
assertEquals( |
634 |
"[]",
|
635 |
ArrayUtils.toString(sqlbuilder.variables_names()) |
636 |
); |
637 |
assertEquals( |
638 |
"[]",
|
639 |
ArrayUtils.toString(sqlbuilder.parameters_names()) |
640 |
); |
641 |
} |
642 |
|
643 |
public void testGrant2() throws Exception { |
644 |
|
645 |
SQLBuilder sqlbuilder = new SQLBuilderBase();
|
646 |
ExpressionBuilder expbuilder = sqlbuilder.expression(); |
647 |
|
648 |
sqlbuilder.grant().table().database("master").schema("dbo").name("test1"); |
649 |
sqlbuilder.grant().role("prueba").privilege(Privilege.SELECT)
|
650 |
.privilege(Privilege.INSERT) |
651 |
.privilege(Privilege.UPDATE); |
652 |
sqlbuilder.grant().role("gis").privilege(Privilege.ALL);
|
653 |
|
654 |
|
655 |
System.out.println("# Test:: testGrant2"); |
656 |
System.out.println("# SQL:: " + sqlbuilder.toString()); |
657 |
System.out.println("# EXP:: " + ""); |
658 |
System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names())); |
659 |
System.out.println("# Parametros:: " + ArrayUtils.toString(sqlbuilder.parameters_names())); |
660 |
assertEquals( |
661 |
"",
|
662 |
sqlbuilder.toString() |
663 |
); |
664 |
assertEquals( |
665 |
"[]",
|
666 |
ArrayUtils.toString(sqlbuilder.variables_names()) |
667 |
); |
668 |
assertEquals( |
669 |
"[]",
|
670 |
ArrayUtils.toString(sqlbuilder.parameters_names()) |
671 |
); |
672 |
} |
673 |
|
674 |
|
675 |
} |