Revision 35200 branches/dal_time_support/libraries/libFMap_dal/src/org/gvsig/fmap/dal/feature/impl/DefaultFeatureQuery.java
DefaultFeatureQuery.java | ||
---|---|---|
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); |
Also available in: Unified diff