Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.plugin / org.gvsig.h2spatial / org.gvsig.h2spatial.h2gis132 / org.gvsig.h2spatial.h2gis132.provider / src / test / java / org / gvsig / fmap / dal / store / h2 / operations / sql / TestResultSetForSetProvider.java @ 46505

History | View | Annotate | Download (23.7 KB)

1
package org.gvsig.fmap.dal.store.h2.operations.sql;
2

    
3
import java.util.List;
4
import junit.framework.TestCase;
5
import org.gvsig.expressionevaluator.ExpressionUtils;
6
import org.gvsig.fmap.dal.DataTypes;
7
import org.gvsig.fmap.dal.feature.EditableFeatureAttributeDescriptor;
8
import org.gvsig.fmap.dal.feature.EditableFeatureType;
9
import org.gvsig.fmap.dal.feature.FeatureQuery;
10
import org.gvsig.fmap.dal.feature.FeatureStore;
11
import org.gvsig.fmap.dal.feature.FeatureType;
12
import org.gvsig.fmap.dal.impl.expressionevaluator.DefaultFeatureAttributeEmulatorExpression;
13
import org.gvsig.fmap.dal.store.h2.TestUtils;
14
import org.gvsig.fmap.dal.store.jdbc2.JDBCHelper;
15
import org.gvsig.fmap.dal.store.jdbc2.OperationsFactory;
16
import org.gvsig.fmap.dal.store.jdbc2.OperationsFactory.TableReference;
17
import org.gvsig.fmap.dal.store.jdbc2.spi.JDBCSQLBuilderBase;
18
import org.gvsig.fmap.dal.store.jdbc2.spi.operations.ResultSetForSetProviderOperation;
19
import org.gvsig.tools.library.impl.DefaultLibrariesInitializer;
20
import org.slf4j.Logger;
21
import org.slf4j.LoggerFactory;
22

    
23
@SuppressWarnings("UseSpecificCatch")
24
public class TestResultSetForSetProvider extends TestCase {
25

    
26
        private static final Logger LOGGER = LoggerFactory.getLogger(TestResultSetForSetProvider.class);
27

    
28
        public TestResultSetForSetProvider(String testName) {
29
                super(testName);
30
        }
31

    
32
        @Override
33
        protected void setUp() throws Exception {
34
                super.setUp();
35
                new DefaultLibrariesInitializer().fullInitialize();
36
        }
37

    
38
        @Override
39
        protected void tearDown() throws Exception {
40
                super.tearDown();
41
        }
42

    
43
        public void testSimple() throws Exception {
44
                JDBCHelper helper = TestUtils.createJDBCHelper();
45
                JDBCSQLBuilderBase sqlbuilder = helper.createSQLBuilder();
46
                OperationsFactory operations = helper.getOperations();
47

    
48
                List<String> expectedSQLs = TestUtils.getSQLs("resultSetForSetProvider.sql");
49

    
50
                FeatureStore sourceStore = TestUtils.openSourceStore1();
51

    
52
                TableReference table = operations.createTableReference(
53
                        "dbtest",
54
                        sqlbuilder.default_schema(),
55
                        "test",
56
                        null
57
                );
58
                FeatureType featureType = sourceStore.getDefaultFeatureType();
59
                ResultSetForSetProviderOperation resultSetForSetProvider = operations.createResultSetForSetProvider(
60
                        table,
61
                        null,
62
                        null,
63
                        null,
64
                        featureType,
65
                        featureType,
66
                        0,
67
                        0,
68
                        0
69
                );
70
                String sql = resultSetForSetProvider.getSQL();
71
                System.out.println("###### SQL:" + sql);
72
                System.out.println("###### EXP:" + expectedSQLs.get(0));
73
                assertEquals("ResultSetForSetProvider SQL", expectedSQLs.get(0), sql);
74
        }
75

    
76
        public void testComputedAttribute() throws Exception {
77
                try {
78
                        JDBCHelper helper = TestUtils.createJDBCHelper();
79
                        JDBCSQLBuilderBase sqlbuilder = helper.createSQLBuilder();
80
                        OperationsFactory operations = helper.getOperations();
81

    
82
                        List<String> expectedSQLs = TestUtils.getSQLs("resultSetForSetProvider.sql");
83

    
84
                        FeatureStore sourceStore = TestUtils.openSourceStore1();
85

    
86
                        TableReference table = operations.createTableReference(
87
                                "dbtest",
88
                                sqlbuilder.default_schema(),
89
                                "test",
90
                                null
91
                        );
92
                        FeatureType featureType = sourceStore.getDefaultFeatureType();
93
                        EditableFeatureType eFeatureType = featureType.getEditable();
94
                        eFeatureType.add("Compu1", DataTypes.INTEGER, new DefaultFeatureAttributeEmulatorExpression(eFeatureType, ExpressionUtils.createExpression("ID*2")));
95

    
96
                        ResultSetForSetProviderOperation resultSetForSetProvider = operations.createResultSetForSetProvider(
97
                                table,
98
                                null,
99
                                null,
100
                                null,
101
                                eFeatureType,
102
                                eFeatureType,
103
                                0,
104
                                0,
105
                                0
106
                        );
107
                        String sql = resultSetForSetProvider.getSQL();
108
                        System.out.println("###### SQL:" + sql);
109
                        System.out.println("###### EXP:" + expectedSQLs.get(5));
110
                        assertEquals("ResultSetForSetProvider SQL", expectedSQLs.get(5), sql);
111
                } catch (Exception ex) {
112
                        ex.printStackTrace();
113
                        throw ex;
114
                }
115
        }
116

    
117
        public void testComputedAttribute2() throws Exception {
118
                try {
119
                        JDBCHelper helper = TestUtils.createJDBCHelper();
120
                        JDBCSQLBuilderBase sqlbuilder = helper.createSQLBuilder();
121
                        OperationsFactory operations = helper.getOperations();
122

    
123
                        List<String> expectedSQLs = TestUtils.getSQLs("resultSetForSetProvider.sql");
124

    
125
                        FeatureStore sourceStore = TestUtils.openSourceStore1();
126

    
127
                        TableReference table = operations.createTableReference(
128
                                "dbtest",
129
                                sqlbuilder.default_schema(),
130
                                "test",
131
                                null
132
                        );
133
                        FeatureType featureType = sourceStore.getDefaultFeatureType();
134
                        EditableFeatureType eFeatureType = featureType.getEditable();
135
                        eFeatureType.add("Compu1", DataTypes.INTEGER, new DefaultFeatureAttributeEmulatorExpression(eFeatureType, ExpressionUtils.createExpression("ID*2")));
136
                        eFeatureType.add("Compu2", DataTypes.INTEGER, new DefaultFeatureAttributeEmulatorExpression(eFeatureType, ExpressionUtils.createExpression("Long+10+Compu1")));
137

    
138
                        ResultSetForSetProviderOperation resultSetForSetProvider = operations.createResultSetForSetProvider(
139
                                table,
140
                                null,
141
                                null,
142
                                null,
143
                                eFeatureType,
144
                                eFeatureType,
145
                                0,
146
                                0,
147
                                0
148
                        );
149
                        String sql = resultSetForSetProvider.getSQL();
150
                        System.out.println("###### SQL:" + sql);
151
                        System.out.println("###### EXP:" + expectedSQLs.get(6));
152
                        assertEquals("ResultSetForSetProvider SQL", expectedSQLs.get(6), sql);
153
                } catch (Exception ex) {
154
                        ex.printStackTrace();
155
                        throw ex;
156
                }
157
        }
158

    
159
        public void testComputedExtraColumn() throws Exception {
160
                try {
161
                        JDBCHelper helper = TestUtils.createJDBCHelper();
162
                        JDBCSQLBuilderBase sqlbuilder = helper.createSQLBuilder();
163
                        OperationsFactory operations = helper.getOperations();
164

    
165
                        List<String> expectedSQLs = TestUtils.getSQLs("resultSetForSetProvider.sql");
166

    
167
                        FeatureStore sourceStore = TestUtils.openSourceStore1();
168

    
169
                        TableReference table = operations.createTableReference(
170
                                "dbtest",
171
                                sqlbuilder.default_schema(),
172
                                "test",
173
                                null
174
                        );
175
                        FeatureType featureType = sourceStore.getDefaultFeatureType();
176
                        EditableFeatureType eFeatureType = featureType.getEditable();
177
                        eFeatureType.add("Compu1", DataTypes.INTEGER, new DefaultFeatureAttributeEmulatorExpression(eFeatureType, ExpressionUtils.createExpression("ID*2")));
178

    
179
                        FeatureQuery query = sourceStore.createFeatureQuery();
180
                        EditableFeatureAttributeDescriptor extraColumn1 = query.getExtraColumn().add("Extra1", DataTypes.INTEGER);
181
                        extraColumn1.setFeatureAttributeEmulator(new DefaultFeatureAttributeEmulatorExpression(eFeatureType, ExpressionUtils.createExpression("Long+10+Compu1")));
182

    
183
                        ResultSetForSetProviderOperation resultSetForSetProvider = operations.createResultSetForSetProvider(
184
                                table,
185
                                null,
186
                                null,
187
                                query,
188
                                eFeatureType,
189
                                eFeatureType,
190
                                0,
191
                                0,
192
                                0
193
                        );
194
                        String sql = resultSetForSetProvider.getSQL();
195
                        System.out.println("###### SQL:" + sql);
196
                        System.out.println("###### EXP:" + expectedSQLs.get(7));
197
                        assertEquals("ResultSetForSetProvider SQL", expectedSQLs.get(7), sql);
198
                } catch (Exception ex) {
199
                        ex.printStackTrace();
200
                        throw ex;
201
                }
202
        }
203

    
204
        public void testComputedExtraColumn2() throws Exception {
205
                try {
206
                        JDBCHelper helper = TestUtils.createJDBCHelper();
207
                        JDBCSQLBuilderBase sqlbuilder = helper.createSQLBuilder();
208
                        OperationsFactory operations = helper.getOperations();
209

    
210
                        List<String> expectedSQLs = TestUtils.getSQLs("resultSetForSetProvider.sql");
211

    
212
                        FeatureStore sourceStore = TestUtils.openSourceStore1();
213

    
214
                        TableReference table = operations.createTableReference(
215
                                "dbtest",
216
                                sqlbuilder.default_schema(),
217
                                "test",
218
                                null
219
                        );
220
                        FeatureType featureType = sourceStore.getDefaultFeatureType();
221
                        EditableFeatureType eFeatureType = featureType.getEditable();
222

    
223
                        FeatureQuery query = sourceStore.createFeatureQuery();
224
                        EditableFeatureAttributeDescriptor extraColumn1 = query.getExtraColumn().add("Extra1", DataTypes.INTEGER);
225
                        extraColumn1.setFeatureAttributeEmulator(new DefaultFeatureAttributeEmulatorExpression(eFeatureType, ExpressionUtils.createExpression("ID*2")));
226
                        EditableFeatureAttributeDescriptor extraColumn2 = query.getExtraColumn().add("Extra2", DataTypes.INTEGER);
227
                        extraColumn2.setFeatureAttributeEmulator(new DefaultFeatureAttributeEmulatorExpression(eFeatureType, ExpressionUtils.createExpression("Long+10+Extra1")));
228

    
229
                        ResultSetForSetProviderOperation resultSetForSetProvider = operations.createResultSetForSetProvider(
230
                                table,
231
                                null,
232
                                null,
233
                                query,
234
                                eFeatureType,
235
                                eFeatureType,
236
                                0,
237
                                0,
238
                                0
239
                        );
240
                        String sql = resultSetForSetProvider.getSQL();
241
                        System.out.println("###### SQL:" + sql);
242
                        System.out.println("###### EXP:" + expectedSQLs.get(8));
243
                        assertEquals("ResultSetForSetProvider SQL", expectedSQLs.get(8), sql);
244
                } catch (Exception ex) {
245
                        ex.printStackTrace();
246
                        throw ex;
247
                }
248
        }
249

    
250
        public void testComputedExtraColumnWithWhere() throws Exception {
251
                try {
252
                        JDBCHelper helper = TestUtils.createJDBCHelper();
253
                        JDBCSQLBuilderBase sqlbuilder = helper.createSQLBuilder();
254
                        OperationsFactory operations = helper.getOperations();
255

    
256
                        List<String> expectedSQLs = TestUtils.getSQLs("resultSetForSetProvider.sql");
257

    
258
                        FeatureStore sourceStore = TestUtils.openSourceStore1();
259

    
260
                        TableReference table = operations.createTableReference(
261
                                "dbtest",
262
                                sqlbuilder.default_schema(),
263
                                "test",
264
                                null
265
                        );
266

    
267
                        StringBuilder filter = new StringBuilder();
268
                        filter.append("Extra1 > 10");
269

    
270
                        FeatureType featureType = sourceStore.getDefaultFeatureType();
271

    
272
                        EditableFeatureType eFeatureType = featureType.getEditable();
273
                        eFeatureType.add("Compu1", DataTypes.INTEGER, new DefaultFeatureAttributeEmulatorExpression(eFeatureType, ExpressionUtils.createExpression("ID*2")));
274

    
275
                        FeatureQuery query = sourceStore.createFeatureQuery();
276
                        EditableFeatureAttributeDescriptor extraColumn1 = query.getExtraColumn().add("Extra1", DataTypes.INTEGER);
277
                        extraColumn1.setFeatureAttributeEmulator(new DefaultFeatureAttributeEmulatorExpression(eFeatureType, ExpressionUtils.createExpression("Long+10+Compu1")));
278
                        query.addFilter(filter.toString());
279
                        query.getOrder().add("Extra1");
280

    
281
                        ResultSetForSetProviderOperation resultSetForSetProvider = operations.createResultSetForSetProvider(
282
                                table,
283
                                null,
284
                                null,
285
                                query,
286
                                eFeatureType,
287
                                eFeatureType,
288
                                0,
289
                                0,
290
                                0
291
                        );
292
                        String sql = resultSetForSetProvider.getSQL();
293
                        System.out.println("###### SQL:" + sql);
294
                        System.out.println("###### EXP:" + expectedSQLs.get(9));
295
                        assertEquals("ResultSetForSetProvider SQL", expectedSQLs.get(9), sql);
296
                } catch (Exception ex) {
297
                        ex.printStackTrace();
298
                        throw ex;
299
                }
300
        }
301

    
302
        public void testSimpleGroup() throws Exception {
303
                try {
304
                        JDBCHelper helper = TestUtils.createJDBCHelper();
305
                        JDBCSQLBuilderBase sqlbuilder = helper.createSQLBuilder();
306
                        OperationsFactory operations = helper.getOperations();
307

    
308
                        List<String> expectedSQLs = TestUtils.getSQLs("resultSetForSetProvider.sql");
309

    
310
                        FeatureStore sourceStore = TestUtils.openSourceStore1();
311

    
312
                        TableReference table = operations.createTableReference(
313
                                "dbtest",
314
                                sqlbuilder.default_schema(),
315
                                "test",
316
                                null
317
                        );
318
                        FeatureType featureType = sourceStore.getDefaultFeatureType();
319
                        FeatureQuery query = sourceStore.createFeatureQuery();
320
                        query.getGroupByColumns().add("Long");
321
                        query.getAggregateFunctions().put("ID", "MIN");
322
                        query.getAggregateFunctions().put("Byte", "MAX");
323
                        query.getAggregateFunctions().put("Double", "SUM");
324
                        ResultSetForSetProviderOperation resultSetForSetProvider = operations.createResultSetForSetProvider(
325
                                table,
326
                                null,
327
                                null,
328
                                query,
329
                                featureType,
330
                                featureType,
331
                                0,
332
                                0,
333
                                0
334
                        );
335
                        String sql = resultSetForSetProvider.getSQL();
336
                        System.out.println("###### SQL:" + sql);
337
                        System.out.println("###### EXP:" + expectedSQLs.get(1));
338

    
339
                        assertEquals("ResultSetForSetProvider SQL", expectedSQLs.get(1), sql);
340
                } catch (Throwable th) {
341
                    LOGGER.warn("",th);
342
                        throw th;
343
                }
344
        }
345

    
346
        public void testSimpleAggregateAndOrder() throws Exception {
347
                try {
348
                        JDBCHelper helper = TestUtils.createJDBCHelper();
349
                        JDBCSQLBuilderBase sqlbuilder = helper.createSQLBuilder();
350
                        OperationsFactory operations = helper.getOperations();
351

    
352
                        List<String> expectedSQLs = TestUtils.getSQLs("resultSetForSetProvider.sql");
353

    
354
                        FeatureStore sourceStore = TestUtils.openSourceStore1();
355

    
356
                        TableReference table = operations.createTableReference(
357
                                "dbtest",
358
                                sqlbuilder.default_schema(),
359
                                "test",
360
                                null
361
                        );
362
                        FeatureType featureType = sourceStore.getDefaultFeatureType();
363
                        FeatureQuery query = sourceStore.createFeatureQuery();
364
                        
365
                        EditableFeatureAttributeDescriptor extraColumn1 = query.getExtraColumn().add("Extra1", DataTypes.INTEGER);
366
                        extraColumn1.setFeatureAttributeEmulator(new DefaultFeatureAttributeEmulatorExpression(featureType, ExpressionUtils.createExpression("Long+10")));
367
                        EditableFeatureAttributeDescriptor extraColumn2 = query.getExtraColumn().add("Extra2", DataTypes.INTEGER);
368
                        extraColumn2.setFeatureAttributeEmulator(new DefaultFeatureAttributeEmulatorExpression(featureType, ExpressionUtils.createExpression("20+Byte")));
369

    
370
                        query.getAggregateFunctions().put("ID", "MIN");
371
                        query.getAggregateFunctions().put("Byte", "MAX");
372
                        query.getAggregateFunctions().put("Double", "SUM");
373
                        query.getAggregateFunctions().put("Extra1", "SUM");
374
                        query.getOrder().add("ID");
375
                        query.getOrder().add("Long");
376
                        query.getOrder().add("Extra1");
377
                        query.getOrder().add("Extra2");
378
                        ResultSetForSetProviderOperation resultSetForSetProvider = operations.createResultSetForSetProvider(
379
                                table,
380
                                null,
381
                                null,
382
                                query,
383
                                featureType,
384
                                featureType,
385
                                0,
386
                                0,
387
                                0
388
                        );
389
                        String sql = resultSetForSetProvider.getSQL();
390
                        System.out.println("###### SQL:" + sql);
391
                        System.out.println("###### EXP:" + expectedSQLs.get(12));
392

    
393
                        assertEquals("ResultSetForSetProvider SQL", expectedSQLs.get(12), sql);
394
                } catch (Throwable th) {
395
                    LOGGER.warn("",th);
396
                        throw th;
397
                }
398
        }
399

    
400
        public void testGroupByComputed() throws Exception {
401
                try {
402
                        JDBCHelper helper = TestUtils.createJDBCHelper();
403
                        JDBCSQLBuilderBase sqlbuilder = helper.createSQLBuilder();
404
                        OperationsFactory operations = helper.getOperations();
405

    
406
                        List<String> expectedSQLs = TestUtils.getSQLs("resultSetForSetProvider.sql");
407

    
408
                        FeatureStore sourceStore = TestUtils.openSourceStore1();
409

    
410
                        TableReference table = operations.createTableReference(
411
                                "dbtest",
412
                                sqlbuilder.default_schema(),
413
                                "test",
414
                                null
415
                        );
416
                        FeatureType featureType = sourceStore.getDefaultFeatureType();
417
                        FeatureQuery query = sourceStore.createFeatureQuery();
418
                        EditableFeatureType eFeatureType = featureType.getEditable();
419
                        eFeatureType.add("Compu1", DataTypes.INTEGER, new DefaultFeatureAttributeEmulatorExpression(eFeatureType, ExpressionUtils.createExpression("ID*2")));
420
                        eFeatureType.add("Compu2", DataTypes.INTEGER, new DefaultFeatureAttributeEmulatorExpression(eFeatureType, ExpressionUtils.createExpression("Long+300")));
421
                        eFeatureType.add("Compu3", DataTypes.INTEGER, new DefaultFeatureAttributeEmulatorExpression(eFeatureType, ExpressionUtils.createExpression("1")));
422
                        EditableFeatureAttributeDescriptor extraColumn1 = query.getExtraColumn().add("Extra1", DataTypes.INTEGER);
423
                        EditableFeatureAttributeDescriptor extraColumn2 = query.getExtraColumn().add("Extra2", DataTypes.INTEGER);
424
                        extraColumn1.setFeatureAttributeEmulator(new DefaultFeatureAttributeEmulatorExpression(eFeatureType, ExpressionUtils.createExpression("Long+10+Compu1")));
425
                        extraColumn2.setFeatureAttributeEmulator(new DefaultFeatureAttributeEmulatorExpression(eFeatureType, ExpressionUtils.createExpression("20+Byte+Compu1")));
426
                        query.getGroupByColumns().add("Long");
427
                        query.getGroupByColumns().add("Extra1");
428
                        query.getGroupByColumns().add("Compu1");
429
                        query.getAggregateFunctions().put("ID", "MIN");
430
                        query.getAggregateFunctions().put("Byte", "MAX");
431
                        query.getAggregateFunctions().put("Double", "SUM");
432
                        query.getAggregateFunctions().put("Extra2", "SUM");
433
                        query.getAggregateFunctions().put("Compu2", "SUM");
434
                        query.getAggregateFunctions().put("Compu3", "SUM");
435
                        ResultSetForSetProviderOperation resultSetForSetProvider = operations.createResultSetForSetProvider(
436
                                table,
437
                                null,
438
                                null,
439
                                query,
440
                                eFeatureType,
441
                                eFeatureType,
442
                                0,
443
                                0,
444
                                0
445
                        );
446
                        String sql = resultSetForSetProvider.getSQL();
447
                        System.out.println("###### SQL:" + sql);
448
                        System.out.println("###### EXP:" + expectedSQLs.get(10));
449

    
450
                        assertEquals("ResultSetForSetProvider SQL", expectedSQLs.get(10), sql);
451
                } catch (Throwable th) {
452
                    LOGGER.warn("", th);
453
                        throw th;
454
                }
455
        }
456

    
457
        public void testGroupByAndOrderByComputed() throws Exception {
458
                try {
459
                        JDBCHelper helper = TestUtils.createJDBCHelper();
460
                        JDBCSQLBuilderBase sqlbuilder = helper.createSQLBuilder();
461
                        OperationsFactory operations = helper.getOperations();
462

    
463
                        List<String> expectedSQLs = TestUtils.getSQLs("resultSetForSetProvider.sql");
464

    
465
                        FeatureStore sourceStore = TestUtils.openSourceStore1();
466

    
467
                        TableReference table = operations.createTableReference(
468
                                "dbtest",
469
                                sqlbuilder.default_schema(),
470
                                "test",
471
                                null
472
                        );
473
                        FeatureType featureType = sourceStore.getDefaultFeatureType();
474
                        FeatureQuery query = sourceStore.createFeatureQuery();
475
                        EditableFeatureType eFeatureType = featureType.getEditable();
476
                        eFeatureType.add("Compu1", DataTypes.INTEGER, new DefaultFeatureAttributeEmulatorExpression(eFeatureType, ExpressionUtils.createExpression("ID*2")));
477
                        eFeatureType.add("Compu2", DataTypes.INTEGER, new DefaultFeatureAttributeEmulatorExpression(eFeatureType, ExpressionUtils.createExpression("Long+300")));
478
                        eFeatureType.add("Compu3", DataTypes.INTEGER, new DefaultFeatureAttributeEmulatorExpression(eFeatureType, ExpressionUtils.createExpression("1")));
479
                        
480
                        EditableFeatureAttributeDescriptor extraColumn1 = query.getExtraColumn().add("Extra1", DataTypes.INTEGER);
481
                        extraColumn1.setFeatureAttributeEmulator(new DefaultFeatureAttributeEmulatorExpression(eFeatureType, ExpressionUtils.createExpression("Long+10+Compu1")));
482
                        
483
                        EditableFeatureAttributeDescriptor extraColumn2 = query.getExtraColumn().add("Extra2", DataTypes.INTEGER);
484
                        extraColumn2.setFeatureAttributeEmulator(new DefaultFeatureAttributeEmulatorExpression(eFeatureType, ExpressionUtils.createExpression("20+Byte+Compu1")));
485
                        
486
                        EditableFeatureAttributeDescriptor extraColumn3 = query.getExtraColumn().add("Extra3", DataTypes.INTEGER);
487
                        extraColumn3.setFeatureAttributeEmulator(new DefaultFeatureAttributeEmulatorExpression(eFeatureType, ExpressionUtils.createExpression("Long+33")));
488
                        
489
                        query.getGroupByColumns().add("Long");
490
                        query.getGroupByColumns().add("Extra1");
491
                        query.getGroupByColumns().add("Compu1");
492
                        query.getAggregateFunctions().put("ID", "MIN");
493
                        query.getAggregateFunctions().put("Byte", "MAX");
494
                        query.getAggregateFunctions().put("Double", "SUM");
495
                        query.getAggregateFunctions().put("Extra2", "SUM");
496
                        query.getAggregateFunctions().put("Compu2", "SUM");
497
                        query.getAggregateFunctions().put("Compu3", "SUM");
498
                        query.getOrder().add("Extra1");
499
                        query.getOrder().add("Extra2");
500
                        query.getOrder().add("Extra3");
501
                        ResultSetForSetProviderOperation resultSetForSetProvider = operations.createResultSetForSetProvider(
502
                                table,
503
                                null,
504
                                null,
505
                                query,
506
                                eFeatureType,
507
                                eFeatureType,
508
                                0,
509
                                0,
510
                                0
511
                        );
512
                        String sql = resultSetForSetProvider.getSQL();
513
                        System.out.println("###### SQL:" + sql);
514
                        System.out.println("###### EXP:" + expectedSQLs.get(11));
515

    
516
                        assertEquals("ResultSetForSetProvider SQL", expectedSQLs.get(11), sql);
517
                } catch (Throwable th) {
518
                    LOGGER.warn("", th);
519
                        throw th;
520
                }
521
        }
522

    
523
        public void testSubselect() throws Exception {
524
                JDBCHelper helper = TestUtils.createJDBCHelper();
525
                JDBCSQLBuilderBase sqlbuilder = helper.createSQLBuilder();
526
                OperationsFactory operations = helper.getOperations();
527

    
528
                List<String> expectedSQLs = TestUtils.getSQLs("resultSetForSetProvider.sql");
529

    
530
                FeatureStore sourceStore = TestUtils.openSourceStore1();
531

    
532
                TableReference table = operations.createTableReference(
533
                        "dbtest",
534
                        sqlbuilder.default_schema(),
535
                        "test",
536
                        null
537
                );
538
                StringBuilder filter = new StringBuilder();
539
                filter.append("EXISTS(");
540
                filter.append(" SELECT \"ISO_A2\" FROM countries");
541
                filter.append("   WHERE ");
542
                filter.append("     TEST.STRING = countries.CONTINENT AND ");
543
                filter.append("     countries.LASTCENSUS < 0 ");
544
                filter.append("   LIMIT 1;, ");
545
                filter.append(" 'EXISTS62a964cd7bc24f409b97c03b9170408d' ");
546
                filter.append(")");
547
                FeatureType featureType = sourceStore.getDefaultFeatureType();
548
                FeatureQuery query = sourceStore.createFeatureQuery();
549
                query.addFilter(filter.toString());
550
                ResultSetForSetProviderOperation resultSetForSetProvider = operations.createResultSetForSetProvider(
551
                        table,
552
                        null,
553
                        null,
554
                        query,
555
                        featureType,
556
                        featureType,
557
                        0,
558
                        0,
559
                        0
560
                );
561
                String sql = resultSetForSetProvider.getSQL();
562
                System.out.println("###### SQL:" + sql);
563
                System.out.println("###### EXP:" + expectedSQLs.get(2));
564

    
565
                assertEquals("ResultSetForSetProvider SQL", expectedSQLs.get(2), sql);
566
        }
567

    
568
        public void testGroupAndSubselect() throws Exception {
569
                JDBCHelper helper = TestUtils.createJDBCHelper();
570
                JDBCSQLBuilderBase sqlbuilder = helper.createSQLBuilder();
571
                OperationsFactory operations = helper.getOperations();
572

    
573
                List<String> expectedSQLs = TestUtils.getSQLs("resultSetForSetProvider.sql");
574

    
575
                FeatureStore sourceStore = TestUtils.openSourceStore1();
576

    
577
                TableReference table = operations.createTableReference(
578
                        "dbtest",
579
                        sqlbuilder.default_schema(),
580
                        "test",
581
                        null
582
                );
583
                StringBuilder filter = new StringBuilder();
584
                filter.append("EXISTS(");
585
                filter.append(" SELECT \"ISO_A2\" FROM countries");
586
                filter.append("   WHERE ");
587
                filter.append("     TEST.STRING = countries.CONTINENT AND ");
588
                filter.append("     countries.LASTCENSUS < 0 ");
589
                filter.append("   LIMIT 1;, ");
590
                filter.append(" 'EXISTS62a964cd7bc24f409b97c03b9170408d' ");
591
                filter.append(")");
592
                FeatureType featureType = sourceStore.getDefaultFeatureType();
593
                FeatureQuery query = sourceStore.createFeatureQuery();
594
                query.getGroupByColumns().add("Long");
595
                query.getAggregateFunctions().put("ID", "MIN");
596
                query.getAggregateFunctions().put("Byte", "MAX");
597
                query.getAggregateFunctions().put("Double", "SUM");
598
                query.addFilter(filter.toString());
599
                ResultSetForSetProviderOperation resultSetForSetProvider = operations.createResultSetForSetProvider(
600
                        table,
601
                        null,
602
                        null,
603
                        query,
604
                        featureType,
605
                        featureType,
606
                        0,
607
                        0,
608
                        0
609
                );
610
                String sql = resultSetForSetProvider.getSQL();
611
                System.out.println("###### SQL:" + sql);
612
                System.out.println("###### EXP:" + expectedSQLs.get(3));
613

    
614
                assertEquals("ResultSetForSetProvider SQL", expectedSQLs.get(3), sql);
615
        }
616

    
617
        public void testConstantColumnPrimaryKey() throws Exception {
618
                JDBCHelper helper = TestUtils.createJDBCHelper();
619
                JDBCSQLBuilderBase sqlbuilder = helper.createSQLBuilder();
620
                OperationsFactory operations = helper.getOperations();
621

    
622
                List<String> expectedSQLs = TestUtils.getSQLs("resultSetForSetProvider.sql");
623

    
624
                FeatureStore sourceStore = TestUtils.openSourceStore1();
625

    
626
                TableReference table = operations.createTableReference(
627
                        "dbtest",
628
                        sqlbuilder.default_schema(),
629
                        "test",
630
                        null
631
                );
632
//    meterle como constantCOlumn ID
633

    
634
                FeatureType featureType = sourceStore.getDefaultFeatureType();
635
                FeatureQuery query = sourceStore.createFeatureQuery();
636

    
637
                query.setConstantsAttributeNames(new String[]{"ID"});
638

    
639
                ResultSetForSetProviderOperation resultSetForSetProvider = operations.createResultSetForSetProvider(
640
                        table,
641
                        null,
642
                        null,
643
                        query,
644
                        featureType,
645
                        featureType,
646
                        0,
647
                        0,
648
                        0
649
                );
650
                String sql = resultSetForSetProvider.getSQL();
651
                System.out.println("###### SQL:" + sql);
652
                System.out.println("###### EXP:" + expectedSQLs.get(4));
653

    
654
                assertEquals("ResultSetForSetProvider SQL", expectedSQLs.get(4), sql);
655
        }
656

    
657
        // TODO: a?adir un test con where, group y order.
658
}