root / trunk / libraries / libFMap_dataDB / src-test / org / gvsig / data / datastores / vectorial / db / jdbc / postgresql / postgresqlTest.java @ 20908
History | View | Annotate | Download (21.1 KB)
1 | 19928 | jmvivo | package org.gvsig.data.datastores.vectorial.db.jdbc.postgresql; |
---|---|---|---|
2 | |||
3 | 20029 | jmvivo | import java.sql.Connection; |
4 | import java.sql.DriverManager; |
||
5 | import java.sql.Statement; |
||
6 | 19944 | jmvivo | import java.util.Iterator; |
7 | import java.util.NoSuchElementException; |
||
8 | |||
9 | 19928 | jmvivo | import org.gvsig.data.DataManager; |
10 | 20849 | jmvivo | import org.gvsig.data.datastores.vectorial.db.DBAttributeDescriptor; |
11 | 20789 | vcaballero | import org.gvsig.data.datastores.vectorial.db.DBTest; |
12 | 19975 | jmvivo | import org.gvsig.data.exception.CloseException; |
13 | 20578 | jmvivo | import org.gvsig.data.exception.DataException; |
14 | 19944 | jmvivo | import org.gvsig.data.exception.InitializeException; |
15 | 20014 | jmvivo | import org.gvsig.data.exception.OpenException; |
16 | 19944 | jmvivo | import org.gvsig.data.exception.ReadException; |
17 | 20014 | jmvivo | import org.gvsig.data.exception.WriteException; |
18 | import org.gvsig.data.vectorial.Feature; |
||
19 | import org.gvsig.data.vectorial.IFeature; |
||
20 | import org.gvsig.data.vectorial.IFeatureAttributeDescriptor; |
||
21 | 19944 | jmvivo | import org.gvsig.data.vectorial.IFeatureCollection; |
22 | import org.gvsig.data.vectorial.IFeatureStore; |
||
23 | 20849 | jmvivo | import org.gvsig.data.vectorial.IsNotAttributeSettingException; |
24 | 19928 | jmvivo | |
25 | 20789 | vcaballero | public class postgresqlTest extends DBTest { |
26 | 19928 | jmvivo | |
27 | private static String SERVER_IP="192.168.0.66"; |
||
28 | private static String SERVER_PORT="5432"; |
||
29 | private static String SERVER_DBNAME="gis"; |
||
30 | private static String SERVER_SCHEMA="ds_test"; |
||
31 | private static String SERVER_USER="testCase"; |
||
32 | private static String SERVER_PASWD="testCase"; |
||
33 | |||
34 | |||
35 | private static String DS_NAME = PostgresqlStore.DATASTORE_NAME; |
||
36 | |||
37 | 20029 | jmvivo | private void preparar_prueba_table() throws Exception{ |
38 | String url;
|
||
39 | url = "jdbc:postgresql://"+SERVER_IP+":" + SERVER_PORT +"/"+SERVER_DBNAME; |
||
40 | 19928 | jmvivo | |
41 | 20029 | jmvivo | Connection conn = null; |
42 | |||
43 | Class.forName("org.postgresql.Driver"); |
||
44 | conn = DriverManager.getConnection(url, SERVER_USER, SERVER_PASWD);
|
||
45 | conn.setAutoCommit(false);
|
||
46 | Statement st = conn.createStatement();
|
||
47 | 20849 | jmvivo | st.execute("drop table "+SERVER_SCHEMA+".prueba"); |
48 | st.execute("CREATE TABLE "+SERVER_SCHEMA+".prueba "+ |
||
49 | "("+
|
||
50 | " gid serial NOT NULL,"+
|
||
51 | " area float8,"+
|
||
52 | " perimeter float8,"+
|
||
53 | " nombre text,"+
|
||
54 | " ine text,"+
|
||
55 | " tipo text,"+
|
||
56 | " otro_idiom text,"+
|
||
57 | " the_geom geometry,"+
|
||
58 | " entero int4,"+
|
||
59 | " bool bool,"+
|
||
60 | " CONSTRAINT prueba_pkey PRIMARY KEY (gid),"+
|
||
61 | 20875 | vcaballero | " CONSTRAINT enforce_dims_the_geom CHECK (ndims(the_geom) = 2)" +
|
62 | // ","+
|
||
63 | 20874 | vcaballero | // " CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = 'MULTIPOLYGON'::text OR the_geom IS NULL),"+
|
64 | // " CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = 23030)"+
|
||
65 | 20849 | jmvivo | ") "+
|
66 | "WITHOUT OIDS");
|
||
67 | |||
68 | st.execute("ALTER TABLE ds_test.prueba OWNER TO \"testCase\"");
|
||
69 | 20029 | jmvivo | st.execute("Insert into "+SERVER_SCHEMA+".prueba select * from "+SERVER_SCHEMA+".prueba_backup"); |
70 | 20849 | jmvivo | st.execute("SELECT setval('"+SERVER_SCHEMA+".prueba_gid_seq', (select max(gid) from "+SERVER_SCHEMA+".prueba))"); |
71 | 20029 | jmvivo | st.close(); |
72 | conn.commit(); |
||
73 | conn.close(); |
||
74 | |||
75 | |||
76 | |||
77 | |||
78 | } |
||
79 | |||
80 | 19975 | jmvivo | public void test1(){ |
81 | 19928 | jmvivo | Register.selfRegister(); |
82 | 20029 | jmvivo | |
83 | try {
|
||
84 | preparar_prueba_table(); |
||
85 | } catch (Exception e) { |
||
86 | e.printStackTrace(); |
||
87 | fail("Inicializando tabla prueba");
|
||
88 | } |
||
89 | 19928 | jmvivo | DataManager manager = DataManager.getManager(); |
90 | |||
91 | |||
92 | PostgresqlStoreParameters dparam = |
||
93 | (PostgresqlStoreParameters)manager.createDataStoreParameters(DS_NAME); |
||
94 | |||
95 | dparam.setHost(SERVER_IP); |
||
96 | dparam.setPort(SERVER_PORT); |
||
97 | dparam.setUser(SERVER_USER); |
||
98 | dparam.setPassw(SERVER_PASWD); |
||
99 | dparam.setSchema(SERVER_SCHEMA); |
||
100 | dparam.setDb(SERVER_DBNAME); |
||
101 | dparam.setTableName("prueba");
|
||
102 | dparam.setFieldId(new String[] {"gid"}); |
||
103 | dparam.setFields(new String[] {"*"}); |
||
104 | dparam.setDefaultGeometryField("the_geom");
|
||
105 | |||
106 | storeTest(dparam, null, null, false); |
||
107 | |||
108 | 19944 | jmvivo | } |
109 | 19928 | jmvivo | |
110 | 19965 | jmvivo | public void testSimpleIteration38K_regs(){ |
111 | 19944 | jmvivo | Register.selfRegister(); |
112 | DataManager manager = DataManager.getManager(); |
||
113 | 19928 | jmvivo | |
114 | 19944 | jmvivo | |
115 | PostgresqlStoreParameters dparam = |
||
116 | (PostgresqlStoreParameters)manager.createDataStoreParameters(DS_NAME); |
||
117 | |||
118 | dparam.setHost(SERVER_IP); |
||
119 | dparam.setPort(SERVER_PORT); |
||
120 | 19959 | jmvivo | dparam.setUser(SERVER_USER); |
121 | dparam.setPassw(SERVER_PASWD); |
||
122 | 19944 | jmvivo | dparam.setSchema(null);
|
123 | dparam.setDb(SERVER_DBNAME); |
||
124 | 19965 | jmvivo | dparam.setTableName("hidropol");
|
125 | // dparam.setTableName("ejes");
|
||
126 | 19944 | jmvivo | dparam.setFieldId(new String[] {"gid"}); |
127 | dparam.setFields(new String[] {"*"}); |
||
128 | dparam.setDefaultGeometryField("the_geom");
|
||
129 | |||
130 | // storeTest(dparam, null, null, false);
|
||
131 | |||
132 | IFeatureStore fs=null;
|
||
133 | try {
|
||
134 | fs = (IFeatureStore) manager.createDataStore(dparam); |
||
135 | } catch (InitializeException e) {
|
||
136 | e.printStackTrace(); |
||
137 | fail(); |
||
138 | } |
||
139 | IFeatureCollection fc=null;
|
||
140 | try {
|
||
141 | fc = (IFeatureCollection) fs.getDataCollection(); |
||
142 | } catch (ReadException e) {
|
||
143 | e.printStackTrace(); |
||
144 | fail(); |
||
145 | } |
||
146 | |||
147 | int i=0; |
||
148 | int count = fc.size();
|
||
149 | Iterator iter = fc.iterator();
|
||
150 | while (true){ |
||
151 | try{
|
||
152 | iter.next(); |
||
153 | i++; |
||
154 | } catch (NoSuchElementException e) { |
||
155 | break;
|
||
156 | } |
||
157 | } |
||
158 | assertEquals(count, i); |
||
159 | |||
160 | 19975 | jmvivo | fc.dispose(); |
161 | 19944 | jmvivo | |
162 | 19975 | jmvivo | try {
|
163 | fs.close(); |
||
164 | } catch (CloseException e) {
|
||
165 | e.printStackTrace(); |
||
166 | fail("Exception: "+e);
|
||
167 | } |
||
168 | try {
|
||
169 | fs.dispose(); |
||
170 | } catch (CloseException e) {
|
||
171 | // TODO Auto-generated catch block
|
||
172 | e.printStackTrace(); |
||
173 | } |
||
174 | |||
175 | |||
176 | 19928 | jmvivo | } |
177 | |||
178 | 20014 | jmvivo | public void test__sqlMode(){ |
179 | Register.selfRegister(); |
||
180 | DataManager manager = DataManager.getManager(); |
||
181 | |||
182 | |||
183 | PostgresqlStoreParameters dparam = |
||
184 | (PostgresqlStoreParameters)manager.createDataStoreParameters(DS_NAME); |
||
185 | |||
186 | dparam.setHost(SERVER_IP); |
||
187 | dparam.setPort(SERVER_PORT); |
||
188 | dparam.setUser(SERVER_USER); |
||
189 | dparam.setPassw(SERVER_PASWD); |
||
190 | dparam.setSchema(SERVER_SCHEMA); |
||
191 | dparam.setDb(SERVER_DBNAME); |
||
192 | // dparam.setTableName("prueba");
|
||
193 | dparam.setSqlSoure("Select * from "+ SERVER_SCHEMA+".prueba"); |
||
194 | dparam.setFieldId(new String[] {"gid"}); |
||
195 | dparam.setFields(new String[] {"*"}); |
||
196 | dparam.setDefaultGeometryField("the_geom");
|
||
197 | |||
198 | storeTest(dparam, null, null, false); |
||
199 | |||
200 | Exception exc = null; |
||
201 | |||
202 | IFeatureStore fs=null;
|
||
203 | try {
|
||
204 | fs = (IFeatureStore)manager.createDataStore(dparam); |
||
205 | } catch (InitializeException e) {
|
||
206 | e.printStackTrace(); |
||
207 | fail("Exception:" + e);
|
||
208 | } |
||
209 | assertNotNull("Can't create Feature Store", fs);
|
||
210 | |||
211 | try {
|
||
212 | fs.open(); |
||
213 | } catch (OpenException e2) {
|
||
214 | e2.printStackTrace(); |
||
215 | fail(); |
||
216 | } |
||
217 | |||
218 | |||
219 | IFeatureCollection fc =null;
|
||
220 | |||
221 | try {
|
||
222 | fc = (IFeatureCollection)fs.getDataCollection(); |
||
223 | } catch (ReadException e1) {
|
||
224 | e1.printStackTrace(); |
||
225 | fail(); |
||
226 | } |
||
227 | |||
228 | assertEquals(9, fc.size());
|
||
229 | |||
230 | fc.dispose(); |
||
231 | |||
232 | assertFalse("Edition allowed in sqlSource mode", fs.isEditable());
|
||
233 | |||
234 | try {
|
||
235 | fs.startEditing(); |
||
236 | } catch (ReadException e1) {
|
||
237 | exc=e1; |
||
238 | } |
||
239 | assertNotNull("Edition allowed in sqlSource mode",exc);
|
||
240 | |||
241 | exc=null;
|
||
242 | try {
|
||
243 | 20029 | jmvivo | fc = (IFeatureCollection)fs.getDataCollection(null,"nombre like 'B%'",null); |
244 | 20014 | jmvivo | } catch (ReadException e1) {
|
245 | exc=e1; |
||
246 | } |
||
247 | assertNotNull("Filter allowed in sqlSource mode",exc);
|
||
248 | |||
249 | exc=null;
|
||
250 | try {
|
||
251 | 20029 | jmvivo | fc = (IFeatureCollection)fs.getDataCollection(null,null,"nombre"); |
252 | 20014 | jmvivo | } catch (ReadException e1) {
|
253 | exc=e1; |
||
254 | } |
||
255 | assertNotNull("Order allowed in sqlSource mode",exc);
|
||
256 | |||
257 | |||
258 | try {
|
||
259 | fs.close(); |
||
260 | } catch (CloseException e) {
|
||
261 | e.printStackTrace(); |
||
262 | fail("Exception:" + e);
|
||
263 | } |
||
264 | |||
265 | } |
||
266 | |||
267 | public void test2(){ |
||
268 | 20029 | jmvivo | |
269 | try {
|
||
270 | preparar_prueba_table(); |
||
271 | } catch (Exception e) { |
||
272 | e.printStackTrace(); |
||
273 | fail("Inicializando tabla prueba");
|
||
274 | } |
||
275 | |||
276 | 20014 | jmvivo | Register.selfRegister(); |
277 | DataManager manager = DataManager.getManager(); |
||
278 | |||
279 | |||
280 | PostgresqlStoreParameters dparam = |
||
281 | (PostgresqlStoreParameters)manager.createDataStoreParameters(DS_NAME); |
||
282 | |||
283 | dparam.setHost(SERVER_IP); |
||
284 | dparam.setPort(SERVER_PORT); |
||
285 | dparam.setUser(SERVER_USER); |
||
286 | dparam.setPassw(SERVER_PASWD); |
||
287 | dparam.setSchema(SERVER_SCHEMA); |
||
288 | dparam.setDb(SERVER_DBNAME); |
||
289 | dparam.setTableName("prueba");
|
||
290 | dparam.setFieldId(new String[] {"gid"}); |
||
291 | dparam.setFields(new String[] {"*"}); |
||
292 | dparam.setDefaultGeometryField("the_geom");
|
||
293 | |||
294 | // storeTest(dparam, null, null, true);
|
||
295 | storeTest(dparam, null, null, false); |
||
296 | |||
297 | IFeatureStore fs=null;
|
||
298 | try {
|
||
299 | fs = (IFeatureStore)manager.createDataStore(dparam); |
||
300 | } catch (InitializeException e) {
|
||
301 | e.printStackTrace(); |
||
302 | fail("Exception:" + e);
|
||
303 | } |
||
304 | assertNotNull("Can't create Feature Store", fs);
|
||
305 | |||
306 | try {
|
||
307 | fs.open(); |
||
308 | } catch (OpenException e2) {
|
||
309 | e2.printStackTrace(); |
||
310 | fail(); |
||
311 | } |
||
312 | |||
313 | Iterator it;
|
||
314 | IFeatureCollection fc =null;
|
||
315 | Comparable v1,v2;
|
||
316 | 20413 | vcaballero | IFeature feature=null,pfeature=null; |
317 | 20014 | jmvivo | long count;
|
318 | |||
319 | |||
320 | try {
|
||
321 | fc = (IFeatureCollection)fs.getDataCollection(); |
||
322 | } catch (ReadException e1) {
|
||
323 | e1.printStackTrace(); |
||
324 | fail(); |
||
325 | } |
||
326 | |||
327 | assertEquals(9, fc.size());
|
||
328 | |||
329 | fc.dispose(); |
||
330 | |||
331 | try {
|
||
332 | fc = (IFeatureCollection)fs.getDataCollection(null,"lower(nombre) like 'b%'",null); |
||
333 | } catch (ReadException e1) {
|
||
334 | e1.printStackTrace(); |
||
335 | fail(); |
||
336 | } |
||
337 | |||
338 | assertEquals(2, fc.size());
|
||
339 | |||
340 | it = fc.iterator(); |
||
341 | count=0;
|
||
342 | while (it.hasNext()){
|
||
343 | feature = (IFeature)it.next(); |
||
344 | assertTrue("Filter error",feature.getString("nombre").toLowerCase().startsWith("b")); |
||
345 | count++; |
||
346 | } |
||
347 | assertEquals("Iteration error",2,count); |
||
348 | |||
349 | fc.dispose(); |
||
350 | |||
351 | |||
352 | try {
|
||
353 | fc = (IFeatureCollection)fs.getDataCollection(null,null,"nombre ASC"); |
||
354 | } catch (ReadException e1) {
|
||
355 | e1.printStackTrace(); |
||
356 | fail(); |
||
357 | } |
||
358 | assertEquals(9, fc.size());
|
||
359 | it = fc.iterator(); |
||
360 | count=0;
|
||
361 | pfeature = (IFeature)it.next(); |
||
362 | count++; |
||
363 | while (it.hasNext()){
|
||
364 | feature = (IFeature)it.next(); |
||
365 | v1 = (Comparable)pfeature.get("nombre"); |
||
366 | v2 = (Comparable)feature.get("nombre"); |
||
367 | pfeature=feature; |
||
368 | assertTrue("Short error", (v1.compareTo(v1) <= 0)); |
||
369 | count++; |
||
370 | } |
||
371 | assertEquals("Iteration error",9,count); |
||
372 | |||
373 | fc.dispose(); |
||
374 | |||
375 | |||
376 | try {
|
||
377 | fc = (IFeatureCollection)fs.getDataCollection(null,null,"nombre DESC"); |
||
378 | } catch (ReadException e1) {
|
||
379 | e1.printStackTrace(); |
||
380 | fail(); |
||
381 | } |
||
382 | assertEquals(9, fc.size());
|
||
383 | it = fc.iterator(); |
||
384 | |||
385 | count=0;
|
||
386 | pfeature = (IFeature)it.next(); |
||
387 | count++; |
||
388 | while (it.hasNext()){
|
||
389 | feature = (IFeature)it.next(); |
||
390 | v1 = (Comparable)pfeature.get("nombre"); |
||
391 | v2 = (Comparable)feature.get("nombre"); |
||
392 | pfeature=feature; |
||
393 | assertTrue("Short error", (v1.compareTo(v1) >= 0)); |
||
394 | count++; |
||
395 | } |
||
396 | assertEquals("Iteration error",9,count); |
||
397 | |||
398 | fc.dispose(); |
||
399 | |||
400 | |||
401 | |||
402 | try {
|
||
403 | 20029 | jmvivo | fc = (IFeatureCollection)fs.getDataCollection(null,"lower(nombre) like 'b%'","nombre"); |
404 | 20014 | jmvivo | } catch (ReadException e1) {
|
405 | e1.printStackTrace(); |
||
406 | fail(); |
||
407 | } |
||
408 | |||
409 | assertEquals(2, fc.size());
|
||
410 | |||
411 | it = fc.iterator(); |
||
412 | |||
413 | count=0;
|
||
414 | pfeature = (IFeature)it.next(); |
||
415 | assertTrue(pfeature.getString("nombre").toLowerCase().startsWith("b")); |
||
416 | count++; |
||
417 | while (it.hasNext()){
|
||
418 | feature = (IFeature)it.next(); |
||
419 | assertTrue("Filter error",feature.getString("nombre").toLowerCase().startsWith("b")); |
||
420 | v1 = (Comparable)pfeature.get("nombre"); |
||
421 | v2 = (Comparable)feature.get("nombre"); |
||
422 | pfeature=feature; |
||
423 | assertTrue("Short error", (v1.compareTo(v1) <= 0)); |
||
424 | count++; |
||
425 | } |
||
426 | assertEquals("Iteration error",2,count); |
||
427 | fc.dispose(); |
||
428 | |||
429 | |||
430 | |||
431 | try {
|
||
432 | fc = (IFeatureCollection)fs.getDataCollection(null,null,"Tipo,lower(nombre) Desc"); |
||
433 | } catch (ReadException e1) {
|
||
434 | e1.printStackTrace(); |
||
435 | fail(); |
||
436 | } |
||
437 | assertEquals(9, fc.size());
|
||
438 | it = fc.iterator(); |
||
439 | count=0;
|
||
440 | pfeature = (IFeature)it.next(); |
||
441 | System.out.println(pfeature.getString("nombre")); |
||
442 | count++; |
||
443 | while (it.hasNext()){
|
||
444 | feature = (IFeature)it.next(); |
||
445 | v1 = (Comparable)((String)pfeature.get("nombre")).toLowerCase(); |
||
446 | v2 = (Comparable)((String)feature.get("nombre")).toLowerCase(); |
||
447 | pfeature=feature; |
||
448 | assertTrue("Short error", (v1.compareTo(v2) >= 0)); |
||
449 | System.out.println(pfeature.getString("nombre")); |
||
450 | count++; |
||
451 | } |
||
452 | assertEquals("Iteration error",9,count); |
||
453 | fc.dispose(); |
||
454 | |||
455 | |||
456 | |||
457 | /// CON EDICION
|
||
458 | 20029 | jmvivo | try {
|
459 | fs.startEditing(); |
||
460 | } catch (ReadException e1) {
|
||
461 | e1.printStackTrace(); |
||
462 | fail(); |
||
463 | } |
||
464 | |||
465 | 20413 | vcaballero | try{
|
466 | 20578 | jmvivo | IFeature newFeature = fs.createFeature(fs.getDefaultFeatureType()); |
467 | newFeature.editing(); |
||
468 | newFeature.set("nombre","BuRjaSOT"); |
||
469 | newFeature.set("tipo","MUNICIPIO"); |
||
470 | fs.insert(newFeature); |
||
471 | }catch (DataException e) {
|
||
472 | 20413 | vcaballero | e.printStackTrace(); |
473 | fail(); |
||
474 | } |
||
475 | 20029 | jmvivo | |
476 | try {
|
||
477 | fc = (IFeatureCollection)fs.getDataCollection(); |
||
478 | } catch (ReadException e1) {
|
||
479 | e1.printStackTrace(); |
||
480 | fail(); |
||
481 | } |
||
482 | |||
483 | assertEquals(10, fc.size());
|
||
484 | fc.dispose(); |
||
485 | |||
486 | try {
|
||
487 | fc = (IFeatureCollection)fs.getDataCollection(null,"lower(nombre) like 'b%'",null); |
||
488 | } catch (ReadException e1) {
|
||
489 | e1.printStackTrace(); |
||
490 | fail(); |
||
491 | } |
||
492 | |||
493 | assertEquals(3, fc.size());
|
||
494 | |||
495 | it = fc.iterator(); |
||
496 | count=0;
|
||
497 | while (it.hasNext()){
|
||
498 | feature = (IFeature)it.next(); |
||
499 | assertTrue("Filter error",feature.getString("nombre").toLowerCase().startsWith("b")); |
||
500 | count++; |
||
501 | } |
||
502 | assertEquals("Iteration error",3,count); |
||
503 | fc.dispose(); |
||
504 | |||
505 | |||
506 | try {
|
||
507 | fc = (IFeatureCollection)fs.getDataCollection(null,null,"nombre ASC"); |
||
508 | } catch (ReadException e1) {
|
||
509 | e1.printStackTrace(); |
||
510 | fail(); |
||
511 | } |
||
512 | assertEquals(10, fc.size());
|
||
513 | it = fc.iterator(); |
||
514 | count=0;
|
||
515 | pfeature = (IFeature)it.next(); |
||
516 | count++; |
||
517 | while (it.hasNext()){
|
||
518 | feature = (IFeature)it.next(); |
||
519 | v1 = (Comparable)pfeature.get("nombre"); |
||
520 | v2 = (Comparable)feature.get("nombre"); |
||
521 | pfeature=feature; |
||
522 | assertTrue("Short error", (v1.compareTo(v1) <= 0)); |
||
523 | count++; |
||
524 | } |
||
525 | assertEquals("Iteration error",10,count); |
||
526 | fc.dispose(); |
||
527 | |||
528 | |||
529 | try {
|
||
530 | fc = (IFeatureCollection)fs.getDataCollection(null,null,"nombre DESC"); |
||
531 | } catch (ReadException e1) {
|
||
532 | e1.printStackTrace(); |
||
533 | fail(); |
||
534 | } |
||
535 | assertEquals(10, fc.size());
|
||
536 | it = fc.iterator(); |
||
537 | |||
538 | count=0;
|
||
539 | pfeature = (IFeature)it.next(); |
||
540 | count++; |
||
541 | while (it.hasNext()){
|
||
542 | feature = (IFeature)it.next(); |
||
543 | v1 = (Comparable)pfeature.get("nombre"); |
||
544 | v2 = (Comparable)feature.get("nombre"); |
||
545 | pfeature=feature; |
||
546 | assertTrue("Short error", (v1.compareTo(v1) >= 0)); |
||
547 | count++; |
||
548 | } |
||
549 | assertEquals("Iteration error",10,count); |
||
550 | fc.dispose(); |
||
551 | |||
552 | |||
553 | try {
|
||
554 | fc = (IFeatureCollection)fs.getDataCollection(null,"lower(nombre) like 'b%'","nombre"); |
||
555 | } catch (ReadException e1) {
|
||
556 | e1.printStackTrace(); |
||
557 | fail(); |
||
558 | } |
||
559 | |||
560 | assertEquals(3, fc.size());
|
||
561 | |||
562 | it = fc.iterator(); |
||
563 | |||
564 | count=0;
|
||
565 | pfeature = (IFeature)it.next(); |
||
566 | assertTrue(pfeature.getString("nombre").toLowerCase().startsWith("b")); |
||
567 | count++; |
||
568 | while (it.hasNext()){
|
||
569 | feature = (IFeature)it.next(); |
||
570 | assertTrue("Filter error",feature.getString("nombre").toLowerCase().startsWith("b")); |
||
571 | v1 = (Comparable)pfeature.get("nombre"); |
||
572 | v2 = (Comparable)feature.get("nombre"); |
||
573 | pfeature=feature; |
||
574 | assertTrue("Short error", (v1.compareTo(v1) <= 0)); |
||
575 | count++; |
||
576 | } |
||
577 | assertEquals("Iteration error",3,count); |
||
578 | fc.dispose(); |
||
579 | |||
580 | |||
581 | |||
582 | try {
|
||
583 | fc = (IFeatureCollection)fs.getDataCollection(null,null,"Tipo,lower(nombre) Desc"); |
||
584 | } catch (ReadException e1) {
|
||
585 | e1.printStackTrace(); |
||
586 | fail(); |
||
587 | } |
||
588 | assertEquals(10, fc.size());
|
||
589 | it = fc.iterator(); |
||
590 | count=0;
|
||
591 | pfeature = (IFeature)it.next(); |
||
592 | System.out.println(pfeature.getString("nombre")); |
||
593 | count++; |
||
594 | while (it.hasNext()){
|
||
595 | feature = (IFeature)it.next(); |
||
596 | v1 = (Comparable)((String)pfeature.get("nombre")).toLowerCase(); |
||
597 | v2 = (Comparable)((String)feature.get("nombre")).toLowerCase(); |
||
598 | pfeature=feature; |
||
599 | assertTrue("Short error", (v1.compareTo(v2) >= 0)); |
||
600 | System.out.println(pfeature.getString("nombre")); |
||
601 | count++; |
||
602 | } |
||
603 | assertEquals("Iteration error",10,count); |
||
604 | fc.dispose(); |
||
605 | |||
606 | |||
607 | fs.cancelEditing(); |
||
608 | |||
609 | |||
610 | //Insertar un elemento
|
||
611 | try{
|
||
612 | fs.startEditing(); |
||
613 | } catch (ReadException e1) {
|
||
614 | e1.printStackTrace(); |
||
615 | fail(); |
||
616 | } |
||
617 | 20413 | vcaballero | try{
|
618 | 20029 | jmvivo | feature = fs.createDefaultFeature(true);
|
619 | 20473 | jmvivo | feature.editing(); |
620 | 20413 | vcaballero | // feature.set("id", 90000);
|
621 | 20029 | jmvivo | feature.set("nombre","BurJASOT"); |
622 | feature.set("tipo", "OTRO"); |
||
623 | fs.insert(feature); |
||
624 | 20578 | jmvivo | }catch (DataException e) {
|
625 | 20413 | vcaballero | e.printStackTrace(); |
626 | fail(); |
||
627 | } |
||
628 | 20029 | jmvivo | try {
|
629 | fs.finishEditing(); |
||
630 | } catch (WriteException e) {
|
||
631 | e.printStackTrace(); |
||
632 | fail("Exception: "+e);
|
||
633 | } catch (ReadException e) {
|
||
634 | e.printStackTrace(); |
||
635 | fail("Exception: "+e);
|
||
636 | } |
||
637 | |||
638 | |||
639 | try {
|
||
640 | fc = (IFeatureCollection)fs.getDataCollection(null,null,"lower(nombre) Desc"); |
||
641 | } catch (ReadException e1) {
|
||
642 | e1.printStackTrace(); |
||
643 | fail(); |
||
644 | } |
||
645 | assertEquals(10, fc.size());
|
||
646 | it = fc.iterator(); |
||
647 | count=0;
|
||
648 | pfeature = (IFeature)it.next(); |
||
649 | System.out.println(pfeature.getString("nombre")); |
||
650 | count++; |
||
651 | while (it.hasNext()){
|
||
652 | feature = (IFeature)it.next(); |
||
653 | v1 = (Comparable)((String)pfeature.get("nombre")).toLowerCase(); |
||
654 | v2 = (Comparable)((String)feature.get("nombre")).toLowerCase(); |
||
655 | pfeature=feature; |
||
656 | assertTrue("Short error: "+ v1.toString() + " >= " +v2.toString(), (v1.compareTo(v2) >= 0)); |
||
657 | System.out.println(pfeature.getString("nombre")); |
||
658 | count++; |
||
659 | } |
||
660 | assertEquals("Iteration error",10,count); |
||
661 | fc.dispose(); |
||
662 | |||
663 | |||
664 | |||
665 | //Actualizacion
|
||
666 | try{
|
||
667 | fs.startEditing(); |
||
668 | } catch (ReadException e1) {
|
||
669 | e1.printStackTrace(); |
||
670 | fail(); |
||
671 | } |
||
672 | |||
673 | |||
674 | try {
|
||
675 | fc = (IFeatureCollection)fs.getDataCollection(null,"lower(nombre) = 'burjasot'",null); |
||
676 | } catch (ReadException e1) {
|
||
677 | e1.printStackTrace(); |
||
678 | fail(); |
||
679 | } |
||
680 | assertEquals(1, fc.size());
|
||
681 | 20473 | jmvivo | feature =(Feature)fc.iterator().next(); |
682 | 20413 | vcaballero | try {
|
683 | 20473 | jmvivo | feature.editing(); |
684 | feature.set("nombre", feature.getString("nombre")+"__KK__"); |
||
685 | 20578 | jmvivo | } catch (DataException e2) {
|
686 | 20413 | vcaballero | // TODO Auto-generated catch block
|
687 | e2.printStackTrace(); |
||
688 | } |
||
689 | 20029 | jmvivo | try {
|
690 | 20849 | jmvivo | fs.update(feature); |
691 | } catch (DataException e2) {
|
||
692 | e2.printStackTrace();fail(); |
||
693 | } |
||
694 | try {
|
||
695 | 20029 | jmvivo | fs.finishEditing(); |
696 | } catch (WriteException e) {
|
||
697 | e.printStackTrace(); |
||
698 | fail("Exception: "+e);
|
||
699 | } catch (ReadException e) {
|
||
700 | e.printStackTrace(); |
||
701 | fail("Exception: "+e);
|
||
702 | } |
||
703 | 20014 | jmvivo | |
704 | 20029 | jmvivo | try {
|
705 | fc = (IFeatureCollection)fs.getDataCollection(null,"nombre like '%__KK__'",null); |
||
706 | } catch (ReadException e1) {
|
||
707 | e1.printStackTrace(); |
||
708 | fail(); |
||
709 | } |
||
710 | assertEquals(1, fc.size());
|
||
711 | fc.dispose(); |
||
712 | 20014 | jmvivo | |
713 | 20029 | jmvivo | |
714 | //Eliminacion
|
||
715 | try{
|
||
716 | fs.startEditing(); |
||
717 | } catch (ReadException e1) {
|
||
718 | e1.printStackTrace(); |
||
719 | fail(); |
||
720 | } |
||
721 | |||
722 | |||
723 | 20014 | jmvivo | try {
|
724 | 20029 | jmvivo | fc = (IFeatureCollection)fs.getDataCollection(null,"nombre like '%__KK__'",null); |
725 | } catch (ReadException e1) {
|
||
726 | e1.printStackTrace(); |
||
727 | fail(); |
||
728 | } |
||
729 | assertEquals(1, fc.size());
|
||
730 | 20849 | jmvivo | try {
|
731 | fs.delete((IFeature)fc.iterator().next()); |
||
732 | } catch (DataException e2) {
|
||
733 | e2.printStackTrace();fail(); |
||
734 | } |
||
735 | 20029 | jmvivo | fc.dispose(); |
736 | try {
|
||
737 | fs.finishEditing(); |
||
738 | } catch (WriteException e) {
|
||
739 | e.printStackTrace(); |
||
740 | fail("Exception: "+e);
|
||
741 | } catch (ReadException e) {
|
||
742 | e.printStackTrace(); |
||
743 | fail("Exception: "+e);
|
||
744 | } |
||
745 | |||
746 | try {
|
||
747 | fc = (IFeatureCollection)fs.getDataCollection(); |
||
748 | } catch (ReadException e1) {
|
||
749 | e1.printStackTrace(); |
||
750 | fail(); |
||
751 | } |
||
752 | assertEquals(9, fc.size());
|
||
753 | fc.dispose(); |
||
754 | |||
755 | |||
756 | |||
757 | try {
|
||
758 | 20014 | jmvivo | fs.close(); |
759 | } catch (CloseException e) {
|
||
760 | e.printStackTrace(); |
||
761 | fail("Exception:" + e);
|
||
762 | } |
||
763 | |||
764 | |||
765 | |||
766 | } |
||
767 | |||
768 | |||
769 | 20849 | jmvivo | public void test3(){ |
770 | |||
771 | try {
|
||
772 | preparar_prueba_table(); |
||
773 | } catch (Exception e) { |
||
774 | e.printStackTrace(); |
||
775 | fail("Inicializando tabla prueba");
|
||
776 | } |
||
777 | |||
778 | Register.selfRegister(); |
||
779 | DataManager manager = DataManager.getManager(); |
||
780 | |||
781 | |||
782 | PostgresqlStoreParameters dparam = |
||
783 | (PostgresqlStoreParameters)manager.createDataStoreParameters(DS_NAME); |
||
784 | |||
785 | dparam.setHost(SERVER_IP); |
||
786 | dparam.setPort(SERVER_PORT); |
||
787 | dparam.setUser(SERVER_USER); |
||
788 | dparam.setPassw(SERVER_PASWD); |
||
789 | dparam.setSchema(SERVER_SCHEMA); |
||
790 | dparam.setDb(SERVER_DBNAME); |
||
791 | dparam.setTableName("prueba");
|
||
792 | dparam.setFieldId(new String[] {"gid"}); |
||
793 | dparam.setFields(new String[] {"*"}); |
||
794 | dparam.setDefaultGeometryField("the_geom");
|
||
795 | |||
796 | IFeatureStore fs=null;
|
||
797 | try {
|
||
798 | fs = (IFeatureStore)manager.createDataStore(dparam); |
||
799 | } catch (InitializeException e) {
|
||
800 | e.printStackTrace(); |
||
801 | fail("Exception:" + e);
|
||
802 | } |
||
803 | assertNotNull("Can't create Feature Store", fs);
|
||
804 | |||
805 | try {
|
||
806 | fs.open(); |
||
807 | } catch (OpenException e2) {
|
||
808 | e2.printStackTrace(); |
||
809 | fail(); |
||
810 | } |
||
811 | int size;
|
||
812 | |||
813 | try {
|
||
814 | fs.startEditing(); |
||
815 | } catch (ReadException e) {
|
||
816 | e.printStackTrace();fail(); |
||
817 | } |
||
818 | |||
819 | 20908 | jmvivo | DBAttributeDescriptor attr =(DBAttributeDescriptor)fs.getDefaultFeatureType().createNewAttributeDescriptor(); |
820 | 20849 | jmvivo | attr.editing(); |
821 | try {
|
||
822 | attr.setName("My_new_Field");
|
||
823 | attr.setType(IFeatureAttributeDescriptor.TYPE_STRING); |
||
824 | attr.setSize(50);
|
||
825 | } catch (IsNotAttributeSettingException e1) {
|
||
826 | // TODO Auto-generated catch block
|
||
827 | e1.printStackTrace(); |
||
828 | } |
||
829 | try {
|
||
830 | fs.insert(attr); |
||
831 | } catch (DataException e2) {
|
||
832 | e2.printStackTrace();fail(); |
||
833 | } |
||
834 | |||
835 | Iterator iter = null; |
||
836 | |||
837 | |||
838 | |||
839 | IFeatureCollection fc=null;
|
||
840 | try {
|
||
841 | fc = (IFeatureCollection)fs.getDataCollection(); |
||
842 | } catch (ReadException e1) {
|
||
843 | e1.printStackTrace();fail(); |
||
844 | } |
||
845 | |||
846 | size = fc.size(); |
||
847 | iter = fc.iterator(); |
||
848 | |||
849 | |||
850 | int i= 0; |
||
851 | Feature feature = null;
|
||
852 | while (iter.hasNext()){
|
||
853 | feature = (Feature)iter.next(); |
||
854 | try {
|
||
855 | feature.editing(); |
||
856 | feature.set("My_new_Field","V"+i); |
||
857 | } catch (DataException e) {
|
||
858 | e.printStackTrace();fail(); |
||
859 | } |
||
860 | |||
861 | try {
|
||
862 | fs.update(feature); |
||
863 | } catch (DataException e) {
|
||
864 | e.printStackTrace();fail(); |
||
865 | } |
||
866 | |||
867 | } |
||
868 | |||
869 | fc.dispose(); |
||
870 | |||
871 | |||
872 | try {
|
||
873 | fc = (IFeatureCollection)fs.getDataCollection(); |
||
874 | } catch (ReadException e1) {
|
||
875 | e1.printStackTrace();fail(); |
||
876 | } |
||
877 | |||
878 | assertEquals(size, fc.size()); |
||
879 | |||
880 | iter = fc.iterator(); |
||
881 | |||
882 | while (iter.hasNext()){
|
||
883 | feature = (Feature)iter.next(); |
||
884 | assertTrue(feature.getString("My_new_Field") != null); |
||
885 | assertTrue(feature.getString("My_new_Field").startsWith("V")); |
||
886 | } |
||
887 | |||
888 | try {
|
||
889 | fs.finishEditing(); |
||
890 | } catch (WriteException e) {
|
||
891 | e.printStackTrace();fail(); |
||
892 | } catch (ReadException e) {
|
||
893 | e.printStackTrace();fail(); |
||
894 | } |
||
895 | |||
896 | try {
|
||
897 | fc = (IFeatureCollection)fs.getDataCollection(); |
||
898 | } catch (ReadException e1) {
|
||
899 | e1.printStackTrace();fail(); |
||
900 | } |
||
901 | |||
902 | iter = fc.iterator(); |
||
903 | |||
904 | while (iter.hasNext()){
|
||
905 | feature = (Feature)iter.next(); |
||
906 | 20875 | vcaballero | assertTrue(feature.getString("my_new_field") != null); |
907 | assertTrue(feature.getString("my_new_field").startsWith("V")); |
||
908 | 20849 | jmvivo | } |
909 | |||
910 | fc.dispose(); |
||
911 | |||
912 | try {
|
||
913 | fs.close(); |
||
914 | } catch (CloseException e) {
|
||
915 | e.printStackTrace();fail(); |
||
916 | } |
||
917 | |||
918 | try {
|
||
919 | fs.dispose(); |
||
920 | } catch (CloseException e) {
|
||
921 | e.printStackTrace();fail(); |
||
922 | } |
||
923 | |||
924 | } |
||
925 | 19928 | jmvivo | } |