Revision 43358 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/DefaultFeatureSelection.java
DefaultFeatureSelection.java | ||
---|---|---|
53 | 53 |
import org.gvsig.tools.persistence.PersistenceManager; |
54 | 54 |
import org.gvsig.tools.persistence.PersistentState; |
55 | 55 |
import org.gvsig.tools.persistence.exception.PersistenceException; |
56 |
import org.gvsig.tools.visitor.Visitor; |
|
56 | 57 |
import org.slf4j.Logger; |
57 | 58 |
import org.slf4j.LoggerFactory; |
58 | 59 |
|
... | ... | |
68 | 69 |
public class DefaultFeatureSelection extends AbstractFeatureSet |
69 | 70 |
implements FeatureSelection { |
70 | 71 |
|
71 |
private static final Logger LOG = LoggerFactory |
|
72 |
.getLogger(DefaultFeatureSelection.class); |
|
73 |
|
|
74 | 72 |
public class RemoveFromFeatureSelectionException extends DataRuntimeException { |
75 | 73 |
|
76 | 74 |
/** |
... | ... | |
608 | 606 |
* WARN: not very good performance implementation. |
609 | 607 |
*/ |
610 | 608 |
@Override |
611 |
public DisposableIterator iterator(long index) {
|
|
612 |
return iterator(index, false);
|
|
613 |
}
|
|
609 |
public DisposableIterator iterator(long index) {
|
|
610 |
return iterator(index, 0, false);
|
|
611 |
}
|
|
614 | 612 |
|
613 |
@Override |
|
614 |
public DisposableIterator iterator(long index, long elements) { |
|
615 |
return iterator(index, elements, false); |
|
616 |
} |
|
617 |
|
|
615 | 618 |
/** |
616 | 619 |
* Returns the list of selected values, or the deselected ones if the |
617 | 620 |
* selection has been reversed. |
... | ... | |
619 | 622 |
* WARN: not really a fast implementation. |
620 | 623 |
*/ |
621 | 624 |
@Override |
622 |
public DisposableIterator fastIterator(long index) { |
|
623 |
return iterator(index, true); |
|
625 |
public DisposableIterator fastIterator(long index) { |
|
626 |
return fastIterator(index, 0); |
|
627 |
} |
|
628 |
|
|
629 |
@Override |
|
630 |
public DisposableIterator fastIterator(long index, long elements) { |
|
631 |
return iterator(index, elements, true); |
|
624 | 632 |
} |
625 | 633 |
|
634 |
|
|
626 | 635 |
protected void clearFeatureReferences() { |
627 | 636 |
this.featureReferenceSelection.clearFeatureReferences(); |
628 | 637 |
featureTypeCounts.clear(); |
... | ... | |
631 | 640 |
/** |
632 | 641 |
* Creates an iterator for the Selection. |
633 | 642 |
*/ |
634 |
private DisposableIterator iterator(long index, boolean fastIterator) { |
|
643 |
private DisposableIterator iterator(long index, long elements, boolean fastIterator) {
|
|
635 | 644 |
if (isReversed()) { |
636 | 645 |
DisposableIterator iter = new ReversedFeatureIteratorFacade( |
637 | 646 |
getData(), getFeatureStore(), fastIterator); |
... | ... | |
730 | 739 |
return clone; |
731 | 740 |
} |
732 | 741 |
|
742 |
@Override |
|
743 |
protected void doAccept(Visitor visitor, long firstValueIndex, long elements) throws BaseException { |
|
744 |
DisposableIterator iterator = fastIterator(firstValueIndex, elements); |
|
745 |
if (iterator != null) { |
|
746 |
try { |
|
747 |
while (iterator.hasNext()) { |
|
748 |
Feature feature = (Feature) iterator.next(); |
|
749 |
visitor.visit(feature); |
|
750 |
} |
|
751 |
} finally { |
|
752 |
iterator.dispose(); |
|
753 |
} |
|
754 |
} |
|
755 |
} |
|
756 |
|
|
733 | 757 |
} |
Also available in: Unified diff