Statistics
| Revision:

root / branches / Mobile_Compatible_Hito_1 / libFMap / src-file / org / gvsig / data / datastores / vectorial / file / shp / ShpFeature.java @ 21606

History | View | Annotate | Download (3.9 KB)

1
package org.gvsig.data.datastores.vectorial.file.shp;
2

    
3
import java.text.DateFormat;
4
import java.text.ParseException;
5
import java.util.Date;
6
import java.util.List;
7
import java.util.Locale;
8

    
9
import org.gvsig.data.datastores.vectorial.file.dbf.DBFFeature;
10
import org.gvsig.data.datastores.vectorial.file.dbf.utils.DbaseFile;
11
import org.gvsig.data.exception.ReadException;
12
import org.gvsig.data.spatialprovisional.IExtent;
13
import org.gvsig.data.vectorial.Feature;
14
import org.gvsig.data.vectorial.IFeatureAttributeDescriptor;
15
import org.gvsig.data.vectorial.IFeatureID;
16
import org.gvsig.data.vectorial.IFeatureType;
17

    
18
import es.prodevelop.gvsig.mobile.fmap.core.IGeometry;
19

    
20

    
21

    
22
public class ShpFeature extends Feature {
23
        
24
        protected static Locale ukLocale = new Locale("en", "UK");
25
        private SHPStore store;
26
        private long featureIndex;
27

    
28
        ShpFeature(IFeatureType featureType, SHPStore store,long featureIndex) {
29
                super(featureType);
30
                this.store=store;
31
                this.featureIndex=featureIndex;
32
        }
33

    
34

    
35
        void load(IGeometry geometry) throws ReadException{
36
                for (int i=0;i<featureType.size();i++) {
37
                        IFeatureAttributeDescriptor descriptor = (IFeatureAttributeDescriptor)featureType.get(i);
38
                        String fieldType=descriptor.getDataType();
39
                        if (fieldType.equals(IFeatureAttributeDescriptor.TYPE_GEOMETRY)){
40
                                setGeometry(i,geometry);
41
                        }
42
                }
43
        }
44
        
45
        
46
        
47
        void load(DbaseFile dbf,IGeometry geometry) throws ReadException{
48
                for (int i=0;i<featureType.size();i++) {
49
                        IFeatureAttributeDescriptor descriptor= (IFeatureAttributeDescriptor)featureType.get(i);
50
                        String fieldType=descriptor.getDataType();
51
                        if (fieldType.equals(IFeatureAttributeDescriptor.TYPE_GEOMETRY)){
52
                                this.setGeometry(i,geometry);
53
                        }
54
                        if (dbf.getFieldCount()<=i)
55
                                return ;
56
                        String value=dbf.getStringFieldValue((int) this.featureIndex, i);
57
                        value=value.trim();
58

    
59
                        if (fieldType.equals(IFeatureAttributeDescriptor.TYPE_STRING)){
60
                                this.set(i,value);
61
                        }else if (fieldType.equals(IFeatureAttributeDescriptor.TYPE_DOUBLE)){
62
                                try{
63
                                        Double.parseDouble(value);
64
                                }catch (NumberFormatException e) {
65
                                        value="0";
66
                                }
67
                                this.set(i,Double.parseDouble(value));
68
                        }else if (fieldType.equals(IFeatureAttributeDescriptor.TYPE_INT)){
69
                                this.set(i,Integer.parseInt(value));
70
                        }else if (fieldType.equals(IFeatureAttributeDescriptor.TYPE_FLOAT)){
71
                                this.set(i,Float.parseFloat(value));
72
                        }else if (fieldType.equals(IFeatureAttributeDescriptor.TYPE_LONG)){
73
                                this.set(i,Long.parseLong(value));
74
                        }else if (fieldType.equals(IFeatureAttributeDescriptor.TYPE_BOOLEAN)){
75
                                this.set(i,Boolean.valueOf(value));
76
                        }else if (fieldType.equals(IFeatureAttributeDescriptor.TYPE_BYTE)){
77
                                this.set(i,Byte.parseByte(value));
78
                        }else if (fieldType.equals(IFeatureAttributeDescriptor.TYPE_DATE)){
79
                                String year = value.substring(0, 4);
80
                                String month = value.substring(4, 6);
81
                                String day = value.substring(6, 8);
82
                                DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, ukLocale);
83
                                /* Calendar c = Calendar.getInstance();
84
                            c.clear();
85
                            c.set(Integer.parseInt(year), Integer.parseInt(month),
86
                                Integer.parseInt(day));
87
                            c.set(Calendar.MILLISECOND, 0); */
88
                                String strAux = month + "/" + day + "/" + year;
89
                                Date dat=null;
90
                                try {
91
                                        dat = df.parse(strAux);
92
                                } catch (ParseException e) {
93
                                        throw new ReadException(this.store.getName(),e);
94
                                }
95
                                this.set(i,dat);
96
                        }else{
97
                                this.set(i,null);
98
                        }
99
                }
100

    
101
        }
102
        
103

    
104

    
105

    
106
        public IFeatureID getID() {
107
                return new ShpFeatureID(this.store,featureIndex);
108
        }
109

    
110
        public IExtent getExtent() {
111
                return store.getBoundingBox(featureIndex);
112
        }
113

    
114
        public List getAllSRS() {
115
                // TODO Auto-generated method stub
116
                return null;
117
        }
118

    
119
        public String getDefaultSRS() {
120
                // TODO Auto-generated method stub
121
                return null;
122
        }
123

    
124
//        public int[] getGeometryTypes() {
125
//                IGeometry geometry= (IGeometry)getDefaultGeometry();
126
//                if (geometry!=null)
127
//                        return new int[]{geometry.getGeometryType()};
128
//                return null;
129
//        }
130
}