Revision 23675 branches/v2_0_0_prep/libraries/libFMap_data/src/org/gvsig/fmap/data/feature/joinstore/JoinFeatureCollectionWithFeatureID.java

View differences:

JoinFeatureCollectionWithFeatureID.java
1 1
package org.gvsig.fmap.data.feature.joinstore;
2 2

  
3
import java.util.ArrayList;
4
import java.util.Collection;
5
import java.util.Comparator;
6
import java.util.Iterator;
7
import java.util.TreeSet;
3
import java.util.*;
8 4

  
9 5
import org.gvsig.fmap.data.DataManager;
10 6
import org.gvsig.fmap.data.DataStore;
11 7
import org.gvsig.fmap.data.ReadException;
12
import org.gvsig.fmap.data.feature.AbstractFeatureCollection;
13
import org.gvsig.fmap.data.feature.AbstractFeatureIDIterator;
14
import org.gvsig.fmap.data.feature.Feature;
15
import org.gvsig.fmap.data.feature.FeatureCollection;
16
import org.gvsig.fmap.data.feature.FeatureStore;
17
import org.gvsig.fmap.data.feature.FeatureType;
8
import org.gvsig.fmap.data.feature.*;
18 9
import org.gvsig.fmap.data.feature.expressionevaluator.Filter;
19 10
import org.gvsig.tools.observer.DefaultObservable;
20 11

  
......
100 91
		return dbfIter;
101 92
	}
102 93

  
94
	protected Iterator internalIterator(int index) {
95
        checkModified();
96
        FIDIterator fidIter;
97

  
98
        if (featureIDs instanceof List) {
99
            fidIter = new FIDIterator(((List) featureIDs).listIterator(index),
100
                    featureType);
101
        } else {
102
            // TODO: If featureIDs is not a Collection of type List (actually,
103
            // only when ordering is applied), we are not able
104
            // to get a listIterator with an index, so we have to move the
105
            // iterator to the required position. This option will be probably
106
            // a lot slower, so an option would be to order with a List
107
            // instead of a TreeSet.
108
            Iterator iter = featureIDs.iterator();
109
            for (int i = 0; i < index; i++) {
110
                iter.next();
111
            }
112

  
113
            fidIter = new FIDIterator(iter, featureType);
114
        }
115

  
116
        return fidIter;
117
    }
118
	
103 119
	public Object[] toArray() {
104 120
		checkModified();
105 121
		ArrayList features= new ArrayList();

Also available in: Unified diff