Revision 19626
trunk/libraries/libDataSourceDBBaseDrivers/src/org/gvsig/data/datastores/vectorial/driver/jdbc/h2/H2DriverUtils.java | ||
---|---|---|
21 | 21 |
import com.iver.cit.gvsig.fmap.drivers.WKBParser2; |
22 | 22 |
|
23 | 23 |
public class H2DriverUtils { |
24 |
private static WKBParser2 wkbParser = new WKBParser2(); |
|
24 | 25 |
|
25 | 26 |
static DBFeatureType getFeatureType(Connection conn,H2DriverParameters params) throws ReadException{ |
26 | 27 |
String sql=""; |
... | ... | |
72 | 73 |
} |
73 | 74 |
rsAllMeta.next(); |
74 | 75 |
} |
76 |
if (attr.getName().equals(params.getGeometryField())){ |
|
77 |
if (attr.getDataType().equals(IFeatureAttributeDescriptor.TYPE_OBJECT)){ |
|
78 |
attr.setType(IFeatureAttributeDescriptor.TYPE_GEOMETRY); |
|
79 |
}else{ |
|
80 |
throw new InitializeException( |
|
81 |
"H2DriverUtils.getFeatureType", |
|
82 |
new Exception("Geometry Field '" |
|
83 |
+ params.getGeometryField() |
|
84 |
+ "' is a " |
|
85 |
+ attr.getDataType() |
|
86 |
+ " but sould be " |
|
87 |
+ IFeatureAttributeDescriptor.TYPE_OBJECT)); |
|
88 |
} |
|
89 |
|
|
90 |
} |
|
75 | 91 |
} |
76 | 92 |
|
77 | 93 |
rs.close(); |
... | ... | |
162 | 178 |
break; |
163 | 179 |
case java.sql.Types.CHAR: |
164 | 180 |
column.setType(IFeatureAttributeDescriptor.TYPE_STRING); |
165 |
column.setSize(rsMetadata.getInt("COLUMN_SIZE")); |
|
181 |
// column.setSize(rsMetadata.getInt("COLUMN_SIZE")); |
|
182 |
column.setSize(rsMetadata.getInt("CHARACTER_MAXIMUM_LENGTH")); |
|
166 | 183 |
break; |
167 | 184 |
case java.sql.Types.VARCHAR: |
168 | 185 |
column.setType(IFeatureAttributeDescriptor.TYPE_STRING); |
169 |
column.setSize(rsMetadata.getInt("COLUMN_SIZE")); |
|
186 |
// column.setSize(rsMetadata.getInt("COLUMN_SIZE")); |
|
187 |
column.setSize(rsMetadata.getInt("CHARACTER_MAXIMUM_LENGTH")); |
|
188 |
|
|
170 | 189 |
break; |
171 | 190 |
case java.sql.Types.FLOAT: |
172 | 191 |
column.setType(IFeatureAttributeDescriptor.TYPE_FLOAT); |
173 |
column.setSize(rsMetadata.getInt("COLUMN_SIZE")); |
|
192 |
// column.setSize(rsMetadata.getInt("COLUMN_SIZE")); |
|
193 |
column.setSize(rsMetadata.getInt("CHARACTER_MAXIMUM_LENGTH")); |
|
174 | 194 |
break; |
175 | 195 |
case java.sql.Types.DECIMAL: |
176 | 196 |
column.setType(IFeatureAttributeDescriptor.TYPE_FLOAT); |
177 |
column.setSize(rsMetadata.getInt("COLUMN_SIZE")); |
|
197 |
// column.setSize(rsMetadata.getInt("COLUMN_SIZE")); |
|
198 |
column.setSize(rsMetadata.getInt("CHARACTER_MAXIMUM_LENGTH")); |
|
178 | 199 |
// column.setPrecision(rsMetadata.getInt("DECIMAL_DIGITS")); |
179 | 200 |
column.setPrecision(rsMetadata.getInt("NUMERIC_PRECISION")); |
180 | 201 |
break; |
... | ... | |
291 | 312 |
} |
292 | 313 |
|
293 | 314 |
static IFeature createFeature(H2Driver driver,ResultSet rs,DBFeatureType featureType) throws ReadException{ |
294 |
WKBParser2 wkbParser = new WKBParser2(); |
|
295 | 315 |
|
296 | 316 |
H2Feature feature=null; |
297 | 317 |
|
trunk/libraries/libDataSourceDBBaseDrivers/src-test/org/gvsig/data/datastores/vectorial/driver/jdbc/SHP2H2FeaturesVisitor.java | ||
---|---|---|
1 | 1 |
package org.gvsig.data.datastores.vectorial.driver.jdbc; |
2 | 2 |
|
3 |
import java.io.IOException; |
|
3 | 4 |
import java.sql.Connection; |
4 | 5 |
import java.sql.Date; |
5 | 6 |
import java.sql.DriverManager; |
... | ... | |
14 | 15 |
import org.gvsig.data.vectorial.visitor.DefaultFeaturesVisitor; |
15 | 16 |
import org.gvsig.exceptions.BaseException; |
16 | 17 |
|
18 |
import com.iver.cit.gvsig.fmap.core.IGeometry; |
|
19 |
import com.iver.cit.gvsig.fmap.drivers.WKBParser2; |
|
20 |
|
|
17 | 21 |
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana |
18 | 22 |
* |
19 | 23 |
* Copyright (C) 2004 IVER T.I. and Generalitat Valenciana. |
... | ... | |
99 | 103 |
* @see org.gvsig.data.vectorial.visitor.DefaultFeaturesVisitor#visit(org.gvsig.data.vectorial.IFeature) |
100 | 104 |
*/ |
101 | 105 |
public void visit(IFeature feature) throws BaseException { |
106 |
WKBParser2 wkbParser = new WKBParser2(); |
|
102 | 107 |
StringBuffer sb=new StringBuffer(); |
103 | 108 |
sb.append("INSERT INTO "); |
104 | 109 |
sb.append(this.tableName); |
... | ... | |
137 | 142 |
} else if (type.equals(IFeatureAttributeDescriptor.TYPE_STRING)) { |
138 | 143 |
pst.setString(i+2, feature.getString(i)); |
139 | 144 |
} else if (type.equals(IFeatureAttributeDescriptor.TYPE_GEOMETRY)) { |
140 |
pst.setObject(i+2, feature.getGeometry(i));
|
|
145 |
pst.setBytes( i+2, ((IGeometry)feature.getGeometry(i)).toWKB());
|
|
141 | 146 |
} else { |
142 | 147 |
System.out.print(" ---- " + "TYPE UNKNOWN"); |
143 | 148 |
} |
... | ... | |
149 | 154 |
catch(SQLException except){ |
150 | 155 |
throw new RuntimeException(except); |
151 | 156 |
|
157 |
}catch(IOException except){ |
|
158 |
throw new RuntimeException(except); |
|
159 |
|
|
152 | 160 |
} |
153 | 161 |
} |
154 | 162 |
|
Also available in: Unified diff