Revision 43020 trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.app/org.gvsig.app.mainplugin/src/main/java/org/gvsig/app/gui/selectionByTheme/MySelectionByThemeListener.java
MySelectionByThemeListener.java | ||
---|---|---|
26 | 26 |
import org.cresques.cts.IProjection; |
27 | 27 |
import org.gvsig.andami.messages.NotificationManager; |
28 | 28 |
import org.gvsig.fmap.dal.exception.DataException; |
29 |
import org.gvsig.fmap.dal.exception.ReadException; |
|
30 | 29 |
import org.gvsig.tools.dispose.DisposableIterator; |
31 | 30 |
import org.gvsig.fmap.dal.feature.Feature; |
32 | 31 |
import org.gvsig.fmap.dal.feature.FeatureQuery; |
33 | 32 |
import org.gvsig.fmap.dal.feature.FeatureSelection; |
34 | 33 |
import org.gvsig.fmap.dal.feature.FeatureSet; |
35 | 34 |
import org.gvsig.fmap.dal.feature.FeatureStore; |
36 |
import org.gvsig.fmap.dal.feature.FeatureType; |
|
37 | 35 |
import org.gvsig.fmap.geom.Geometry; |
38 | 36 |
import org.gvsig.fmap.mapcontext.layers.FLayer; |
39 |
import org.gvsig.fmap.mapcontext.layers.vectorial.ContainsGeometryEvaluator; |
|
40 |
import org.gvsig.fmap.mapcontext.layers.vectorial.CrossesGeometryEvaluator; |
|
41 |
import org.gvsig.fmap.mapcontext.layers.vectorial.DisjointGeometryEvaluator; |
|
42 |
import org.gvsig.fmap.mapcontext.layers.vectorial.EqualsGeometryEvaluator; |
|
43 | 37 |
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect; |
44 |
import org.gvsig.fmap.mapcontext.layers.vectorial.IntersectsGeometryEvaluator; |
|
45 |
import org.gvsig.fmap.mapcontext.layers.vectorial.OverlapsGeometryEvaluator; |
|
46 |
import org.gvsig.fmap.mapcontext.layers.vectorial.TouchesGeometryEvaluator; |
|
47 |
import org.gvsig.fmap.mapcontext.layers.vectorial.WithinGeometryEvaluator; |
|
38 |
import org.gvsig.fmap.mapcontext.layers.vectorial.SpatialEvaluatorsFactory; |
|
48 | 39 |
import org.gvsig.tools.dispose.DisposeUtils; |
49 | 40 |
import org.gvsig.tools.evaluator.Evaluator; |
50 | 41 |
import org.gvsig.tools.evaluator.EvaluatorData; |
51 | 42 |
import org.gvsig.tools.evaluator.EvaluatorException; |
52 | 43 |
import org.gvsig.tools.evaluator.EvaluatorFieldsInfo; |
53 | 44 |
|
54 |
|
|
55 |
/** |
|
56 |
* DOCUMENT ME! |
|
57 |
* |
|
58 |
* @author Fernando Gonz?lez Cort?s |
|
59 |
*/ |
|
60 |
//TODO comentado para que compile |
|
61 | 45 |
public class MySelectionByThemeListener implements SelectionByThemeListener { |
62 |
/** |
|
63 |
* @see org.gvsig.app.gui.selectionByTheme.SelectionByThemeListener#newSet(int, |
|
64 |
* int, int) |
|
65 |
*/ |
|
66 |
public void newSet(FLayer[] toSelect, FLayer selectionLayer, int action) { |
|
67 |
long t1 = System.currentTimeMillis(); |
|
68 | 46 |
|
69 |
if (selectionLayer instanceof FLyrVect) { |
|
70 |
try { |
|
71 |
FeatureSelection selection=(FeatureSelection)((FLyrVect)selectionLayer).getFeatureStore().getSelection(); |
|
72 |
SelectByTheme filter=new SelectByTheme(selection,selectionLayer.getMapContext().getProjection(),selection.getDefaultFeatureType().getDefaultGeometryAttributeName(), action); |
|
47 |
@Override |
|
48 |
public void newSet(FLayer[] layersToSelect, FLayer selectionLayer, int action) { |
|
49 |
if (selectionLayer instanceof FLyrVect) { |
|
50 |
try { |
|
51 |
FeatureSelection selection = ((FLyrVect) selectionLayer).getFeatureStore().getFeatureSelection(); |
|
52 |
SelectByTheme filter = new SelectByTheme( |
|
53 |
selection, |
|
54 |
selectionLayer.getMapContext().getProjection(), |
|
55 |
action |
|
56 |
); |
|
73 | 57 |
|
74 |
for (int i = 0; i < toSelect.length; i++) { |
|
75 |
if (toSelect[i] instanceof FLyrVect) { |
|
76 |
// if (!selectionLayer.getFullEnvelope().intersects(toSelect[i].getFullEnvelope())){ |
|
77 |
// continue; |
|
78 |
// } |
|
79 |
FeatureStore storeToQuery = ((FLyrVect) toSelect[i]).getFeatureStore(); |
|
80 |
FeatureQuery fQuery = storeToQuery |
|
81 |
.createFeatureQuery(); |
|
82 |
filter.setData(storeToQuery.getDefaultFeatureType(),storeToQuery.getDefaultFeatureType().getDefaultGeometryAttributeName(),null); |
|
58 |
for (FLayer layerToSelect : layersToSelect) { |
|
59 |
if (layerToSelect instanceof FLyrVect) { |
|
60 |
FeatureStore storeToQuery = ((FLyrVect) layerToSelect).getFeatureStore(); |
|
61 |
FeatureQuery fQuery = storeToQuery.createFeatureQuery(); |
|
62 |
filter.setData(storeToQuery, null); |
|
63 |
fQuery.setFilter(filter); |
|
64 |
FeatureSet featureSet = null; |
|
65 |
try { |
|
66 |
featureSet = storeToQuery.getFeatureSet(fQuery); |
|
67 |
storeToQuery.getFeatureSelection().deselectAll(); |
|
68 |
storeToQuery.setSelection(featureSet); |
|
69 |
} finally { |
|
70 |
DisposeUtils.disposeQuietly(featureSet); |
|
71 |
} |
|
72 |
} |
|
73 |
} |
|
74 |
} catch (Exception e) { |
|
75 |
NotificationManager.addError("error_selection_by_theme", e); |
|
76 |
} |
|
77 |
} |
|
78 |
} |
|
83 | 79 |
|
84 |
fQuery.setFilter(filter); |
|
85 |
FeatureSet featureSet = null; |
|
86 |
try { |
|
87 |
featureSet = storeToQuery.getFeatureSet(fQuery); |
|
88 |
((FeatureSelection) storeToQuery.getSelection()) |
|
89 |
.deselectAll(); |
|
90 |
storeToQuery.setSelection(featureSet); |
|
91 |
} finally { |
|
92 |
if (featureSet != null) { |
|
93 |
featureSet.dispose(); |
|
94 |
} |
|
95 |
} |
|
96 |
} |
|
97 |
} |
|
98 |
} catch (ReadException e) { |
|
99 |
NotificationManager.addError("error_selection_by_theme", e); |
|
100 |
} catch (DataException e) { |
|
101 |
NotificationManager.addError("error_selection_by_theme", e); |
|
102 |
} |
|
80 |
@Override |
|
81 |
public void addToSet(FLayer[] layersToSelect, FLayer selectionLayer, int action) { |
|
82 |
if (selectionLayer instanceof FLyrVect) { |
|
83 |
try { |
|
84 |
FeatureSelection selection = ((FLyrVect) selectionLayer).getFeatureStore().getFeatureSelection(); |
|
85 |
SelectByTheme filter = new SelectByTheme( |
|
86 |
selection, |
|
87 |
selectionLayer.getMapContext().getProjection(), |
|
88 |
action |
|
89 |
); |
|
103 | 90 |
|
104 |
} |
|
105 |
long t2 = System.currentTimeMillis(); |
|
106 |
System.out |
|
107 |
.println("Tiempo de consulta: " + (t2 - t1) + " milisegundos"); |
|
108 |
// doSelection(toSelect, selectionLayer, action, false); |
|
109 |
} |
|
91 |
for (FLayer layerToSelect : layersToSelect) { |
|
92 |
if (layerToSelect instanceof FLyrVect) { |
|
93 |
if (!selectionLayer.getFullEnvelope().intersects(layerToSelect.getFullEnvelope())) { |
|
94 |
continue; |
|
95 |
} |
|
96 |
FeatureStore storeToQuery = ((FLyrVect) layerToSelect).getFeatureStore(); |
|
97 |
FeatureQuery fQuery = storeToQuery.createFeatureQuery(); |
|
98 |
filter.setData(storeToQuery, null); |
|
99 |
fQuery.setFilter(filter); |
|
100 |
FeatureSet newFeatureSet = null; |
|
101 |
FeatureSelection previousFeatureSet = null; |
|
102 |
try { |
|
103 |
newFeatureSet = storeToQuery.getFeatureSet(fQuery); |
|
104 |
previousFeatureSet = storeToQuery.getFeatureSelection(); |
|
105 |
previousFeatureSet.select(newFeatureSet); |
|
106 |
storeToQuery.setSelection(previousFeatureSet); |
|
107 |
} finally { |
|
108 |
DisposeUtils.disposeQuietly(newFeatureSet); |
|
109 |
DisposeUtils.disposeQuietly(previousFeatureSet); |
|
110 |
} |
|
111 |
} |
|
112 |
} |
|
113 |
} catch (Exception e) { |
|
114 |
NotificationManager.addError("error_selection_by_theme", e); |
|
115 |
} |
|
116 |
} |
|
117 |
} |
|
110 | 118 |
|
111 |
/** |
|
112 |
* @see org.gvsig.app.gui.selectionByTheme.SelectionByThemeListener#addToSet(int, |
|
113 |
* int, int) |
|
114 |
*/ |
|
115 |
public void addToSet(FLayer[] toSelect, FLayer selectionLayer, int action) { |
|
116 |
long t1 = System.currentTimeMillis(); |
|
119 |
@Override |
|
120 |
public void fromSet(FLayer[] layersToSelect, FLayer selectionLayer, int action) { |
|
121 |
if (selectionLayer instanceof FLyrVect) { |
|
122 |
try { |
|
123 |
FeatureSelection selection = ((FLyrVect) selectionLayer).getFeatureStore().getFeatureSelection(); |
|
124 |
SelectByTheme filter = new SelectByTheme( |
|
125 |
selection, |
|
126 |
selectionLayer.getMapContext().getProjection(), |
|
127 |
action |
|
128 |
); |
|
117 | 129 |
|
118 |
if (selectionLayer instanceof FLyrVect) { |
|
119 |
try { |
|
120 |
FeatureSelection selection=(FeatureSelection)((FLyrVect)selectionLayer).getFeatureStore().getSelection(); |
|
121 |
SelectByTheme filter=new SelectByTheme(selection,selectionLayer.getMapContext().getProjection(),selection.getDefaultFeatureType().getDefaultGeometryAttributeName(), action); |
|
130 |
for (FLayer layerToSelect : layersToSelect) { |
|
131 |
if (layerToSelect instanceof FLyrVect) { |
|
132 |
if (!selectionLayer.getFullEnvelope().intersects(layerToSelect.getFullEnvelope())) { |
|
133 |
continue; |
|
134 |
} |
|
135 |
FeatureStore storeToQuery = ((FLyrVect) layerToSelect).getFeatureStore(); |
|
136 |
FeatureQuery fQuery = storeToQuery.createFeatureQuery(); |
|
137 |
filter.setData( |
|
138 |
storeToQuery, |
|
139 |
(FeatureSelection) storeToQuery.getSelection() |
|
140 |
); |
|
141 |
fQuery.setFilter(filter); |
|
142 |
FeatureSet featureSet = null; |
|
143 |
try { |
|
144 |
featureSet = storeToQuery.getFeatureSet(fQuery); |
|
145 |
storeToQuery.getFeatureSelection().deselectAll(); |
|
146 |
storeToQuery.setSelection(featureSet); |
|
147 |
} finally { |
|
148 |
DisposeUtils.disposeQuietly(featureSet); |
|
149 |
} |
|
150 |
} |
|
151 |
} |
|
152 |
} catch (Exception e) { |
|
153 |
NotificationManager.addError("error_selection_by_theme", e); |
|
154 |
} |
|
155 |
} |
|
156 |
} |
|
122 | 157 |
|
123 |
for (int i = 0; i < toSelect.length; i++) { |
|
124 |
if (toSelect[i] instanceof FLyrVect) { |
|
125 |
if (!selectionLayer.getFullEnvelope().intersects(toSelect[i].getFullEnvelope())){ |
|
126 |
continue; |
|
127 |
} |
|
128 |
FeatureStore storeToQuery = ((FLyrVect) toSelect[i]).getFeatureStore(); |
|
129 |
FeatureQuery fQuery = storeToQuery |
|
130 |
.createFeatureQuery(); |
|
131 |
filter.setData(storeToQuery.getDefaultFeatureType(),storeToQuery.getDefaultFeatureType().getDefaultGeometryAttributeName(),null); |
|
158 |
class SelectByTheme implements Evaluator { |
|
132 | 159 |
|
133 |
fQuery.setFilter(filter); |
|
134 |
FeatureSet newFeatureSet = null; |
|
135 |
FeatureSelection previousFeatureSet = null; |
|
136 |
try { |
|
137 |
newFeatureSet = storeToQuery.getFeatureSet(fQuery); |
|
138 |
previousFeatureSet= storeToQuery.getFeatureSelection(); |
|
139 |
previousFeatureSet.select(newFeatureSet); |
|
140 |
storeToQuery.setSelection(previousFeatureSet); |
|
141 |
} finally { |
|
142 |
if (newFeatureSet != null) { |
|
143 |
newFeatureSet.dispose(); |
|
144 |
} |
|
145 |
if (previousFeatureSet != null) { |
|
146 |
previousFeatureSet.dispose(); |
|
147 |
} |
|
148 |
} |
|
149 |
} |
|
150 |
} |
|
151 |
} catch (ReadException e) { |
|
152 |
NotificationManager.addError("error_selection_by_theme", e); |
|
153 |
} catch (DataException e) { |
|
154 |
NotificationManager.addError("error_selection_by_theme", e); |
|
155 |
} |
|
160 |
private FeatureSelection selection = null; |
|
161 |
private final IProjection projection; |
|
162 |
private FeatureStore store; |
|
163 |
private String geomName; |
|
164 |
private EvaluatorFieldsInfo info; |
|
165 |
private FeatureSelection featureSelection; |
|
166 |
private final int action; |
|
156 | 167 |
|
157 |
} |
|
158 |
long t2 = System.currentTimeMillis(); |
|
159 |
System.out |
|
160 |
.println("Tiempo de consulta: " + (t2 - t1) + " milisegundos"); |
|
161 |
} |
|
168 |
|
|
169 |
public SelectByTheme( |
|
170 |
FeatureSelection selection, |
|
171 |
IProjection projection, |
|
172 |
int action |
|
173 |
) { |
|
174 |
this.selection = selection; |
|
175 |
this.projection = projection; |
|
176 |
this.action = action; |
|
177 |
} |
|
162 | 178 |
|
163 |
/** |
|
164 |
* @see org.gvsig.app.gui.selectionByTheme.SelectionByThemeListener#fromSet(int, |
|
165 |
* int, int) |
|
166 |
*/ |
|
167 |
public void fromSet(FLayer[] toSelect, FLayer selectionLayer, int action) { |
|
168 |
long t1 = System.currentTimeMillis(); |
|
169 |
if (selectionLayer instanceof FLyrVect) { |
|
170 |
try { |
|
171 |
FeatureSelection selection=(FeatureSelection)((FLyrVect)selectionLayer).getFeatureStore().getSelection(); |
|
172 |
SelectByTheme filter=new SelectByTheme(selection,selectionLayer.getMapContext().getProjection(),selection.getDefaultFeatureType().getDefaultGeometryAttributeName(), action); |
|
179 |
public void setData( |
|
180 |
FeatureStore store, |
|
181 |
FeatureSelection featureSelection |
|
182 |
) throws DataException { |
|
183 |
this.geomName = store.getDefaultFeatureType().getDefaultGeometryAttributeName(); |
|
184 |
this.featureSelection = featureSelection; |
|
185 |
this.info = new EvaluatorFieldsInfo(); |
|
186 |
this.info.addFieldValue(this.geomName); |
|
187 |
} |
|
173 | 188 |
|
174 |
for (int i = 0; i < toSelect.length; i++) { |
|
175 |
if (toSelect[i] instanceof FLyrVect) { |
|
176 |
if (!selectionLayer.getFullEnvelope().intersects(toSelect[i].getFullEnvelope())){ |
|
177 |
continue; |
|
178 |
} |
|
179 |
FeatureStore storeToQuery = ((FLyrVect) toSelect[i]).getFeatureStore(); |
|
180 |
FeatureQuery fQuery = storeToQuery |
|
181 |
.createFeatureQuery(); |
|
182 |
filter.setData(storeToQuery.getDefaultFeatureType(),storeToQuery.getDefaultFeatureType().getDefaultGeometryAttributeName(),(FeatureSelection)storeToQuery.getSelection()); |
|
189 |
@Override |
|
190 |
public Object evaluate(EvaluatorData data) throws EvaluatorException { |
|
191 |
if (featureSelection != null && !featureSelection.isSelected(((Feature) data.getContextValue("feature")))) { |
|
192 |
return false; |
|
193 |
} |
|
194 |
DisposableIterator features = null; |
|
195 |
try { |
|
196 |
features = selection.fastIterator(); |
|
183 | 197 |
|
184 |
fQuery.setFilter(filter); |
|
185 |
FeatureSet featureSet = null; |
|
186 |
try { |
|
187 |
featureSet = storeToQuery.getFeatureSet(fQuery); |
|
188 |
((FeatureSelection) storeToQuery.getSelection()) |
|
189 |
.deselectAll(); |
|
190 |
storeToQuery.setSelection(featureSet); |
|
191 |
} finally { |
|
192 |
if (featureSet != null) { |
|
193 |
featureSet.dispose(); |
|
194 |
} |
|
198 |
while (features.hasNext()) { |
|
199 |
Feature feature = (Feature) features.next(); |
|
200 |
Geometry geometry = feature.getGeometry(geomName); |
|
201 |
Evaluator eval; |
|
202 |
switch (action) { |
|
203 |
case SelectionByTheme.INTERSECTS: |
|
204 |
eval = SpatialEvaluatorsFactory.getInstance().intersects( |
|
205 |
geometry, |
|
206 |
projection, |
|
207 |
store |
|
208 |
); |
|
209 |
break; |
|
210 |
case SelectionByTheme.CONTAINS: |
|
211 |
eval = SpatialEvaluatorsFactory.getInstance().contains( |
|
212 |
geometry, |
|
213 |
projection, |
|
214 |
store |
|
215 |
); |
|
216 |
break; |
|
217 |
case SelectionByTheme.CROSSES: |
|
218 |
eval = SpatialEvaluatorsFactory.getInstance().crosses( |
|
219 |
geometry, |
|
220 |
projection, |
|
221 |
store |
|
222 |
); |
|
223 |
break; |
|
224 |
case SelectionByTheme.DISJOINT: |
|
225 |
eval = SpatialEvaluatorsFactory.getInstance().disjoint( |
|
226 |
geometry, |
|
227 |
projection, |
|
228 |
store |
|
229 |
); |
|
230 |
break; |
|
231 |
case SelectionByTheme.EQUALS: |
|
232 |
eval = SpatialEvaluatorsFactory.getInstance().equals( |
|
233 |
geometry, |
|
234 |
projection, |
|
235 |
store |
|
236 |
); |
|
237 |
break; |
|
238 |
case SelectionByTheme.OVERLAPS: |
|
239 |
eval = SpatialEvaluatorsFactory.getInstance().overlaps( |
|
240 |
geometry, |
|
241 |
projection, |
|
242 |
store |
|
243 |
); |
|
244 |
break; |
|
245 |
case SelectionByTheme.TOUCHES: |
|
246 |
eval = SpatialEvaluatorsFactory.getInstance().touches( |
|
247 |
geometry, |
|
248 |
projection, |
|
249 |
store |
|
250 |
); |
|
251 |
break; |
|
252 |
case SelectionByTheme.WITHIN: |
|
253 |
eval = SpatialEvaluatorsFactory.getInstance().within( |
|
254 |
geometry, |
|
255 |
projection, |
|
256 |
store |
|
257 |
); |
|
258 |
break; |
|
195 | 259 |
|
196 |
}
|
|
197 |
}
|
|
198 |
}
|
|
199 |
} catch (ReadException e) {
|
|
200 |
NotificationManager.addError("error_selection_by_theme", e);
|
|
201 |
} catch (DataException e) {
|
|
202 |
NotificationManager.addError("error_selection_by_theme", e);
|
|
203 |
}
|
|
260 |
default:
|
|
261 |
eval = SpatialEvaluatorsFactory.getInstance().intersects(
|
|
262 |
geometry,
|
|
263 |
projection,
|
|
264 |
store
|
|
265 |
);
|
|
266 |
break;
|
|
267 |
}
|
|
204 | 268 |
|
205 |
} |
|
206 |
long t2 = System.currentTimeMillis(); |
|
207 |
System.out |
|
208 |
.println("Tiempo de consulta: " + (t2 - t1) + " milisegundos"); |
|
209 |
} |
|
210 |
class SelectByTheme implements Evaluator{ |
|
211 |
private FeatureSelection selection=null; |
|
212 |
private IProjection projection; |
|
213 |
private FeatureType featureType; |
|
214 |
private String geomName; |
|
215 |
private EvaluatorFieldsInfo info; |
|
216 |
private String nameSelectedGeom; |
|
217 |
private FeatureSelection featureSelection; |
|
218 |
private int action; |
|
219 |
private int index; |
|
269 |
Boolean evaluate = (Boolean) eval.evaluate(data); |
|
270 |
if ( evaluate) { |
|
271 |
return evaluate; |
|
272 |
} |
|
273 |
} |
|
274 |
} catch (DataException e) { |
|
275 |
NotificationManager.addError("error_selection_by_theme", e); |
|
276 |
} finally { |
|
277 |
DisposeUtils.dispose(features); |
|
278 |
} |
|
279 |
return false; |
|
280 |
} |
|
220 | 281 |
|
221 |
public SelectByTheme(FeatureSelection selection, IProjection projection,String nameSelectedGeom, int action){ |
|
222 |
this.selection=selection; |
|
282 |
@Override |
|
283 |
public String getName() { |
|
284 |
return "select by theme"; |
|
285 |
} |
|
223 | 286 |
|
224 |
this.projection=projection; |
|
225 |
this.nameSelectedGeom=nameSelectedGeom; |
|
226 |
this.action=action; |
|
227 |
this.index=selection.getDefaultFeatureType().getIndex(nameSelectedGeom); |
|
228 |
} |
|
229 |
public void setData(FeatureType featureType, String geomName, FeatureSelection featureSelection){ |
|
230 |
this.featureType=featureType; |
|
231 |
this.geomName=geomName; |
|
232 |
this.featureSelection=featureSelection; |
|
233 |
this.info=new EvaluatorFieldsInfo(); |
|
234 |
this.info.addFieldValue(geomName); |
|
235 |
} |
|
287 |
@Override |
|
288 |
public String getSQL() { |
|
289 |
return null; |
|
290 |
} |
|
236 | 291 |
|
237 |
public Object evaluate(EvaluatorData data) throws EvaluatorException { |
|
238 |
if (featureSelection!=null && !featureSelection.isSelected(((Feature)data.getContextValue("feature")))){ |
|
239 |
return new Boolean(false); |
|
240 |
} |
|
241 |
DisposableIterator features = null; |
|
242 |
try { |
|
243 |
features = selection.fastIterator(); |
|
292 |
@Override |
|
293 |
public String getDescription() { |
|
294 |
return getName(); |
|
295 |
} |
|
244 | 296 |
|
245 |
while (features.hasNext()) { |
|
246 |
Feature feature = (Feature) features.next(); |
|
247 |
Geometry geometry = feature.getGeometry(index); |
|
248 |
Evaluator eval = null; |
|
249 |
switch (action) { |
|
250 |
case SelectionByTheme.INTERSECTS: |
|
251 |
eval = new IntersectsGeometryEvaluator(geometry, |
|
252 |
projection, featureType, geomName); |
|
253 |
break; |
|
254 |
case SelectionByTheme.CONTAINS: |
|
255 |
eval = new ContainsGeometryEvaluator(geometry, |
|
256 |
projection, featureType, geomName); |
|
257 |
break; |
|
258 |
case SelectionByTheme.CROSSES: |
|
259 |
eval = new CrossesGeometryEvaluator(geometry, |
|
260 |
projection, featureType, geomName); |
|
261 |
break; |
|
262 |
case SelectionByTheme.DISJOINT: |
|
263 |
eval = new DisjointGeometryEvaluator(geometry, |
|
264 |
projection, featureType, geomName); |
|
265 |
break; |
|
266 |
case SelectionByTheme.EQUALS: |
|
267 |
eval = new EqualsGeometryEvaluator(geometry, |
|
268 |
projection, featureType, geomName); |
|
269 |
break; |
|
270 |
case SelectionByTheme.OVERLAPS: |
|
271 |
eval = new OverlapsGeometryEvaluator(geometry, |
|
272 |
projection, featureType, geomName); |
|
273 |
break; |
|
274 |
case SelectionByTheme.TOUCHES: |
|
275 |
eval = new TouchesGeometryEvaluator(geometry, |
|
276 |
projection, featureType, geomName); |
|
277 |
break; |
|
278 |
case SelectionByTheme.WITHIN: |
|
279 |
eval = new WithinGeometryEvaluator(geometry, |
|
280 |
projection, featureType, geomName); |
|
281 |
break; |
|
282 |
|
|
283 |
default: |
|
284 |
eval = new IntersectsGeometryEvaluator(geometry, |
|
285 |
projection, featureType, geomName); |
|
286 |
break; |
|
287 |
} |
|
288 |
|
|
289 |
Boolean evaluate = (Boolean) eval.evaluate(data); |
|
290 |
if ((evaluate).booleanValue()) { |
|
291 |
return evaluate; |
|
292 |
} |
|
293 |
} |
|
294 |
} catch (DataException e) { |
|
295 |
NotificationManager.addError("error_selection_by_theme", e); |
|
296 |
} finally { |
|
297 |
DisposeUtils.dispose(features); |
|
298 |
} |
|
299 |
return new Boolean(false); |
|
300 |
} |
|
301 |
|
|
302 |
public String getName() { |
|
303 |
return "select by theme"; |
|
304 |
} |
|
305 |
|
|
306 |
public String getSQL() { |
|
307 |
// TODO Auto-generated method stub |
|
308 |
return null; |
|
309 |
} |
|
310 |
public String getDescription() { |
|
311 |
return getName(); |
|
312 |
} |
|
313 |
public EvaluatorFieldsInfo getFieldsInfo() { |
|
314 |
return info; |
|
315 |
} |
|
316 |
} |
|
297 |
@Override |
|
298 |
public EvaluatorFieldsInfo getFieldsInfo() { |
|
299 |
return info; |
|
300 |
} |
|
301 |
} |
|
317 | 302 |
} |
Also available in: Unified diff