Statistics
| Revision:

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

History | View | Annotate | Download (2.12 KB)

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

    
3
import java.util.Iterator;
4

    
5
import org.gvsig.fmap.dal.exceptions.DataException;
6
import org.gvsig.fmap.dal.feature.FeatureReference;
7
import org.gvsig.fmap.dal.feature.impl.DefaultFeature;
8
import org.gvsig.fmap.dal.feature.impl.DefaultFeatureReference;
9
import org.gvsig.fmap.dal.feature.spi.FeatureData;
10

    
11
public class EditedIterator extends FilteredIterator {
12

    
13
        Iterator newsFeatures;
14

    
15
        public EditedIterator(DefaultFeatureSet featureSet) {
16
                super(featureSet);
17
        }
18

    
19
        public EditedIterator(DefaultFeatureSet featureSet, long index)
20
                        throws DataException {
21
                super(featureSet);
22
                if (index > 0) {
23
                        if (featureSet.provider.canIterateFromIndex()) {
24
                                try {
25
                                        this.iterator = featureSet.provider.iterator(index);
26
                                } catch (IllegalArgumentException e) {
27
                                        this.iterator = featureSet.provider.iterator();
28
                                        this.newsFeatures = null;
29
                                        skypto(index);
30
                                } catch (UnsupportedOperationException e) {
31
                                        this.iterator = featureSet.provider.iterator();
32
                                        this.newsFeatures = null;
33
                                        skypto(index);
34
                                }
35
                        } else {
36
                                this.iterator = featureSet.provider.iterator();
37
                                this.newsFeatures = null;
38
                                skypto(index);
39
                        }
40
                } else {
41
                        this.iterator = featureSet.provider.iterator();
42
                        this.newsFeatures = featureSet.store.getFeatureManager()
43
                                        .getInserted();
44
                }
45

    
46
        }
47

    
48
        protected Iterator getIterator() {
49
                if (this.iterator.hasNext()) {
50
                        return this.iterator;
51
                }
52
                return this.newsFeatures;
53
        }
54

    
55
        protected DefaultFeature createFeature(FeatureData data) {
56

    
57
                DefaultFeature f = null;
58
                try {
59
                        FeatureReference ref = new DefaultFeatureReference(fset.store,data,false);
60
                        f = (DefaultFeature) fset.store.getFeatureManager().get(ref,
61
                                        fset.store, data.getType());
62
                } catch (DataException e) {
63
                        RuntimeException ex = new RuntimeException();
64
                        e.initCause(e);
65
                        throw ex;
66
                }
67
                if (f == null) {
68
                        // La feature no se ha editado.
69
                        f = new DefaultFeature(fset.store, data);
70
                }
71
                return f;
72
        }
73

    
74
        protected boolean isDeleted(FeatureData data) {
75
                FeatureReference ref = new DefaultFeatureReference(fset.store, data,
76
                                false);
77
                return fset.store.getFeatureManager().isDeleted(ref);
78
        }
79

    
80

    
81
}