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 | 22373 | jmvivo | package org.gvsig.fmap.data.feature.db.jdbc.h2; |
---|---|---|---|
2 | 19541 | vcaballero | |
3 | 20473 | jmvivo | import java.sql.ResultSet; |
4 | import java.sql.SQLException; |
||
5 | 19541 | vcaballero | |
6 | 21911 | jmvivo | import org.gvsig.fmap.data.DataException; |
7 | import org.gvsig.fmap.data.ReadException; |
||
8 | 22360 | jmvivo | 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 | 22373 | jmvivo | import org.gvsig.fmap.data.feature.db.jdbc.JDBCFeature; |
14 | import org.gvsig.fmap.data.feature.db.jdbc.JDBCStore; |
||
15 | 20920 | vcaballero | import org.gvsig.fmap.geom.Geometry; |
16 | 21364 | vcaballero | 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 | 19541 | vcaballero | |
23 | 19906 | jmvivo | public class H2Feature extends JDBCFeature{ |
24 | 19541 | vcaballero | |
25 | 21045 | jmvivo | H2Feature(FeatureType featureType, JDBCStore store, ResultSet rs) throws ReadException { |
26 | 20473 | jmvivo | super(featureType, store, rs);
|
27 | 20439 | vcaballero | } |
28 | |||
29 | 20578 | jmvivo | protected H2Feature(H2Feature feature) throws ReadException{ |
30 | super(feature);
|
||
31 | } |
||
32 | |||
33 | 19610 | jmvivo | /**
|
34 | *
|
||
35 | */
|
||
36 | private static final long serialVersionUID = -5836612523458472800L; |
||
37 | 19541 | vcaballero | |
38 | 21045 | jmvivo | public FeatureID getID() {
|
39 | 19781 | jmvivo | return new H2FeatureID(this.store,featureKey); |
40 | 19541 | vcaballero | } |
41 | |||
42 | 21045 | jmvivo | protected void loadValueFromResulset(ResultSet rs, FeatureAttributeDescriptor attr) throws ReadException { |
43 | 20920 | vcaballero | Geometry geom; |
44 | 20473 | jmvivo | String name = attr.getName();
|
45 | try{
|
||
46 | 21045 | jmvivo | if (attr.getDataType().equals(FeatureAttributeDescriptor.TYPE_GEOMETRY)) {
|
47 | 20473 | jmvivo | byte[] data = rs.getBytes(name); |
48 | |||
49 | if (data == null) { |
||
50 | geom = null;
|
||
51 | } else{
|
||
52 | 21364 | vcaballero | geom=new NullGeometry();
|
53 | FromWKBGeometryOperationContext fwkb=new FromWKBGeometryOperationContext();
|
||
54 | fwkb.setData(data); |
||
55 | geom=(Geometry)geom.invokeOperation(FromWKB.CODE,fwkb); |
||
56 | 20473 | jmvivo | } |
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 | 21364 | vcaballero | } catch (GeometryOperationNotSupportedException e) {
|
67 | throw new ReadException(this.store.getName(),e); |
||
68 | } catch (GeometryOperationException e) {
|
||
69 | throw new ReadException(this.store.getName(),e); |
||
70 | 20473 | jmvivo | } |
71 | |||
72 | |||
73 | } |
||
74 | 20578 | jmvivo | |
75 | /* (non-Javadoc)
|
||
76 | 22360 | jmvivo | * @see org.gvsig.fmap.data.feature.AbstractFeature#cloneFeature()
|
77 | 20578 | jmvivo | */
|
78 | 21045 | jmvivo | protected Feature cloneFeature() throws DataException { |
79 | 20578 | jmvivo | return new H2Feature(this); |
80 | } |
||
81 | 19541 | vcaballero | } |