Revision 46104 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

View differences:

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

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

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

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

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

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

  
48
    List<String> expectedSQLs = TestUtils.getSQLs("resultSetForSetProvider.sql");
49
    
50
    FeatureStore sourceStore = TestUtils.openSourceStore1();
48
		List<String> expectedSQLs = TestUtils.getSQLs("resultSetForSetProvider.sql");
51 49

  
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
    assertEquals("ResultSetForSetProvider SQL", expectedSQLs.get(0), sql);
72
  }
73
  public void testComputedAttribute() throws Exception {
74
     try {
75
        JDBCHelper helper = TestUtils.createJDBCHelper();
76
        JDBCSQLBuilderBase sqlbuilder = helper.createSQLBuilder();
77
        OperationsFactory operations = helper.getOperations();
50
		FeatureStore sourceStore = TestUtils.openSourceStore1();
78 51

  
79
        List<String> expectedSQLs = TestUtils.getSQLs("resultSetForSetProvider.sql");
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
	}
80 75

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

  
83
        TableReference table = operations.createTableReference(
84
                "dbtest", 
85
                sqlbuilder.default_schema(), 
86
                "test", 
87
                null
88
        );
89
        FeatureType featureType = sourceStore.getDefaultFeatureType();
90
        EditableFeatureType eFeatureType = featureType.getEditable();
91
        eFeatureType.add("Compu1", DataTypes.INTEGER, new DefaultFeatureAttributeEmulatorExpression(eFeatureType, ExpressionUtils.createExpression("ID*2")));
82
			List<String> expectedSQLs = TestUtils.getSQLs("resultSetForSetProvider.sql");
92 83

  
93
        ResultSetForSetProviderOperation resultSetForSetProvider = operations.createResultSetForSetProvider(
94
                table,
95
                null,
96
                null,
97
                null,
98
                eFeatureType,
99
                eFeatureType,
100
                0,
101
                0, 
102
                0
103
        );
104
        String sql = resultSetForSetProvider.getSQL();
105
        assertEquals("ResultSetForSetProvider SQL", expectedSQLs.get(5), sql);
106
     } catch (Exception ex) {
107
         ex.printStackTrace();
108
         throw ex;
109
     }
110
  }
111
  
112
  public void testComputedAttribute2() throws Exception {
113
     try {
114
        JDBCHelper helper = TestUtils.createJDBCHelper();
115
        JDBCSQLBuilderBase sqlbuilder = helper.createSQLBuilder();
116
        OperationsFactory operations = helper.getOperations();
84
			FeatureStore sourceStore = TestUtils.openSourceStore1();
117 85

  
118
        List<String> expectedSQLs = TestUtils.getSQLs("resultSetForSetProvider.sql");
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")));
119 95

  
120
        FeatureStore sourceStore = TestUtils.openSourceStore1();
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
	}
121 116

  
122
        TableReference table = operations.createTableReference(
123
                "dbtest", 
124
                sqlbuilder.default_schema(), 
125
                "test", 
126
                null
127
        );
128
        FeatureType featureType = sourceStore.getDefaultFeatureType();
129
        EditableFeatureType eFeatureType = featureType.getEditable();
130
        eFeatureType.add("Compu1", DataTypes.INTEGER, new DefaultFeatureAttributeEmulatorExpression(eFeatureType, ExpressionUtils.createExpression("ID*2")));
131
        eFeatureType.add("Compu2", DataTypes.INTEGER, new DefaultFeatureAttributeEmulatorExpression(eFeatureType, ExpressionUtils.createExpression("Long+10+Compu1")));
117
	public void testComputedAttribute2() throws Exception {
118
		try {
119
			JDBCHelper helper = TestUtils.createJDBCHelper();
120
			JDBCSQLBuilderBase sqlbuilder = helper.createSQLBuilder();
121
			OperationsFactory operations = helper.getOperations();
132 122

  
133
        ResultSetForSetProviderOperation resultSetForSetProvider = operations.createResultSetForSetProvider(
134
                table,
135
                null,
136
                null,
137
                null,
138
                eFeatureType,
139
                eFeatureType,
140
                0,
141
                0, 
142
                0
143
        );
144
        String sql = resultSetForSetProvider.getSQL();
145
        assertEquals("ResultSetForSetProvider SQL", expectedSQLs.get(6), sql);
146
     } catch (Exception ex) {
147
         ex.printStackTrace();
148
         throw ex;
149
     }
150
  }
151
  
152
  public void testComputedExtraColumn() throws Exception {
153
     try {
154
        JDBCHelper helper = TestUtils.createJDBCHelper();
155
        JDBCSQLBuilderBase sqlbuilder = helper.createSQLBuilder();
156
        OperationsFactory operations = helper.getOperations();
123
			List<String> expectedSQLs = TestUtils.getSQLs("resultSetForSetProvider.sql");
157 124

  
158
        List<String> expectedSQLs = TestUtils.getSQLs("resultSetForSetProvider.sql");
125
			FeatureStore sourceStore = TestUtils.openSourceStore1();
159 126

  
160
        FeatureStore sourceStore = TestUtils.openSourceStore1();
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")));
161 137

  
162
        TableReference table = operations.createTableReference(
163
                "dbtest", 
164
                sqlbuilder.default_schema(), 
165
                "test", 
166
                null
167
        );
168
        FeatureType featureType = sourceStore.getDefaultFeatureType();
169
        EditableFeatureType eFeatureType = featureType.getEditable();
170
        eFeatureType.add("Compu1", DataTypes.INTEGER, new DefaultFeatureAttributeEmulatorExpression(eFeatureType, ExpressionUtils.createExpression("ID*2")));
171
        
172
        FeatureQuery query = sourceStore.createFeatureQuery();
173
         EditableFeatureAttributeDescriptor extraColumn1 = query.getExtraColumn().add("Extra1", DataTypes.INTEGER);
174
        extraColumn1.setFeatureAttributeEmulator(new DefaultFeatureAttributeEmulatorExpression(eFeatureType, ExpressionUtils.createExpression("Long+10+Compu1")));
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
	}
175 158

  
176
        ResultSetForSetProviderOperation resultSetForSetProvider = operations.createResultSetForSetProvider(
177
                table,
178
                null,
179
                null,
180
                query,
181
                eFeatureType,
182
                eFeatureType,
183
                0,
184
                0, 
185
                0
186
        );
187
        String sql = resultSetForSetProvider.getSQL();
188
        assertEquals("ResultSetForSetProvider SQL", expectedSQLs.get(7), sql);
189
     } catch (Exception ex) {
190
         ex.printStackTrace();
191
         throw ex;
192
     }
193
  }
194
  
195
  public void testComputedExtraColumn2() throws Exception {
196
     try {
197
        JDBCHelper helper = TestUtils.createJDBCHelper();
198
        JDBCSQLBuilderBase sqlbuilder = helper.createSQLBuilder();
199
        OperationsFactory operations = helper.getOperations();
159
	public void testComputedExtraColumn() throws Exception {
160
		try {
161
			JDBCHelper helper = TestUtils.createJDBCHelper();
162
			JDBCSQLBuilderBase sqlbuilder = helper.createSQLBuilder();
163
			OperationsFactory operations = helper.getOperations();
200 164

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

  
203
        FeatureStore sourceStore = TestUtils.openSourceStore1();
167
			FeatureStore sourceStore = TestUtils.openSourceStore1();
204 168

  
205
        TableReference table = operations.createTableReference(
206
                "dbtest", 
207
                sqlbuilder.default_schema(), 
208
                "test", 
209
                null
210
        );
211
        FeatureType featureType = sourceStore.getDefaultFeatureType();
212
        EditableFeatureType eFeatureType = featureType.getEditable();
213
        
214
        FeatureQuery query = sourceStore.createFeatureQuery();
215
        EditableFeatureAttributeDescriptor extraColumn1 = query.getExtraColumn().add("Extra1", DataTypes.INTEGER);
216
        extraColumn1.setFeatureAttributeEmulator(new DefaultFeatureAttributeEmulatorExpression(eFeatureType, ExpressionUtils.createExpression("ID*2")));
217
        EditableFeatureAttributeDescriptor extraColumn2 = query.getExtraColumn().add("Extra2", DataTypes.INTEGER);
218
        extraColumn2.setFeatureAttributeEmulator(new DefaultFeatureAttributeEmulatorExpression(eFeatureType, ExpressionUtils.createExpression("Long+10+Extra1")));
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")));
219 178

  
220
        ResultSetForSetProviderOperation resultSetForSetProvider = operations.createResultSetForSetProvider(
221
                table,
222
                null,
223
                null,
224
                query,
225
                eFeatureType,
226
                eFeatureType,
227
                0,
228
                0, 
229
                0
230
        );
231
        String sql = resultSetForSetProvider.getSQL();
232
        assertEquals("ResultSetForSetProvider SQL", expectedSQLs.get(8), sql);
233
     } catch (Exception ex) {
234
         ex.printStackTrace();
235
         throw ex;
236
     }
237
  }
238
  
239
public void testComputedExtraColumnWithWhere() throws Exception {
240
     try {
241
        JDBCHelper helper = TestUtils.createJDBCHelper();
242
        JDBCSQLBuilderBase sqlbuilder = helper.createSQLBuilder();
243
        OperationsFactory operations = helper.getOperations();
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")));
244 182

  
245
        List<String> expectedSQLs = TestUtils.getSQLs("resultSetForSetProvider.sql");
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
	}
246 203

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

  
249
        TableReference table = operations.createTableReference(
250
                "dbtest", 
251
                sqlbuilder.default_schema(), 
252
                "test", 
253
                null
254
        );
255
        
256
        StringBuilder filter = new StringBuilder();
257
        filter.append("Extra1 > 10");
258
    
259
        FeatureType featureType = sourceStore.getDefaultFeatureType();
260
        
261
        EditableFeatureType eFeatureType = featureType.getEditable();
262
        eFeatureType.add("Compu1", DataTypes.INTEGER, new DefaultFeatureAttributeEmulatorExpression(eFeatureType, ExpressionUtils.createExpression("ID*2")));
263
        
264
        FeatureQuery query = sourceStore.createFeatureQuery();
265
        EditableFeatureAttributeDescriptor extraColumn1 = query.getExtraColumn().add("Extra1", DataTypes.INTEGER);
266
        extraColumn1.setFeatureAttributeEmulator(new DefaultFeatureAttributeEmulatorExpression(eFeatureType, ExpressionUtils.createExpression("Long+10+Compu1")));
267
        query.addFilter(filter.toString());
268
        query.getOrder().add("Extra1");
210
			List<String> expectedSQLs = TestUtils.getSQLs("resultSetForSetProvider.sql");
269 211

  
270
        ResultSetForSetProviderOperation resultSetForSetProvider = operations.createResultSetForSetProvider(
271
                table,
272
                null,
273
                null,
274
                query,
275
                eFeatureType,
276
                eFeatureType,
277
                0,
278
                0, 
279
                0
280
        );
281
        String sql = resultSetForSetProvider.getSQL();
282
        assertEquals("ResultSetForSetProvider SQL", expectedSQLs.get(9), sql);
283
     } catch (Exception ex) {
284
         ex.printStackTrace();
285
         throw ex;
286
     }
287
  }
212
			FeatureStore sourceStore = TestUtils.openSourceStore1();
288 213

  
289
    public void testSimpleGroup() throws Exception {
290
        try {
291
            JDBCHelper helper = TestUtils.createJDBCHelper();
292
            JDBCSQLBuilderBase sqlbuilder = helper.createSQLBuilder();
293
            OperationsFactory operations = helper.getOperations();
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();
294 222

  
295
            List<String> expectedSQLs = TestUtils.getSQLs("resultSetForSetProvider.sql");
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")));
296 228

  
297
            FeatureStore sourceStore = TestUtils.openSourceStore1();
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
	}
298 249

  
299
            TableReference table = operations.createTableReference(
300
                    "dbtest",
301
                    sqlbuilder.default_schema(),
302
                    "test",
303
                    null
304
            );
305
            FeatureType featureType = sourceStore.getDefaultFeatureType();
306
            FeatureQuery query = sourceStore.createFeatureQuery();
307
            query.getGroupByColumns().add("Long");
308
            query.getAggregateFunctions().put("ID", "MIN");
309
            query.getAggregateFunctions().put("Byte", "MAX");
310
            query.getAggregateFunctions().put("Double", "SUM");
311
            ResultSetForSetProviderOperation resultSetForSetProvider = operations.createResultSetForSetProvider(
312
                    table,
313
                    null,
314
                    null,
315
                    query,
316
                    featureType,
317
                    featureType,
318
                    0,
319
                    0,
320
                    0
321
            );
322
            String sql = resultSetForSetProvider.getSQL();
323
            System.out.println("###### SQL:" + sql);
324
            System.out.println("###### EXP:" + expectedSQLs.get(1));
250
	public void testComputedExtraColumnWithWhere() throws Exception {
251
		try {
252
			JDBCHelper helper = TestUtils.createJDBCHelper();
253
			JDBCSQLBuilderBase sqlbuilder = helper.createSQLBuilder();
254
			OperationsFactory operations = helper.getOperations();
325 255

  
326
            assertEquals("ResultSetForSetProvider SQL", expectedSQLs.get(1), sql);
327
        } catch (Throwable th) {
328
            throw th;
329
        }
330
    }
331
    
332
    public void testGroupByComputed() throws Exception {
333
        try {
334
            JDBCHelper helper = TestUtils.createJDBCHelper();
335
            JDBCSQLBuilderBase sqlbuilder = helper.createSQLBuilder();
336
            OperationsFactory operations = helper.getOperations();
256
			List<String> expectedSQLs = TestUtils.getSQLs("resultSetForSetProvider.sql");
337 257

  
338
            List<String> expectedSQLs = TestUtils.getSQLs("resultSetForSetProvider.sql");
258
			FeatureStore sourceStore = TestUtils.openSourceStore1();
339 259

  
340
            FeatureStore sourceStore = TestUtils.openSourceStore1();
260
			TableReference table = operations.createTableReference(
261
				"dbtest",
262
				sqlbuilder.default_schema(),
263
				"test",
264
				null
265
			);
341 266

  
342
            TableReference table = operations.createTableReference(
343
                    "dbtest",
344
                    sqlbuilder.default_schema(),
345
                    "test",
346
                    null
347
            );
348
            FeatureType featureType = sourceStore.getDefaultFeatureType();
349
            FeatureQuery query = sourceStore.createFeatureQuery();
350
            EditableFeatureType eFeatureType = featureType.getEditable();
351
            eFeatureType.add("Compu1", DataTypes.INTEGER, new DefaultFeatureAttributeEmulatorExpression(eFeatureType, ExpressionUtils.createExpression("ID*2")));
352
            eFeatureType.add("Compu2", DataTypes.INTEGER, new DefaultFeatureAttributeEmulatorExpression(eFeatureType, ExpressionUtils.createExpression("Long+300")));
353
            EditableFeatureAttributeDescriptor extraColumn1 = query.getExtraColumn().add("Extra1", DataTypes.INTEGER);
354
            EditableFeatureAttributeDescriptor extraColumn2 = query.getExtraColumn().add("Extra2", DataTypes.INTEGER);
355
            extraColumn1.setFeatureAttributeEmulator(new DefaultFeatureAttributeEmulatorExpression(eFeatureType, ExpressionUtils.createExpression("Long+10+Compu1")));
356
            extraColumn2.setFeatureAttributeEmulator(new DefaultFeatureAttributeEmulatorExpression(eFeatureType, ExpressionUtils.createExpression("20+Byte+Compu1")));
357
            query.getGroupByColumns().add("Long");
358
            query.getGroupByColumns().add("Extra1");
359
            query.getGroupByColumns().add("Compu1");
360
            query.getAggregateFunctions().put("ID", "MIN");
361
            query.getAggregateFunctions().put("Byte", "MAX");
362
            query.getAggregateFunctions().put("Double", "SUM");
363
            query.getAggregateFunctions().put("Extra2", "SUM");
364
            query.getAggregateFunctions().put("Compu2", "SUM");
365
            ResultSetForSetProviderOperation resultSetForSetProvider = operations.createResultSetForSetProvider(
366
                    table,
367
                    null,
368
                    null,
369
                    query,
370
                    eFeatureType,
371
                    eFeatureType,
372
                    0,
373
                    0,
374
                    0
375
            );
376
            String sql = resultSetForSetProvider.getSQL();
377
            System.out.println("###### SQL:" + sql);
378
            System.out.println("###### EXP:" + expectedSQLs.get(10));
267
			StringBuilder filter = new StringBuilder();
268
			filter.append("Extra1 > 10");
379 269

  
380
            assertEquals("ResultSetForSetProvider SQL", expectedSQLs.get(10), sql);
381
        } catch (Throwable th) {
382
            throw th;
383
        }
384
    }
270
			FeatureType featureType = sourceStore.getDefaultFeatureType();
385 271

  
386
  public void testSubselect() throws Exception {
387
    JDBCHelper helper = TestUtils.createJDBCHelper();
388
    JDBCSQLBuilderBase sqlbuilder = helper.createSQLBuilder();
389
    OperationsFactory operations = helper.getOperations();
272
			EditableFeatureType eFeatureType = featureType.getEditable();
273
			eFeatureType.add("Compu1", DataTypes.INTEGER, new DefaultFeatureAttributeEmulatorExpression(eFeatureType, ExpressionUtils.createExpression("ID*2")));
390 274

  
391
    List<String> expectedSQLs = TestUtils.getSQLs("resultSetForSetProvider.sql");
392
    
393
    FeatureStore sourceStore = TestUtils.openSourceStore1();
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");
394 280

  
395
    TableReference table = operations.createTableReference(
396
            "dbtest", 
397
            sqlbuilder.default_schema(), 
398
            "test", 
399
            null
400
    );
401
    StringBuilder filter = new StringBuilder();
402
    filter.append("EXISTS(");
403
    filter.append(" SELECT \"ISO_A2\" FROM countries");
404
    filter.append("   WHERE ");
405
    filter.append("     TEST.STRING = countries.CONTINENT AND ");
406
    filter.append("     countries.LASTCENSUS < 0 ");
407
    filter.append("   LIMIT 1;, ");
408
    filter.append(" 'EXISTS62a964cd7bc24f409b97c03b9170408d' ");
409
    filter.append(")");
410
    FeatureType featureType = sourceStore.getDefaultFeatureType();
411
    FeatureQuery query = sourceStore.createFeatureQuery();
412
    query.addFilter(filter.toString());
413
    ResultSetForSetProviderOperation resultSetForSetProvider = operations.createResultSetForSetProvider(
414
            table,
415
            null,
416
            null,
417
            query,
418
            featureType,
419
            featureType,
420
            0,
421
            0, 
422
            0
423
    );
424
    String sql = resultSetForSetProvider.getSQL();
425
    System.out.println("###### SQL:"+sql);
426
    System.out.println("###### EXP:"+expectedSQLs.get(2));
427
    
428
    assertEquals("ResultSetForSetProvider SQL", expectedSQLs.get(2), sql);
429
  }
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
	}
430 301

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

  
436
    List<String> expectedSQLs = TestUtils.getSQLs("resultSetForSetProvider.sql");
437
    
438
    FeatureStore sourceStore = TestUtils.openSourceStore1();
308
			List<String> expectedSQLs = TestUtils.getSQLs("resultSetForSetProvider.sql");
439 309

  
440
    TableReference table = operations.createTableReference(
441
            "dbtest", 
442
            sqlbuilder.default_schema(), 
443
            "test", 
444
            null
445
    );
446
    StringBuilder filter = new StringBuilder();
447
    filter.append("EXISTS(");
448
    filter.append(" SELECT \"ISO_A2\" FROM countries");
449
    filter.append("   WHERE ");
450
    filter.append("     TEST.STRING = countries.CONTINENT AND ");
451
    filter.append("     countries.LASTCENSUS < 0 ");
452
    filter.append("   LIMIT 1;, ");
453
    filter.append(" 'EXISTS62a964cd7bc24f409b97c03b9170408d' ");
454
    filter.append(")");
455
    FeatureType featureType = sourceStore.getDefaultFeatureType();
456
    FeatureQuery query = sourceStore.createFeatureQuery();
457
    query.getGroupByColumns().add("Long");
458
    query.getAggregateFunctions().put("ID", "MIN");
459
    query.getAggregateFunctions().put("Byte", "MAX");
460
    query.getAggregateFunctions().put("Double", "SUM");
461
    query.addFilter(filter.toString());
462
    ResultSetForSetProviderOperation resultSetForSetProvider = operations.createResultSetForSetProvider(
463
            table,
464
            null,
465
            null,
466
            query,
467
            featureType,
468
            featureType,
469
            0,
470
            0, 
471
            0
472
    );
473
    String sql = resultSetForSetProvider.getSQL();
474
    System.out.println("###### SQL:"+sql);
475
    System.out.println("###### EXP:"+expectedSQLs.get(3));
476
    
477
    assertEquals("ResultSetForSetProvider SQL", expectedSQLs.get(3), sql);
478
  }
310
			FeatureStore sourceStore = TestUtils.openSourceStore1();
479 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));
480 338

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

  
482
  public void testConstantColumnPrimaryKey() throws Exception {
483
    JDBCHelper helper = TestUtils.createJDBCHelper();
484
    JDBCSQLBuilderBase sqlbuilder = helper.createSQLBuilder();
485
    OperationsFactory operations = helper.getOperations();
345
	public void testGroupByComputed() throws Exception {
346
		try {
347
			JDBCHelper helper = TestUtils.createJDBCHelper();
348
			JDBCSQLBuilderBase sqlbuilder = helper.createSQLBuilder();
349
			OperationsFactory operations = helper.getOperations();
486 350

  
487
    List<String> expectedSQLs = TestUtils.getSQLs("resultSetForSetProvider.sql");
488
    
489
    FeatureStore sourceStore = TestUtils.openSourceStore1();
351
			List<String> expectedSQLs = TestUtils.getSQLs("resultSetForSetProvider.sql");
490 352

  
491
    TableReference table = operations.createTableReference(
492
            "dbtest", 
493
            sqlbuilder.default_schema(), 
494
            "test", 
495
            null
496
    );
353
			FeatureStore sourceStore = TestUtils.openSourceStore1();
354

  
355
			TableReference table = operations.createTableReference(
356
				"dbtest",
357
				sqlbuilder.default_schema(),
358
				"test",
359
				null
360
			);
361
			FeatureType featureType = sourceStore.getDefaultFeatureType();
362
			FeatureQuery query = sourceStore.createFeatureQuery();
363
			EditableFeatureType eFeatureType = featureType.getEditable();
364
			eFeatureType.add("Compu1", DataTypes.INTEGER, new DefaultFeatureAttributeEmulatorExpression(eFeatureType, ExpressionUtils.createExpression("ID*2")));
365
			eFeatureType.add("Compu2", DataTypes.INTEGER, new DefaultFeatureAttributeEmulatorExpression(eFeatureType, ExpressionUtils.createExpression("Long+300")));
366
			EditableFeatureAttributeDescriptor extraColumn1 = query.getExtraColumn().add("Extra1", DataTypes.INTEGER);
367
			EditableFeatureAttributeDescriptor extraColumn2 = query.getExtraColumn().add("Extra2", DataTypes.INTEGER);
368
			extraColumn1.setFeatureAttributeEmulator(new DefaultFeatureAttributeEmulatorExpression(eFeatureType, ExpressionUtils.createExpression("Long+10+Compu1")));
369
			extraColumn2.setFeatureAttributeEmulator(new DefaultFeatureAttributeEmulatorExpression(eFeatureType, ExpressionUtils.createExpression("20+Byte+Compu1")));
370
			query.getGroupByColumns().add("Long");
371
			query.getGroupByColumns().add("Extra1");
372
			query.getGroupByColumns().add("Compu1");
373
			query.getAggregateFunctions().put("ID", "MIN");
374
			query.getAggregateFunctions().put("Byte", "MAX");
375
			query.getAggregateFunctions().put("Double", "SUM");
376
			query.getAggregateFunctions().put("Extra2", "SUM");
377
			query.getAggregateFunctions().put("Compu2", "SUM");
378
			ResultSetForSetProviderOperation resultSetForSetProvider = operations.createResultSetForSetProvider(
379
				table,
380
				null,
381
				null,
382
				query,
383
				eFeatureType,
384
				eFeatureType,
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(10));
392

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

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

  
404
		List<String> expectedSQLs = TestUtils.getSQLs("resultSetForSetProvider.sql");
405

  
406
		FeatureStore sourceStore = TestUtils.openSourceStore1();
407

  
408
		TableReference table = operations.createTableReference(
409
			"dbtest",
410
			sqlbuilder.default_schema(),
411
			"test",
412
			null
413
		);
414
		StringBuilder filter = new StringBuilder();
415
		filter.append("EXISTS(");
416
		filter.append(" SELECT \"ISO_A2\" FROM countries");
417
		filter.append("   WHERE ");
418
		filter.append("     TEST.STRING = countries.CONTINENT AND ");
419
		filter.append("     countries.LASTCENSUS < 0 ");
420
		filter.append("   LIMIT 1;, ");
421
		filter.append(" 'EXISTS62a964cd7bc24f409b97c03b9170408d' ");
422
		filter.append(")");
423
		FeatureType featureType = sourceStore.getDefaultFeatureType();
424
		FeatureQuery query = sourceStore.createFeatureQuery();
425
		query.addFilter(filter.toString());
426
		ResultSetForSetProviderOperation resultSetForSetProvider = operations.createResultSetForSetProvider(
427
			table,
428
			null,
429
			null,
430
			query,
431
			featureType,
432
			featureType,
433
			0,
434
			0,
435
			0
436
		);
437
		String sql = resultSetForSetProvider.getSQL();
438
		System.out.println("###### SQL:" + sql);
439
		System.out.println("###### EXP:" + expectedSQLs.get(2));
440

  
441
		assertEquals("ResultSetForSetProvider SQL", expectedSQLs.get(2), sql);
442
	}
443

  
444
	public void testGroupAndSubselect() throws Exception {
445
		JDBCHelper helper = TestUtils.createJDBCHelper();
446
		JDBCSQLBuilderBase sqlbuilder = helper.createSQLBuilder();
447
		OperationsFactory operations = helper.getOperations();
448

  
449
		List<String> expectedSQLs = TestUtils.getSQLs("resultSetForSetProvider.sql");
450

  
451
		FeatureStore sourceStore = TestUtils.openSourceStore1();
452

  
453
		TableReference table = operations.createTableReference(
454
			"dbtest",
455
			sqlbuilder.default_schema(),
456
			"test",
457
			null
458
		);
459
		StringBuilder filter = new StringBuilder();
460
		filter.append("EXISTS(");
461
		filter.append(" SELECT \"ISO_A2\" FROM countries");
462
		filter.append("   WHERE ");
463
		filter.append("     TEST.STRING = countries.CONTINENT AND ");
464
		filter.append("     countries.LASTCENSUS < 0 ");
465
		filter.append("   LIMIT 1;, ");
466
		filter.append(" 'EXISTS62a964cd7bc24f409b97c03b9170408d' ");
467
		filter.append(")");
468
		FeatureType featureType = sourceStore.getDefaultFeatureType();
469
		FeatureQuery query = sourceStore.createFeatureQuery();
470
		query.getGroupByColumns().add("Long");
471
		query.getAggregateFunctions().put("ID", "MIN");
472
		query.getAggregateFunctions().put("Byte", "MAX");
473
		query.getAggregateFunctions().put("Double", "SUM");
474
		query.addFilter(filter.toString());
475
		ResultSetForSetProviderOperation resultSetForSetProvider = operations.createResultSetForSetProvider(
476
			table,
477
			null,
478
			null,
479
			query,
480
			featureType,
481
			featureType,
482
			0,
483
			0,
484
			0
485
		);
486
		String sql = resultSetForSetProvider.getSQL();
487
		System.out.println("###### SQL:" + sql);
488
		System.out.println("###### EXP:" + expectedSQLs.get(3));
489

  
490
		assertEquals("ResultSetForSetProvider SQL", expectedSQLs.get(3), sql);
491
	}
492

  
493
	public void testConstantColumnPrimaryKey() throws Exception {
494
		JDBCHelper helper = TestUtils.createJDBCHelper();
495
		JDBCSQLBuilderBase sqlbuilder = helper.createSQLBuilder();
496
		OperationsFactory operations = helper.getOperations();
497

  
498
		List<String> expectedSQLs = TestUtils.getSQLs("resultSetForSetProvider.sql");
499

  
500
		FeatureStore sourceStore = TestUtils.openSourceStore1();
501

  
502
		TableReference table = operations.createTableReference(
503
			"dbtest",
504
			sqlbuilder.default_schema(),
505
			"test",
506
			null
507
		);
497 508
//    meterle como constantCOlumn ID
498 509

  
499
    FeatureType featureType = sourceStore.getDefaultFeatureType();
500
    FeatureQuery query = sourceStore.createFeatureQuery();
501
    
502
    query.setConstantsAttributeNames(new String[]{"ID"});
503
    
504
    ResultSetForSetProviderOperation resultSetForSetProvider = operations.createResultSetForSetProvider(
505
            table,
506
            null,
507
            null,
508
            query,
509
            featureType,
510
            featureType,
511
            0,
512
            0, 
513
            0
514
    );
515
    String sql = resultSetForSetProvider.getSQL();
516
    System.out.println("###### SQL:"+sql);
517
    System.out.println("###### EXP:"+expectedSQLs.get(4));
518
    
519
    assertEquals("ResultSetForSetProvider SQL", expectedSQLs.get(4), sql);
520
  }
510
		FeatureType featureType = sourceStore.getDefaultFeatureType();
511
		FeatureQuery query = sourceStore.createFeatureQuery();
521 512

  
513
		query.setConstantsAttributeNames(new String[]{"ID"});
522 514

  
523
  // TODO: a?adir un test con where, group y order.
515
		ResultSetForSetProviderOperation resultSetForSetProvider = operations.createResultSetForSetProvider(
516
			table,
517
			null,
518
			null,
519
			query,
520
			featureType,
521
			featureType,
522
			0,
523
			0,
524
			0
525
		);
526
		String sql = resultSetForSetProvider.getSQL();
527
		System.out.println("###### SQL:" + sql);
528
		System.out.println("###### EXP:" + expectedSQLs.get(4));
529

  
530
		assertEquals("ResultSetForSetProvider SQL", expectedSQLs.get(4), sql);
531
	}
532

  
533
	// TODO: a?adir un test con where, group y order.
524 534
}

Also available in: Unified diff