Statistics
| Revision:

svn-gvsig-desktop / branches / v2_0_0_prep / libraries / libFMap_dataDB / src / org / gvsig / fmap / data / feature / db / jdbc / h2 / H2Feature.java @ 22373

History | View | Annotate | Download (2.66 KB)

1
package org.gvsig.fmap.data.feature.db.jdbc.h2;
2

    
3
import java.sql.ResultSet;
4
import java.sql.SQLException;
5

    
6
import org.gvsig.fmap.data.DataException;
7
import org.gvsig.fmap.data.ReadException;
8
import org.gvsig.fmap.data.feature.Feature;
9
import org.gvsig.fmap.data.feature.FeatureAttributeDescriptor;
10
import org.gvsig.fmap.data.feature.FeatureID;
11
import org.gvsig.fmap.data.feature.FeatureType;
12
import org.gvsig.fmap.data.feature.IsNotFeatureSettingException;
13
import org.gvsig.fmap.data.feature.db.jdbc.JDBCFeature;
14
import org.gvsig.fmap.data.feature.db.jdbc.JDBCStore;
15
import org.gvsig.fmap.geom.Geometry;
16
import org.gvsig.fmap.geom.operation.GeometryOperationException;
17
import org.gvsig.fmap.geom.operation.GeometryOperationNotSupportedException;
18
import org.gvsig.fmap.geom.operation.fromwkb.FromWKB;
19
import org.gvsig.fmap.geom.operation.fromwkb.FromWKBGeometryOperationContext;
20
import org.gvsig.fmap.geom.operation.towkb.ToWKB;
21
import org.gvsig.fmap.geom.primitive.NullGeometry;
22

    
23
public class H2Feature extends JDBCFeature{
24

    
25
        H2Feature(FeatureType featureType, JDBCStore store, ResultSet rs) throws ReadException {
26
                super(featureType, store, rs);
27
        }
28

    
29
        protected H2Feature(H2Feature feature) throws ReadException{
30
                super(feature);
31
        }
32

    
33
        /**
34
         *
35
         */
36
        private static final long serialVersionUID = -5836612523458472800L;
37

    
38
        public FeatureID getID() {
39
                return new H2FeatureID(this.store,featureKey);
40
        }
41

    
42
        protected void loadValueFromResulset(ResultSet rs, FeatureAttributeDescriptor attr) throws ReadException {
43
                Geometry geom;
44
                String name = attr.getName();
45
                try{
46
                        if (attr.getDataType().equals(FeatureAttributeDescriptor.TYPE_GEOMETRY)) {
47
                                byte[] data = rs.getBytes(name);
48

    
49
                                if (data == null) {
50
                                        geom = null;
51
                                } else{
52
                                        geom=new NullGeometry();
53
                                        FromWKBGeometryOperationContext fwkb=new FromWKBGeometryOperationContext();
54
                                        fwkb.setData(data);
55
                                        geom=(Geometry)geom.invokeOperation(FromWKB.CODE,fwkb);
56
                                }
57
        //                        feature.setDefaultGeometry(geom);
58
                                this.setGeometry(name,geom);
59
                        } else {
60
                                this.set(name, rs.getObject(name));
61
                        }
62
                } catch (SQLException e) {
63
                        throw new ReadException(this.store.getName(),e);
64
                } catch (IsNotFeatureSettingException e) {
65
                        throw new ReadException(this.store.getName(),e);
66
                } catch (GeometryOperationNotSupportedException e) {
67
                        throw new ReadException(this.store.getName(),e);
68
                } catch (GeometryOperationException e) {
69
                        throw new ReadException(this.store.getName(),e);
70
                }
71

    
72

    
73
        }
74

    
75
        /* (non-Javadoc)
76
         * @see org.gvsig.fmap.data.feature.AbstractFeature#cloneFeature()
77
         */
78
        protected Feature cloneFeature() throws DataException {
79
                return new H2Feature(this);
80
        }
81
}