Revision 1494
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.prov/org.gvsig.vectorediting.lib.prov.autopolygon/src/main/java/org/gvsig/vectorediting/lib/prov/autopolygon/AutopolygonEditingProvider.java | ||
---|---|---|
1 |
package org.gvsig.vectorediting.lib.prov.autopolygon; |
|
2 | 1 |
/** |
3 | 2 |
* gvSIG. Desktop Geographic Information System. |
4 | 3 |
* |
... | ... | |
23 | 22 |
* at info AT gvsig.com, or visit our website www.gvsig.com. |
24 | 23 |
*/ |
25 | 24 |
|
25 |
package org.gvsig.vectorediting.lib.prov.autopolygon; |
|
26 | 26 |
|
27 | 27 |
import java.util.ArrayList; |
28 |
import java.util.HashMap; |
|
29 | 28 |
import java.util.List; |
30 |
import java.util.Map; |
|
31 | 29 |
|
32 | 30 |
import org.cresques.cts.IProjection; |
33 | 31 |
|
34 | 32 |
import org.gvsig.fmap.dal.exception.DataException; |
35 |
import org.gvsig.fmap.dal.feature.EditableFeature; |
|
36 | 33 |
import org.gvsig.fmap.dal.feature.Feature; |
37 | 34 |
import org.gvsig.fmap.dal.feature.FeatureQuery; |
38 |
import org.gvsig.fmap.dal.feature.FeatureSelection; |
|
39 | 35 |
import org.gvsig.fmap.dal.feature.FeatureSet; |
40 | 36 |
import org.gvsig.fmap.dal.feature.FeatureStore; |
41 | 37 |
import org.gvsig.fmap.dal.feature.FeatureType; |
42 | 38 |
import org.gvsig.fmap.geom.Geometry; |
43 | 39 |
import org.gvsig.fmap.geom.GeometryLocator; |
44 |
import org.gvsig.fmap.geom.GeometryManager; |
|
45 |
import org.gvsig.fmap.geom.Geometry.SUBTYPES; |
|
46 |
import org.gvsig.fmap.geom.Geometry.TYPES; |
|
47 | 40 |
import org.gvsig.fmap.geom.aggregate.MultiSurface; |
48 |
import org.gvsig.fmap.geom.exception.CreateGeometryException; |
|
49 |
import org.gvsig.fmap.geom.primitive.Circle; |
|
50 |
import org.gvsig.fmap.geom.primitive.Ellipse; |
|
51 | 41 |
import org.gvsig.fmap.geom.primitive.Point; |
52 | 42 |
import org.gvsig.fmap.geom.primitive.Surface; |
53 | 43 |
import org.gvsig.fmap.geom.type.GeometryType; |
54 |
import org.gvsig.fmap.mapcontext.layers.vectorial.IntersectsGeometryEvaluator;
|
|
44 |
import org.gvsig.fmap.mapcontext.layers.vectorial.SpatialEvaluatorsFactory;
|
|
55 | 45 |
import org.gvsig.tools.dispose.DisposableIterator; |
56 | 46 |
import org.gvsig.tools.dynobject.DynObject; |
57 |
import org.gvsig.tools.exception.BaseException;
|
|
47 |
import org.gvsig.tools.evaluator.Evaluator;
|
|
58 | 48 |
import org.gvsig.tools.service.spi.ProviderServices; |
59 |
import org.gvsig.tools.visitor.Visitor; |
|
60 | 49 |
import org.gvsig.vectorediting.lib.api.DrawingStatus; |
61 | 50 |
import org.gvsig.vectorediting.lib.api.EditingServiceParameter; |
62 | 51 |
import org.gvsig.vectorediting.lib.api.EditingServiceParameter.TYPE; |
... | ... | |
71 | 60 |
import org.gvsig.vectorediting.lib.spi.EditingProviderFactory; |
72 | 61 |
import org.gvsig.vectorediting.lib.spi.EditingProviderServices; |
73 | 62 |
|
63 |
@SuppressWarnings("UseSpecificCatch") |
|
74 | 64 |
public class AutopolygonEditingProvider extends AbstractEditingProvider |
75 | 65 |
implements EditingProvider { |
76 | 66 |
|
77 |
private EditingServiceParameter geometryParameter; |
|
67 |
private final EditingServiceParameter geometryParameter;
|
|
78 | 68 |
|
79 |
private FeatureStore featureStore; |
|
69 |
private final FeatureStore featureStore;
|
|
80 | 70 |
|
81 | 71 |
private Geometry geometryValue; |
82 | 72 |
|
... | ... | |
110 | 100 |
} |
111 | 101 |
|
112 | 102 |
public List<EditingServiceParameter> getParameters() { |
113 |
List<EditingServiceParameter> list = |
|
114 |
new ArrayList<EditingServiceParameter>(); |
|
103 |
List<EditingServiceParameter> list = new ArrayList<>(); |
|
115 | 104 |
list.add(geometryParameter); |
116 | 105 |
return list; |
117 | 106 |
} |
... | ... | |
125 | 114 |
Object value) throws InvalidEntryException { |
126 | 115 |
|
127 | 116 |
if (param == geometryParameter) { |
128 |
if (value instanceof Geometry && value != null) {
|
|
117 |
if (value instanceof Geometry ) { |
|
129 | 118 |
Geometry geometry = (Geometry)value; |
130 | 119 |
GeometryType geometryType = geometry.getGeometryType(); |
131 | 120 |
if (geometryType.isTypeOf(Geometry.TYPES.MULTISURFACE) || |
... | ... | |
151 | 140 |
(EditingProviderServices) getProviderServices(); |
152 | 141 |
|
153 | 142 |
Geometry geometry = geometryValue.cloneGeometry(); |
154 |
FeatureQuery query = null;
|
|
143 |
FeatureQuery query; |
|
155 | 144 |
try { |
156 | 145 |
query = queryByGeometry(geometry); |
157 | 146 |
if (query != null) { |
... | ... | |
178 | 167 |
} |
179 | 168 |
|
180 | 169 |
} catch (Exception e) { |
181 |
new FinishServiceException(e); |
|
170 |
throw new FinishServiceException(e);
|
|
182 | 171 |
} |
183 | 172 |
return geometry; |
184 | 173 |
} |
... | ... | |
198 | 187 |
featureQuery.setFeatureType(featureType); |
199 | 188 |
|
200 | 189 |
IProjection query_proj = featureType.getDefaultSRS(); |
201 |
IntersectsGeometryEvaluator iee = |
|
202 |
new IntersectsGeometryEvaluator(geometry, query_proj, |
|
203 |
featureType, geomName); |
|
190 |
Evaluator iee = SpatialEvaluatorsFactory.getInstance().intersects( |
|
191 |
geometry, |
|
192 |
query_proj, |
|
193 |
featureStore |
|
194 |
); |
|
204 | 195 |
featureQuery.setFilter(iee); |
205 | 196 |
featureQuery.setAttributeNames(null); |
206 | 197 |
return featureQuery; |
Also available in: Unified diff