Revision 2616 org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.prov/org.gvsig.vectorediting.lib.prov.polyline/src/main/java/org/gvsig/vectorediting/lib/prov/polyline/PolygonEditingProvider.java

View differences:

PolygonEditingProvider.java
24 24

  
25 25
package org.gvsig.vectorediting.lib.prov.polyline;
26 26

  
27
import java.util.LinkedHashMap;
28

  
29 27
import org.gvsig.fmap.geom.Geometry;
30 28
import org.gvsig.fmap.geom.GeometryLocator;
31 29
import org.gvsig.fmap.geom.GeometryManager;
32
import org.gvsig.fmap.geom.aggregate.MultiSurface;
33
import org.gvsig.fmap.geom.primitive.Surface;
30
import org.gvsig.fmap.geom.aggregate.MultiPolygon;
31
import org.gvsig.fmap.geom.primitive.Line;
34 32
import org.gvsig.fmap.geom.type.GeometryType;
35
import org.gvsig.tools.ToolsLocator;
36 33
import org.gvsig.tools.dynobject.DynObject;
37
import org.gvsig.tools.i18n.I18nManager;
38 34
import org.gvsig.tools.service.spi.ProviderServices;
39
import org.gvsig.vectorediting.lib.api.EditingServiceParameter.TYPE;
40 35
import org.gvsig.vectorediting.lib.api.exceptions.FinishServiceException;
41
import org.gvsig.vectorediting.lib.spi.DefaultEditingServiceParameter;
42 36
import org.gvsig.vectorediting.lib.spi.EditingProvider;
43 37

  
44 38
public class PolygonEditingProvider extends PolylineEditingProvider implements
......
56 50
                editingProviderServices.getGeomType(featureStore);
57 51
            GeometryManager geomManager = GeometryLocator.getGeometryManager();
58 52

  
59
            Surface surface =
60
                geomManager.createPolygon(storeGeomType.getSubType());
61
            calculateFinalGeometry(storeGeomType, surface);
62
            surface = (Surface) closeGeometryIfNecessary(surface);
53
            Line line = calculatePolyline(null);
54
            if(line == null){
55
                return null;
56
            }
57
            
58
            MultiPolygon polygons = line.toPolygons();
59
            
63 60
            if (storeGeomType.isTypeOf(MULTISURFACE)) {
64
                MultiSurface multiSurface =
65
                    geomManager.createMultiSurface(storeGeomType.getSubType());
66
                multiSurface.addSurface(surface);
67
                return multiSurface;
61
                return polygons;
68 62
            } else {
69
                return surface;
63
                return polygons.getPrimitiveAt(0);
70 64
            }
71 65
        } catch (Exception e) {
72 66
            throw new FinishServiceException(e);

Also available in: Unified diff