Statistics
| Revision:

svn-gvsig-desktop / trunk / libraries / libDataSourceBaseDrivers / src-test / org / gvsig / data / datastores / vectorial / driver / DataStoreTest.java @ 19472

History | View | Annotate | Download (9.48 KB)

1
package org.gvsig.data.datastores.vectorial.driver;
2

    
3
import java.io.File;
4
import java.util.Iterator;
5

    
6
import junit.framework.TestCase;
7

    
8
import org.gvsig.data.DataSourceManager;
9
import org.gvsig.data.IDataStoreParameters;
10
import org.gvsig.data.datastores.vectorial.driver.dbf.DBFDriverParameters;
11
import org.gvsig.data.datastores.vectorial.driver.shp.ShpDriverParameters;
12
import org.gvsig.data.datastores.vectorial.driver.shp.fileshp.SHP;
13
import org.gvsig.data.exception.CloseException;
14
import org.gvsig.data.exception.InitializeException;
15
import org.gvsig.data.exception.ReadException;
16
import org.gvsig.data.exception.WriteException;
17
import org.gvsig.data.vectorial.IFeature;
18
import org.gvsig.data.vectorial.IFeatureAttributeDescriptor;
19
import org.gvsig.data.vectorial.IFeatureCollection;
20
import org.gvsig.data.vectorial.IFeatureStore;
21
import org.gvsig.data.vectorial.IFeatureType;
22
import org.gvsig.data.visitor.IVisitor;
23

    
24
public class DataStoreTest extends TestCase {
25

    
26
        private File dbffile = new File(DataStoreTest.class.getResource("data/prueba.dbf").getFile());
27
        private File shpfile = new File(DataStoreTest.class.getResource("data/prueba.shp").getFile());
28

    
29
        public static void main(String[] args) {
30
                junit.textui.TestRunner.run(DataStoreTest.class);
31
        }
32

    
33
        protected void setUp() throws Exception {
34
                super.setUp();
35

    
36
        }
37

    
38
        public void testDBF() {
39
                System.out.println("======= DBF ==============");
40
                org.gvsig.data.datastores.vectorial.driver.dbf.Register.selfRegister();
41
                org.gvsig.data.datastores.vectorial.driver.Register.selfRegister();
42

    
43
                DataSourceManager dsm=DataSourceManager.getManager();
44

    
45

    
46
                IDriverParameters dp=dsm.createDriverParameters("dbf");
47
                ((DBFDriverParameters)dp).setDBFFile(dbffile);
48

    
49
                driverTest(dp,null,null,true);
50

    
51
                IFeatureStore fs = createFeatureStore(dp);
52
                assertNotNull("Can't create Feature Store", fs);
53

    
54
                fs.open();
55

    
56
                Iterator it;
57
                IFeatureCollection fc;
58
                Comparable v1,v2;
59
                IFeature feature,pfeature;
60
                long count;
61

    
62

    
63
                fc = (IFeatureCollection)fs.getDataCollection();
64

    
65
                assertEquals(9, fc.size());
66

    
67
                fc = (IFeatureCollection)fs.getDataCollection(null,"lower(NOMBRE) like 'b%'",null);
68

    
69
//                assertEquals(2, fc.size());
70

    
71
                it = fc.iterator();
72
                count=0;
73
                while (it.hasNext()){
74
                        feature = (IFeature)it.next();
75
                        System.out.println(feature.getString("NOMBRE"));
76
                        assertTrue("Filter error",feature.getString("NOMBRE").toLowerCase().startsWith("b"));
77
                        count++;
78
                }
79
                assertEquals("Iteration error",2,count);
80

    
81

    
82
                fc = (IFeatureCollection)fs.getDataCollection(null,null,"ASC NOMBRE");
83
                assertEquals(9, fc.size());
84
//                FIXME: falta test
85
                it = fc.iterator();
86
                count=0;
87
                pfeature = (IFeature)it.next();
88
                count++;
89
                while (it.hasNext()){
90
                        feature = (IFeature)it.next();
91
                        v1 = (Comparable)pfeature.get("NOMBRE");
92
                        v2 = (Comparable)feature.get("NOMBRE");
93
                        pfeature=feature;
94
                        System.out.println("OJO!!!! NO SE ESTAN HACINEDO COMPROBACIONES DE ORDEN");
95
//                        assertTrue("Short error", (v1.compareTo(v1) <= 0));
96
                        count++;
97
                }
98
                assertEquals("Iteration error",9,count);
99

    
100

    
101
                fc = (IFeatureCollection)fs.getDataCollection(null,null,"DESC NOMBRE");
102
                assertEquals(9, fc.size());
103
//                FIXME: falta test
104
                it = fc.iterator();
105

    
106
                count=0;
107
                pfeature = (IFeature)it.next();
108
                count++;
109
                while (it.hasNext()){
110
                        feature = (IFeature)it.next();
111
                        v1 = (Comparable)pfeature.get("NOMBRE");
112
                        v2 = (Comparable)feature.get("NOMBRE");
113
                        pfeature=feature;
114
                        System.out.println("OJO!!!! NO SE ESTAN HACINEDO COMPROBACIONES DE ORDEN");
115
//                        assertTrue("Short error", (v1.compareTo(v1) >= 0));
116
                        count++;
117
                }
118
                assertEquals("Iteration error",9,count);
119

    
120

    
121
                fc = (IFeatureCollection)fs.getDataCollection(null,"lower(NOMBRE) like 'b%'","ASC NOMBRE");
122

    
123
                assertEquals(2, fc.size());
124

    
125
                it = fc.iterator();
126

    
127
                count=0;
128
                pfeature = (IFeature)it.next();
129
                assertTrue(pfeature.getString("NOMBRE").toLowerCase().startsWith("b"));
130
                count++;
131
                while (it.hasNext()){
132
                        feature = (IFeature)it.next();
133
                        assertTrue("Filter error",feature.getString("NOMBRE").toLowerCase().startsWith("b"));
134
                        v1 = (Comparable)pfeature.get("NOMBRE");
135
                        v2 = (Comparable)feature.get("NOMBRE");
136
                        pfeature=feature;
137
                        System.out.println("OJO!!!! NO SE ESTAN HACINEDO COMPROBACIONES DE ORDEN");
138
//                        assertTrue("Short error", (v1.compareTo(v1) <= 0));
139
                        count++;
140
                }
141
                assertEquals("Iteration error",2,count);
142

    
143
                try {
144
                        fs.close();
145
                } catch (CloseException e) {
146
                        e.printStackTrace();
147
                        fail("Exception:" + e);
148
                }
149

    
150

    
151
                System.out.println("======= /DBF ==============");
152

    
153
        }
154

    
155
        public void testSHP() {
156
                System.out.println("======= SHP ==============");
157
                org.gvsig.data.datastores.vectorial.driver.shp.Register.selfRegister();
158
                org.gvsig.data.datastores.vectorial.driver.dbf.Register.selfRegister();
159
                org.gvsig.data.datastores.vectorial.driver.Register.selfRegister();
160

    
161
                DataSourceManager dsm=DataSourceManager.getManager();
162

    
163

    
164
                IDriverParameters dp=dsm.createDriverParameters("shp");
165
                ((ShpDriverParameters)dp).setSHPFile(shpfile);
166
                ((ShpDriverParameters)dp).setSHXFile(SHP.getShxFile(shpfile));
167
                ((ShpDriverParameters)dp).setDBFFile(SHP.getDbfFile(shpfile));
168

    
169

    
170
                driverTest(dp,null,null,true);
171

    
172

    
173

    
174

    
175
                System.out.println("======= /SHP ==============");
176

    
177
        }
178

    
179
        private IFeatureStore createFeatureStore(IDriverParameters dp){
180
                DataSourceManager dsm=DataSourceManager.getManager();
181

    
182
                IDataStoreParameters dsp=dsm.createDataStoreParameters(DriverStore.DATASTORE_NAME);
183

    
184
                ((IDriverStoreParameters)dsp).setDriverParameters(dp);
185
                IFeatureStore fs=null;
186
                try {
187
                        fs = (IFeatureStore)dsm.createDataStore(dsp);
188
                } catch (InitializeException e) {
189
                        e.printStackTrace();
190
                        fail("Exception:" + e);
191
                }
192
                return fs;
193

    
194
        }
195

    
196

    
197
        private void driverTest(IDriverParameters dp,String filter, String order,boolean testEdit){
198
                DataSourceManager dsm=DataSourceManager.getManager();
199

    
200
                IDataStoreParameters dsp=dsm.createDataStoreParameters(DriverStore.DATASTORE_NAME);
201

    
202
                ((IDriverStoreParameters)dsp).setDriverParameters(dp);
203
                IFeatureStore fs=createFeatureStore(dp);
204

    
205
                fs.open();
206

    
207
                if (fs.isEditable() && testEdit) {
208
                        fs.startEditing();
209

    
210
                        IFeature feature1 = fs.createDefaultFeature(false);
211
                        IFeature feature2 = fs.createDefaultFeature(false);
212
                        IFeature feature3 = fs.createDefaultFeature(false);
213

    
214
                        fs.insert(feature1);
215
                        fs.insert(feature2);
216

    
217
                        fs.update(feature3,feature1);
218
                        fs.delete(feature3);
219
                        fs.delete(feature2);
220
                }
221

    
222
                //Mostrar por consola todos los registros.
223
                IFeatureType ft= fs.getDefaultFeatureType();
224
                IFeatureCollection featureCollection;
225
//                featureCollection = (IFeatureCollection)fs.getDataCollection();
226
//                featureCollection = (IFeatureCollection)fs.getDataCollection(ft,"NOMBRE = 'CALPE'",null);
227
//                featureCollection = (IFeatureCollection)fs.getDataCollection(ft,"AREA > 3.2213163729E7 and AREA < 3.2213163749E7",null);
228
                featureCollection = (IFeatureCollection)fs.getDataCollection(ft,filter,order);
229

    
230
                VisitorExample visitor=new VisitorExample(ft);
231
                featureCollection.accept(visitor);
232

    
233
                if (fs.isEditable() && testEdit){
234
                        try {
235
                                fs.finishEditing();
236
                        } catch (WriteException e) {
237
                                e.printStackTrace();
238
                                fail("Exception: "+e);
239
                        } catch (ReadException e) {
240
                                e.printStackTrace();
241
                                fail("Exception: "+e);
242
                        }
243
                }
244
                try {
245
                        fs.close();
246
                } catch (CloseException e) {
247
                        e.printStackTrace();
248
                        fail("Exception: "+e);
249
                }
250
                fs.dispose();
251
        }
252

    
253
        private class VisitorExample implements IVisitor{
254
                private IFeatureType featureType;
255
                public VisitorExample(IFeatureType ft){
256
                        this.featureType=ft;
257
                }
258

    
259
                public void visit(Object obj) {
260
                        IFeature feature=(IFeature)obj;
261
                        System.out.println("Feature Class ------------------- "+feature.getClass().toString());
262
                        for (int i=0;i<featureType.size();i++){
263

    
264
                                IFeatureAttributeDescriptor descriptor=(IFeatureAttributeDescriptor)featureType.get(i);
265
                                String type=descriptor.getDataType();
266
                                if (type.equals(IFeatureAttributeDescriptor.TYPE_BOOLEAN)){
267
                                        System.out.println(((IFeatureAttributeDescriptor)featureType.get(i)).getName()+" ----- "+ feature.getBoolean(i)+ "---- Boolean");
268
                                }else if (type.equals(IFeatureAttributeDescriptor.TYPE_BYTE)){
269
                                        System.out.println(((IFeatureAttributeDescriptor)featureType.get(i)).getName()+" ----- "+ feature.getByte(i)+ "---- Byte");
270
                                }else if (type.equals(IFeatureAttributeDescriptor.TYPE_DATE)){
271
                                        System.out.println(((IFeatureAttributeDescriptor)featureType.get(i)).getName()+" ----- "+ feature.getDate(i)+ "---- Date");
272
                                }else if (type.equals(IFeatureAttributeDescriptor.TYPE_DOUBLE)){
273
                                        System.out.println(((IFeatureAttributeDescriptor)featureType.get(i)).getName()+" ----- "+ feature.getDouble(i)+ "---- Double");
274
                                }else if (type.equals(IFeatureAttributeDescriptor.TYPE_FLOAT)){
275
                                        System.out.println(((IFeatureAttributeDescriptor)featureType.get(i)).getName()+" ----- "+ feature.getFloat(i)+ "---- Float");
276
                                }else if (type.equals(IFeatureAttributeDescriptor.TYPE_INT)){
277
                                        System.out.println(((IFeatureAttributeDescriptor)featureType.get(i)).getName()+" ----- "+ feature.getInt(i)+ "---- Integer");
278
                                }else if (type.equals(IFeatureAttributeDescriptor.TYPE_LONG)){
279
                                        System.out.println(((IFeatureAttributeDescriptor)featureType.get(i)).getName()+" ----- "+ feature.getLong(i)+ "---- Long");
280
                                }else if (type.equals(IFeatureAttributeDescriptor.TYPE_STRING)){
281
                                        System.out.println(((IFeatureAttributeDescriptor)featureType.get(i)).getName()+" ----- "+ feature.getString(i)+ "---- String");
282
                                }
283
                        }
284
                }
285

    
286
        }
287
}