26 |
26 |
*/
|
27 |
27 |
package org.gvsig.fmap.dal.feature.impl;
|
28 |
28 |
|
29 |
|
import java.util.Arrays;
|
30 |
29 |
import java.util.HashMap;
|
31 |
30 |
import java.util.Iterator;
|
32 |
|
import java.util.List;
|
33 |
31 |
import java.util.Map;
|
34 |
32 |
|
35 |
33 |
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
|
... | ... | |
38 |
36 |
import org.gvsig.fmap.dal.feature.FeatureType;
|
39 |
37 |
import org.gvsig.tools.ToolsLocator;
|
40 |
38 |
import org.gvsig.tools.dynobject.DynStruct;
|
|
39 |
import org.gvsig.tools.evaluator.AndEvaluator;
|
41 |
40 |
import org.gvsig.tools.evaluator.Evaluator;
|
42 |
41 |
import org.gvsig.tools.persistence.PersistentState;
|
43 |
42 |
import org.gvsig.tools.persistence.exception.PersistenceException;
|
... | ... | |
84 |
83 |
|
85 |
84 |
private Evaluator filter;
|
86 |
85 |
|
|
86 |
/**
|
|
87 |
* This boolean value is used to know if the current filter
|
|
88 |
* has been added using the {@link FeatureQuery#addFilter(Evaluator)}
|
|
89 |
* method or the {@link FeatureQuery#setFilter(Evaluator)} method.
|
|
90 |
*/
|
|
91 |
private boolean isAddFilter = true;
|
|
92 |
|
87 |
93 |
private FeatureQueryOrder order = new FeatureQueryOrder();
|
88 |
94 |
|
89 |
95 |
private long limit;
|
... | ... | |
246 |
252 |
|
247 |
253 |
public void setFilter(Evaluator filter) {
|
248 |
254 |
this.filter = filter;
|
|
255 |
isAddFilter = false;
|
249 |
256 |
}
|
250 |
257 |
|
|
258 |
public void addFilter(Evaluator targetFilter) {
|
|
259 |
if (isAddFilter){
|
|
260 |
if (this.filter == null){
|
|
261 |
this.filter = targetFilter;
|
|
262 |
}else{
|
|
263 |
if (targetFilter != null){
|
|
264 |
if (this.filter instanceof AndEvaluator){
|
|
265 |
((AndEvaluator)this.filter).addEvaluator(targetFilter);
|
|
266 |
}else{
|
|
267 |
this.filter = new AndEvaluator(this.filter);
|
|
268 |
((AndEvaluator)this.filter).addEvaluator(targetFilter);
|
|
269 |
}
|
|
270 |
}
|
|
271 |
}
|
|
272 |
}else{
|
|
273 |
this.filter = targetFilter;
|
|
274 |
}
|
|
275 |
isAddFilter = true;
|
|
276 |
}
|
|
277 |
|
251 |
278 |
public FeatureQueryOrder getOrder() {
|
252 |
279 |
return order;
|
253 |
280 |
}
|
... | ... | |
270 |
297 |
// Clone attribute names array
|
271 |
298 |
if (attributeNames != null) {
|
272 |
299 |
clone.attributeNames = new String[attributeNames.length];
|
273 |
|
System.arraycopy(attributeNames, 0, clone.attributeNames, 0,
|
|
300 |
System.arraycopy(attributeNames, 0, clone.attributeNames, 0,
|
274 |
301 |
attributeNames.length);
|
275 |
302 |
}
|
276 |
303 |
|
... | ... | |
345 |
372 |
public static void registerPersistent() {
|
346 |
373 |
DynStruct definition =
|
347 |
374 |
ToolsLocator.getPersistenceManager()
|
348 |
|
.addDefinition(DefaultFeatureQuery.class,
|
349 |
|
"DefaultFeatureQuery",
|
350 |
|
"DefaultFeatureQuery Persistent definition",
|
351 |
|
null,
|
352 |
|
null);
|
|
375 |
.addDefinition(DefaultFeatureQuery.class,
|
|
376 |
"DefaultFeatureQuery",
|
|
377 |
"DefaultFeatureQuery Persistent definition",
|
|
378 |
null,
|
|
379 |
null);
|
353 |
380 |
|
354 |
381 |
definition.addDynFieldMap("queryParameters")
|
355 |
|
.setClassOfItems(Object.class)
|
356 |
|
.setMandatory(true);
|
|
382 |
.setClassOfItems(Object.class)
|
|
383 |
.setMandatory(true);
|
357 |
384 |
|
358 |
385 |
definition.addDynFieldString("featureTypeId").setMandatory(false);
|
359 |
386 |
|
360 |
387 |
definition.addDynFieldList("attributeNames")
|
361 |
|
.setClassOfItems(String.class)
|
362 |
|
.setMandatory(false);
|
|
388 |
.setClassOfItems(String.class)
|
|
389 |
.setMandatory(false);
|
363 |
390 |
|
364 |
391 |
definition.addDynFieldObject("filter")
|
365 |
|
.setClassOfValue(Evaluator.class)
|
366 |
|
.setMandatory(false);
|
|
392 |
.setClassOfValue(Evaluator.class)
|
|
393 |
.setMandatory(false);
|
367 |
394 |
|
368 |
395 |
definition.addDynFieldObject("order")
|
369 |
|
.setClassOfValue(FeatureQueryOrder.class)
|
370 |
|
.setMandatory(false);
|
371 |
|
|
|
396 |
.setClassOfValue(FeatureQueryOrder.class)
|
|
397 |
.setMandatory(false);
|
|
398 |
|
372 |
399 |
definition.addDynFieldLong("limit").setMandatory(false);
|
373 |
400 |
|
374 |
401 |
definition.addDynFieldLong("pageSize").setMandatory(false);
|