Revision 35200 branches/dal_time_support/libraries/libFMap_dal/src/org/gvsig/fmap/dal/feature/impl/DefaultFeatureQuery.java

View differences:

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