Statistics
| Revision:

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

History | View | Annotate | Download (1.88 KB)

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

    
3
import org.gvsig.fmap.dal.exception.DataException;
4
import org.gvsig.fmap.dal.feature.FeatureReference;
5
import org.gvsig.fmap.dal.feature.impl.DefaultFeature;
6
import org.gvsig.fmap.dal.feature.impl.DefaultFeatureReference;
7
import org.gvsig.fmap.dal.feature.spi.FeatureData;
8

    
9
public class FastEditedIterator extends EditedIterator {
10
        DefaultFeature myFeature;
11

    
12
        public FastEditedIterator(DefaultFeatureSet featureSet, long index)
13
                        throws DataException {
14
                super(featureSet);
15
                myFeature = new DefaultFeature(fset.store);
16
                if (index > 0) {
17
                        if (featureSet.provider.canIterateFromIndex()) {
18
                                try {
19
                                        this.iterator = featureSet.provider.fastIterator(index);
20
                                } catch (IllegalArgumentException e) {
21
                                        this.iterator = featureSet.provider.fastIterator();
22
                                        this.newsFeatures = null;
23
                                        skypto(index);
24
                                } catch (UnsupportedOperationException e) {
25
                                        this.iterator = featureSet.provider.fastIterator();
26
                                        this.newsFeatures = null;
27
                                        skypto(index);
28
                                }
29
                        } else {
30
                                this.iterator = featureSet.provider.fastIterator();
31
                                this.newsFeatures = null;
32
                                skypto(index);
33
                        }
34
                } else {
35
                        this.iterator = featureSet.provider.fastIterator();
36
                        this.newsFeatures = featureSet.store.getFeatureManager()
37
                                        .getInserted();
38
                }
39

    
40
        }
41

    
42
        protected DefaultFeature createFeature(FeatureData data) {
43

    
44
                DefaultFeature f = null;
45
                try {
46
                        data.setNew(featureIsNew);
47
                        FeatureReference ref = new DefaultFeatureReference(fset.store,
48
                                        data);
49
                        f = (DefaultFeature) fset.store.getFeatureManager().get(
50
                                        ref,
51
                                        fset.store, data.getType());
52
                } catch (DataException e) {
53
                        RuntimeException ex = new RuntimeException();
54
                        e.initCause(e);
55
                        throw ex;
56
                }
57
                if (f == null) {
58
                        this.myFeature.setData(data);
59
                } else {
60
                        // TODO Sacamos una copia del data o no???
61
                        this.myFeature.setData(f.getData().getCopy());
62
                }
63
                return this.myFeature;
64

    
65
        }
66

    
67

    
68
}