Statistics
| Revision:

root / branches / v2_0_0_prep / libraries / libFMap_data / src / org / gvsig / fmap / data / feature / impl / featureSet / EditedIterator.java @ 24145

History | View | Annotate | Download (1.89 KB)

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

    
3
import java.util.Iterator;
4

    
5
import org.gvsig.fmap.data.exceptions.DataException;
6
import org.gvsig.fmap.data.feature.impl.DefaultFeature;
7
import org.gvsig.fmap.data.feature.spi.FeatureData;
8

    
9
public class EditedIterator extends FilteredIterator {
10

    
11
        Iterator newsFeatures;
12

    
13
        public EditedIterator(DefaultFeatureSet featureSet) {
14
                super(featureSet);
15
        }
16

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

    
44
        }
45

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

    
53
        protected DefaultFeature createFeature(FeatureData data) {
54

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

    
71
        protected boolean isDeleted(FeatureData data) {
72
                return fset.store.getFeatureManager().isDeleted(data.getReference());
73
        }
74

    
75

    
76
}