Revision 19626

View differences:

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