Statistics
| Revision:

svn-gvsig-desktop / branches / v2_0_0_prep / libraries / libFMap_dal / src / org / gvsig / fmap / dal / feature / impl / featureset / OrderedIterator.java @ 25994

History | View | Annotate | Download (1.19 KB)

1
package org.gvsig.fmap.dal.feature.impl.featureset;
2

    
3
import java.util.ArrayList;
4
import java.util.Collections;
5
import java.util.Iterator;
6
import java.util.List;
7

    
8
import org.gvsig.fmap.dal.feature.Feature;
9
import org.gvsig.fmap.dal.feature.impl.DefaultFeature;
10

    
11
public class OrderedIterator extends DefaultIterator {
12

    
13
        protected Feature lastFeature = null;
14

    
15
        OrderedIterator(DefaultFeatureSet featureSet, Iterator iterator, long index) {
16
                super(featureSet);
17
                // FIXME QUE PASA CON SIZE > Integer.MAX_VALUE ?????
18
                if (featureSet.orderedData == null) {
19
                        List data = new ArrayList();
20
                        Object item;
21
                        while (iterator.hasNext()) {
22
                                item = iterator.next();
23
                                if (item instanceof DefaultFeature) {
24
                                        data.add(((DefaultFeature) item).getData());
25
                                } else {
26
                                        data.add(item);
27
                                }
28
                        }
29
                        Collections.sort(data, new FeatureDataComparator(featureSet.store,
30
                                        featureSet.query.getOrder()));
31
                        featureSet.orderedData = data;
32
                }
33
                if (index < Integer.MAX_VALUE) {
34
                        this.iterator = featureSet.orderedData.listIterator((int) index);
35
                } else {
36
                        this.iterator = featureSet.orderedData.iterator();
37
                        this.skypto(index);
38
                }
39
        }
40

    
41
        public void remove() {
42
                super.remove();
43
                this.iterator.remove();
44
        }
45

    
46

    
47
}
48