Statistics
| Revision:

gvsig-vectorediting / org.gvsig.vectorediting / trunk / org.gvsig.vectorediting / org.gvsig.vectorediting.lib / org.gvsig.vectorediting.lib.prov / org.gvsig.vectorediting.lib.prov.insertpoint / src / test / java / org / gvsig / vectorediting / lib / prov / insertpoint / InsertPointTest.java @ 137

History | View | Annotate | Download (9.82 KB)

1
/*
2
 * Copyright 2014 DiSiD Technologies S.L.L. All rights reserved.
3
 * 
4
 * Project  : DiSiD org.gvsig.vectorediting.lib.prov.insertpoint 
5
 * SVN Id   : $Id$
6
 */
7
package org.gvsig.vectorediting.lib.prov.insertpoint;
8

    
9
import java.io.File;
10
import java.net.URL;
11
import java.util.List;
12

    
13
import org.gvsig.fmap.crs.CRSFactory;
14
import org.gvsig.fmap.dal.DALLocator;
15
import org.gvsig.fmap.dal.DataManager;
16
import org.gvsig.fmap.dal.DataStoreParameters;
17
import org.gvsig.fmap.dal.feature.FeatureStore;
18
import org.gvsig.fmap.geom.Geometry;
19
import org.gvsig.fmap.geom.GeometryLocator;
20
import org.gvsig.fmap.geom.GeometryManager;
21
import org.gvsig.fmap.geom.primitive.Point;
22
import org.gvsig.tools.junit.AbstractLibraryAutoInitTestCase;
23
import org.gvsig.vectorediting.lib.api.DrawingStatus;
24
import org.gvsig.vectorediting.lib.api.EditingManager;
25
import org.gvsig.vectorediting.lib.api.EditingService;
26
import org.gvsig.vectorediting.lib.api.EditingServiceParameter;
27
import org.gvsig.vectorediting.lib.api.exceptions.FinishServiceException;
28
import org.gvsig.vectorediting.lib.api.exceptions.InvalidEntryException;
29
import org.gvsig.vectorediting.lib.api.exceptions.StartServiceException;
30
import org.gvsig.vectorediting.lib.api.exceptions.StopServiceException;
31
import org.gvsig.vectorediting.lib.impl.DefaultEditingManager;
32

    
33
/**
34
 * 
35
 * Insert point provider test.
36
 * 
37
 * This test uses src/test/resources/cartography
38
 * 
39
 * @author lmarques
40
 *
41
 */
42
public class InsertPointTest extends AbstractLibraryAutoInitTestCase {
43

    
44
    GeometryManager geoManager;
45
    DataManager dataManager;
46
    EditingManager editingManager;
47
    EditingService service;
48
    FeatureStore featureStoreTest;
49

    
50
    @Override
51
    protected void doSetUp() throws Exception {
52

    
53
        editingManager = new DefaultEditingManager();
54

    
55
        geoManager = GeometryLocator.getGeometryManager();
56

    
57
        try {
58
            featureStoreTest = openTestFeatureStore();
59
        } catch (Exception e) {
60
            fail("Unexpected exception opening test feature store: "
61
                + e.getMessage());
62
        }
63

    
64
        service =
65
            editingManager.getEditingService(
66
                InsertPointEditingProviderFactory.PROVIDER_NAME,
67
                featureStoreTest);
68

    
69
        service.start();
70
    }
71

    
72
    public void testFinish() {
73

    
74
        // Try to finish without values.
75
        try {
76

    
77
            service.finish();
78
            fail("No exception is thrown");
79

    
80
        } catch (NullPointerException e) {
81
            // Test OK, got expected exception
82
        } catch (FinishServiceException e) {
83
            fail("Unexpected exception finishing service: " + e.getMessage());
84
        }
85

    
86
        // Try to finish with valid points
87
        Point point;
88
        try {
89

    
90
            point = geoManager.createPoint(0, 0, Geometry.SUBTYPES.GEOM2D);
91
            service.setValue(point);
92

    
93
            Geometry geom = service.finish();
94

    
95
            assertNotNull("geometry is null", geom);
96
            assertTrue("geometry instanceof Point == false",
97
                geom instanceof Point);
98
            assertEquals("geometry type != POINT", geom.getType(),
99
                Geometry.TYPES.POINT);
100
            assertTrue(((Point) geom).getX() == 0);
101
            assertTrue(((Point) geom).getY() == 0);
102

    
103
        } catch (Exception e) {
104
            fail("Unexpected exception finish with valid values: "
105
                + e.getMessage());
106
        }
107

    
108
        // Try to finish with null featureStore
109
        try {
110

    
111
            service =
112
                editingManager.getEditingService(
113
                    InsertPointEditingProviderFactory.PROVIDER_NAME, null);
114

    
115
            service.start();
116

    
117
            point = geoManager.createPoint(0, 0, Geometry.SUBTYPES.GEOM2D);
118
            service.setValue(point);
119

    
120
            service.finish();
121
            fail("No exception is thrown");
122
        } catch (FinishServiceException e) {
123
            // Test OK, got expected exception
124
        } catch (Exception e) {
125
            fail("Unexpected exception finishing with null feature store: "
126
                + e.getMessage());
127
        }
128

    
129
    }
130

    
131
    public void testfinishAndStore() {
132

    
133
        // Try to finish and store without values
134
        try {
135
            service.finishAndStore();
136
        } catch (NullPointerException e) {
137
            // Test ok, got expected exception
138
        } catch (FinishServiceException e) {
139
            fail("Unexpected exception ending and storing service: "
140
                + e.getMessage());
141
        }
142

    
143
        // Try to finish and store with values
144
        Point point;
145
        try {
146
            point = geoManager.createPoint(0, 0, Geometry.SUBTYPES.GEOM2D);
147
            service.setValue(point);
148

    
149
            featureStoreTest.edit();
150
            service.finishAndStore();
151
            featureStoreTest.cancelEditing();
152

    
153
        } catch (Exception e) {
154
            fail("Unexpected exception ending and storing service: "
155
                + e.getMessage());
156
        }
157

    
158
        // Try to finish and store with null featureStore
159
        try {
160

    
161
            service =
162
                editingManager.getEditingService(
163
                    InsertPointEditingProviderFactory.PROVIDER_NAME, null);
164

    
165
            point = geoManager.createPoint(0, 0, Geometry.SUBTYPES.GEOM2D);
166
            service.setValue(point);
167

    
168
            service.finish();
169
            fail("No exception is thrown");
170
        } catch (FinishServiceException e) {
171
            // Test OK, got expected exception
172
        } catch (Exception e) {
173
            fail("Unexpected exception ending and storing service: "
174
                + e.getMessage());
175
        }
176

    
177
    }
178

    
179
    public void testgetDrawingStatus() {
180

    
181
        Point point;
182
        try {
183
            point = geoManager.createPoint(0, 0, Geometry.SUBTYPES.GEOM2D);
184
            DrawingStatus ds = service.getDrawingStatus(point);
185
            assertNull("drawingStatus != null", ds);
186
        } catch (Exception e) {
187
            fail("Unexpected exception getting drawing status: "
188
                + e.getMessage());
189
        }
190

    
191
        point = null;
192
        try {
193
            DrawingStatus ds = service.getDrawingStatus(point);
194
            assertNull("drawingStatus != null", ds);
195
        } catch (Exception e) {
196
            fail("Unexpected exception getting drawing status: "
197
                + e.getMessage());
198
        }
199

    
200
    }
201

    
202
    public void testgetName() {
203

    
204
        assertEquals(InsertPointEditingProviderFactory.PROVIDER_NAME,
205
            service.getName());
206

    
207
    }
208

    
209
    public void testgetParameters() {
210

    
211
        List<EditingServiceParameter> parameters = service.getParameters();
212

    
213
        assertNotNull(parameters);
214
        assertTrue(parameters.size() == 1);
215

    
216
        EditingServiceParameter parameter = parameters.get(0);
217

    
218
        assertTrue(parameter.getTypes().size() == 1);
219
        assertTrue(parameter.getTypes().get(0) == EditingServiceParameter.TYPE.POSITION);
220
    }
221

    
222
    public void testNext() {
223

    
224
        assertNotNull(service.next());
225

    
226
        List<EditingServiceParameter> parameters = service.getParameters();
227
        assertEquals(parameters.get(0), service.next());
228

    
229
        Point point;
230
        try {
231
            point = geoManager.createPoint(0, 0, Geometry.SUBTYPES.GEOM2D);
232
            service.setValue(point);
233
        } catch (Exception e) {
234
            fail("Unexpected exception getting next parameter: "
235
                + e.getMessage());
236
        }
237

    
238
        assertNull(service.next());
239

    
240
    }
241

    
242
    public void testsetValue() {
243

    
244
        // Try to set valid point
245
        Point point;
246
        try {
247
            point = geoManager.createPoint(0, 0, Geometry.SUBTYPES.GEOM2D);
248
            service.setValue(point);
249
        } catch (Exception e) {
250
            fail("Unexpected exception setting value: " + e.getMessage());
251
        }
252

    
253
        assertNull("Point has not been set.", service.next());
254

    
255
        // Try to set invalid point
256
        point = null;
257
        try {
258
            service.stop();
259
            service.start();
260
            service.setValue(point);
261
        } catch (InvalidEntryException e) {
262
            // Test ok, got expected exception
263
        } catch (Exception e) {
264
            fail("Unexpected exception setting value: " + e.getMessage());
265
        }
266

    
267
        assertNotNull("Invalid point has been set", service.next());
268

    
269
    }
270

    
271
    public void testStart() {
272
        service =
273
            editingManager.getEditingService(
274
                InsertPointEditingProviderFactory.PROVIDER_NAME,
275
                featureStoreTest);
276
        
277
        try {
278
            service.start();
279
        } catch (StartServiceException e) {
280
            fail("Unexpected exception starting service: " + e.getMessage());
281
        }
282
    }
283

    
284
    public void testStop() {
285
        service =
286
            editingManager.getEditingService(
287
                InsertPointEditingProviderFactory.PROVIDER_NAME,
288
                featureStoreTest);
289
        
290
        try {
291
            service.start();
292
            service.stop();
293
        } catch (StartServiceException e) {
294
            fail("Unexpected exception starting service: " + e.getMessage());
295
        } catch (StopServiceException e) {
296
            fail("Unexpected exception stopping service: " + e.getMessage());
297
        }
298
    }
299

    
300
    private FeatureStore openTestFeatureStore() throws Exception {
301

    
302
        URL shapeURL =
303
            this.getClass().getResource("/cartography/puertos_andalucia.shp");
304
        if (shapeURL == null) {
305
            throw new IllegalStateException("Can't locate cartography resource");
306
        }
307
        File shapeFile = new File(shapeURL.getFile());
308
        if (!shapeFile.exists()) {
309
            throw new IllegalStateException("cartography resource not exists");
310
        }
311

    
312
        dataManager = DALLocator.getDataManager();
313

    
314
        DataStoreParameters params = dataManager.createStoreParameters("Shape");
315

    
316
        params.setDynValue("shpfile", shapeFile);
317
        params.setDynValue("CRS", CRSFactory.getCRS("EPSG:23030"));
318
        params.setDynValue("useNullGeometry", false);
319
        params.validate();
320

    
321
        return (FeatureStore) dataManager.openStore("Shape", params);
322

    
323
    }
324

    
325
}