Revision 43114

View differences:

trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.jdbc/src/test/java/org/gvsig/fmap/dal/store/jdbc2/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
}
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.jdbc/src/test/java/org/gvsig/fmap/dal/store/jdbc2/SQLBuilderTest.java
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
                true,
159
                false,
160
                null
161
        );
162
        builder.create_table().add_column(
163
                "id",
164
                DataTypes.INT,
165
                0,
166
                0,
167
                true,
168
                false,
169
                true,
170
                0
171
        );
172
        builder.create_table().add_column(
173
                "geom",
174
                DataTypes.GEOMETRY,
175
                0,
176
                0,
177
                false,
178
                true,
179
                false,
180
                null
181
        );
182

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

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

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

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

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

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

  
271
        System.out.println("# Test:: testFetchFeatureType");
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:: testFetchFeatureType
277
        //# SQL:: SELECT * FROM [master].[dbo].[test1] LIMMIT 1
278
        //# Variables:: []
279
        //# Parametros:: []        
280
        
281
        assertEquals(
282
                "SELECT * FROM \"master\".\"dbo\".\"test1\" LIMIT 1",
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 testPerformDeletes() throws Exception {
296
        SQLBuilder builder = new SQLBuilderBase();
297

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

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

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

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

  
335
        SQLBuilder builder = new SQLBuilderBase();
336

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

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

  
365
        SQLBuilder builder = new SQLBuilderBase();
366

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

  
392
    public void testPerformUpdates() throws Exception {
393
        IProjection proj = CRSFactory.getCRS("EPSG:4326");
394

  
395
        SQLBuilder builder = new SQLBuilderBase();
396

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

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

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

  
429
    public void testGrant1() throws Exception {
430

  
431
        SQLBuilder builder = new SQLBuilderBase();
432

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

  
456
    public void testGrant2() throws Exception {
457

  
458
        SQLBuilder builder = new SQLBuilderBase();
459

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

  
485

  
486
}
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.jdbc/src/main/java/org/gvsig/fmap/dal/store/jdbc2/spi/operations/AbstractConnectionOperation.java
17 17
    final static protected Logger logger = LoggerFactory.getLogger(AbstractConnectionOperation.class);
18 18

  
19 19
    final protected JDBCHelper helper;
20
    
21
    private Connection conn = null;
20 22

  
21 23
    public AbstractConnectionOperation(JDBCHelper helper) {
22 24
        this.helper = helper;
......
47 49
        }
48 50
    }
49 51

  
52
    protected Connection getConnection() {
53
        return this.conn;
54
    }
55
    
50 56
    public Object perform_operation() throws Exception {
51 57
            Object result = null;
52
        Connection conn = null;
53 58
        try {
54 59
            logger.debug("preparing execution of "+this.getClass().getSimpleName()+".");
55 60
            conn = helper.getConnection();
......
76 81
            return result;
77 82
        } finally {
78 83
            helper.closeConnection(conn);
84
            conn = null;
79 85
        }
80 86
    }
81 87
//
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.jdbc/src/main/java/org/gvsig/fmap/dal/store/jdbc2/spi/operations/FetchFeatureTypeOperation.java
65 65
        return true;
66 66
    }
67 67
    
68
    protected String getDatabase() {
69
        return this.dbname;
70
    }
71
    
72
    protected String getSchema() {
73
        return this.schema;
74
    }
75
    
76
    protected String getTablename() {
77
        return this.table;
78
    }
79
    
68 80
    public void fetch(
69 81
            EditableFeatureType featureType,
70 82
            Connection conn,
......
106 118
            boolean firstGeometryAttrFound = false;
107 119
            for (i = 1; i <= rsMetadata.getColumnCount(); i++) {
108 120
                attr = getAttributeFromMetadata(featureType, conn, rsMetadata, i);
109
                if (pks != null && pks.contains(attr.getName())) {
121
                if ( isInPrimaryKeys(pks,attr) ) {
110 122
                    attr.setIsPrimaryKey(true);
111 123
                }
112 124
                if (attr.getType() == DataTypes.GEOMETRY) {
......
122 134

  
123 135
            }
124 136

  
125
            if (geometriesColumns > 0) {
126
                fetch_CRS_and_shapeType(conn, rsMetadata, featureType, schema, table);
127
            }
128

  
129 137
            if (defaultGeometryColumn == null && geometriesColumns == 1) {
130 138
                featureType.setDefaultGeometryAttributeName(lastGeometry);
131 139
            }
......
142 150
        }
143 151
    }
144 152

  
153
    protected boolean isInPrimaryKeys(List<String> pks, EditableFeatureAttributeDescriptor attr) {
154
        return pks != null && pks.contains(attr.getName());
155
    }
156
    
145 157
    protected List<String> getPrimaryKeysFromMetadata(
146 158
            Connection conn,
147 159
            String catalog,
......
286 298
                );
287 299
                break;
288 300
            case DataTypes.GEOMETRY:
289
                this.fetchGeometryType(attr, rsMetadata, colIndex);
301
                this.fetchGeometryTypeAndSRS(attr, rsMetadata, colIndex);
290 302
                break;
291 303
        }
292 304
        return attr;
293 305
    }
294 306

  
295
    protected void fetchGeometryType(
296
            EditableFeatureAttributeDescriptor attr,
297
            ResultSetMetaData rsMetadata,
298
            int colIndex
299
        ) {
300
        try {
301
            GeometryType geomType = GeometryLocator.getGeometryManager().getGeometryType(
302
                    Geometry.TYPES.GEOMETRY,
303
                    Geometry.SUBTYPES.GEOM2D
304
            );
305
            attr.setGeometryType(geomType);
306
        } catch (Exception ex) {
307
            logger.warn("Can't get default geometry type.",ex);
308
        }
309
    }
310
    
311 307
    protected int getDataTypeFromMetadata(
312 308
            ResultSetMetaData rsMetadata,
313 309
            int colIndex
......
369 365
        }
370 366
    }
371 367

  
372
    protected void fetch_CRS_and_shapeType(
373
            Connection conn,
368
    /**
369
     * Inicializa el tipo, subtipo y SRS del attributo de tipo geometria.
370
     * 
371
     * @param attr
372
     * @param rsMetadata
373
     * @param colIndex 
374
     */
375
    protected void fetchGeometryTypeAndSRS(
376
            EditableFeatureAttributeDescriptor attr,
374 377
            ResultSetMetaData rsMetadata,
375
            EditableFeatureType featureType,
376
            String schema,
377
            String table
378
        ) throws SQLException {
379

  
380
        // Nothing to do
378
            int colIndex
379
        ) {
380
        if( attr.getType()!=DataTypes.GEOMETRY ) {
381
            return;
382
        }
383
        try {
384
            GeometryType geomType = GeometryLocator.getGeometryManager().getGeometryType(
385
                    Geometry.TYPES.GEOMETRY,
386
                    Geometry.SUBTYPES.GEOM2D
387
            );
388
            attr.setGeometryType(geomType);
389
            attr.setSRS(null);
390
        } catch (Exception ex) {
391
            logger.warn("Can't get default geometry type.",ex);
392
        }
381 393
    }
382

  
394
    
383 395
}
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.jdbc/src/main/java/org/gvsig/fmap/dal/store/jdbc2/spi/operations/CreateTableOperation.java
13 13
import org.gvsig.fmap.dal.store.jdbc2.spi.JDBCSQLBuilderBase;
14 14
import org.gvsig.fmap.dal.store.jdbc.exception.JDBCSQLException;
15 15
import org.gvsig.fmap.dal.store.jdbc2.JDBCUtils;
16
import org.gvsig.fmap.geom.DataTypes;
16 17

  
17 18
public class CreateTableOperation extends AbstractConnectionOperation {
18 19

  
......
65 66
        JDBCSQLBuilderBase sqlbuilder = this.createSQLBuilder();
66 67
        sqlbuilder.create_table().table().database(dbName).schema(schemaName).name(tableName);
67 68
        for (FeatureAttributeDescriptor attr : type) {
68
            sqlbuilder.create_table().add_column(
69
                    attr.getName(),
70
                    attr.getType(),
71
                    attr.getSize(),
72
                    attr.getPrecision(),
73
                    attr.isPrimaryKey(),
74
                    attr.allowNull(),
75
                    attr.isAutomatic(),
76
                    attr.getDefaultValue()
77
            );
69
            if( attr.getType()==DataTypes.GEOMETRY ) {
70
                sqlbuilder.create_table().add_geometry_column(
71
                        attr.getName(),
72
                        attr.getGeomType().getType(),
73
                        attr.getGeomType().getSubType(),
74
                        attr.getSRS(),
75
                        attr.allowNull()
76
                );
77
            } else {
78
                sqlbuilder.create_table().add_column(
79
                        attr.getName(),
80
                        attr.getType(),
81
                        attr.getSize(),
82
                        attr.getPrecision(),
83
                        attr.isPrimaryKey(),
84
                        attr.allowNull(),
85
                        attr.isAutomatic(),
86
                        attr.getDefaultValue()
87
                );
88
            }
78 89
        }
79 90
        for (Pair<String, SQLBuilder.Privilege> roleAndPrivilege : rolesAndPrivileges) {
80 91
            sqlbuilder.grant().role(roleAndPrivilege.getLeft()).privilege(roleAndPrivilege.getRight());
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.jdbc/src/main/java/org/gvsig/fmap/dal/store/jdbc2/spi/JDBCHelperBase.java
6 6
import java.sql.ResultSet;
7 7
import org.apache.commons.lang3.StringUtils;
8 8
import org.cresques.cts.IProjection;
9
import org.gvsig.fmap.crs.CRSFactory;
9 10
import org.gvsig.fmap.dal.DataTypes;
10 11
import org.gvsig.fmap.dal.exception.DataException;
11 12
import org.gvsig.fmap.dal.exception.InitializeException;
......
334 335
        int id = Integer.parseInt(ss[1]);
335 336
        return id;
336 337
    }
338

  
339
    @Override
340
    public IProjection getProjectionFromSRSId(int srsid) {
341
        // Dumb implementation
342
        if( srsid < 2000 ) {
343
            return null;
344
        }
345
        IProjection proj = CRSFactory.getCRS("EPSG:"+srsid);
346
        return proj;
347
    }
337 348
    
338 349
    @Override
339 350
    public JDBCStoreProvider createProvider(
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.jdbc/src/main/java/org/gvsig/fmap/dal/store/jdbc2/JDBCHelper.java
159 159
    ) throws InitializeException;
160 160

  
161 161
    public int getSRSCode(IProjection crs);
162
    
163
    public IProjection getProjectionFromSRSId(int srsid);
162 164

  
163 165
    public JDBCNewStoreParameters createNewStoreParameters();
164 166

  
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.jdbc/pom.xml
50 50
        <type>test-jar</type>
51 51
        <scope>test</scope>
52 52
    </dependency>
53
    
54 53
    <dependency>
54
        <groupId>org.gvsig</groupId>
55
        <artifactId>org.gvsig.tools.lib</artifactId>
56
        <type>test-jar</type>
57
        <scope>test</scope>
58
    </dependency>    
59
    <dependency>
55 60
        <groupId>mysql</groupId>
56 61
        <artifactId>mysql-connector-java</artifactId>
57 62
        <scope>test</scope>
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.impl/src/main/java/org/gvsig/fmap/dal/swing/impl/jdbc/DefaultJDBCConnectionPanelView.xml
24 24
    </at>
25 25
    <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
26 26
   </super>
27
   <at name="id">/home/jjdelcerro/datos/devel/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.impl/src/main/java/org/gvsig/fmap/dal/swing/impl/jdbc/DefaultJDBCConnectionPanelView.java.xml</at>
27
   <at name="id">/home/jjdelcerro/data/devel/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.impl/src/main/java/org/gvsig/fmap/dal/swing/impl/jdbc/DefaultJDBCConnectionPanelView.xml</at>
28 28
   <at name="rowspecs">CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE</at>
29 29
   <at name="colspecs">FILL:DEFAULT:NONE,FILL:DEFAULT:NONE,FILL:DEFAULT:NONE,FILL:DEFAULT:GROW(1.0),FILL:DEFAULT:NONE</at>
30 30
   <at name="components">
......
53 53
          <at name="classname">com.jeta.forms.components.label.JETALabel</at>
54 54
          <at name="properties">
55 55
           <object classname="com.jeta.forms.store.support.PropertyMap">
56
            <at name="text">Nombre de la conexion</at>
57
            <at name="height">14</at>
58
            <at name="width">131</at>
59
            <at name="name">lblConnectionName</at>
60
            <at name="fill">
61
             <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
62
              <at name="name">fill</at>
63
             </object>
64
            </at>
65 56
            <at name="border">
66 57
             <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
67 58
              <super classname="com.jeta.forms.store.properties.BorderProperty">
......
82 73
              </at>
83 74
             </object>
84 75
            </at>
76
            <at name="name">lblConnectionName</at>
77
            <at name="width">131</at>
78
            <at name="text">Nombre de la conexion</at>
79
            <at name="fill">
80
             <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
81
              <at name="name">fill</at>
82
             </object>
83
            </at>
84
            <at name="height">14</at>
85 85
           </object>
86 86
          </at>
87 87
         </object>
......
113 113
          <at name="classname">com.jeta.forms.components.label.JETALabel</at>
114 114
          <at name="properties">
115 115
           <object classname="com.jeta.forms.store.support.PropertyMap">
116
            <at name="text">Conector</at>
117
            <at name="height">14</at>
118
            <at name="width">131</at>
119
            <at name="name">lblConnector</at>
120
            <at name="fill">
121
             <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
122
              <at name="name">fill</at>
123
             </object>
124
            </at>
125 116
            <at name="border">
126 117
             <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
127 118
              <super classname="com.jeta.forms.store.properties.BorderProperty">
......
142 133
              </at>
143 134
             </object>
144 135
            </at>
136
            <at name="name">lblConnector</at>
137
            <at name="width">131</at>
138
            <at name="text">Conector</at>
139
            <at name="fill">
140
             <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
141
              <at name="name">fill</at>
142
             </object>
143
            </at>
144
            <at name="height">14</at>
145 145
           </object>
146 146
          </at>
147 147
         </object>
......
173 173
          <at name="classname">com.jeta.forms.components.label.JETALabel</at>
174 174
          <at name="properties">
175 175
           <object classname="com.jeta.forms.store.support.PropertyMap">
176
            <at name="text">Servidor</at>
177
            <at name="height">14</at>
178
            <at name="width">131</at>
179
            <at name="name">lblServer</at>
180
            <at name="fill">
181
             <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
182
              <at name="name">fill</at>
183
             </object>
184
            </at>
185 176
            <at name="border">
186 177
             <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
187 178
              <super classname="com.jeta.forms.store.properties.BorderProperty">
......
202 193
              </at>
203 194
             </object>
204 195
            </at>
196
            <at name="name">lblServer</at>
197
            <at name="width">131</at>
198
            <at name="text">Servidor</at>
199
            <at name="fill">
200
             <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
201
              <at name="name">fill</at>
202
             </object>
203
            </at>
204
            <at name="height">14</at>
205 205
           </object>
206 206
          </at>
207 207
         </object>
......
233 233
          <at name="classname">com.jeta.forms.components.label.JETALabel</at>
234 234
          <at name="properties">
235 235
           <object classname="com.jeta.forms.store.support.PropertyMap">
236
            <at name="text">Puerto</at>
237
            <at name="height">14</at>
238
            <at name="width">131</at>
239
            <at name="name">lblPort</at>
240
            <at name="fill">
241
             <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
242
              <at name="name">fill</at>
243
             </object>
244
            </at>
245 236
            <at name="border">
246 237
             <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
247 238
              <super classname="com.jeta.forms.store.properties.BorderProperty">
......
262 253
              </at>
263 254
             </object>
264 255
            </at>
256
            <at name="name">lblPort</at>
257
            <at name="width">131</at>
258
            <at name="text">Puerto</at>
259
            <at name="fill">
260
             <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
261
              <at name="name">fill</at>
262
             </object>
263
            </at>
264
            <at name="height">14</at>
265 265
           </object>
266 266
          </at>
267 267
         </object>
......
293 293
          <at name="classname">com.jeta.forms.components.label.JETALabel</at>
294 294
          <at name="properties">
295 295
           <object classname="com.jeta.forms.store.support.PropertyMap">
296
            <at name="text">Base de datos</at>
297
            <at name="height">14</at>
298
            <at name="width">131</at>
299
            <at name="name">lblDataBase</at>
300
            <at name="fill">
301
             <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
302
              <at name="name">fill</at>
303
             </object>
304
            </at>
305 296
            <at name="border">
306 297
             <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
307 298
              <super classname="com.jeta.forms.store.properties.BorderProperty">
......
322 313
              </at>
323 314
             </object>
324 315
            </at>
316
            <at name="name">lblDataBase</at>
317
            <at name="width">131</at>
318
            <at name="text">Base de datos</at>
319
            <at name="fill">
320
             <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
321
              <at name="name">fill</at>
322
             </object>
323
            </at>
324
            <at name="height">14</at>
325 325
           </object>
326 326
          </at>
327 327
         </object>
......
353 353
          <at name="classname">com.jeta.forms.components.label.JETALabel</at>
354 354
          <at name="properties">
355 355
           <object classname="com.jeta.forms.store.support.PropertyMap">
356
            <at name="text">Usuario</at>
357
            <at name="height">14</at>
358
            <at name="width">131</at>
359
            <at name="name">lblUsername</at>
360
            <at name="fill">
361
             <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
362
              <at name="name">fill</at>
363
             </object>
364
            </at>
365 356
            <at name="border">
366 357
             <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
367 358
              <super classname="com.jeta.forms.store.properties.BorderProperty">
......
382 373
              </at>
383 374
             </object>
384 375
            </at>
376
            <at name="name">lblUsername</at>
377
            <at name="width">131</at>
378
            <at name="text">Usuario</at>
379
            <at name="fill">
380
             <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
381
              <at name="name">fill</at>
382
             </object>
383
            </at>
384
            <at name="height">14</at>
385 385
           </object>
386 386
          </at>
387 387
         </object>
......
413 413
          <at name="classname">com.jeta.forms.components.label.JETALabel</at>
414 414
          <at name="properties">
415 415
           <object classname="com.jeta.forms.store.support.PropertyMap">
416
            <at name="text">Clave</at>
417
            <at name="height">14</at>
418
            <at name="width">131</at>
419
            <at name="name">lblPassword</at>
420
            <at name="fill">
421
             <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
422
              <at name="name">fill</at>
423
             </object>
424
            </at>
425 416
            <at name="border">
426 417
             <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
427 418
              <super classname="com.jeta.forms.store.properties.BorderProperty">
......
442 433
              </at>
443 434
             </object>
444 435
            </at>
436
            <at name="name">lblPassword</at>
437
            <at name="width">131</at>
438
            <at name="text">Clave</at>
439
            <at name="fill">
440
             <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
441
              <at name="name">fill</at>
442
             </object>
443
            </at>
444
            <at name="height">14</at>
445 445
           </object>
446 446
          </at>
447 447
         </object>
......
473 473
          <at name="classname">javax.swing.JComboBox</at>
474 474
          <at name="properties">
475 475
           <object classname="com.jeta.forms.store.support.PropertyMap">
476
            <at name="height">20</at>
477
            <at name="requestFocusEnabled">false</at>
478
            <at name="items">
479
             <object classname="com.jeta.forms.store.properties.ItemsProperty">
480
              <at name="name">items</at>
481
             </object>
482
            </at>
483
            <at name="componentCount">3</at>
484
            <at name="width">244</at>
485
            <at name="name">cboConnections</at>
486 476
            <at name="border">
487 477
             <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
488 478
              <super classname="com.jeta.forms.store.properties.BorderProperty">
......
503 493
              </at>
504 494
             </object>
505 495
            </at>
496
            <at name="componentCount">3</at>
506 497
            <at name="editable">true</at>
498
            <at name="requestFocusEnabled">false</at>
499
            <at name="name">cboConnections</at>
500
            <at name="width">760</at>
501
            <at name="items">
502
             <object classname="com.jeta.forms.store.properties.ItemsProperty">
503
              <at name="name">items</at>
504
             </object>
505
            </at>
506
            <at name="height">20</at>
507 507
           </object>
508 508
          </at>
509 509
         </object>
......
535 535
          <at name="classname">javax.swing.JComboBox</at>
536 536
          <at name="properties">
537 537
           <object classname="com.jeta.forms.store.support.PropertyMap">
538
            <at name="height">20</at>
539
            <at name="items">
540
             <object classname="com.jeta.forms.store.properties.ItemsProperty">
541
              <at name="name">items</at>
542
             </object>
543
            </at>
544
            <at name="width">244</at>
545
            <at name="name">cboConnectors</at>
546 538
            <at name="border">
547 539
             <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
548 540
              <super classname="com.jeta.forms.store.properties.BorderProperty">
......
563 555
              </at>
564 556
             </object>
565 557
            </at>
558
            <at name="name">cboConnectors</at>
559
            <at name="width">760</at>
560
            <at name="items">
561
             <object classname="com.jeta.forms.store.properties.ItemsProperty">
562
              <at name="name">items</at>
563
             </object>
564
            </at>
565
            <at name="height">20</at>
566 566
           </object>
567 567
          </at>
568 568
         </object>
......
594 594
          <at name="classname">javax.swing.JTextField</at>
595 595
          <at name="properties">
596 596
           <object classname="com.jeta.forms.store.support.PropertyMap">
597
            <at name="height">20</at>
598
            <at name="width">244</at>
599
            <at name="name">txtServer</at>
600 597
            <at name="border">
601 598
             <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
602 599
              <super classname="com.jeta.forms.store.properties.BorderProperty">
......
617 614
              </at>
618 615
             </object>
619 616
            </at>
617
            <at name="name">txtServer</at>
618
            <at name="width">760</at>
619
            <at name="height">20</at>
620 620
           </object>
621 621
          </at>
622 622
         </object>
......
648 648
          <at name="classname">javax.swing.JTextField</at>
649 649
          <at name="properties">
650 650
           <object classname="com.jeta.forms.store.support.PropertyMap">
651
            <at name="height">20</at>
652
            <at name="width">244</at>
653
            <at name="name">txtPort</at>
654 651
            <at name="border">
655 652
             <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
656 653
              <super classname="com.jeta.forms.store.properties.BorderProperty">
......
671 668
              </at>
672 669
             </object>
673 670
            </at>
674
           </object>
675
          </at>
676
         </object>
677
        </at>
678
       </object>
679
      </at>
680
     </item>
681
     <item >
682
      <at name="value">
683
       <object classname="com.jeta.forms.store.memento.BeanMemento">
684
        <super classname="com.jeta.forms.store.memento.ComponentMemento">
685
         <at name="cellconstraints">
686
          <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
687
           <at name="column">4</at>
688
           <at name="row">10</at>
689
           <at name="colspan">1</at>
690
           <at name="rowspan">1</at>
691
           <at name="halign">default</at>
692
           <at name="valign">default</at>
693
           <at name="insets" object="insets">0,0,0,0</at>
694
          </object>
695
         </at>
696
         <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
697
        </super>
698
        <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
699
        <at name="beanclass">javax.swing.JTextField</at>
700
        <at name="beanproperties">
701
         <object classname="com.jeta.forms.store.memento.PropertiesMemento">
702
          <at name="classname">javax.swing.JTextField</at>
703
          <at name="properties">
704
           <object classname="com.jeta.forms.store.support.PropertyMap">
671
            <at name="name">txtPort</at>
672
            <at name="width">760</at>
705 673
            <at name="height">20</at>
706
            <at name="width">244</at>
707
            <at name="name">txtDataBase</at>
708
            <at name="border">
709
             <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
710
              <super classname="com.jeta.forms.store.properties.BorderProperty">
711
               <at name="name">border</at>
712
              </super>
713
              <at name="borders">
714
               <object classname="java.util.LinkedList">
715
                <item >
716
                 <at name="value">
717
                  <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
718
                   <super classname="com.jeta.forms.store.properties.BorderProperty">
719
                    <at name="name">border</at>
720
                   </super>
721
                  </object>
722
                 </at>
723
                </item>
724
               </object>
725
              </at>
726
             </object>
727
            </at>
728 674
           </object>
729 675
          </at>
730 676
         </object>
......
756 702
          <at name="classname">javax.swing.JTextField</at>
757 703
          <at name="properties">
758 704
           <object classname="com.jeta.forms.store.support.PropertyMap">
759
            <at name="height">20</at>
760
            <at name="width">244</at>
761
            <at name="name">txtUsername</at>
762 705
            <at name="border">
763 706
             <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
764 707
              <super classname="com.jeta.forms.store.properties.BorderProperty">
......
779 722
              </at>
780 723
             </object>
781 724
            </at>
725
            <at name="name">txtUsername</at>
726
            <at name="width">760</at>
727
            <at name="height">20</at>
782 728
           </object>
783 729
          </at>
784 730
         </object>
......
810 756
          <at name="classname">javax.swing.JTextField</at>
811 757
          <at name="properties">
812 758
           <object classname="com.jeta.forms.store.support.PropertyMap">
813
            <at name="height">20</at>
814
            <at name="width">244</at>
815
            <at name="name">txtPassword</at>
816 759
            <at name="border">
817 760
             <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
818 761
              <super classname="com.jeta.forms.store.properties.BorderProperty">
......
833 776
              </at>
834 777
             </object>
835 778
            </at>
779
            <at name="name">txtPassword</at>
780
            <at name="width">760</at>
781
            <at name="height">20</at>
836 782
           </object>
837 783
          </at>
838 784
         </object>
......
857 803
         </at>
858 804
         <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
859 805
        </super>
860
        <at name="id">embedded.1913631561</at>
806
        <at name="id">embedded.186663118</at>
861 807
        <at name="rowspecs">CENTER:DEFAULT:NONE</at>
862 808
        <at name="colspecs">RIGHT:12DLU:GROW(1.0)</at>
863 809
        <at name="components">
......
886 832
               <at name="classname">com.jeta.forms.components.label.JETALabel</at>
887 833
               <at name="properties">
888 834
                <object classname="com.jeta.forms.store.support.PropertyMap">
889
                 <at name="text">&lt;html&gt; Tenga en cuenta que el nombre de usuario y la  contraseƱa deben coincidir en mayusculas y minusculas con el registrado en la base de dato. &lt;html&gt;</at>
890
                 <at name="height">42</at>
891
                 <at name="width">390</at>
892
                 <at name="name">lblFoother</at>
893
                 <at name="fill">
894
                  <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
895
                   <at name="name">fill</at>
896
                  </object>
897
                 </at>
898 835
                 <at name="border">
899 836
                  <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
900 837
                   <super classname="com.jeta.forms.store.properties.BorderProperty">
......
915 852
                   </at>
916 853
                  </object>
917 854
                 </at>
855
                 <at name="name">lblFoother</at>
856
                 <at name="width">814</at>
857
                 <at name="text">&lt;html&gt; Tenga en cuenta que el nombre de usuario y la  contraseƱa deben coincidir en mayusculas y minusculas con el registrado en la base de dato. &lt;html&gt;</at>
858
                 <at name="fill">
859
                  <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
860
                   <at name="name">fill</at>
861
                  </object>
862
                 </at>
863
                 <at name="height">14</at>
918 864
                </object>
919 865
               </at>
920 866
              </object>
......
929 875
          <at name="classname">com.jeta.forms.gui.form.GridView</at>
930 876
          <at name="properties">
931 877
           <object classname="com.jeta.forms.store.support.PropertyMap">
932
            <at name="name"></at>
878
            <at name="border">
879
             <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
880
              <super classname="com.jeta.forms.store.properties.BorderProperty">
881
               <at name="name">border</at>
882
              </super>
883
              <at name="borders">
884
               <object classname="java.util.LinkedList"/>
885
              </at>
886
             </object>
887
            </at>
888
            <at name="name"/>
933 889
            <at name="fill">
934 890
             <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
935 891
              <at name="name">fill</at>
......
962 918
              </at>
963 919
             </object>
964 920
            </at>
921
           </object>
922
          </at>
923
         </object>
924
        </at>
925
        <at name="cellpainters">
926
         <object classname="com.jeta.forms.store.support.Matrix">
927
          <at name="rows">
928
           <object classname="[Ljava.lang.Object;" size="1">
929
            <at name="item" index="0">
930
             <object classname="[Ljava.lang.Object;" size="1"/>
931
            </at>
932
           </object>
933
          </at>
934
         </object>
935
        </at>
936
        <at name="rowgroups">
937
         <object classname="com.jeta.forms.store.memento.FormGroupSet">
938
          <at name="groups">
939
           <object classname="java.util.HashMap"/>
940
          </at>
941
         </object>
942
        </at>
943
        <at name="colgroups">
944
         <object classname="com.jeta.forms.store.memento.FormGroupSet">
945
          <at name="groups">
946
           <object classname="java.util.HashMap"/>
947
          </at>
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff