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.circlecr / src / main / java / org / gvsig / vectorediting / lib / prov / circlecr / CircumferenceCREditingProvider.java @ 88

History | View | Annotate | Download (2.66 KB)

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

    
9
import java.util.HashMap;
10

    
11
import org.gvsig.fmap.geom.Geometry;
12
import org.gvsig.fmap.geom.aggregate.MultiCurve;
13
import org.gvsig.fmap.geom.primitive.Arc;
14
import org.gvsig.fmap.geom.primitive.Point;
15
import org.gvsig.fmap.geom.type.GeometryType;
16
import org.gvsig.tools.dynobject.DynObject;
17
import org.gvsig.tools.service.spi.ProviderServices;
18
import org.gvsig.vectorediting.lib.api.EditingServiceParameter;
19
import org.gvsig.vectorediting.lib.api.exceptions.FinishServiceException;
20
import org.gvsig.vectorediting.lib.api.exceptions.StartServiceException;
21
import org.gvsig.vectorediting.lib.spi.EditingProvider;
22
import org.gvsig.vectorediting.lib.spi.EditingProviderServices;
23

    
24
public class CircumferenceCREditingProvider extends CircleCREditingProvider implements
25
    EditingProvider {
26

    
27
  public CircumferenceCREditingProvider(ProviderServices providerServices,
28
      DynObject parameters) {
29
    super(providerServices, parameters);
30
  }
31

    
32
  public void finishAndStore() throws FinishServiceException {
33
            EditingProviderServices editingProviderServices = (EditingProviderServices) getProviderServices();
34
            Geometry geometry = finish();
35
            editingProviderServices.insertGeometryIntoFeatureStore(geometry, featureStore);
36
          }
37

    
38
  public Geometry finish() throws FinishServiceException {
39
    Point centerPoint = (Point) values.get(center);
40
    double radiusValue = (Double) values.get(radius);
41
    EditingProviderServices editingProviderServices = (EditingProviderServices) getProviderServices();
42
    try {
43
      GeometryType storeGeomType = editingProviderServices
44
          .getGeomType(featureStore);
45
      Geometry geometry = null;
46

    
47
      if (storeGeomType.isTypeOf(CURVE) || storeGeomType.isTypeOf(GEOMETRY)) {
48
        geometry = editingProviderServices.createArc(centerPoint, radiusValue,
49
            0, 2 * Math.PI, featureStore);
50
      }
51
      else if (storeGeomType.isTypeOf(MULTICURVE)) {
52
        geometry = editingProviderServices.createArc(centerPoint, radiusValue,
53
            0, 2 * Math.PI, featureStore);
54
        MultiCurve multicurve;
55
        multicurve = geomManager.createMultiCurve(storeGeomType.getSubType());
56
        multicurve.addCurve((Arc) geometry);
57
      }
58
      return geometry;
59
    }
60
    catch (Exception e) {
61
      throw new FinishServiceException(e);
62
    }
63
  }
64

    
65
  public void start() throws StartServiceException {
66
    this.values = new HashMap<EditingServiceParameter, Object>();
67
  }
68

    
69
  public String getName() {
70
    return CircumferenceCREditingProviderFactory.PROVIDER_NAME;
71
  }
72

    
73
}