Statistics
| Revision:

root / branches / v2_0_0_prep / libraries / libFMap_dal / src-test / org / gvsig / fmap / dal / store / memory / MemoryStoreProviderTest.java @ 31625

History | View | Annotate | Download (7.65 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
 * 2009 {Iver T.I.}   {Task}
26
 */
27

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

    
30
import org.gvsig.fmap.dal.DALLocator;
31
import org.gvsig.fmap.dal.DataManager;
32
import org.gvsig.fmap.dal.DataStoreParameters;
33
import org.gvsig.fmap.dal.DataTypes;
34
import org.gvsig.fmap.dal.exception.DataException;
35
import org.gvsig.fmap.dal.exception.InitializeException;
36
import org.gvsig.fmap.dal.exception.ProviderNotRegisteredException;
37
import org.gvsig.fmap.dal.exception.ValidateDataParametersException;
38
import org.gvsig.fmap.dal.feature.DisposableIterator;
39
import org.gvsig.fmap.dal.feature.EditableFeature;
40
import org.gvsig.fmap.dal.feature.EditableFeatureAttributeDescriptor;
41
import org.gvsig.fmap.dal.feature.EditableFeatureType;
42
import org.gvsig.fmap.dal.feature.Feature;
43
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
44
import org.gvsig.fmap.dal.feature.FeatureSet;
45
import org.gvsig.fmap.dal.feature.FeatureStore;
46
import org.gvsig.fmap.geom.GeometryLocator;
47
import org.gvsig.fmap.geom.GeometryManager;
48
import org.gvsig.fmap.geom.Geometry.SUBTYPES;
49
import org.gvsig.fmap.geom.Geometry.TYPES;
50
import org.gvsig.fmap.geom.exception.CreateGeometryException;
51
import org.gvsig.fmap.geom.primitive.Envelope;
52
import org.gvsig.tools.junit.AbstractLibraryAutoInitTestCase;
53
import org.slf4j.Logger;
54
import org.slf4j.LoggerFactory;
55
import org.gvsig.fmap.geom.primitive.GeneralPathX;
56

    
57
/**
58
 * @author <a href="mailto:jpiera@gvsig.org">Jorge Piera</a>
59
 */
60
public class MemoryStoreProviderTest extends AbstractLibraryAutoInitTestCase {
61
        protected Logger logger = LoggerFactory.getLogger(getClass());;
62
        protected static DataManager dataManager = null;
63
        protected static GeometryManager geomManager = null;
64
        
65
        protected static final String ID = "id";
66
        protected static final String GEOM = "geom";
67
        protected static final String IDSYM = "idsym";
68
        protected static final String LABEL = "label";
69
        protected static final String FEATUREID = "featureid";
70
        
71
        protected void doSetUp() throws Exception {
72
                dataManager = DALLocator.getDataManager();
73
                geomManager = GeometryLocator.getGeometryManager();
74
        }
75

    
76
        /*
77
         * (non-Javadoc)
78
         * @see org.gvsig.fmap.dal.feature.BaseTestFeatureStore#getDefaultDataStoreParameters()
79
         */
80
        public DataStoreParameters getDefaultDataStoreParameters()
81
        throws DataException {
82
                MemoryStoreParameters memoryParameters = null;
83

    
84
                memoryParameters = (MemoryStoreParameters) dataManager
85
                .createStoreParameters(MemoryStoreProvider.NAME);
86
                return memoryParameters;
87
        }
88

    
89
        public void testInitializeStore() throws Exception {
90
                FeatureStore store = (FeatureStore) dataManager.createStore(this
91
                                .getDefaultDataStoreParameters());
92

    
93
                assertNotNull(store.getMetadataID());
94
                assertNotNull(store.getName());
95
                assertEquals(store.getEnvelope(), store.getDynValue("Envelope"));
96
                assertTrue(store.getFeatureCount() == 0);
97
                if (store.isLocksSupported()) {
98
                        assertNotNull(store.getLocks());
99
                } else {
100
                        assertNull(store.getLocks());
101
                }
102
                store.dispose();
103
        }
104
        
105
        public void testAddFeatureType() throws DataException, ValidateDataParametersException{
106
                FeatureStore store = createEditableFeatureStore();
107
                FeatureAttributeDescriptor attributeDescriptor = store.getDefaultFeatureType().getAttributeDescriptor(ID);
108
                assertNotNull(attributeDescriptor);
109
                assertEquals(attributeDescriptor.getDataType(), DataTypes.OBJECT);
110
                                
111
                store.dispose();
112
        }
113
        
114
        protected FeatureStore createEditableFeatureStore() throws ValidateDataParametersException, InitializeException, ProviderNotRegisteredException, DataException{
115
                FeatureStore store = (FeatureStore) dataManager.createStore(this
116
                                .getDefaultDataStoreParameters());
117
                
118
                store.edit();
119
                
120
                EditableFeatureType editableFeatureType = store.getDefaultFeatureType().getEditable();
121
                
122
                editableFeatureType.add(ID, DataTypes.OBJECT).setObjectClass(Object.class);
123
                EditableFeatureAttributeDescriptor geometryDescriptor = 
124
                        editableFeatureType.add(GEOM, DataTypes.GEOMETRY);
125
                geometryDescriptor.setGeometryType(TYPES.GEOMETRY);
126
                editableFeatureType.setDefaultGeometryAttributeName(GEOM);
127
                
128
                editableFeatureType.add(IDSYM, DataTypes.OBJECT).setObjectClass(Object.class);
129
                editableFeatureType.add(LABEL, DataTypes.STRING);
130
                EditableFeatureAttributeDescriptor featureIdDescriptor = 
131
                        editableFeatureType.add(FEATUREID, DataTypes.OBJECT).setObjectClass(Object.class);
132
                featureIdDescriptor.setIsPrimaryKey(true);
133
                //editableFeatureType.setHasOID(true);
134
                
135
                store.update(editableFeatureType);        
136
                store.finishEditing();
137
                return store;
138
        }
139
        
140
        public void testAddFeature() throws DataException, ValidateDataParametersException, CreateGeometryException{
141
                FeatureStore store = createEditableFeatureStore();
142
                
143
                store.edit();
144
                
145
                EditableFeature feature = store.createNewFeature().getEditable();
146
                feature.set(ID, "0");
147
                feature.set(GEOM, geomManager.createPoint(0, 0, SUBTYPES.GEOM2D));
148

    
149
                store.insert(feature);
150
                
151
                Envelope envelope = store.getEnvelope();
152
                assertNotNull(envelope);
153
                
154
                store.finishEditing();
155
                
156
                FeatureSet featureSet = store.getFeatureSet();
157
                DisposableIterator it = featureSet.iterator();
158
                while (it.hasNext()){
159
                        Feature feature2 = (Feature)it.next();
160
                        assertEquals(feature.getType().get(0), feature2.getType().get(0));
161
                        assertEquals(feature.get(0), feature2.get(0));
162
                        
163
                        assertEquals(feature.getType().get(1), feature2.getType().get(1));
164
                        assertEquals(feature.get(1), feature2.get(1));
165
                }        
166
                
167
                envelope = store.getEnvelope();
168
                assertNotNull(envelope);
169
                
170
                store.dispose();
171
        }
172
        
173
        public void testAddFeatures() throws DataException, ValidateDataParametersException, CreateGeometryException{
174
                FeatureStore store = createEditableFeatureStore();
175
                
176
                store.edit();
177
                
178
                EditableFeature feature = store.createNewFeature().getEditable();
179
                feature.set(ID, "0");
180
                feature.set(GEOM, geomManager.createPoint(0, 0, SUBTYPES.GEOM2D));
181

    
182
                // One
183
                store.insert(feature);
184
                
185
                EditableFeature feature2 = store.createNewFeature().getEditable();
186
                feature2.set(ID, "1");
187
                GeneralPathX gpx=new GeneralPathX();
188
                gpx.moveTo(0, 0);
189
                gpx.lineTo(1, 0);
190
                gpx.lineTo(1, 1);
191
                gpx.lineTo(0, 1);
192
                gpx.lineTo(0, 0);
193
                gpx.closePath();
194
                feature2.set(GEOM, geomManager.createCurve(gpx, SUBTYPES.GEOM2D));
195

    
196
                // Two
197
                store.insert(feature2);
198
                
199
                EditableFeature feature3 = store.createNewFeature().getEditable();
200
                feature3.set(ID, "2");
201
                feature3.set(GEOM, geomManager.createSurface(gpx, SUBTYPES.GEOM2D));
202

    
203
                //Three
204
                store.insert(feature3);
205
                
206
                Envelope envelope = store.getEnvelope();
207
                assertNotNull(envelope);
208
                
209
                store.finishEditing();
210
                
211
                FeatureSet featureSet = store.getFeatureSet();
212
                DisposableIterator it = featureSet.iterator();
213
                
214
                //Count the features in the set
215
                int i=0;
216
                while (it.hasNext()){
217
                        Feature feat = (Feature)it.next();
218
                        i++;
219
                }        
220
                
221
                //Are all three inside?
222
                assertEquals(3,i);
223
                
224
                envelope = store.getEnvelope();
225
                assertNotNull(envelope);
226
                
227
                store.dispose();
228
        }
229
}
230