Revision 44376 trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.jdbc/src/test/java/org/gvsig/fmap/dal/store/jdbc2/SQLBuilderTest.java
SQLBuilderTest.java | ||
---|---|---|
1 | 1 |
package org.gvsig.fmap.dal.store.jdbc2; |
2 | 2 |
|
3 |
import java.util.List; |
|
3 | 4 |
import junit.framework.TestCase; |
4 | 5 |
import org.apache.commons.lang3.ArrayUtils; |
5 | 6 |
import org.cresques.cts.IProjection; |
6 | 7 |
import org.gvsig.expressionevaluator.ExpressionBuilder; |
7 | 8 |
import org.gvsig.fmap.crs.CRSFactory; |
9 |
import org.gvsig.fmap.dal.DALLocator; |
|
10 |
import org.gvsig.fmap.dal.DataManager; |
|
8 | 11 |
import org.gvsig.fmap.dal.SQLBuilder; |
9 | 12 |
import org.gvsig.fmap.dal.SQLBuilder.Privilege; |
13 |
import org.gvsig.fmap.dal.feature.EditableFeatureAttributeDescriptor; |
|
14 |
import org.gvsig.fmap.dal.feature.EditableFeatureType; |
|
15 |
import org.gvsig.fmap.dal.feature.EditableForeingKey; |
|
10 | 16 |
import org.gvsig.fmap.dal.feature.spi.SQLBuilderBase; |
17 |
import org.gvsig.fmap.dal.store.jdbc2.spi.JDBCHelperBase; |
|
11 | 18 |
import org.gvsig.fmap.geom.DataTypes; |
12 | 19 |
import org.gvsig.fmap.geom.Geometry; |
13 | 20 |
import org.gvsig.fmap.geom.GeometryLocator; |
... | ... | |
76 | 83 |
System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names())); |
77 | 84 |
System.out.println("# Parametros:: " + ArrayUtils.toString(sqlbuilder.parameters_names())); |
78 | 85 |
assertEquals( |
79 |
"SELECT ST_AsBinary(ST_ExtentAggregate(\"the_geom\")) AS \"envelope\" FROM \"master\".\"dbo\".\"test1\" WHERE ST_Intersects((ST_Envelope(\"the_geom\")), (ST_GeomFromWKB((DECODE('000000000300000001000000050000000000000000000000000000000000000000000000004059000000000000405900000000000040590000000000004059000000000000000000000000000000000000000000000000000000000000','hex')), (4326)))) AND x = 27",
|
|
86 |
"SELECT ST_AsBinary(ST_ExtentAggregate(\"the_geom\")) AS \"envelope\" FROM \"master\".\"dbo\".\"test1\" WHERE (ST_Intersects((ST_Envelope(\"the_geom\")), (ST_GeomFromWKB((DECODE('000000000300000001000000050000000000000000000000000000000000000000000000004059000000000000405900000000000040590000000000004059000000000000000000000000000000000000000000000000000000000000','hex')), (4326)))) AND x = 27)",
|
|
80 | 87 |
sqlbuilder.toString() |
81 | 88 |
); |
82 | 89 |
assertEquals( |
... | ... | |
294 | 301 |
) |
295 | 302 |
); |
296 | 303 |
|
297 |
// DELETE FROM "master"."dbo"."test1" WHERE ( ("id1") = (?) ) AND ( ("id2") = (?) ) |
|
304 |
// # Test:: testPerformDeletes |
|
305 |
// # SQL:: DELETE FROM "master"."dbo"."test1" WHERE (( ("id1") = (?) ) AND ( ("id2") = (?) )) |
|
306 |
// # Variables:: [id1, id2] |
|
307 |
// # Parametros:: ["id1", "id2"] |
|
298 | 308 |
|
299 | 309 |
System.out.println("# Test:: testPerformDeletes"); |
300 | 310 |
System.out.println("# SQL:: " + sqlbuilder.toString()); |
301 | 311 |
System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names())); |
302 | 312 |
System.out.println("# Parametros:: " + ArrayUtils.toString(sqlbuilder.parameters_names())); |
303 | 313 |
assertEquals( |
304 |
"DELETE FROM \"master\".\"dbo\".\"test1\" WHERE ( (\"id1\") = (?) ) AND ( (\"id2\") = (?) )",
|
|
314 |
"DELETE FROM \"master\".\"dbo\".\"test1\" WHERE (( (\"id1\") = (?) ) AND ( (\"id2\") = (?) ))",
|
|
305 | 315 |
sqlbuilder.toString() |
306 | 316 |
); |
307 | 317 |
assertEquals( |
... | ... | |
503 | 513 |
); |
504 | 514 |
} |
505 | 515 |
|
516 |
public void testForeingValue() throws Exception { |
|
517 |
DataManager dataManager = DALLocator.getDataManager(); |
|
518 |
JDBCHelperBase helper = new JDBCHelperBase(null); |
|
519 |
|
|
520 |
SQLBuilder sqlbuilder = createSQLBuilder(); |
|
521 |
ExpressionBuilder expbuilder = sqlbuilder.expression(); |
|
522 |
|
|
523 |
EditableFeatureAttributeDescriptor attr; |
|
524 |
EditableForeingKey foreingKey; |
|
525 |
EditableFeatureType ft = dataManager.createFeatureType(); |
|
526 |
ft.add("ID", DataTypes.INT); |
|
527 |
ft.add("NAME", DataTypes.STRING, 80); |
|
528 |
attr = ft.add("TYPE", DataTypes.INT); |
|
529 |
foreingKey = attr.getForeingKey(); |
|
530 |
foreingKey.setForeingKey(true); |
|
531 |
foreingKey.setClosedList(true); |
|
532 |
foreingKey.setCodeName("ID"); |
|
533 |
foreingKey.setTableName("TYPES"); |
|
534 |
attr = ft.add("PHONE_TYPE", DataTypes.INT); |
|
535 |
foreingKey = attr.getForeingKey(); |
|
536 |
foreingKey.setForeingKey(true); |
|
537 |
foreingKey.setClosedList(true); |
|
538 |
foreingKey.setCodeName("ID"); |
|
539 |
foreingKey.setTableName("PHONE_TYPES"); |
|
540 |
|
|
541 |
|
|
542 |
sqlbuilder.select().column().name("ID"); |
|
543 |
sqlbuilder.select().column().name("NAME"); |
|
544 |
sqlbuilder.select().column().name("DESCRIPTION"); |
|
545 |
sqlbuilder.select().column().name("TYPE"); |
|
546 |
sqlbuilder.select().from().table().schema("dbo").name("test1"); |
|
547 |
sqlbuilder.select().where().set( |
|
548 |
expbuilder.and( |
|
549 |
expbuilder.like( |
|
550 |
expbuilder.function( |
|
551 |
"FOREING_VALUE", |
|
552 |
expbuilder.constant("TYPE.DESCRIPTION") |
|
553 |
), |
|
554 |
expbuilder.constant("A%") |
|
555 |
), |
|
556 |
expbuilder.eq( |
|
557 |
expbuilder.function( |
|
558 |
"FOREING_VALUE", |
|
559 |
expbuilder.constant("PHONE_TYPE.DESCRIPTION") |
|
560 |
), |
|
561 |
expbuilder.constant("mobile") |
|
562 |
) |
|
563 |
) |
|
564 |
); |
|
565 |
System.out.println("# Test:: testForeingValue"); |
|
566 |
System.out.println("# SQL1:: " + sqlbuilder.toString()); |
|
506 | 567 |
|
568 |
String[] attrNames = helper.replaceForeingValueFunction(sqlbuilder, ft); |
|
569 |
|
|
570 |
System.out.println("# SQL2:: " + sqlbuilder.toString()); |
|
571 |
System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names())); |
|
572 |
System.out.println("# Parametros:: " + ArrayUtils.toString(sqlbuilder.parameters_names())); |
|
573 |
System.out.println("# attrNames:: " + ArrayUtils.toString(attrNames)); |
|
574 |
|
|
575 |
//# Test:: testForeingValue |
|
576 |
//# SQL1:: SELECT "ID", "NAME", "DESCRIPTION", "TYPE" FROM "dbo"."test1" WHERE (( (FOREING_VALUE('TYPE.DESCRIPTION')) LIKE ('A%') ) AND ( (FOREING_VALUE('PHONE_TYPE.DESCRIPTION')) = ('mobile') )) |
|
577 |
//# SQL2:: SELECT "ID", "NAME", "dbo"."test1"."DESCRIPTION", "TYPE", "dbo"."TYPES"."DESCRIPTION", "dbo"."PHONE_TYPES"."DESCRIPTION" FROM "dbo"."test1" LEFT JOIN "dbo"."TYPES" ON ( ("dbo"."test1"."TYPE") = ("dbo"."TYPES"."ID") ) LEFT JOIN "dbo"."PHONE_TYPES" ON ( ("dbo"."test1"."PHONE_TYPE") = ("dbo"."PHONE_TYPES"."ID") ) WHERE (( ("dbo"."TYPES"."DESCRIPTION") LIKE ('A%') ) AND ( ("dbo"."PHONE_TYPES"."DESCRIPTION") = ('mobile') )) |
|
578 |
//# Variables:: [DESCRIPTION, DESCRIPTION, DESCRIPTION, ID, NAME, TYPE] |
|
579 |
//# Parametros:: [] |
|
580 |
//# attrNames:: [TYPE.DESCRIPTION, PHONE_TYPE.DESCRIPTION] |
|
581 |
|
|
582 |
assertEquals( |
|
583 |
"SELECT \"ID\", \"NAME\", \"dbo\".\"test1\".\"DESCRIPTION\", \"TYPE\", \"dbo\".\"TYPES\".\"DESCRIPTION\", \"dbo\".\"PHONE_TYPES\".\"DESCRIPTION\" FROM \"dbo\".\"test1\" LEFT JOIN \"dbo\".\"TYPES\" ON ( (\"dbo\".\"test1\".\"TYPE\") = (\"dbo\".\"TYPES\".\"ID\") ) LEFT JOIN \"dbo\".\"PHONE_TYPES\" ON ( (\"dbo\".\"test1\".\"PHONE_TYPE\") = (\"dbo\".\"PHONE_TYPES\".\"ID\") ) WHERE (( (\"dbo\".\"TYPES\".\"DESCRIPTION\") LIKE ('A%') ) AND ( (\"dbo\".\"PHONE_TYPES\".\"DESCRIPTION\") = ('mobile') ))", |
|
584 |
sqlbuilder.toString() |
|
585 |
); |
|
586 |
assertEquals( |
|
587 |
"[DESCRIPTION, DESCRIPTION, DESCRIPTION, ID, NAME, TYPE]", |
|
588 |
ArrayUtils.toString(sqlbuilder.variables_names()) |
|
589 |
); |
|
590 |
assertEquals( |
|
591 |
"[]", |
|
592 |
ArrayUtils.toString(sqlbuilder.parameters_names()) |
|
593 |
); |
|
594 |
assertEquals( |
|
595 |
"{TYPE.DESCRIPTION,PHONE_TYPE.DESCRIPTION}", |
|
596 |
ArrayUtils.toString(attrNames) |
|
597 |
); |
|
598 |
} |
|
599 |
|
|
600 |
|
|
507 | 601 |
} |
Also available in: Unified diff