Revision 120

View differences:

tags/org.gvsig.mssqlserver-1.0.19/pom.xml
1
<?xml version="1.0" encoding="UTF-8"?>
2

  
3
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4

  
5
    <modelVersion>4.0.0</modelVersion>
6
    <artifactId>org.gvsig.mssqlserver</artifactId>
7
    <version>1.0.19</version>
8
    <packaging>pom</packaging>
9
    <name>${project.artifactId}</name>
10
    <description>MS SQLServer support fort DAL and gvSIG</description>
11
    <parent>
12
        <groupId>org.gvsig</groupId>
13
        <artifactId>org.gvsig.desktop</artifactId>
14
        <version>2.0.205</version>
15
    </parent>
16

  
17
    <url>https://devel.gvsig.org/redmine/projects/gvsig-mssqlserver</url>
18
    <scm>
19
        <connection>scm:svn:https://devel.gvsig.org/svn/gvsig-mssqlserver/tags/org.gvsig.mssqlserver-1.0.19</connection>
20
        <developerConnection>scm:svn:https://devel.gvsig.org/svn/gvsig-mssqlserver/tags/org.gvsig.mssqlserver-1.0.19</developerConnection>
21
        <url>https://devel.gvsig.org/redmine/projects/gvsig-mssqlserver/repository/show/tags/org.gvsig.mssqlserver-1.0.19</url>
22
    </scm>
23

  
24
    <repositories>
25
        <repository>
26
            <id>gvsig-public-http-repository</id>
27
            <name>gvSIG maven public HTTP repository</name>
28
            <url>http://devel.gvsig.org/m2repo/j2se</url>
29
            <releases>
30
                <enabled>true</enabled>
31
                <updatePolicy>daily</updatePolicy>
32
                <checksumPolicy>warn</checksumPolicy>
33
            </releases>
34
            <snapshots>
35
                <enabled>true</enabled>
36
                <updatePolicy>daily</updatePolicy>
37
                <checksumPolicy>warn</checksumPolicy>
38
            </snapshots>
39
        </repository>
40
    </repositories>
41

  
42

  
43
    <build>
44
        <plugins>
45
            <plugin>
46
                <groupId>org.apache.maven.plugins</groupId>
47
                <artifactId>maven-release-plugin</artifactId>
48
                <configuration>
49
                    <tagBase>https://devel.gvsig.org/svn/gvsig-mssqlserver/tags/</tagBase>
50
                    <goals>deploy</goals>
51
                </configuration>
52
            </plugin>                     
53
        </plugins>
54
    </build>
55

  
56

  
57
    <dependencyManagement>
58
        <dependencies>
59
            <dependency>
60
                <groupId>org.gvsig</groupId>
61
                <artifactId>org.gvsig.mssqlserver.provider</artifactId>
62
                <version>1.0.19</version>
63
            </dependency>
64
            <dependency>
65
                <groupId>org.gvsig</groupId>
66
                <artifactId>org.gvsig.mssqlserver.app.mainplugin</artifactId>
67
                <version>1.0.19</version>
68
            </dependency>
69
            <dependency>
70
                <groupId>com.microsoft.sqlserver</groupId>
71
                <artifactId>sqlserver-jdbc</artifactId>
72
                <version>6.0.0</version>
73
            </dependency>
74
        </dependencies>
75
    </dependencyManagement>
76
  
77
    <modules>
78
        <module>org.gvsig.mssqlserver.app</module>
79
        <module>org.gvsig.mssqlserver.provider</module>
80
    </modules>
81

  
82

  
83
</project>
tags/org.gvsig.mssqlserver-1.0.19/org.gvsig.mssqlserver.provider/pom.xml
1
<?xml version="1.0" encoding="UTF-8"?>
2

  
3
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4

  
5
    <modelVersion>4.0.0</modelVersion>
6
    <artifactId>org.gvsig.mssqlserver.provider</artifactId>
7
    <packaging>jar</packaging>
8
    <name>${project.artifactId}</name>
9
    <description>DAL provider for MS SQLServer</description>
10
    <parent>
11
        <groupId>org.gvsig</groupId>
12
        <artifactId>org.gvsig.mssqlserver</artifactId>
13
        <version>1.0.19</version>
14
    </parent>
15

  
16
    <dependencies>
17
        <dependency>
18
            <groupId>com.googlecode.log4jdbc</groupId>
19
            <artifactId>log4jdbc</artifactId>
20
            <scope>compile</scope>
21
        </dependency>
22
        <dependency>
23
            <groupId>org.gvsig</groupId>
24
            <artifactId>org.gvsig.tools.lib</artifactId>
25
            <scope>compile</scope>
26
        </dependency>
27
        <dependency>
28
            <groupId>org.gvsig</groupId>
29
            <artifactId>org.gvsig.projection.api</artifactId>
30
            <scope>compile</scope>
31
        </dependency>
32
        <dependency>
33
            <groupId>org.gvsig</groupId>
34
            <artifactId>org.gvsig.fmap.dal.api</artifactId>
35
            <scope>compile</scope>
36
        </dependency>
37
        <dependency>
38
            <groupId>org.gvsig</groupId>
39
            <artifactId>org.gvsig.fmap.dal.impl</artifactId>
40
            <scope>test</scope>
41
        </dependency>
42
        <dependency>
43
            <groupId>org.gvsig</groupId>
44
            <artifactId>org.gvsig.fmap.dal.spi</artifactId>
45
            <scope>test</scope>
46
        </dependency>
47
    
48
        <dependency>
49
            <groupId>org.gvsig</groupId>
50
            <artifactId>org.gvsig.fmap.dal.db.jdbc</artifactId>
51
            <scope>compile</scope>
52
        </dependency>
53

  
54
        <dependency>
55
            <groupId>org.gvsig</groupId>
56
            <artifactId>org.gvsig.fmap.dal.db.lib</artifactId>
57
            <scope>compile</scope>
58
        </dependency>
59
    
60
        <dependency>
61
            <groupId>org.gvsig</groupId>
62
            <artifactId>org.gvsig.fmap.dal.spi</artifactId>
63
            <scope>compile</scope>
64
        </dependency>
65
        <dependency>
66
            <groupId>org.gvsig</groupId>
67
            <artifactId>org.gvsig.metadata.lib.basic.api</artifactId>
68
            <scope>compile</scope>
69
        </dependency>
70
        <dependency>
71
            <groupId>org.gvsig</groupId>
72
            <artifactId>org.gvsig.fmap.geometry.api</artifactId>
73
            <scope>compile</scope>
74
        </dependency>
75
        <dependency>
76
            <groupId>org.gvsig</groupId>
77
            <artifactId>${org.gvsig.fmap.geometry.impl}</artifactId>
78
            <scope>test</scope>
79
        </dependency>
80
        <dependency>
81
            <groupId>org.gvsig</groupId>
82
            <artifactId>org.gvsig.timesupport.lib.api</artifactId>
83
            <scope>compile</scope>
84
        </dependency>  
85
        <dependency>
86
            <groupId>org.gvsig</groupId>
87
            <artifactId>org.gvsig.utils</artifactId>
88
            <scope>compile</scope>
89
        </dependency>
90
        <dependency>
91
            <groupId>com.microsoft.sqlserver</groupId>
92
            <artifactId>sqlserver-jdbc</artifactId>
93
            <scope>compile</scope>
94
        </dependency>
95
        <dependency>
96
            <groupId>commons-dbcp</groupId>
97
            <artifactId>commons-dbcp</artifactId>
98
            <scope>compile</scope>
99
        </dependency>
100
        <dependency>
101
            <groupId>commons-collections</groupId>
102
            <artifactId>commons-collections</artifactId>
103
            <scope>compile</scope>
104
        </dependency>
105

  
106

  
107
        <!-- TESTS -->
108
        <dependency>
109
            <groupId>org.gvsig</groupId>
110
            <artifactId>org.gvsig.tools.lib</artifactId>
111
            <type>test-jar</type>
112
            <scope>test</scope>
113
        </dependency>
114
        <dependency>
115
            <groupId>org.gvsig</groupId>
116
            <artifactId>org.gvsig.compat.se</artifactId>
117
            <scope>test</scope>
118
        </dependency>
119
        <dependency>
120
            <groupId>org.gvsig</groupId>
121
            <artifactId>org.gvsig.fmap.dal.impl</artifactId>
122
            <type>test-jar</type>
123
            <scope>test</scope>
124
        </dependency>
125
        <dependency>
126
            <groupId>org.gvsig</groupId>
127
            <artifactId>org.gvsig.metadata.lib.basic.impl</artifactId>
128
            <scope>compile</scope>
129
        </dependency>    
130
        <dependency>
131
            <groupId>org.gvsig</groupId>
132
            <artifactId>org.gvsig.projection.cresques.impl</artifactId>
133
            <scope>test</scope>
134
        </dependency>
135
        <dependency>
136
            <groupId>org.gvsig</groupId>
137
            <artifactId>org.gvsig.timesupport.lib.impl</artifactId>
138
            <scope>test</scope>
139
        </dependency>
140
        <dependency>
141
            <groupId>junit</groupId>
142
            <artifactId>junit</artifactId>
143
            <version>3.8.1</version>
144
            <type>jar</type>
145
        </dependency>
146
    </dependencies>
147
    <build>
148
        <plugins>
149
                        
150
            <plugin>
151
                <groupId>org.codehaus.mojo</groupId>
152
                <artifactId>animal-sniffer-maven-plugin</artifactId>
153
                <executions>
154
                    <execution>
155
                        <id>check-java-api</id>
156
                        <phase>package</phase>
157
                        <goals>
158
                            <goal>check</goal>
159
                        </goals>
160
                        <configuration>
161
                            <skip>true</skip>
162
                            <signature>
163
                                <groupId>org.codehaus.mojo.signature</groupId>
164
                                <artifactId>java18</artifactId>
165
                                <version>1.0</version>
166
                            </signature>
167
                        </configuration>
168
                    </execution>
169
                </executions>
170
            </plugin>            
171
            
172
            
173
            
174
        </plugins>
175
    </build>
176

  
177
</project>
tags/org.gvsig.mssqlserver-1.0.19/org.gvsig.mssqlserver.provider/src/test/java/org/gvsig/fmap/dal/store/jdbc2/ExpressionBuilderTest.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.fmap.dal.ExpressionBuilder;
9
import org.gvsig.fmap.dal.ExpressionBuilder.Config;
10
import org.gvsig.fmap.dal.ExpressionBuilder.GeometrySupportType;
11
import org.gvsig.fmap.dal.ExpressionBuilder.Parameter;
12
import static org.gvsig.fmap.dal.ExpressionBuilder.ParameterType.Constant;
13
import org.gvsig.fmap.dal.ExpressionBuilder.Variable;
14
import org.gvsig.fmap.dal.feature.spi.ExpressionBuilderBase;
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.exception.CreateGeometryException;
19
import org.gvsig.fmap.geom.primitive.Point;
20
import org.gvsig.tools.junit.AbstractLibraryAutoInitTestCase;
21

  
22
public class ExpressionBuilderTest extends AbstractLibraryAutoInitTestCase {
23
    
24
    @Override
25
    protected void doSetUp() throws Exception {
26

  
27
    }
28
    
29
    List<String> getVariableNames(ExpressionBuilder builder) {
30
        List<String> vars = new ArrayList<>();
31
        for (Variable var : builder.getVariables()) {
32
            vars.add(var.getName());
33
        }
34
        return vars;
35
    }
36
    
37
    List<String> getParameterNames(ExpressionBuilder builder) {
38
        List<String> params = new ArrayList<>();
39
        for (Parameter param : builder.getParameters()) {
40
            String s;
41
            switch(param.getType()) {
42
                case Constant:
43
                    Object value = param.getValue();
44
                    if( value==null ) {
45
                        s = "null";
46
                    } else if( value instanceof String ) {
47
                        s = "'" + (String)value + "'";
48
                    } else {
49
                        s = value.toString();
50
                    }    
51
                    break;
52
                case Geometry:
53
                case Variable:
54
                default:
55
                    s = "\"" + param.getName() + "\"";
56
            }
57
            params.add(s);
58
        }
59
        return params;
60
    }
61
    
62
    public void test2() {
63
        ExpressionBuilder builder = new ExpressionBuilderBase();
64
        
65
        builder.and(
66
          builder.eq(
67
            builder.lcase(builder.variable("colum_name_c")),
68
            builder.parameter("colum_name_p")
69
          )
70
        );
71
        builder.and(
72
            builder.group(
73
                builder.or(
74
                    builder.like(
75
                        builder.lcase( builder.variable("uno")),
76
                        builder.constant("%10")
77
                    ),
78
                    builder.lt(
79
                        builder.variable("dos"),
80
                        builder.constant(-3.5)
81
                    )
82
                )
83
            )
84
        );
85
        builder.and(
86
                builder.ST_Intersects(
87
                    builder.variable("geom1"), 
88
                    builder.ST_Envelope(
89
                        builder.ST_GeomFromWKB(
90
                                builder.parameter("geom2"), 
91
                                builder.parameter().value(4326).as_constant()
92
                        )
93
                    )
94
                )
95
        );
96
        builder.and(
97
            builder.gt(
98
                builder.variable("tres"),
99
                builder.constant(123456789)
100
            )
101
        );
102
        assertEquals(
103
                "( (LCASE(\"colum_name_c\")) = (?) ) AND ( ( (LCASE(\"uno\")) LIKE ('%10') ) OR ( (\"dos\") < (-3.5) ) ) AND ST_Intersects((\"geom1\"), (ST_Envelope(ST_GeomFromWKB((?), (?))))) AND ( (\"tres\") > (123456789) )",
104
                builder.toString()
105
        );
106
        assertEquals(
107
                "[colum_name_c, dos, geom1, tres, uno]",
108
                ArrayUtils.toString(getVariableNames(builder))
109
        );
110
        assertEquals(
111
                "[\"colum_name_p\", \"geom2\", 4326]",
112
                ArrayUtils.toString(getParameterNames(builder))
113
        );
114
    }
115
    
116
    public void test3() throws CreateGeometryException {
117
        ExpressionBuilder builder = new ExpressionBuilderBase();
118
                
119
        GeometryManager geometryManager = GeometryLocator.getGeometryManager();
120
        IProjection proj = CRSFactory.getCRS("EPSG:4326");
121
        
122
        Point point = geometryManager.createPoint(10, 20, Geometry.SUBTYPES.GEOM2D);
123
        builder.set(        
124
            builder.ST_Intersects(
125
              builder.geometry(point,proj),
126
              builder.variable("the_geom")
127
            )
128
        );
129
        builder.getConfig().set(Config.geometry_type_support, GeometrySupportType.WKT);
130
        System.out.println(builder.toString());
131
        assertEquals(
132
                "ST_Intersects((ST_GeomFromText('POINT (10 20)', (4326))), (\"the_geom\"))",
133
                builder.toString()
134
        );
135
        builder.getConfig().set(Config.geometry_type_support, GeometrySupportType.WKB);
136
        System.out.println(builder.toString());
137
        assertEquals(
138
                "ST_Intersects((ST_GeomFromWKB((0x000000000140240000000000004034000000000000), (4326))), (\"the_geom\"))",
139
                builder.toString()
140
        );
141
        assertEquals(
142
                "[the_geom]",
143
                ArrayUtils.toString(getVariableNames(builder))
144
        );
145
        assertEquals(
146
                "[]",
147
                ArrayUtils.toString(getParameterNames(builder))
148
        );
149
    }
150
    
151
    public void test4() throws CreateGeometryException {
152
        ExpressionBuilder builder = new ExpressionBuilderBase();
153
                
154
        IProjection proj = CRSFactory.getCRS("EPSG:4326");
155
        
156
        builder.and(
157
                builder.ST_Intersects(
158
                    builder.variable("geom1"), 
159
                    builder.ST_Envelope(
160
                        builder.ST_GeomFromWKB(
161
                                builder.parameter("geom2"), 
162
                                builder.parameter().value(proj).as_constant()
163
                        )
164
                    )
165
                )
166
        );
167
        
168
        System.out.println(builder.toString());
169
        assertEquals(
170
                "ST_Intersects((\"geom1\"), (ST_Envelope(ST_GeomFromWKB((?), (?)))))",
171
                builder.toString()
172
        );
173
        assertEquals(
174
                "[geom1]",
175
                ArrayUtils.toString(getVariableNames(builder))
176
        );
177
        assertEquals(
178
                "[\"geom2\", 4326]",
179
                ArrayUtils.toString(getParameterNames(builder))
180
        );
181
    }
182
        
183
    public void test5() throws CreateGeometryException {
184
        ExpressionBuilder builder = new ExpressionBuilderBase();
185
                
186
        IProjection proj = CRSFactory.getCRS("EPSG:4326");
187
        
188
        builder.and(
189
                builder.eq(
190
                        builder.ST_SRID( builder.variable("geom") ),
191
                        builder.srs(proj)
192
                )
193
        );
194
        
195
        System.out.println(builder.toString());
196
        assertEquals(
197
                "( (ST_SRID(\"geom\")) = (4326) )",
198
                builder.toString()
199
        );
200
        assertEquals(
201
                "[geom]",
202
                ArrayUtils.toString(getVariableNames(builder))
203
        );
204
        assertEquals(
205
                "[]",
206
                ArrayUtils.toString(getParameterNames(builder))
207
        );
208
    }
209
}
tags/org.gvsig.mssqlserver-1.0.19/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.fmap.dal.ExpressionBuilder;
9
import org.gvsig.fmap.dal.ExpressionBuilder.Constant;
10
import org.gvsig.fmap.dal.ExpressionBuilder.Parameter;
11
import org.gvsig.fmap.dal.ExpressionBuilder.Variable;
12
import org.gvsig.fmap.dal.SQLBuilder;
13
import org.gvsig.fmap.dal.SQLBuilder.Privilege;
14
import org.gvsig.fmap.dal.feature.spi.SQLBuilderBase;
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 org.gvsig.tools.junit.AbstractLibraryAutoInitTestCase;
21

  
22
public class SQLBuilderTest extends AbstractLibraryAutoInitTestCase {
23
    
24
    @Override
25
    protected void doSetUp() throws Exception {
26

  
27
    }
28
    
29
    List<String> getVariableNames(ExpressionBuilder builder) {
30
        List<String> vars = new ArrayList<>();
31
        for (Variable var : builder.getVariables()) {
32
            vars.add(var.getName());
33
        }
34
        return vars;
35
    }
36
    
37
    List<String> getParameterNames(ExpressionBuilder builder) {
38
        List<String> params = new ArrayList<>();
39
        for (Parameter param : builder.getParameters()) {
40
            String s;
41
            switch(param.getType()) {
42
                case Constant:
43
                    Object value = param.getValue();
44
                    if( value==null ) {
45
                        s = "null";
46
                    } else if( value instanceof String ) {
47
                        s = "'" + (String)value + "'";
48
                    } else {
49
                        s = value.toString();
50
                    }    
51
                    break;
52
                case Geometry:
53
                case Variable:
54
                default:
55
                    s = "\"" + param.getName() + "\"";
56
            }
57
            params.add(s);
58
        }
59
        return params;
60
    }
61
    
62
 
63
    public void testCalulateEnvelope() throws Exception {
64
        GeometryManager geometryManager = GeometryLocator.getGeometryManager();
65
        IProjection proj = CRSFactory.getCRS("EPSG:4326");
66
        
67
        Polygon limit = geometryManager.createPolygon(Geometry.SUBTYPES.GEOM2D);
68
        limit.addVertex(0, 0);
69
        limit.addVertex(0, 100);
70
        limit.addVertex(100, 100);
71
        limit.addVertex(100, 0);
72
        limit.addVertex(0, 0);
73
        
74
        SQLBuilder builder = new SQLBuilderBase();
75
        
76
        builder.select().column().value(
77
            builder.getAsGeometry(
78
              builder.ST_ExtentAggregate(
79
                builder.column("the_geom")
80
              )
81
            )
82
        ).as("envelope");
83
        builder.select().from().table().database("master").schema("dbo").name("test1");
84
        builder.select().where().set(
85
            builder.ST_Intersects(
86
                builder.ST_Envelope(
87
                    builder.column("the_geom")
88
                ),
89
                builder.geometry(limit, proj)
90
            )
91
        );
92
        builder.select().where().and(
93
                builder.custom("x = 27")
94
        );
95
        
96
        // 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
97
        
98
        System.out.println("# Test:: testCalulateEnvelope");
99
        System.out.println("# SQL:: " + builder.toString());
100
        System.out.println("# Variables:: " + ArrayUtils.toString(getVariableNames(builder)));
101
        System.out.println("# Parametros:: " + ArrayUtils.toString(getParameterNames(builder)));
102
        assertEquals(
103
                "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",
104
                builder.toString()
105
        );
106
        assertEquals(
107
                "[the_geom]",
108
                ArrayUtils.toString(getVariableNames(builder))
109
        );
110
        assertEquals(
111
                "[]",
112
                ArrayUtils.toString(getParameterNames(builder))
113
        );
114
    }
115

  
116
    public void testCount() throws Exception {
117
        SQLBuilder builder = new SQLBuilderBase();
118
        
119
        builder.select().column().value(builder.count().all());
120
        builder.select().from().table().database("master").schema("dbo").name("test1");
121
        builder.select().from().subquery(null);
122
        builder.select().where().set( builder.custom("pp = 200"));
123

  
124
        System.out.println("# Test:: testCount");
125
        System.out.println("# SQL:: " + builder.toString());
126
        System.out.println("# Variables:: " + ArrayUtils.toString(getVariableNames(builder)));
127
        System.out.println("# Parametros:: " + ArrayUtils.toString(getParameterNames(builder)));
128

  
129
        //# Test:: testCount
130
        //# SQL:: SELECT COUNT(*) FROM "master"."dbo"."test1" WHERE pp = 200
131
        //# Variables:: []
132
        //# Parametros:: []
133

  
134
        assertEquals(
135
                "SELECT COUNT(*) FROM \"master\".\"dbo\".\"test1\" WHERE pp = 200",
136
                builder.toString()
137
        );
138
        assertEquals(
139
                "[]",
140
                ArrayUtils.toString(getVariableNames(builder))
141
        );
142
        assertEquals(
143
                "[]",
144
                ArrayUtils.toString(getParameterNames(builder))
145
        );
146
    }
147
    
148
    public void testCreateTable() throws Exception {
149
        SQLBuilder builder = new SQLBuilderBase();
150

  
151
        builder.create_table().table().database("master").schema("dbo").name("test1");
152
        builder.create_table().add_column(
153
                "name",
154
                DataTypes.STRING,
155
                45,
156
                0,
157
                false,
158
                false,
159
                true,
160
                false,
161
                null
162
        );
163
        builder.create_table().add_column(
164
                "id",
165
                DataTypes.INT,
166
                0,
167
                0,
168
                true,
169
                false,
170
                false,
171
                true,
172
                0
173
        );
174
        builder.create_table().add_column(
175
                "geom",
176
                DataTypes.GEOMETRY,
177
                0,
178
                0,
179
                false,
180
                false,
181
                true,
182
                false,
183
                null
184
        );
185

  
186
        
187
        // CREATE TABLE "master"."dbo"."test1" ("name" VARCHAR(45) DEFAULT NULL NULL, "id" SERIAL DEFAULT '0' NOT NULL PRIMARY KEY, "geom" TEXT DEFAULT NULL NULL )
188
        System.out.println("# Test:: testCreateTable");
189
        System.out.println("# SQL:: " + builder.toString());
190
        System.out.println("# Variables:: " + ArrayUtils.toString(getVariableNames(builder)));
191
        System.out.println("# Parametros:: " + ArrayUtils.toString(getParameterNames(builder)));
192
        assertEquals(
193
                "CREATE TABLE \"master\".\"dbo\".\"test1\" (\"name\" VARCHAR(45) DEFAULT NULL NULL, \"id\" SERIAL DEFAULT '0' NOT NULL PRIMARY KEY, \"geom\" TEXT DEFAULT NULL NULL )",
194
                builder.toString()
195
        );
196
        assertEquals(
197
                "[]",
198
                ArrayUtils.toString(getVariableNames(builder))
199
        );
200
        assertEquals(
201
                "[]",
202
                ArrayUtils.toString(getParameterNames(builder))
203
        );
204
    }
205

  
206
    public void testDropTable() throws Exception {
207
        SQLBuilder builder = new SQLBuilderBase();
208
        
209
        builder.drop_table().table().database("master").schema("dbo").name("test1");
210

  
211
        // DROP TABLE "master"."dbo"."test1"; DELETE FROM GEOMETRY_COLUMNS WHERE f_table_schema = 'dbo' AND f_table_name = 'test1'
212
        
213
        System.out.println("# Test:: testDropTable");
214
        System.out.println("# SQL:: " + builder.toString());
215
        System.out.println("# Variables:: " + ArrayUtils.toString(getVariableNames(builder)));
216
        System.out.println("# Parametros:: " + ArrayUtils.toString(getParameterNames(builder)));
217
        assertEquals(
218
                "DROP TABLE \"master\".\"dbo\".\"test1\"; DELETE FROM GEOMETRY_COLUMNS WHERE f_table_schema = 'dbo' AND f_table_name = 'test1'",
219
                builder.toString()
220
        );
221
        assertEquals(
222
                "[]",
223
                ArrayUtils.toString(getVariableNames(builder))
224
        );
225
        assertEquals(
226
                "[]",
227
                ArrayUtils.toString(getParameterNames(builder))
228
        );
229
    }
230
    
231
    public void testFetchFeatureProviderByReference() throws Exception {
232
        SQLBuilder builder = new SQLBuilderBase();
233
        
234
        String value = "yoyo";
235
        builder.select().column().name("name");
236
        builder.select().column().name("id");
237
        builder.select().column().name("geom").as_geometry();
238
        builder.select().from().table().database("master").schema("dbo").name("test1");
239
        builder.select().where().set(
240
            builder.eq(
241
                builder.column("name"),
242
                builder.parameter(value).as_constant()
243
            )
244
        );
245
        builder.select().limit(1);
246

  
247
        // SELECT "name", "id", ST_AsBinary("geom") FROM "master"."dbo"."test1" WHERE ( ("name") = (?) ) LIMIT 1
248

  
249
        System.out.println("# Test:: testFetchFeatureProviderByReference");
250
        System.out.println("# SQL:: " + builder.toString());
251
        System.out.println("# Variables:: " + ArrayUtils.toString(getVariableNames(builder)));
252
        System.out.println("# Parametros:: " + ArrayUtils.toString(getParameterNames(builder)));
253
        assertEquals(
254
                "SELECT \"name\", \"id\", ST_AsBinary(\"geom\") FROM \"master\".\"dbo\".\"test1\" WHERE ( (\"name\") = (?) ) LIMIT 1",
255
                builder.toString()
256
        );
257
        assertEquals(
258
                "[geom, id, name]",
259
                ArrayUtils.toString(getVariableNames(builder))
260
        );
261
        assertEquals(
262
                "['yoyo']",
263
                ArrayUtils.toString(getParameterNames(builder))
264
        );
265
    }
266
    
267
    public void testFetchFeatureType() throws Exception {
268
        SQLBuilder builder = new SQLBuilderBase();
269

  
270
        builder.select().column().all();
271
        builder.select().from().table().database("master").schema("dbo").name("test1");
272
        builder.select().limit(1);
273

  
274
        System.out.println("# Test:: testFetchFeatureType");
275
        System.out.println("# SQL:: " + builder.toString());
276
        System.out.println("# Variables:: " + ArrayUtils.toString(getVariableNames(builder)));
277
        System.out.println("# Parametros:: " + ArrayUtils.toString(getParameterNames(builder)));
278
        
279
        //# Test:: testFetchFeatureType
280
        //# SQL:: SELECT * FROM [master].[dbo].[test1] LIMMIT 1
281
        //# Variables:: []
282
        //# Parametros:: []        
283
        
284
        assertEquals(
285
                "SELECT * FROM \"master\".\"dbo\".\"test1\" LIMIT 1",
286
                builder.toString()
287
        );
288
        assertEquals(
289
                "[]",
290
                ArrayUtils.toString(getVariableNames(builder))
291
        );
292
        assertEquals(
293
                "[]",
294
                ArrayUtils.toString(getParameterNames(builder))
295
        );
296
    }
297
        
298
    public void testPerformDeletes() throws Exception {
299
        SQLBuilder builder = new SQLBuilderBase();
300

  
301
        builder.delete().table().database("master").schema("dbo").name("test1");
302
        builder.delete().where().and(
303
            builder.eq( 
304
                builder.column("id1"),
305
                builder.parameter("id1").as_variable()
306
            )
307
        );
308
        builder.delete().where().and(
309
            builder.eq( 
310
                builder.column("id2"),
311
                builder.parameter("id2").as_variable()
312
            )
313
        );
314

  
315
        // DELETE FROM "master"."dbo"."test1" WHERE ( ("id1") = (?) ) AND ( ("id2") = (?) )
316

  
317
        System.out.println("# Test:: testPerformDeletes");
318
        System.out.println("# SQL:: " + builder.toString());
319
        System.out.println("# Variables:: " + ArrayUtils.toString(getVariableNames(builder)));
320
        System.out.println("# Parametros:: " + ArrayUtils.toString(getParameterNames(builder)));
321
        assertEquals(
322
                "DELETE FROM \"master\".\"dbo\".\"test1\" WHERE ( (\"id1\") = (?) ) AND ( (\"id2\") = (?) )",
323
                builder.toString()
324
        );
325
        assertEquals(
326
                "[id1, id2]",
327
                ArrayUtils.toString(getVariableNames(builder))
328
        );
329
        assertEquals(
330
                "[\"id1\", \"id2\"]",
331
                ArrayUtils.toString(getParameterNames(builder))
332
        );
333
    }
334

  
335
    public void testPerformInserts1() throws Exception {
336
        IProjection proj = CRSFactory.getCRS("EPSG:4326");
337

  
338
        SQLBuilder builder = new SQLBuilderBase();
339

  
340
        builder.insert().table().database("master").schema("dbo").name("test1");
341
        builder.insert().column().name("id").with_value(builder.parameter("id"));
342
        builder.insert().column().name("name").with_value(builder.parameter("name"));
343
        builder.insert().column().name("geom").with_value(builder.parameter("geom").as_geometry_variable().srs(proj));
344
        
345
        // INSERT INTO "master"."dbo"."test1" ( "id", "name", "geom" ) VALUES ( ?, ?, ST_GeomFromText(?, (4326)) )
346
        
347
        System.out.println("# Test:: testPerformInserts1");
348
        System.out.println("# SQL:: " + builder.toString());
349
        System.out.println("# Variables:: " + ArrayUtils.toString(getVariableNames(builder)));
350
        System.out.println("# Parametros:: " + ArrayUtils.toString(getParameterNames(builder)));
351
        assertEquals(
352
                "INSERT INTO \"master\".\"dbo\".\"test1\" ( \"id\", \"name\", \"geom\" ) VALUES ( ?, ?, ST_GeomFromText(?, (4326)) )",
353
                builder.toString()
354
        );
355
        assertEquals(
356
                "[geom, id, name]",
357
                ArrayUtils.toString(getVariableNames(builder))
358
        );
359
        assertEquals(
360
                "[\"id\", \"name\", \"geom\"]",
361
                ArrayUtils.toString(getParameterNames(builder))
362
        );
363
    }
364

  
365
    public void testPerformInserts2() throws Exception {
366
        IProjection proj = CRSFactory.getCRS("EPSG:4326");
367

  
368
        SQLBuilder builder = new SQLBuilderBase();
369

  
370
        builder.insert().table().database("master").schema("dbo").name("test1");
371
        builder.insert().column().name("id").with_value(builder.parameter("id"));
372
        builder.insert().column().name("name").with_value(builder.parameter("name"));
373
        builder.insert().column().name("geom").with_value(builder.parameter("geom").as_geometry_variable().srs(builder.parameter().value(proj)));
374
        
375
        // INSERT INTO "master"."dbo"."test1" ( "id", "name", "geom" ) VALUES ( ?, ?, ST_GeomFromText(?, (?)) )
376
        
377
        System.out.println("# Test:: testPerformInserts2");
378
        System.out.println("# SQL:: " + builder.toString());
379
        System.out.println("# Variables:: " + ArrayUtils.toString(getVariableNames(builder)));
380
        System.out.println("# Parametros:: " + ArrayUtils.toString(getParameterNames(builder)));
381
        assertEquals(
382
                "INSERT INTO \"master\".\"dbo\".\"test1\" ( \"id\", \"name\", \"geom\" ) VALUES ( ?, ?, ST_GeomFromText(?, (?)) )",
383
                builder.toString()
384
        );
385
        assertEquals(
386
                "[geom, id, name]",
387
                ArrayUtils.toString(getVariableNames(builder))
388
        );
389
        assertEquals(
390
                "[\"id\", \"name\", \"geom\", 4326]",
391
                ArrayUtils.toString(getParameterNames(builder))
392
        );
393
    }
394

  
395
    public void testPerformUpdates() throws Exception {
396
        IProjection proj = CRSFactory.getCRS("EPSG:4326");
397

  
398
        SQLBuilder builder = new SQLBuilderBase();
399

  
400
        builder.update().table().database("master").schema("dbo").name("test1");
401
        builder.update().where().and(
402
            builder.eq(
403
                builder.column("id"), 
404
                builder.parameter("id").as_variable()
405
            )
406
        );
407
        builder.update().column().name("name").with_value(builder.parameter("name"));
408
        builder.update().column().name("geom").with_value(
409
                builder.parameter("geom").as_geometry_variable().srs( builder.parameter().value(proj)) 
410
        );
411

  
412
        // UPDATE "master"."dbo"."test1" SET "name" = ?, "geom" = ST_GeomFromText(?, (?)) WHERE ( ("id") = (?) )
413

  
414
        System.out.println("# Test:: testPerformUpdates");
415
        System.out.println("# SQL:: " + builder.toString());
416
        System.out.println("# Variables:: " + ArrayUtils.toString(getVariableNames(builder)));
417
        System.out.println("# Parametros:: " + ArrayUtils.toString(getParameterNames(builder)));
418
        assertEquals(
419
                "UPDATE \"master\".\"dbo\".\"test1\" SET \"name\" = ?, \"geom\" = ST_GeomFromText(?, (?)) WHERE ( (\"id\") = (?) )",
420
                builder.toString()
421
        );
422
        assertEquals(
423
                "[geom, id, name]",
424
                ArrayUtils.toString(getVariableNames(builder))
425
        );
426
        assertEquals(
427
                "[\"name\", \"geom\", 4326, \"id\"]",
428
                ArrayUtils.toString(getParameterNames(builder))
429
        );
430
    }
431

  
432
    public void testGrant1() throws Exception {
433

  
434
        SQLBuilder builder = new SQLBuilderBase();
435

  
436
        builder.grant().table().database("master").schema("dbo").name("test1");
437
        builder.grant().role("prueba").select().insert().update();
438
        builder.grant().role("gis").all();
439
                
440
        
441
        System.out.println("# Test:: testGrant1");
442
        System.out.println("# SQL:: " + builder.toString());
443
        System.out.println("# Variables:: " + ArrayUtils.toString(getVariableNames(builder)));
444
        System.out.println("# Parametros:: " + ArrayUtils.toString(getParameterNames(builder)));
445
        assertEquals(
446
                "",
447
                builder.toString()
448
        );
449
        assertEquals(
450
                "[]",
451
                ArrayUtils.toString(getVariableNames(builder))
452
        );
453
        assertEquals(
454
                "[]",
455
                ArrayUtils.toString(getParameterNames(builder))
456
        );
457
    }
458

  
459
    public void testGrant2() throws Exception {
460

  
461
        SQLBuilder builder = new SQLBuilderBase();
462

  
463
        builder.grant().table().database("master").schema("dbo").name("test1");
464
        builder.grant().role("prueba").privilege(Privilege.SELECT)
465
                .privilege(Privilege.INSERT)
466
                .privilege(Privilege.UPDATE);
467
        builder.grant().role("gis").privilege(Privilege.ALL);
468
                
469
        
470
        System.out.println("# Test:: testGrant2");
471
        System.out.println("# SQL:: " + builder.toString());
472
        System.out.println("# Variables:: " + ArrayUtils.toString(getVariableNames(builder)));
473
        System.out.println("# Parametros:: " + ArrayUtils.toString(getParameterNames(builder)));
474
        assertEquals(
475
                "",
476
                builder.toString()
477
        );
478
        assertEquals(
479
                "[]",
480
                ArrayUtils.toString(getVariableNames(builder))
481
        );
482
        assertEquals(
483
                "[]",
484
                ArrayUtils.toString(getParameterNames(builder))
485
        );
486
    }
487

  
488

  
489
}
tags/org.gvsig.mssqlserver-1.0.19/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.fmap.dal.ExpressionBuilder;
10
import org.gvsig.fmap.dal.ExpressionBuilder.Parameter;
11
import org.gvsig.fmap.dal.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
    List<String> getVariableNames(ExpressionBuilder builder) {
51
        List<String> vars = new ArrayList<>();
52
        for (Variable var : builder.getVariables()) {
53
            vars.add(var.getName());
54
        }
55
        return vars;
56
    }
57
    
58
    List<String> getParameterNames(ExpressionBuilder builder) {
59
        List<String> params = new ArrayList<>();
60
        for (Parameter param : builder.getParameters()) {
61
            String s;
62
            switch(param.getType()) {
63
                case Constant:
64
                    Object value = param.getValue();
65
                    if( value==null ) {
66
                        s = "null";
67
                    } else if( value instanceof String ) {
68
                        s = "'" + (String)value + "'";
69
                    } else {
70
                        s = value.toString();
71
                    }    
72
                    break;
73
                case Geometry:
74
                case Variable:
75
                default:
76
                    s = "\"" + param.getName() + "\"";
77
            }
78
            params.add(s);
79
        }
80
        return params;
81
    }
82
    
83
    public SQLBuilder createSQLBuilder() {
84
        return new MSSQLServerSQLBuilder(helper);
85
    }
86
 
87
    public void testCalulateEnvelope() throws Exception {
88
        GeometryManager geometryManager = GeometryLocator.getGeometryManager();
89
        IProjection proj = CRSFactory.getCRS("EPSG:4326");
90
        
91
        Polygon limit = geometryManager.createPolygon(Geometry.SUBTYPES.GEOM2D);
92
        limit.addVertex(0, 0);
93
        limit.addVertex(0, 100);
94
        limit.addVertex(100, 100);
95
        limit.addVertex(100, 0);
96
        limit.addVertex(0, 0);
97
        
98
        SQLBuilder builder = createSQLBuilder();
99
        
100
        builder.select().column().value(
101
            builder.getAsGeometry(
102
              builder.ST_ExtentAggregate(
103
                builder.column("the_geom")
104
              )
105
            )
106
        ).as("envelope");
107
        builder.select().from().table().database("master").schema("dbo").name("test1");
108
        builder.select().where().set(
109
            builder.ST_Intersects(
110
                builder.ST_Envelope(
111
                    builder.column("the_geom")
112
                ),
113
                builder.geometry(limit, proj)
114
            )
115
        );
116
        builder.select().where().and(
117
                builder.custom("x = 27").add( builder.variable("x") )
118
        );
119
        
120
        System.out.println("# Test:: testCalulateEnvelope");
121
        System.out.println("# SQL:: " + builder.toString());
122
        System.out.println("# Variables:: " + ArrayUtils.toString(getVariableNames(builder)));
123
        System.out.println("# Parametros:: " + ArrayUtils.toString(getParameterNames(builder)));
124
    
125
        //# Test:: testCalulateEnvelope
126
        //# 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
127
        //# Variables:: [the_geom, x]
128
        //# Parametros:: []    
129
        assertEquals(
130
                "SELECT (geometry::EnvelopeAggregate([the_geom])).STAsBinary() AS [envelope] FROM [master].[dbo].[test1] WHERE (([the_geom]).STEnvelope()).STIntersects(geometry::STGeomFromWKB(0x000000000300000001000000050000000000000000000000000000000000000000000000004059000000000000405900000000000040590000000000004059000000000000000000000000000000000000000000000000000000000000, 4326)) AND x = 27",
131
                builder.toString()
132
        );
133
        assertEquals(
134
                "[the_geom, x]",
135
                ArrayUtils.toString(getVariableNames(builder))
136
        );
137
        assertEquals(
138
                "[]",
139
                ArrayUtils.toString(getParameterNames(builder))
140
        );
141
    }
142

  
143
    public void testCount() throws Exception {
144
        SQLBuilder builder = createSQLBuilder();
145
        
146
        builder.select().column().value(builder.count().all());
147
        builder.select().from().table().database("master").schema("dbo").name("test1");
148
        builder.select().from().subquery(null);
149
        builder.select().where().set( builder.custom("pp = 200").add(builder.variable("pp")));
150

  
151
        System.out.println("# Test:: testCount");
152
        System.out.println("# SQL:: " + builder.toString());
153
        System.out.println("# Variables:: " + ArrayUtils.toString(getVariableNames(builder)));
154
        System.out.println("# Parametros:: " + ArrayUtils.toString(getParameterNames(builder)));
155

  
156
        //# Test:: testCount
157
        //# SQL:: SELECT COUNT(*) FROM [master].[dbo].[test1] WHERE pp = 200
158
        //# Variables:: []
159
        //# Parametros:: []
160
    
161
        assertEquals(
162
                "SELECT COUNT(*) FROM [master].[dbo].[test1] WHERE pp = 200",
163
                builder.toString()
164
        );
165
        assertEquals(
166
                "[pp]",
167
                ArrayUtils.toString(getVariableNames(builder))
168
        );
169
        assertEquals(
170
                "[]",
171
                ArrayUtils.toString(getParameterNames(builder))
172
        );
173
    }
174
    
175
    public void testUpdateStatistics() throws Exception {
176
        SQLBuilder builder = createSQLBuilder();
177
        
178
        builder.update_table_statistics().table().database("master").schema("dbo").name("test1");
179

  
180
        System.out.println("# Test:: testUpdateStatistics");
181
        System.out.println("# SQL:: " + builder.toString());
182
        System.out.println("# Variables:: " + ArrayUtils.toString(getVariableNames(builder)));
183
        System.out.println("# Parametros:: " + ArrayUtils.toString(getParameterNames(builder)));
184

  
185
        //# Test:: testUpdateStatistics
186
        //# SQL:: UPDATE STATISTICS [master].[dbo].[test1]
187
        //# Variables:: []
188
        //# Parametros:: []
189
    
190
        assertEquals(
191
                "UPDATE STATISTICS [master].[dbo].[test1]",
192
                builder.toString()
193
        );
194
        assertEquals(
195
                "[]",
196
                ArrayUtils.toString(getVariableNames(builder))
197
        );
198
        assertEquals(
199
                "[]",
200
                ArrayUtils.toString(getParameterNames(builder))
201
        );
202
    }
203
    
204
    public void testCreateTable() throws Exception {
205
        SQLBuilder builder = createSQLBuilder();
206

  
207
        builder.create_table().table().database("master").schema("dbo").name("test1");
208
        builder.create_table().add_column(
209
                "name",
210
                DataTypes.STRING,
211
                45,
212
                0,
213
                false,
214
                false,
215
                true,
216
                false,
217
                null
218
        );
219
        builder.create_table().add_column(
220
                "id",
221
                DataTypes.INT,
222
                0,
223
                0,
224
                true,
225
                false,
226
                false,
227
                true,
228
                0
229
        );
230
        builder.create_table().add_column(
231
                "geom",
232
                DataTypes.GEOMETRY,
233
                0,
234
                0,
235
                false,
236
                false,
237
                true,
238
                false,
239
                null
240
        );
241

  
242
        System.out.println("# Test:: testCreateTable");
243
        System.out.println("# SQL:: " + builder.toString());
244
        System.out.println("# Variables:: " + ArrayUtils.toString(getVariableNames(builder)));
245
        System.out.println("# Parametros:: " + ArrayUtils.toString(getParameterNames(builder)));
246

  
247
        //# Test:: testCreateTable
248
        //# 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 )
249
        //# Variables:: []
250
        //# Parametros:: []
251

  
252
        assertEquals(
253
                "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 )",
254
                builder.toString()
255
        );
256
        assertEquals(
257
                "[]",
258
                ArrayUtils.toString(getVariableNames(builder))
259
        );
260
        assertEquals(
261
                "[]",
262
                ArrayUtils.toString(getParameterNames(builder))
263
        );
264
    }
265

  
266
    public void testDropTable() throws Exception {
267
        SQLBuilder builder = createSQLBuilder();
268
        
269
        builder.drop_table().table().database("master").schema("dbo").name("test1");
270

  
271
        System.out.println("# Test:: testDropTable");
272
        System.out.println("# SQL:: " + builder.toString());
273
        System.out.println("# Variables:: " + ArrayUtils.toString(getVariableNames(builder)));
274
        System.out.println("# Parametros:: " + ArrayUtils.toString(getParameterNames(builder)));
275

  
276
        //# Test:: testDropTable
277
        //# SQL:: DROP TABLE [master].[dbo].[test1]
278
        //# Variables:: []
279
        //# Parametros:: []
280
        
281
        assertEquals(
282
                "DROP TABLE [master].[dbo].[test1]",
283
                builder.toString()
284
        );
285
        assertEquals(
286
                "[]",
287
                ArrayUtils.toString(getVariableNames(builder))
288
        );
289
        assertEquals(
290
                "[]",
291
                ArrayUtils.toString(getParameterNames(builder))
292
        );
293
    }
294
    
295
    public void testFetchFeatureProviderByReference() throws Exception {
296
        SQLBuilder builder = createSQLBuilder();
297
        
298
        String value = "yoyo";
299
        builder.select().column().name("name");
300
        builder.select().column().name("id");
301
        builder.select().column().name("geom").as_geometry();
302
        builder.select().from().table().database("master").schema("dbo").name("test1");
303
        builder.select().where().set(
304
            builder.eq(
305
                builder.column("name"),
306
                builder.parameter(value).as_constant()
307
            )
308
        );
309
        builder.select().limit(1);
310

  
311
        System.out.println("# Test:: testFetchFeatureProviderByReference");
312
        System.out.println("# SQL:: " + builder.toString());
313
        System.out.println("# Variables:: " + ArrayUtils.toString(getVariableNames(builder)));
314
        System.out.println("# Parametros:: " + ArrayUtils.toString(getParameterNames(builder)));
315

  
316
        //# Test:: testFetchFeatureProviderByReference
317
        //# SQL:: SELECT TOP 1 [name], [id], ([geom]).STAsBinary() FROM [master].[dbo].[test1] WHERE ( ([name]) = (?) )
318
        //# Variables:: [geom, id, name]
319
        //# Parametros:: ['yoyo']
320

  
321
        assertEquals(
322
                "SELECT TOP 1 [name], [id], ([geom]).STAsBinary() FROM [master].[dbo].[test1] WHERE ( ([name]) = (?) )",
323
                builder.toString()
324
        );
325
        assertEquals(
326
                "[geom, id, name]",
327
                ArrayUtils.toString(getVariableNames(builder))
328
        );
329
        assertEquals(
330
                "['yoyo']",
331
                ArrayUtils.toString(getParameterNames(builder))
332
        );
333
    }
334
    
335
    public void testIsNull() throws Exception {
336
        SQLBuilder builder = createSQLBuilder();
337
        
338
        builder.select().column().name("name");
339
        builder.select().column().name("id");
340
        builder.select().column().name("geom").as_geometry();
341
        builder.select().from().table().database("master").schema("dbo").name("test1");
342
        builder.select().where().set(
343
            builder.and(
344
                builder.isNull(
345
                    builder.column("name")
346
                ),
347
                builder.notIsNull(
348
                        builder.column("id")
349
                )
350
            )
351
        );
352
        builder.select().limit(2);
353

  
354
        System.out.println("# Test:: testIsNull");
355
        System.out.println("# SQL:: " + builder.toString());
356
        System.out.println("# Variables:: " + ArrayUtils.toString(getVariableNames(builder)));
357
        System.out.println("# Parametros:: " + ArrayUtils.toString(getParameterNames(builder)));
358

  
359
        //# Test:: testIsNull
360
        //# SQL:: SELECT TOP 2 [name], [id], ([geom]).STAsBinary() FROM [master].[dbo].[test1] WHERE ( ([name]) IS NULL ) AND ( ([id]) NOT IS NULL )
361
        //# Variables:: [geom, id, name]
362
        //# Parametros:: []
363

  
364
        assertEquals(
365
                "SELECT TOP 2 [name], [id], ([geom]).STAsBinary() FROM [master].[dbo].[test1] WHERE ( ([name]) IS NULL ) AND ( ([id]) NOT IS NULL )",
366
                builder.toString()
367
        );
368
        assertEquals(
369
                "[geom, id, name]",
370
                ArrayUtils.toString(getVariableNames(builder))
371
        );
372
        assertEquals(
373
                "[]",
374
                ArrayUtils.toString(getParameterNames(builder))
375
        );
376
    }
377
    
378
    public void testFetchFeatureType() throws Exception {
379
        SQLBuilder builder = createSQLBuilder();
380

  
381
        builder.select().column().all();
382
        builder.select().from().table().database("master").schema("dbo").name("test1");
383
        builder.select().limit(1);
384

  
385
        System.out.println("# Test:: testFetchFeatureType");
386
        System.out.println("# SQL:: " + builder.toString());
387
        System.out.println("# Variables:: " + ArrayUtils.toString(getVariableNames(builder)));
388
        System.out.println("# Parametros:: " + ArrayUtils.toString(getParameterNames(builder)));
389

  
390
        //# Test:: testFetchFeatureType
391
        //# SQL:: SELECT TOP 1 * FROM [master].[dbo].[test1]
392
        //# Variables:: []
393
        //# Parametros:: []
394
    
395
        assertEquals(
396
                "SELECT TOP 1 * FROM [master].[dbo].[test1]",
397
                builder.toString()
398
        );
399
        assertEquals(
400
                "[]",
401
                ArrayUtils.toString(getVariableNames(builder))
402
        );
403
        assertEquals(
404
                "[]",
405
                ArrayUtils.toString(getParameterNames(builder))
406
        );
407
    }
408
        
409
    public void testPerformDeletes() throws Exception {
410
        SQLBuilder builder = createSQLBuilder();
411

  
412
        builder.delete().table().database("master").schema("dbo").name("test1");
413
        builder.delete().where().and(
414
            builder.eq( 
415
                builder.column("id1"),
416
                builder.parameter("id1").as_variable()
417
            )
418
        );
419
        builder.delete().where().and(
420
            builder.eq( 
421
                builder.column("id2"),
422
                builder.parameter("id2").as_variable()
423
            )
424
        );
425

  
426
        System.out.println("# Test:: testPerformDeletes");
427
        System.out.println("# SQL:: " + builder.toString());
428
        System.out.println("# Variables:: " + ArrayUtils.toString(getVariableNames(builder)));
429
        System.out.println("# Parametros:: " + ArrayUtils.toString(getParameterNames(builder)));
430

  
431
        //# Test:: testPerformDeletes
432
        //# SQL:: DELETE FROM [master].[dbo].[test1] WHERE ( ([id1]) = (?) ) AND ( ([id2]) = (?) )
433
        //# Variables:: [id1, id2]
434
        //# Parametros:: ["id1", "id2"]
435

  
436
        assertEquals(
437
                "DELETE FROM [master].[dbo].[test1] WHERE ( ([id1]) = (?) ) AND ( ([id2]) = (?) )",
438
                builder.toString()
439
        );
440
        assertEquals(
441
                "[id1, id2]",
442
                ArrayUtils.toString(getVariableNames(builder))
443
        );
444
        assertEquals(
445
                "[\"id1\", \"id2\"]",
446
                ArrayUtils.toString(getParameterNames(builder))
447
        );
448
    }
449

  
450
    public void testPerformInserts1() throws Exception {
451
        IProjection proj = CRSFactory.getCRS("EPSG:4326");
452

  
453
        SQLBuilder builder = createSQLBuilder();
454

  
455
        builder.insert().table().database("master").schema("dbo").name("test1");
456
        builder.insert().column().name("id").with_value(builder.parameter("id"));
457
        builder.insert().column().name("name").with_value(builder.parameter("name"));
458
        builder.insert().column().name("geom").with_value(builder.parameter("geom").as_geometry_variable().srs(proj));
459
        
460
        System.out.println("# Test:: testPerformInserts1");
461
        System.out.println("# SQL:: " + builder.toString());
462
        System.out.println("# Variables:: " + ArrayUtils.toString(getVariableNames(builder)));
463
        System.out.println("# Parametros:: " + ArrayUtils.toString(getParameterNames(builder)));
464

  
465
        //# Test:: testPerformInserts1
466
        //# SQL:: INSERT INTO [master].[dbo].[test1] ( [id], [name], [geom] ) VALUES ( ?, ?, geometry::STGeomFromWKB(?, 4326) )
467
        //# Variables:: [geom, id, name]
468
        //# Parametros:: ["id", "name", "geom"]
469
        
470
        assertEquals(
471
                "INSERT INTO [master].[dbo].[test1] ( [id], [name], [geom] ) VALUES ( ?, ?, geometry::STGeomFromWKB(?, 4326) )",
472
                builder.toString()
473
        );
474
        assertEquals(
475
                "[geom, id, name]",
476
                ArrayUtils.toString(getVariableNames(builder))
477
        );
478
        assertEquals(
479
                "[\"id\", \"name\", \"geom\"]",
480
                ArrayUtils.toString(getParameterNames(builder))
481
        );
482
    }
483

  
484
    public void testPerformInserts2() throws Exception {
485
        IProjection proj = CRSFactory.getCRS("EPSG:4326");
486

  
487
        SQLBuilder builder = createSQLBuilder();
488

  
489
        builder.insert().table().database("master").schema("dbo").name("test1");
490
        builder.insert().column().name("id").with_value(builder.parameter("id"));
491
        builder.insert().column().name("name").with_value(builder.parameter("name"));
492
        builder.insert().column().name("geom").with_value(builder.parameter("geom").as_geometry_variable().srs(proj));
493
        
494
        System.out.println("# Test:: testPerformInserts2");
495
        System.out.println("# SQL:: " + builder.toString());
496
        System.out.println("# Variables:: " + ArrayUtils.toString(getVariableNames(builder)));
497
        System.out.println("# Parametros:: " + ArrayUtils.toString(getParameterNames(builder)));
498
    
499
        //# Test:: testPerformInserts2
500
        //# SQL:: INSERT INTO [master].[dbo].[test1] ( [id], [name], [geom] ) VALUES ( ?, ?, geometry::STGeomFromWKB(?, ?) )
501
        //# Variables:: [geom, id, name]
502
        //# Parametros:: ["id", "name", "geom", 4326]
503

  
504
        assertEquals(
505
                "INSERT INTO [master].[dbo].[test1] ( [id], [name], [geom] ) VALUES ( ?, ?, geometry::STGeomFromWKB(?, ?) )",
506
                builder.toString()
507
        );
508
        assertEquals(
509
                "[geom, id, name]",
510
                ArrayUtils.toString(getVariableNames(builder))
511
        );
512
        assertEquals(
513
                "[\"id\", \"name\", \"geom\", 4326]",
514
                ArrayUtils.toString(getParameterNames(builder))
515
        );
516
    }
517

  
518
    public void testPerformUpdates() throws Exception {
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff