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

View differences:

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