Statistics
| Revision:

root / branches / v2_0_0_prep / libraries / libFMap_dal / src / org / gvsig / fmap / dal / feature / impl / featureSet / FastEditedIterator.java @ 24496

History | View | Annotate | Download (1.86 KB)

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

    
3
import org.gvsig.fmap.dal.exceptions.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
                        FeatureReference ref = new DefaultFeatureReference(fset.store,
47
                                        data, false);
48
                        f = (DefaultFeature) fset.store.getFeatureManager().get(
49
                                        ref,
50
                                        fset.store, data.getType());
51
                } catch (DataException e) {
52
                        RuntimeException ex = new RuntimeException();
53
                        e.initCause(e);
54
                        throw ex;
55
                }
56
                if (f == null) {
57
                        this.myFeature.setData(data);
58
                } else {
59
                        // TODO Sacamos una copia del data o no???
60
                        this.myFeature.setData(f.getData().getCopy());
61
                }
62
                return this.myFeature;
63

    
64
        }
65

    
66

    
67
}