Statistics
| Revision:

svn-gvsig-desktop / branches / v2_0_0_prep / libraries / libFMap_dataFile / src-test / org / gvsig / fmap / data / feature / file / DataExplorerTest.java @ 23080

History | View | Annotate | Download (9.66 KB)

1
package org.gvsig.fmap.data.feature.file;
2

    
3
import java.io.File;
4

    
5
import junit.framework.TestCase;
6

    
7
import org.gvsig.fmap.data.DataException;
8
import org.gvsig.fmap.data.DataExplorer;
9
import org.gvsig.fmap.data.DataExplorerParameters;
10
import org.gvsig.fmap.data.DataManager;
11
import org.gvsig.fmap.data.DataStore;
12
import org.gvsig.fmap.data.DataStoreParameters;
13
import org.gvsig.fmap.data.InitializeException;
14
import org.gvsig.fmap.data.OpenException;
15
import org.gvsig.fmap.data.ReadException;
16
import org.gvsig.fmap.data.WriteException;
17
import org.gvsig.fmap.data.feature.AttributeDescriptor;
18
import org.gvsig.fmap.data.feature.DefaultFeatureType;
19
import org.gvsig.fmap.data.feature.FeatureAttributeDescriptor;
20
import org.gvsig.fmap.data.feature.FeatureCollection;
21
import org.gvsig.fmap.data.feature.FeatureStore;
22
import org.gvsig.fmap.data.feature.FeatureStoreExplorer;
23
import org.gvsig.fmap.data.feature.FeatureType;
24
import org.gvsig.fmap.data.feature.IsNotAttributeSettingException;
25
import org.gvsig.fmap.data.feature.NewFeatureStoreParameters;
26
import org.gvsig.fmap.data.feature.file.dbf.DBFDataExplorer;
27
import org.gvsig.fmap.data.feature.file.dbf.DBFStoreParameters;
28
import org.gvsig.fmap.data.feature.file.shp.SHPDataExplorer;
29
import org.gvsig.fmap.data.feature.file.shp.SHPStoreParameters;
30

    
31
import com.iver.utiles.XMLEntity;
32

    
33
public class DataExplorerTest extends TestCase {
34
        private File dbffile = new File(DataStoreTest.class.getResource("data/prueba.dbf").getFile());
35
        private File shpfile = new File(DataStoreTest.class.getResource("data/prueba.shp").getFile());
36

    
37
        public void testDBFExplorer(){
38
                org.gvsig.fmap.data.feature.file.dbf.Register.selfRegister();
39
                DataStoreParameters[] params = null;
40
                params=list(DBFDataExplorer.DATASOURCE_NAME,dbffile.getParent());
41

    
42
                assertEquals(3, params.length);
43

    
44
                String file=dbffile.getParent()+File.separator+"pruebaCrear.dbf";
45
                DBFStoreParameters parameters=new DBFStoreParameters();
46
                parameters.setFile(new File(file));
47

    
48
                DefaultFeatureType dft=new DefaultFeatureType();
49
                AttributeDescriptor fad=(AttributeDescriptor) dft.createAttributeDescriptor();
50
                try {
51
                        fad.loading();
52
                        fad.setName("CAMPO1");
53
                        fad.setType(FeatureAttributeDescriptor.TYPE_STRING);
54
                        fad.setSize(10);
55
                        fad.stopLoading();
56
                } catch (IsNotAttributeSettingException e1) {
57
                        e1.printStackTrace();
58
                }
59
                dft.add(fad);
60

    
61

    
62
                add(DBFDataExplorer.DATASOURCE_NAME,file,dft);
63

    
64
                params=list(DBFDataExplorer.DATASOURCE_NAME,dbffile.getParent());
65
                assertEquals(4, params.length);
66
                FeatureStore fs=(FeatureStore)createDataStore(DBFDataExplorer.DATASOURCE_NAME,file,parameters);
67
                try {
68
//                        fs.open();
69

    
70
                        FeatureCollection fc = (FeatureCollection) fs.getDataCollection();
71

    
72
                        assertEquals(0, fc.size());
73

    
74
                        fc.dispose();
75

    
76
//                        fs.close();
77
                        fs.dispose();
78
                } catch (Exception e) {
79
                        e.printStackTrace();
80
                        fail();
81
                }
82
                try {
83
                        remove(DBFDataExplorer.DATASOURCE_NAME,file,parameters);
84
                } catch (ReadException e) {
85
                        // TODO Auto-generated catch block
86
                        e.printStackTrace();
87
                }
88
                params=list(DBFDataExplorer.DATASOURCE_NAME,dbffile.getParent());
89

    
90
                assertEquals(3, params.length);
91

    
92
                persistenceTest(this.getParams(DBFDataExplorer.DATASOURCE_NAME, dbffile
93
                                .getParent()));
94
        }
95

    
96

    
97

    
98
        public void testSHPExplorer(){
99
                org.gvsig.fmap.data.feature.file.shp.Register.selfRegister();
100

    
101
                DataStoreParameters[] params = null;
102
                params=list(SHPDataExplorer.DATASOURCE_NAME,shpfile.getParent());
103

    
104
                assertEquals(3, params.length);
105

    
106
                String file=shpfile.getParent()+File.separator+"pruebaCrear.shp";
107
                SHPStoreParameters parameters=new SHPStoreParameters();
108
                parameters.setFile(new File(file));
109
//                parameters.setDBFFile(SHP.getDbfFile(new File(file)));
110
//                parameters.setSHXFile(SHP.getShxFile(new File(file)));
111

    
112
                DefaultFeatureType dft=new DefaultFeatureType();
113
                AttributeDescriptor fad1=(AttributeDescriptor) dft.createAttributeDescriptor();
114
                try{
115
                        fad1.loading();
116
                        fad1.setName("CAMPO1");
117
                        fad1.setType(FeatureAttributeDescriptor.TYPE_STRING);
118
                        fad1.setSize(10);
119
                        fad1.stopLoading();
120
                }catch (IsNotAttributeSettingException e) {
121
                        e.printStackTrace();
122
                }
123
                AttributeDescriptor fad2=(AttributeDescriptor) dft.createAttributeDescriptor();
124
                try{
125
                        fad2.loading();
126
                        fad2.setName("Geometry");
127
                        fad2.setType(FeatureAttributeDescriptor.TYPE_GEOMETRY);
128
                        fad2.stopLoading();
129
                }catch (IsNotAttributeSettingException e) {
130
                        e.printStackTrace();
131
                }
132
                dft.add(fad1);
133
                dft.add(fad2);
134

    
135

    
136
                add(SHPDataExplorer.DATASOURCE_NAME,file,dft);
137

    
138
                params=list(SHPDataExplorer.DATASOURCE_NAME,shpfile.getParent());
139
                assertEquals(4, params.length);
140
                FeatureStore fs=(FeatureStore)createDataStore(SHPDataExplorer.DATASOURCE_NAME,file,parameters);
141
                try {
142
//                        fs.open();
143

    
144
                        FeatureCollection fc = (FeatureCollection) fs.getDataCollection();
145

    
146
                        assertEquals(0, fc.size());
147

    
148
//                        fs.close();
149
                        fs.dispose();
150
                } catch (Exception e) {
151
                        e.printStackTrace();
152
                        fail();
153
                }
154
                try {
155
                        remove(SHPDataExplorer.DATASOURCE_NAME,file,parameters);
156
                } catch (ReadException e) {
157
                        // TODO Auto-generated catch block
158
                        e.printStackTrace();
159
                }
160
                params=list(SHPDataExplorer.DATASOURCE_NAME,shpfile.getParent());
161

    
162
                assertEquals(3, params.length);
163
                persistenceTest(this.getParams(SHPDataExplorer.DATASOURCE_NAME, shpfile
164
                                .getParent()));
165
        }
166

    
167
        private void remove(String name, String file,DataStoreParameters parameters) throws ReadException {
168
                DataManager dsm=DataManager.getManager();
169
                DataExplorerParameters dsp = dsm.createDataExplorerParameters(
170
                                name);
171
                ((FileExplorerParameters)dsp).setSource(new File(file).getParentFile());
172
                FeatureStoreExplorer src = (FeatureStoreExplorer)dsm.createDataExplorer(dsp);
173
                src.remove(parameters);
174

    
175
        }
176

    
177
        private void add(String name, String file,FeatureType featureType) {
178
                DataManager dsm=DataManager.getManager();
179
                DataExplorerParameters dsp=null;
180
                try {
181
                        dsp = dsm.createDataExplorerParameters(
182
                                        name);
183
                } catch (InitializeException e2) {
184
                        e2.printStackTrace();
185
                        fail();
186
                }
187

    
188
                ((FileExplorerParameters)dsp).setSource(new File(file).getParentFile());
189
                FeatureStoreExplorer src;
190
                try {
191
                        src = (FeatureStoreExplorer)dsm.createDataExplorer(dsp);
192
                } catch (InitializeException e1) {
193
                        e1.printStackTrace();
194
                        fail();return;
195
                }
196

    
197
                NewFeatureStoreParameters ndsp=(NewFeatureStoreParameters)src.createNewDataStoreParameter();
198

    
199
                ((FileStoreParameters)ndsp.getDataStoreParameters()).setFile(new File(file));
200
                ndsp.setFeatureType(featureType);
201
                try {
202
                        src.add(ndsp);
203
                } catch (InitializeException e) {
204
                        // TODO Auto-generated catch block
205
                        e.printStackTrace();
206
                        fail();return;
207
                } catch (WriteException e) {
208
                        // TODO Auto-generated catch block
209
                        e.printStackTrace();
210
                        fail();return;
211
                }
212

    
213

    
214
        }
215
        private DataStore createDataStore(String name, String file,DataStoreParameters parameters){
216
                DataManager dsm=DataManager.getManager();
217
                DataExplorerParameters dsp = getParams(name, new File(file)
218
                                .getParentFile().getAbsolutePath());
219
                FeatureStoreExplorer src;
220
                try {
221
                        src = (FeatureStoreExplorer)dsm.createDataExplorer(dsp);
222
                } catch (InitializeException e1) {
223
                        fail();return null;
224
                }
225
                try {
226
                        return src.createDataStore(parameters);
227
                } catch (OpenException e) {
228
                        // TODO Auto-generated catch block
229
                        e.printStackTrace();
230
                } catch (WriteException e) {
231
                        // TODO Auto-generated catch block
232
                        e.printStackTrace();
233
                } catch (InitializeException e) {
234
                        // TODO Auto-generated catch block
235
                        e.printStackTrace();
236
                }
237
                return null;
238
        }
239
        private DataStoreParameters[] list(String name,String parent){
240
                DataManager dsm = DataManager.getManager();
241

    
242
                DataExplorerParameters dsp = getParams(name, parent);
243
                DataExplorer src;
244
                try {
245
                        src = dsm.createDataExplorer(dsp);
246
                } catch (InitializeException e1) {
247
                        e1.printStackTrace();
248
                        fail();return null;
249
                }
250

    
251
                DataStoreParameters[] params = null;
252
                try {
253
                        params = src.list();
254
                } catch (ReadException e) {
255
                        e.printStackTrace();
256
                        fail();
257
                }
258
                return params;
259
        }
260

    
261
        protected void persistenceTest(DataExplorerParameters params1) {
262
                DataManager manager = DataManager.getManager();
263

    
264
                XMLEntity params1XML;
265
                DataExplorerParameters params2 = null;
266
                XMLEntity params2XML;
267

    
268
                DataExplorer explorer1 = null;
269
                XMLEntity explorer1XML;
270
                DataExplorer explorer2 = null;
271
                XMLEntity explorer2XML;
272

    
273
                params1XML = params1.getXMLEntity();
274

    
275
                try {
276
                        params2 = manager.createDataExplorerParameters(params1XML);
277
                } catch (InitializeException e) {
278
                        e.printStackTrace();
279
                        fail();
280
                }
281

    
282
                params2XML = params2.getXMLEntity();
283

    
284
                assertEquals(params1XML.toString(), params2XML.toString());
285

    
286
                try {
287
                        explorer1 = manager.createDataExplorer(params1);
288
                } catch (InitializeException e1) {
289
                        e1.printStackTrace();
290
                        fail();
291
                }
292

    
293
                explorer1XML = explorer1.getXMLEntity();
294

    
295
                try {
296
                        explorer2 = manager.createDataExplorer(explorer1XML);
297
                } catch (InitializeException e1) {
298
                        e1.printStackTrace();
299
                        fail();
300
                }
301

    
302
                explorer2XML = explorer2.getXMLEntity();
303

    
304
                assertEquals(explorer1XML.toString(), explorer2XML.toString());
305

    
306

    
307
                DataStoreParameters list1[] = null;
308
                DataStoreParameters list2[] = null;
309

    
310
                try {
311
                        list1 = explorer1.list();
312
                        list2 = explorer2.list();
313
                } catch (ReadException e) {
314
                        e.printStackTrace();
315
                        fail();
316
                }
317

    
318
                assertEquals(list1.length, list2.length);
319

    
320
                for (int i=0;i< list1.length;i++){
321
                        assertEquals(list1[i].getXMLEntity().toString(), list2[i]
322
                                        .getXMLEntity().toString());
323
                }
324

    
325
                try {
326
                        explorer1.dispose();
327
                        explorer2.dispose();
328
                } catch (DataException e) {
329
                        e.printStackTrace();
330
                        fail();
331
                }
332

    
333
        }
334

    
335
        protected DataExplorerParameters getParams(String name, String parent) {
336
                DataManager dsm = DataManager.getManager();
337

    
338
                FileExplorerParameters dsp = null;
339
                try {
340
                        dsp = (FileExplorerParameters) dsm
341
                                        .createDataExplorerParameters(name);
342
                } catch (InitializeException e2) {
343
                        e2.printStackTrace();
344
                        fail();
345
                }
346
                dsp.setSource(new File(parent));
347
                return dsp;
348
        }
349
}