Statistics
| Revision:

gvsig-geoprocess / org.gvsig.sextante / trunk / org.gvsig.sextante.app / org.gvsig.sextante.app.extension / src / main / java / org / gvsig / geoprocess / core / gvRecordsetIterator.java @ 172

History | View | Annotate | Download (1.88 KB)

1
package org.gvsig.geoprocess.core;
2

    
3
import java.util.ArrayList;
4
import java.util.Iterator;
5

    
6
import es.unex.sextante.dataObjects.IRecord;
7
import es.unex.sextante.dataObjects.IRecordsetIterator;
8
import es.unex.sextante.dataObjects.RecordImpl;
9

    
10
import org.gvsig.fmap.dal.exception.DataException;
11
import org.gvsig.fmap.dal.feature.Feature;
12
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
13
import org.gvsig.fmap.dal.feature.FeatureSet;
14
import org.gvsig.fmap.dal.feature.FeatureType;
15
import org.gvsig.tools.dispose.DisposableIterator;
16

    
17
public class gvRecordsetIterator implements IRecordsetIterator {
18

    
19
    private final FeatureSet featureSet;
20
    private DisposableIterator featureIterator;
21

    
22
    gvRecordsetIterator(final FeatureSet obj) throws DataException {
23

    
24
        featureSet = obj;
25
        try {
26
            featureIterator = featureSet.fastIterator();
27
        } catch (final DataException e) {
28
            throw e;
29
        }
30

    
31
    }
32

    
33
    public boolean hasNext() {
34
        return featureIterator.hasNext();
35
    }
36

    
37
    public IRecord next() {
38
        final Feature feature = (Feature) featureIterator.next();
39
        final FeatureType fType = feature.getType();
40
        @SuppressWarnings("unchecked")
41
        final Iterator<FeatureAttributeDescriptor> descriptors =
42
            fType.iterator();
43
        final ArrayList<Object> objects = new ArrayList<Object>();
44
        while (descriptors.hasNext()) {
45
            final FeatureAttributeDescriptor descriptor = descriptors.next();
46
            objects.add(feature.get(descriptor.getName()));
47
        }
48

    
49
        final IRecord record = new RecordImpl(objects.toArray(new Object[0]));
50

    
51
        return record;
52
    }
53

    
54
    public void close() {
55
        if (featureIterator != null) {
56
            featureIterator.dispose();
57
            featureIterator = null;
58
        }
59
        featureSet.dispose();
60
    }
61

    
62
}