Statistics
| Revision:

root / branches / v2_0_0_prep / libraries / libFMap_dalfile / src-test / org / gvsig / fmap / dal / store / dbf / TestDBF.java @ 25247

History | View | Annotate | Download (8.8 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.dbf;
29

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

    
33
import junit.framework.TestCase;
34

    
35
import org.gvsig.fmap.dal.DALFileLibrary;
36
import org.gvsig.fmap.dal.DALLibrary;
37
import org.gvsig.fmap.dal.DALLocator;
38
import org.gvsig.fmap.dal.DataManager;
39
import org.gvsig.fmap.dal.DataServerExplorer;
40
import org.gvsig.fmap.dal.exception.DataException;
41
import org.gvsig.fmap.dal.feature.Feature;
42
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
43
import org.gvsig.fmap.dal.feature.FeatureQuery;
44
import org.gvsig.fmap.dal.feature.FeatureSet;
45
import org.gvsig.fmap.dal.feature.FeatureStore;
46
import org.gvsig.fmap.dal.feature.FeatureType;
47
import org.gvsig.tools.ToolsLibrary;
48
import org.gvsig.tools.ToolsLocator;
49
import org.gvsig.tools.persistence.PersistenceException;
50
import org.gvsig.tools.persistence.xmlentity.XMLEntityManager;
51
import org.gvsig.tools.persistence.xmlentity.XMLEntityState;
52

    
53
public class TestDBF extends TestCase {
54

    
55
        public static final File dbf_prueba = new File(TestDBF.class.getResource(
56
                        "data/prueba.dbf").getFile());
57
        public static final File dbf_pruebaNull = new File(TestDBF.class
58
                        .getResource("data/pruebaNull.dbf").getFile());
59

    
60

    
61
        private static DataManager dataManager = null;
62

    
63
        public TestDBF() {
64
                super();
65
        }
66

    
67
        public TestDBF(DataManager manager) {
68
                super();
69
                dataManager = manager;
70
        }
71

    
72
        protected void setUp() throws Exception {
73
                super.setUp();
74
                if (dataManager != null) {
75
                        return;
76
                }
77
                ToolsLibrary tools = new ToolsLibrary();
78
                tools.initialize();
79
                tools.postInitialize();
80

    
81
                ToolsLocator.registerDefaultPersistenceManager(XMLEntityManager.class);
82

    
83
                DALLibrary lib = new DALLibrary();
84
                lib.initialize();
85
                lib.postInitialize();
86

    
87
                DALFileLibrary libFile = new DALFileLibrary();
88
                libFile.initialize();
89
                libFile.postInitialize();
90

    
91
                DBFLibrary dbfLib = new DBFLibrary();
92
                dbfLib.initialize();
93
                dbfLib.postInitialize();
94

    
95
                dataManager = DALLocator.getDataManager();
96
        }
97

    
98
        public void testPersistence() {
99
                DBFStoreParameters dbfParameters = null;
100

    
101
                try {
102
                        dbfParameters = (DBFStoreParameters) dataManager
103
                                        .createStoreParameters(DBFStoreProvider.NAME);
104

    
105
                        dbfParameters.setFile(dbf_prueba);
106

    
107
                        FeatureStore store = (FeatureStore) dataManager
108
                                        .createStore(dbfParameters);
109

    
110
                        testSimpleIteration(store);
111

    
112
                        XMLEntityState state = (XMLEntityState) store.getState();
113

    
114
                        System.out.println(state.getXMLEntity().toString());
115

    
116
                        FeatureStore store2 = (FeatureStore) ToolsLocator
117
                                        .getPersistenceManager().create(
118
                                        state);
119

    
120
                        testSimpleIteration(store2);
121

    
122
                        XMLEntityState state2 = (XMLEntityState) store.getState();
123

    
124
                        assertEquals(state.getXMLEntity().toString(), state2.getXMLEntity()
125
                                        .toString());
126

    
127
                        assertEquals(dbf_prueba.getPath(),
128
                                        ((DBFStoreParameters) store2.getParameters()).getFile().getPath());
129
                        store.dispose();
130
                        store2.dispose();
131

    
132
                } catch (DataException e3) {
133
                        e3.printStackTrace();
134
                        fail();
135
                        return;
136
                } catch (PersistenceException e) {
137
                        e.printStackTrace();
138
                        fail();
139
                        return;
140
                }
141

    
142
        }
143

    
144
        public void testSimpleIteration(FeatureStore store) {
145
                FeatureSet set;
146
                try {
147

    
148
                        FeatureType type = store.getDefaultFeatureType();
149
                        set = store.getFeatureSet();
150

    
151
                        Iterator it = set.iterator();
152
                        Iterator ftIt;
153
                        FeatureAttributeDescriptor desc;
154

    
155
                        Feature feature;
156
                        while (it.hasNext()) {
157
                                ftIt = type.iterator();
158

    
159
                                feature = (Feature) it.next();
160
                                while (ftIt.hasNext()) {
161
                                        desc = (FeatureAttributeDescriptor) ftIt.next();
162
                                        System.out.println(desc.getName() + ":"
163
                                                        + feature.get(desc.getName()));
164

    
165
                                }
166
                                System.out.println("==================");
167
                        }
168

    
169
                        set.dispose();
170

    
171

    
172
                } catch (DataException e3) {
173
                        e3.printStackTrace();
174
                        fail();
175
                        return;
176
                }
177

    
178

    
179
        }
180

    
181
        public void testSimpleIteration(DBFStoreParameters dbfParameters) {
182
                FeatureStore store = null;
183
                try {
184
                        store = (FeatureStore) dataManager.createStore(dbfParameters);
185

    
186
                        this.testSimpleIteration(store);
187

    
188
                        store.dispose();
189

    
190

    
191
                } catch (DataException e3) {
192
                        e3.printStackTrace();
193
                        fail();
194
                        return;
195
                }
196

    
197

    
198
        }
199

    
200
        public void testSimpleIteration() {
201
                DBFStoreParameters dbfParameters = null;
202

    
203
                try {
204
                        dbfParameters = (DBFStoreParameters) dataManager
205
                                        .createStoreParameters(DBFStoreProvider.NAME);
206

    
207
                        dbfParameters.setFile(dbf_prueba);
208

    
209
                        this.testSimpleIteration(dbfParameters);
210

    
211

    
212

    
213
                } catch (DataException e3) {
214
                        e3.printStackTrace();
215
                        fail();
216
                        return;
217
                }
218

    
219
        }
220

    
221
        public void test() {
222
                DBFStoreParameters dbfParameters = null;
223

    
224
                try {
225
                        dbfParameters = (DBFStoreParameters) dataManager
226
                                        .createStoreParameters(DBFStoreProvider.NAME);
227

    
228
                        dbfParameters.setFile(dbf_prueba);
229

    
230
                        FeatureStore store = (FeatureStore) dataManager
231
                                        .createStore(dbfParameters);
232
                        FeatureSet set = store.getFeatureSet();
233

    
234

    
235
                        set.dispose();
236

    
237
                } catch (DataException e3) {
238
                        e3.printStackTrace();
239
                        fail();
240
                        return;
241
                }
242

    
243
        }
244

    
245
        public void testExplorer() {
246
                FeatureStore store = null;
247
                DBFStoreParameters dbfParameters = null;
248

    
249
                try {
250
                        dbfParameters = (DBFStoreParameters) dataManager
251
                                        .createStoreParameters(DBFStoreProvider.NAME);
252

    
253
                        dbfParameters.setFile(dbf_prueba);
254

    
255
                        store = (FeatureStore) dataManager.createStore(dbfParameters);
256

    
257
                        DataServerExplorer explorer = store.getExplorer();
258

    
259
                        assertEquals(2, explorer.list().size());
260

    
261
                        store.dispose();
262

    
263
                } catch (DataException e3) {
264
                        e3.printStackTrace();
265
                        fail();
266
                        return;
267
                }
268

    
269
        }
270

    
271
        public void testSelection() {
272
                DBFStoreParameters dbfParameters = null;
273

    
274
                try {
275
                        dbfParameters = (DBFStoreParameters) dataManager
276
                                        .createStoreParameters(DBFStoreProvider.NAME);
277

    
278
                        dbfParameters.setFile(dbf_prueba);
279

    
280
                        FeatureStore store = (FeatureStore) dataManager
281
                                        .createStore(dbfParameters);
282
                        FeatureSet set = store.getFeatureSet();
283

    
284
                        assertTrue(store.getFeatureSelection().isEmpty());
285
                        store.setSelection(set);
286
                        assertFalse(store.getFeatureSelection().isEmpty());
287

    
288
                        assertEquals(set.getSize(), store.getFeatureSelection().getSize());
289

    
290
                        Iterator iter = set.iterator();
291
                        while (iter.hasNext()) {
292
                                assertTrue(store.getFeatureSelection().isSelected(
293
                                                (Feature) iter.next()));
294
                        }
295

    
296
                        store.getFeatureSelection().reverse();
297
                        assertTrue(store.getFeatureSelection().isEmpty());
298
                        assertEquals(0, store.getFeatureSelection().getSize());
299
                        store.getFeatureSelection().reverse();
300
                        assertEquals(set.getSize(), store.getFeatureSelection().getSize());
301
                        assertFalse(store.getFeatureSelection().isEmpty());
302

    
303

    
304

    
305
                        set.dispose();
306

    
307
                } catch (DataException e3) {
308
                        e3.printStackTrace();
309
                        fail();
310
                        return;
311
                }
312

    
313
        }
314

    
315

    
316
        public void testCustomFTypeSet() {
317
                DBFStoreParameters dbfParameters = null;
318

    
319
                try {
320
                        dbfParameters = (DBFStoreParameters) dataManager
321
                                        .createStoreParameters(DBFStoreProvider.NAME);
322

    
323
                        dbfParameters.setFile(dbf_prueba);
324

    
325
                        FeatureStore store = (FeatureStore) dataManager
326
                                        .createStore(dbfParameters);
327

    
328
                        FeatureSet set, set1;
329
                        FeatureQuery query;
330
                        Iterator iter, iter1, attrIter;
331
                        Feature feature, feature1;
332
                        FeatureAttributeDescriptor attr;
333

    
334
                        set = store.getFeatureSet();
335
                        attrIter = store.getDefaultFeatureType().iterator();
336

    
337
                        while (attrIter.hasNext()) {
338
                                attr = (FeatureAttributeDescriptor) attrIter.next();
339
                                int fieldIndex = attr.getIndex();
340

    
341
                                query = store.createFeatureQuery();
342
                                String fieldName = store.getDefaultFeatureType()
343
                                                .getAttributeDescriptor(fieldIndex).getName();
344

    
345

    
346
                                query.setAttributeNames(new String[] { fieldName });
347
                                set1 = store.getFeatureSet(query);
348

    
349
                                iter = set.fastIterator();
350
                                iter1 = set1.fastIterator();
351

    
352
                                while (iter.hasNext() && iter1.hasNext()) {
353
                                        feature = (Feature) iter.next();
354
                                        feature1 = (Feature) iter1.next();
355
                                        assertEquals(feature.get(fieldName), feature1
356
                                                        .get(fieldName));
357
                                        assertEquals(feature.get(fieldIndex), feature1.get(0));
358
                                }
359
                                assertFalse(iter.hasNext());
360
                                assertFalse(iter1.hasNext());
361

    
362
                                set1.dispose();
363
                        }
364
                        set.dispose();
365

    
366

    
367
                } catch (DataException e3) {
368
                        e3.printStackTrace();
369
                        fail();
370
                        return;
371
                }
372

    
373
        }
374

    
375
}