Statistics
| Revision:

gvsig-geoprocess / org.gvsig.sextante / trunk / org.gvsig.sextante.app / org.gvsig.sextante.app.extension / src / main / java / org / gvsig / sextante / app / extension / core / gvFeatureIterator.java @ 37

History | View | Annotate | Download (2.38 KB)

1
package org.gvsig.sextante.app.extension.core;
2

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

    
6
import org.gvsig.fmap.dal.exception.DataException;
7
import org.gvsig.fmap.dal.feature.DisposableIterator;
8
import org.gvsig.fmap.dal.feature.Feature;
9
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
10
import org.gvsig.fmap.dal.feature.FeatureSet;
11
import org.gvsig.fmap.dal.feature.FeatureType;
12
import org.gvsig.fmap.geom.operation.tojts.ToJTS;
13

    
14
import com.vividsolutions.jts.geom.Geometry;
15

    
16
import es.unex.sextante.dataObjects.FeatureImpl;
17
import es.unex.sextante.dataObjects.IFeature;
18
import es.unex.sextante.dataObjects.IFeatureIterator;
19

    
20
public class gvFeatureIterator implements IFeatureIterator {
21

    
22
        private FeatureSet set;
23
    private DisposableIterator featureIterator;
24

    
25
    gvFeatureIterator(
26
                        org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect layer)
27
                        throws DataException {
28
        try {
29
                        set = layer.getFeatureStore().getFeatureSet();
30
                        featureIterator = set.fastIterator();
31
                } catch (DataException e) {
32
                        if (featureIterator != null) {
33
                                featureIterator.dispose();
34
                        }
35
                        if (set != null) {
36
                                set.dispose();
37
                        }
38
                        throw e;
39
                }
40
    }
41

    
42
    public boolean hasNext() {
43
       return featureIterator.hasNext();
44
    }
45

    
46
    @SuppressWarnings("unchecked")
47
        public IFeature next() throws java.util.NoSuchElementException{
48
        try{
49
                Feature f = (Feature) featureIterator.next();
50
                   org.gvsig.fmap.geom.Geometry geometry = f.getDefaultGeometry();
51
                Geometry geom = (Geometry)geometry.invokeOperation(ToJTS.CODE, null);
52
                FeatureType type=f.getType();
53
                Iterator<FeatureAttributeDescriptor> iter=type.iterator();
54
                ArrayList<Object> objects=new ArrayList<Object>();
55
                while (iter.hasNext()) {
56
                                FeatureAttributeDescriptor descriptor = iter.next();
57
                                String name=descriptor.getName();
58
                                if (!type.getDefaultGeometryAttributeName().equals(name)){
59
                                        objects.add(f.get(name));
60
                                }
61
                        }
62
                FeatureImpl feature = new FeatureImpl(geom, objects.toArray(new Object[0]));
63
                return feature;
64
        }catch (Exception e){
65
                throw new RuntimeException(e);
66
        }
67

    
68
    }
69

    
70
        public void close() {
71
                if (featureIterator != null) {
72
                        featureIterator.dispose();
73
                        featureIterator = null;
74
                }
75
                if (set != null) {
76
                        set.dispose();
77
                        set = null;
78
                }
79
        }
80

    
81
}