Revision 45989 trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/feature/impl/featureset/DefaultFeatureSet.java

View differences:

DefaultFeatureSet.java
416 416
            break;
417 417

  
418 418
        case FILTERED:
419
            it = new FastFilteredIterator(this, index);
419
            it = new FastFilteredIterator(this, index, elements);
420 420
            break;
421 421

  
422 422
        case ORDERED:
423
            if (this.orderedData != null) {
424
                it = new FastOrderedIterator(this, index);
423
            if(this.provider.canOrder() && this.provider.canIterateFromIndex()){
424
                it = new FastDefaultIterator(this, index, elements);
425 425
            } else {
426
                it = new FastOrderedIterator(this, new FastDefaultIterator(this, 0, elements), index);
426
                if (this.orderedData != null) {
427
                    it = new FastOrderedIterator(this, index);
428
                } else {
429
                    it = new FastOrderedIterator(this, new FastDefaultIterator(this, 0, -1), index);
430
                }
427 431
            }
428 432
            break;
429 433
            
430 434
        case ORDERED_FILTERED:
431
            if (this.orderedData != null) {
432
                it = new FastOrderedIterator(this, index);
435
            if(this.provider.canOrder() && this.provider.canFilter() && this.provider.canIterateFromIndex()){
436
                it = new FastFilteredIterator(this, index, elements);
433 437
            } else {
434
                it = new FastOrderedIterator(this, new FastFilteredIterator(
435
                    this, 0), index);
438
                if (this.orderedData != null) {
439
                    it = new FastOrderedIterator(this, index);
440
                } else {
441
                    it = new FastOrderedIterator(this, new FastFilteredIterator(
442
                        this, 0, -1), index);
443
                }
436 444
            }
445

  
437 446
            break;
438 447

  
439 448
        case EDITED:
440
            it = new FastEditedIterator(this, index);
449
            it = new FastEditedIterator(this, index, elements);
441 450
            break;
442 451

  
443 452
        case EDITED_FILTERED:
444
            it = new FastEditedFilteredIterator(this, index);
453
            it = new FastEditedFilteredIterator(this, index, elements);
445 454
            break;
446 455

  
447 456
        case ORDERD_EDITED:
448
            if (this.orderedData != null) {
449
                it = new FastOrderedIterator(this, index);
457
            if(this.provider.canOrder() && this.provider.canIterateFromIndex() && !this.store.getFeatureManager().hasDeleteds()){
458
                it = new FastEditedIterator(this, index, elements);
450 459
            } else {
451
                it = new FastOrderedIterator(this, new FastEditedIterator(
452
                    this, 0), index);
460
                if (this.orderedData != null) {
461
                    it = new FastOrderedIterator(this, index);
462
                } else {
463
                    it = new FastOrderedIterator(this, new FastEditedIterator(
464
                        this, 0, -1), index);
465
                }
453 466
            }
454 467
            break;
455 468

  
456 469
        case ORDERED_EDITED_FILTER:
457
            if (this.orderedData != null) {
458
                it = new FastOrderedIterator(this, index);
470
            if(this.provider.canOrder() && this.provider.canFilter() && this.provider.canIterateFromIndex() && !this.store.getFeatureManager().hasDeleteds()){
471
                it = new FastEditedFilteredIterator(this, index, elements);
459 472
            } else {
460
                it = new FastOrderedIterator(this,
461
                    new FastEditedFilteredIterator(this, 0), index);
473
                if (this.orderedData != null) {
474
                    it = new FastOrderedIterator(this, index);
475
                } else {
476
                    it = new FastOrderedIterator(this,
477
                        new FastEditedFilteredIterator(this, 0, -1), index);
478
                }
462 479
            }
463 480
            break;
464 481
            
......
532 549
            break;
533 550

  
534 551
        case FILTERED:
535
            it = new FilteredIterator(this, index);
552
            it = new FilteredIterator(this, index, elements);
536 553
            break;
537 554

  
538 555
        case ORDERED:
539
            if (orderedData != null) {
540
                it = new OrderedIterator(this, index);
556
            if(this.provider.canOrder() && this.provider.canIterateFromIndex()){
557
                it = new DefaultIterator(this, index, elements);
558
            } else {
559
                if (orderedData != null) {
560
                    it = new OrderedIterator(this, index);
541 561

  
542
            } else {
543
                it = new OrderedIterator(this, new DefaultIterator(this, 0, elements),index);
562
                } else {
563
                    it = new OrderedIterator(this, new DefaultIterator(this, 0, elements),index);
564
                }
544 565
            }
545 566
            break;
546 567

  
547 568
        case ORDERED_FILTERED:
548
            it = new OrderedIterator(this, new FilteredIterator(this, 0),
549
                index);
569
            if(this.provider.canOrder() && this.provider.canFilter() && this.provider.canIterateFromIndex()){
570
                it = new FilteredIterator(this, index, elements);
571
            } else {
572
                if (orderedData != null) {
573
                    it = new OrderedIterator(this, index);
574
                } else {
575
                    it = new OrderedIterator(this, new FilteredIterator(this, 0, -1),index);
576
                }
577
            }
550 578
            break;
551 579

  
552 580
        case EDITED:
553
            it = new EditedIterator(this, index);
581
            it = new EditedIterator(this, index, elements);
554 582
            break;
555 583

  
556 584
        case EDITED_FILTERED:
557
            it = new EditedFilteredIterator(this, index);
585
            it = new EditedFilteredIterator(this, index, elements);
558 586
            break;
559 587

  
560 588
        case ORDERD_EDITED:
561
            it = new OrderedIterator(this, new EditedIterator(this, 0), index);
589
            if(this.provider.canOrder() && this.provider.canIterateFromIndex() && !this.store.getFeatureManager().hasDeleteds()){
590
                it = new EditedIterator(this, index, elements);
591
            } else {
592
                if (orderedData != null) {
593
                    it = new OrderedIterator(this, index);
594
                } else {
595
                    it = new OrderedIterator(this,
596
                        new EditedIterator(this, 0, -1), index);
597
                }
598
            }
562 599
            break;
563 600

  
564 601
        case ORDERED_EDITED_FILTER:
565
            it = new OrderedIterator(this,
566
                new EditedFilteredIterator(this, 0), index);
602
            if(this.provider.canOrder() && this.providerCanFilter() && this.provider.canIterateFromIndex() && !this.store.getFeatureManager().hasDeleteds()){
603
                it = new EditedFilteredIterator(this, index, elements);
604
            } else {
605
                if (orderedData != null) {
606
                    it = new OrderedIterator(this, index);
607
                } else {
608
                    it = new OrderedIterator(this,
609
                        new EditedFilteredIterator(this, 0, -1), index);
610
                }
611
            }
567 612
            break;
568 613

  
569 614
        default:

Also available in: Unified diff