Revision 43129

View differences:

trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.spi/pom.xml
31 31
            <scope>compile</scope>
32 32
        </dependency>
33 33
        <dependency>
34
            <groupId>org.gvsig</groupId>
35
            <artifactId>org.gvsig.fmap.dal.impl</artifactId>
36
            <scope>test</scope>
37
        </dependency>
38
        <dependency>
39 34
            <groupId>org.gnu</groupId>
40 35
            <artifactId>jel</artifactId>
41 36
            <scope>compile</scope>
42 37
        </dependency>
43 38
        <dependency>
44 39
            <groupId>org.gvsig</groupId>
45
            <artifactId>org.gvsig.tools.lib</artifactId>
46
            <type>test-jar</type>
47
            <scope>test</scope>
48
        </dependency>
49
        <dependency>
50
            <groupId>org.gvsig</groupId>
51 40
            <artifactId>org.gvsig.fmap.geometry.api</artifactId>
52 41
            <scope>compile</scope>
53 42
        </dependency>
54 43
        <dependency>
55 44
            <groupId>org.gvsig</groupId>
56
            <artifactId>${org.gvsig.fmap.geometry.impl}</artifactId>
57
            <scope>test</scope>
58
        </dependency>    
59
        <dependency>
60
            <groupId>org.gvsig</groupId>
61 45
            <artifactId>org.gvsig.timesupport.lib.api</artifactId>
62 46
            <scope>compile</scope>
63 47
        </dependency>  
......
71 55
            <artifactId>org.gvsig.compat.api</artifactId>
72 56
            <scope>compile</scope>
73 57
        </dependency>    
74
        <dependency>
75
            <groupId>org.gvsig</groupId>
76
            <artifactId>org.gvsig.compat.se</artifactId>
77
            <scope>test</scope>
78
        </dependency>
79
        <dependency>
80
            <groupId>org.gvsig</groupId>
81
            <artifactId>org.gvsig.metadata.lib.basic.impl</artifactId>
82
            <scope>test</scope>
83
        </dependency>      
84
        <dependency>
85
            <groupId>org.gvsig</groupId>
86
            <artifactId>org.gvsig.projection.cresques.impl</artifactId>
87
            <scope>test</scope>
88
        </dependency>
89
        <dependency>
90
            <groupId>org.gvsig</groupId>
91
            <artifactId>org.gvsig.timesupport.lib.impl</artifactId>
92
            <scope>test</scope>
93
        </dependency>    
94 58
    </dependencies>
95 59
</project>
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/pom.xml
57 57
            <artifactId>easymockclassextension</artifactId>
58 58
        </dependency>
59 59

  
60

  
61
        <dependency>
62
            <groupId>org.gvsig</groupId>
63
            <artifactId>org.gvsig.tools.lib</artifactId>
64
            <type>test-jar</type>
65
            <scope>test</scope>
66
        </dependency>
67
        <dependency>
68
            <groupId>org.gvsig</groupId>
69
            <artifactId>${org.gvsig.fmap.geometry.impl}</artifactId>
70
            <scope>test</scope>
71
        </dependency>    
72
        <dependency>
73
            <groupId>org.gvsig</groupId>
74
            <artifactId>org.gvsig.compat.se</artifactId>
75
            <scope>test</scope>
76
        </dependency>
77
        <dependency>
78
            <groupId>org.gvsig</groupId>
79
            <artifactId>org.gvsig.metadata.lib.basic.impl</artifactId>
80
            <scope>test</scope>
81
        </dependency>      
82
        <dependency>
83
            <groupId>org.gvsig</groupId>
84
            <artifactId>org.gvsig.projection.cresques.impl</artifactId>
85
            <scope>test</scope>
86
        </dependency>
87
        <dependency>
88
            <groupId>org.gvsig</groupId>
89
            <artifactId>org.gvsig.timesupport.lib.impl</artifactId>
90
            <scope>test</scope>
91
        </dependency>    
92

  
60 93
    </dependencies>
61 94

  
62 95

  
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/test/java/org/gvsig/fmap/dal/store/ExpressionBuilderTest.java
1
package org.gvsig.fmap.dal.store;
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
}
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/test/java/org/gvsig/fmap/dal/store/SQLBuilderTest.java
1
package org.gvsig.fmap.dal.store;
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.Parameter;
10
import org.gvsig.fmap.dal.ExpressionBuilder.Variable;
11
import org.gvsig.fmap.dal.SQLBuilder;
12
import org.gvsig.fmap.dal.SQLBuilder.Privilege;
13
import org.gvsig.fmap.dal.feature.spi.SQLBuilderBase;
14
import org.gvsig.fmap.geom.DataTypes;
15
import org.gvsig.fmap.geom.Geometry;
16
import org.gvsig.fmap.geom.GeometryLocator;
17
import org.gvsig.fmap.geom.GeometryManager;
18
import org.gvsig.fmap.geom.primitive.Polygon;
19
import org.gvsig.tools.junit.AbstractLibraryAutoInitTestCase;
20

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

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

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

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

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

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

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

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

  
202
    public void testDropTable() throws Exception {
203
        SQLBuilder builder = new SQLBuilderBase();
204
        
205
        builder.drop_table().table().database("master").schema("dbo").name("test1");
206

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

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

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

  
266
        builder.select().column().all();
267
        builder.select().from().table().database("master").schema("dbo").name("test1");
268
        builder.select().limit(1);
269

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

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

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

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

  
331
    public void testPerformInserts1() throws Exception {
332
        IProjection proj = CRSFactory.getCRS("EPSG:4326");
333

  
334
        SQLBuilder builder = new SQLBuilderBase();
335

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

  
361
    public void testPerformInserts2() throws Exception {
362
        IProjection proj = CRSFactory.getCRS("EPSG:4326");
363

  
364
        SQLBuilder builder = new SQLBuilderBase();
365

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

  
389
    public void testPerformUpdates() throws Exception {
390
        IProjection proj = CRSFactory.getCRS("EPSG:4326");
391

  
392
        SQLBuilder builder = new SQLBuilderBase();
393

  
394
        builder.update().table().database("master").schema("dbo").name("test1");
395
        builder.update().where().and(
396
            builder.eq(
397
                builder.column("id"), 
398
                builder.parameter("id").as_variable()
399
            )
400
        );
401
        builder.update().column().name("name").with_value(builder.parameter("name"));
402
        builder.update().column().name("geom").with_value(
403
                builder.parameter("geom").as_geometry_variable().srs(builder.parameter().value(proj)) 
404
        );
405

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

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

  
426
    public void testGrant1() throws Exception {
427

  
428
        SQLBuilder builder = new SQLBuilderBase();
429

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

  
453
    public void testGrant2() throws Exception {
454

  
455
        SQLBuilder builder = new SQLBuilderBase();
456

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

  
482

  
483
}

Also available in: Unified diff