Statistics
| Revision:

root / branches / v2_0_0_prep / libraries / libFMap_dal / src / org / gvsig / fmap / dal / feature / spi / DefaultFeatureData.java @ 24496

History | View | Annotate | Download (2.54 KB)

1
package org.gvsig.fmap.dal.feature.spi;
2

    
3
import org.gvsig.fmap.dal.feature.EditableFeatureType;
4
import org.gvsig.fmap.dal.feature.FeatureType;
5
import org.gvsig.fmap.dal.feature.impl.DefaultFeatureType;
6
import org.gvsig.fmap.geom.Geometry;
7
import org.gvsig.fmap.geom.primitive.Envelope;
8

    
9
public class DefaultFeatureData implements FeatureData {
10

    
11
        protected DefaultFeatureType featureType;
12
        protected boolean[] nulls;
13
        protected Object[] values;
14
        protected Geometry defaultGeometry;
15
        protected Envelope envelope;
16
        private Object oid;
17

    
18
        public DefaultFeatureData(FeatureType type) {
19
                if (type instanceof EditableFeatureType) {
20
                        throw new IllegalArgumentException("type can't by editable.");
21
                }
22
                this.featureType = (DefaultFeatureType) type;
23
                this.values = new Object[featureType.size()];
24
                this.nulls = new boolean[featureType.size()];
25
        }
26

    
27
        public void set(int i, Object value) {
28
                if (featureType.getDefaultGeometryAttributeIndex() == i) {
29
                        defaultGeometry = (Geometry) value;
30
                        envelope = null;
31
                }
32
                if (value == null) {
33
                        nulls[i] = true;
34
                        values[i] = featureType.getAttributeDescriptor(i).getDefaultValue();
35
                } else {
36
                        values[i] = value;
37
                        nulls[i] = false;
38
                }
39
        }
40

    
41
        public void set(String name, Object value) {
42
                set(featureType.getIndex(name), value);
43
        }
44

    
45
        public Object get(int i) {
46
                return values[i];
47
        }
48

    
49
        public Object get(String name) {
50
                int i = featureType.getIndex(name);
51
                return values[i];
52
        }
53

    
54
        public FeatureType getType() {
55
                return featureType;
56
        }
57

    
58
        public FeatureData getCopy() {
59
                DefaultFeatureData data = new DefaultFeatureData(
60
                                this.getType());
61
                return getCopy(data);
62
        }
63

    
64
        protected FeatureData getCopy(DefaultFeatureData data) {
65
                data.oid = this.oid;
66
                System.arraycopy(this.values, 0, data.values, 0, this.values.length);
67
                data.defaultGeometry = this.defaultGeometry;
68
                data.envelope = this.envelope;
69
                return data;
70
        }
71

    
72
        public Envelope getDefaultEnvelope() {
73
                if (envelope == null) {
74
                        envelope = defaultGeometry.getEnvelope();
75
                }
76
                return envelope;
77
        }
78

    
79
        public Geometry getDefaultGeometry() {
80
                return this.defaultGeometry;
81
        }
82

    
83
        public void setDefaultEnvelope(Envelope envelope) {
84
                this.envelope = envelope;
85
        }
86

    
87
        public void setDefaultGeometry(Geometry geom) {
88
                int i = featureType.getDefaultGeometryAttributeIndex();
89
                defaultGeometry = geom;
90
                envelope = null;
91
                values[i] = geom;
92
        }
93

    
94
        public boolean isNull(int i) {
95
                return nulls[i];
96
        }
97

    
98
        public boolean isNull(String name) {
99
                int i = featureType.getIndex(name);
100
                return isNull(i);
101
        }
102

    
103
        public Object getOID() {
104
                return this.oid;
105
        }
106

    
107
        public void setOID(Object oid) {
108
                this.oid = oid;
109
        }
110

    
111
}