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 24496 jmvivo
package org.gvsig.fmap.dal.feature.impl.featureSet;
2 23820 jjdelcerro
3 24496 jmvivo
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 23820 jjdelcerro
9
public class FastEditedIterator extends EditedIterator {
10
        DefaultFeature myFeature;
11
12 23894 jjdelcerro
        public FastEditedIterator(DefaultFeatureSet featureSet, long index)
13
                        throws DataException {
14 23820 jjdelcerro
                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 24145 vcaballero
                                        .getInserted();
38 23820 jjdelcerro
                }
39
40
        }
41
42
        protected DefaultFeature createFeature(FeatureData data) {
43
44
                DefaultFeature f = null;
45
                try {
46 24248 jjdelcerro
                        FeatureReference ref = new DefaultFeatureReference(fset.store,
47
                                        data, false);
48 24136 vcaballero
                        f = (DefaultFeature) fset.store.getFeatureManager().get(
49 24248 jjdelcerro
                                        ref,
50
                                        fset.store, data.getType());
51 23820 jjdelcerro
                } 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
}