Statistics
| Revision:

root / branches / v2_0_0_prep / libraries / libFMap_dalfile / src-test / org / gvsig / fmap / dal / store / shp / TestSHP.java @ 27672

History | View | Annotate | Download (9.75 KB)

1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 */
22

    
23
/*
24
* AUTHORS (In addition to CIT):
25
* 2008 IVER T.I. S.A.   {{Task}}
26
*/
27

    
28
package org.gvsig.fmap.dal.store.shp;
29

    
30
import java.io.File;
31
import java.util.Iterator;
32

    
33
import org.cresques.ProjectionLibrary;
34
import org.cresques.impl.CresquesCtsLibrary;
35
import org.gvsig.fmap.dal.DALFileLibrary;
36
import org.gvsig.fmap.dal.DataStoreParameters;
37
import org.gvsig.fmap.dal.exception.DataException;
38
import org.gvsig.fmap.dal.feature.BaseTestEditableFeatureStore;
39
import org.gvsig.fmap.dal.feature.DisposableIterator;
40
import org.gvsig.fmap.dal.feature.EditableFeature;
41
import org.gvsig.fmap.dal.feature.Feature;
42
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
43
import org.gvsig.fmap.dal.feature.FeatureSet;
44
import org.gvsig.fmap.dal.feature.FeatureStore;
45
import org.gvsig.fmap.dal.feature.FeatureType;
46
import org.gvsig.fmap.dal.feature.NewFeatureStoreParameters;
47
import org.gvsig.fmap.dal.index.spatial.jts.JTSIndexLibrary;
48
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemServerExplorer;
49
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemServerExplorerParameters;
50
import org.gvsig.fmap.dal.store.dbf.DBFStoreParameters;
51
import org.gvsig.fmap.dal.store.dbf.DBFStoreProvider;
52
import org.gvsig.fmap.geom.impl.DefaultGeometryLibrary;
53

    
54
public class TestSHP extends BaseTestEditableFeatureStore {
55

    
56
        protected boolean testSHPInitialized = false;
57

    
58

    
59
        private FilesystemServerExplorer myExplorer;
60

    
61

    
62
        public static final File file_prueba = new File(TestSHP.class.getResource(
63
                        "data/prueba.shp").getFile());
64
        public static final File file_prueba_destino = new File(file_prueba
65
                        .getParent()
66
                        + "/pruebaTemp.shp");
67
        public static final File file_pruebaNull = new File(TestSHP.class
68
                        .getResource("data/pruebaNull.shp").getFile());
69

    
70
        public static final File file_poly_valencia = new File(TestSHP.class
71
                        .getResource("data/poly-valencia.shp").getFile());
72

    
73

    
74
        protected void setUp() throws Exception {
75
                super.setUp();
76

    
77
                if (testSHPInitialized) {
78
                        return;
79
                }
80

    
81
                DALFileLibrary libFile = new DALFileLibrary();
82
                libFile.initialize();
83

    
84
                DefaultGeometryLibrary defGeomLib = new DefaultGeometryLibrary();
85
                defGeomLib.initialize();
86

    
87
                ProjectionLibrary projLib = new ProjectionLibrary();
88
                projLib.initialize();
89

    
90
                CresquesCtsLibrary cresquesLib = new CresquesCtsLibrary();
91
                cresquesLib.initialize();
92

    
93
                SHPLibrary shpLib = new SHPLibrary();
94
                shpLib.initialize();
95

    
96

    
97
                JTSIndexLibrary jtsIndex = new JTSIndexLibrary();
98
                jtsIndex.initialize();
99

    
100
                defGeomLib.postInitialize();
101
                projLib.postInitialize();
102
                cresquesLib.postInitialize();
103
                libFile.postInitialize();
104
                shpLib.postInitialize();
105
                jtsIndex.postInitialize();
106

    
107
                testSHPInitialized = true;
108

    
109

    
110
        }
111

    
112
        public void testSimpleIteration() {
113

    
114
                FeatureStore store = null;
115
                SHPStoreParameters shpParameters = null;
116

    
117
                try {
118
                        shpParameters = (SHPStoreParameters) dataManager
119
                                        .createStoreParameters(SHPStoreProvider.NAME);
120

    
121
                        //                        shpParameters.setFile(file_poly_valencia);
122
                        shpParameters.setFile(file_prueba);
123

    
124
                        store = (FeatureStore) dataManager.createStore(shpParameters);
125
                        FeatureSet set;
126
                        FeatureType type = store.getDefaultFeatureType();
127
                        set = store.getFeatureSet();
128

    
129
                        System.out.println("Num:" + set.getSize());
130
                        DisposableIterator it = set.iterator();
131
                        Iterator ftIt;
132
                        FeatureAttributeDescriptor desc;
133

    
134
                        int i = 0;
135
                        Feature feature;
136
                        while (it.hasNext()) {
137
                                ftIt = type.iterator();
138

    
139
                                feature = (Feature) it.next();
140
                                //                                while (ftIt.hasNext()) {
141
                                //                                        desc = (FeatureAttributeDescriptor) ftIt.next();
142
                                //                                        System.out.println(desc.getName() + ":"
143
                                //                                                        + feature.get(desc.getIndex()));
144
                                //
145
                                //                                }
146
                                //                                System.out.println(feature.get("NOMBRE"));
147
                                System.out.print(feature.getDefaultEnvelope() + "\t");
148
                                //                                System.out.print(feature.getDefaultGeometry() + "\t");
149
                                //                                System.out.println(feature.get("NOMBRE"));
150
                                System.out.println("row:" + i);
151
                                i++;
152

    
153

    
154
                        }
155

    
156
                        it.dispose();
157
                        set.dispose();
158

    
159
                        store.dispose();
160

    
161

    
162
                } catch (DataException e3) {
163
                        e3.printStackTrace();
164
                        fail();
165
                        return;
166
                }
167

    
168

    
169
        }
170
        public void testEditing(Object x) {
171
                FeatureStore store = null;
172
                SHPStoreParameters shpParameters = null;
173

    
174
                try {
175
                        shpParameters = (SHPStoreParameters) dataManager
176
                                        .createStoreParameters(SHPStoreProvider.NAME);
177

    
178
                        shpParameters.setFile(file_poly_valencia);
179

    
180
                        store = (FeatureStore) dataManager.createStore(shpParameters);
181
                        FeatureSet set;
182
                        FeatureType type = store.getDefaultFeatureType();
183
                        System.err.println("Antes de la edici?n");
184
                        set = store.getFeatureSet();
185
                        System.out.println("Num:" + set.getSize());
186
                        DisposableIterator it = set.iterator();
187
                        Iterator ftIt;
188
                        FeatureAttributeDescriptor desc;
189

    
190
                        int i = 0;
191
                        Feature feature;
192
                        while (it.hasNext()) {
193
                                ftIt = type.iterator();
194

    
195
                                feature = (Feature) it.next();
196
                                //                                while (ftIt.hasNext()) {
197
                                //                                        desc = (FeatureAttributeDescriptor) ftIt.next();
198
                                //                                        System.out.println(desc.getName() + ":"
199
                                //                                                        + feature.get(desc.getIndex()));
200
                                //
201
                                //                                }
202
                                //                                System.out.println(feature.get("NOMBRE"));
203
                                System.out.print(feature.getDefaultEnvelope() + "\t");
204
                                //                                System.out.print(feature.getDefaultGeometry() + "\t");
205
                                //                                System.out.println(feature.get("NOMBRE"));
206
                                System.out.println("row:" + i);
207
                                i++;
208

    
209

    
210
                        }
211

    
212
                        it.dispose();
213
                        set.dispose();
214
                        store.edit();
215
                        EditableFeature ef = store.createNewFeature();
216
                        store.insert(ef);
217
                        store.finishEditing();
218
                        System.err.println("Despu?s de la edici?n");
219
                        set = store.getFeatureSet();
220
                        System.out.println("Num:" + set.getSize());
221
                        it = set.iterator();
222

    
223
                        i = 0;
224
                        while (it.hasNext()) {
225
                                ftIt = type.iterator();
226

    
227
                                feature = (Feature) it.next();
228
                                //                                while (ftIt.hasNext()) {
229
                                //                                        desc = (FeatureAttributeDescriptor) ftIt.next();
230
                                //                                        System.out.println(desc.getName() + ":"
231
                                //                                                        + feature.get(desc.getIndex()));
232
                                //
233
                                //                                }
234
                                //                                System.out.println(feature.get("NOMBRE"));
235
                                System.out.print(feature.getDefaultEnvelope() + "\t");
236
                                //                                System.out.print(feature.getDefaultGeometry() + "\t");
237
                                //                                System.out.println(feature.get("NOMBRE"));
238
                                System.out.println("row:" + i);
239
                                i++;
240

    
241

    
242
                        }
243

    
244
                        it.dispose();
245
                        set.dispose();
246

    
247
                        store.dispose();
248

    
249

    
250
                } catch (DataException e3) {
251
                        e3.printStackTrace();
252
                        fail();
253
                        return;
254
                }
255
        }
256

    
257
        public void testExport(Object x) {
258
                DBFStoreParameters dbfParameters = null;
259

    
260
                try {
261
                        dbfParameters = (DBFStoreParameters) dataManager
262
                                        .createStoreParameters(DBFStoreProvider.NAME);
263

    
264
                        dbfParameters.setFile(file_prueba);
265

    
266
                        FeatureStore store = (FeatureStore) dataManager
267
                                        .createStore(dbfParameters);
268
                        FilesystemServerExplorerParameters explorerParams=(FilesystemServerExplorerParameters) dataManager.createServerExplorerParameters(FilesystemServerExplorerParameters.DYNCLASS_NAME);
269
                        explorerParams.setRoot(file_prueba.getParent());
270

    
271
                        FilesystemServerExplorer explorer=(FilesystemServerExplorer) dataManager.createServerExplorer(explorerParams);
272

    
273
                        NewFeatureStoreParameters newParams = (NewFeatureStoreParameters) explorer.getAddParameters(file_prueba_destino);
274

    
275
                        store.export(explorer, newParams);
276

    
277
                        FeatureStore result = (FeatureStore)dataManager.createStore(newParams);
278

    
279
                        FeatureSet set = result.getFeatureSet();
280
                        FeatureSet originalSet=store.getFeatureSet();
281
                        assertEquals(set.getSize(), originalSet.getSize());
282

    
283
                        DisposableIterator originalIter = originalSet.iterator();
284
                        DisposableIterator iter = set.iterator();
285
                        while (iter.hasNext()) {
286
                                assertEquals(originalIter.next(),iter.next());
287
                        }
288

    
289
                        originalIter.dispose();
290
                        iter.dispose();
291
                        result.dispose();
292
                        explorer.remove(newParams);
293

    
294
                } catch (DataException e3) {
295
                        e3.printStackTrace();
296
                        fail();
297
                        return;
298
                }
299

    
300
        }
301

    
302
        /*
303
         * (non-Javadoc)
304
         *
305
         * @see
306
         * org.gvsig.fmap.dal.feature.BaseTestFeatureStore#getDefaultDataStoreParameters
307
         * ()
308
         */
309
        public DataStoreParameters getDefaultDataStoreParameters()
310
                        throws DataException {
311
                SHPStoreParameters shpParameters = (SHPStoreParameters) dataManager
312
                                .createStoreParameters(SHPStoreProvider.NAME);
313

    
314
                //                        shpParameters.setFile(file_poly_valencia);
315
                shpParameters.setFile(file_prueba);
316
                return shpParameters;
317
        }
318

    
319
        /*
320
         * (non-Javadoc)
321
         *
322
         * @see org.gvsig.fmap.dal.feature.BaseTestFeatureStore#hasExplorer()
323
         */
324
        public boolean hasExplorer() {
325
                return true;
326
        }
327

    
328
        /*
329
         * (non-Javadoc)
330
         *
331
         * @seeorg.gvsig.fmap.dal.feature.BaseTestEditableFeatureStore#
332
         * getDefaultNewDataStoreParameters()
333
         */
334
        public NewFeatureStoreParameters getDefaultNewDataStoreParameters()
335
                        throws DataException {
336
                if (this.myExplorer == null) {
337
                        SHPStoreParameters parameters = (SHPStoreParameters) this
338
                                        .getDefaultDataStoreParameters();
339
                        FeatureStore store = (FeatureStore) dataManager
340
                                        .createStore(parameters);
341
                        myExplorer = (FilesystemServerExplorer) store.getExplorer();
342
                        store.dispose();
343
                }
344

    
345
                return (NewFeatureStoreParameters) myExplorer
346
                                .getAddParameters(file_prueba_destino);
347
        }
348

    
349
        public boolean usesResources() {
350
                return true;
351
        }
352

    
353
}