root / trunk / libraries / libFMap_dataDB / src / org / gvsig / data / datastores / vectorial / db / jdbc / h2 / H2Utils.java @ 20920
History | View | Annotate | Download (14.8 KB)
1 | 19845 | vcaballero | package org.gvsig.data.datastores.vectorial.db.jdbc.h2; |
---|---|---|---|
2 | 19610 | jmvivo | |
3 | import java.sql.Connection; |
||
4 | import java.sql.ResultSet; |
||
5 | import java.sql.ResultSetMetaData; |
||
6 | import java.sql.Statement; |
||
7 | 20082 | jmvivo | import java.util.ArrayList; |
8 | 20849 | jmvivo | import java.util.Iterator; |
9 | 19610 | jmvivo | |
10 | 20789 | vcaballero | import org.gvsig.data.datastores.vectorial.db.DBAttributeDescriptor; |
11 | 19893 | jmvivo | import org.gvsig.data.datastores.vectorial.db.DBFeatureType; |
12 | 19845 | vcaballero | import org.gvsig.data.datastores.vectorial.db.jdbc.exception.SQLException; |
13 | 20849 | jmvivo | import org.gvsig.data.exception.DataException; |
14 | 19610 | jmvivo | import org.gvsig.data.exception.InitializeException; |
15 | import org.gvsig.data.exception.ReadException; |
||
16 | 20605 | vcaballero | import org.gvsig.data.vectorial.AttributeDescriptor; |
17 | 20908 | jmvivo | import org.gvsig.data.vectorial.FeatureType; |
18 | 19610 | jmvivo | import org.gvsig.data.vectorial.IFeatureAttributeDescriptor; |
19 | 20420 | vcaballero | import org.gvsig.data.vectorial.IsNotAttributeSettingException; |
20 | 19610 | jmvivo | |
21 | |||
22 | 19744 | jmvivo | public class H2Utils { |
23 | 19610 | jmvivo | |
24 | 19671 | jmvivo | |
25 | |||
26 | 19691 | jmvivo | static String getDefaultSchema(Connection conn, String catalog) throws InitializeException { |
27 | String sql= "SELECT * FROM INFORMATION_SCHEMA.SCHEMATA WHERE IS_DEFAULT = TRUE"; |
||
28 | 20082 | jmvivo | if (catalog != null && catalog !=""){ |
29 | 19691 | jmvivo | sql= sql+ " AND CATALOG_NAME = '"+catalog+"'"; |
30 | } |
||
31 | |||
32 | String schema = null; |
||
33 | Statement st = null; |
||
34 | ResultSet rs= null; |
||
35 | try{
|
||
36 | st = conn.createStatement(ResultSet.FETCH_FORWARD, ResultSet.CONCUR_READ_ONLY); |
||
37 | rs = st.executeQuery(sql); |
||
38 | if (!rs.next()){
|
||
39 | 20110 | jmvivo | throw new InitializeException("Can't find default schema.","getDefaulSchema"); |
40 | 19691 | jmvivo | } |
41 | schema = rs.getString("SCHEMA_NAME");
|
||
42 | if (rs.next()){
|
||
43 | 20110 | jmvivo | throw new InitializeException("Checks catalog parm.","getDefaulSchema"); |
44 | 19691 | jmvivo | } |
45 | |||
46 | |||
47 | } catch (java.sql.SQLException e) {
|
||
48 | // TODO Auto-generated catch block
|
||
49 | throw new SQLException(sql,"getDefaultSchema",e); |
||
50 | } finally{
|
||
51 | try{
|
||
52 | if (rs != null){ |
||
53 | rs.close(); |
||
54 | } else if (st != null){ |
||
55 | st.close(); |
||
56 | } |
||
57 | } catch (java.sql.SQLException e1){
|
||
58 | //Ignore ??
|
||
59 | } |
||
60 | |||
61 | } |
||
62 | return schema;
|
||
63 | } |
||
64 | |||
65 | 19833 | jmvivo | private static void loadFieldsToFeatureType(Connection conn,H2StoreParameters params,DBFeatureType featureType) throws ReadException{ |
66 | 19610 | jmvivo | String sql=""; |
67 | 19781 | jmvivo | String columns=params.getFieldsString();
|
68 | 19610 | jmvivo | |
69 | 19833 | jmvivo | if (params.getSqlSoure() != null){ |
70 | sql = params.getSqlSoure(); |
||
71 | } else {
|
||
72 | sql = "Select "+columns+" from " + params.tableID() + " limit 1;"; |
||
73 | 19610 | jmvivo | } |
74 | |||
75 | 19833 | jmvivo | try {
|
76 | 19610 | jmvivo | |
77 | Statement stAux = conn.createStatement();
|
||
78 | 19617 | jmvivo | Statement stAux1 = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); |
79 | 19610 | jmvivo | ResultSet rs = stAux.executeQuery(sql);
|
80 | ResultSetMetaData rsMetadata = rs.getMetaData();
|
||
81 | 19619 | jmvivo | String schemaFilter=""; |
82 | if (params.getSchema() != null && params.getSchema() != ""){ |
||
83 | schemaFilter = " TABLE_SCHEMA='" + params.getSchema() +"' AND "; |
||
84 | } |
||
85 | 19617 | jmvivo | String sqlAllMeta = "SELECT * FROM INFORMATION_SCHEMA.COLUMNS where " |
86 | 19619 | jmvivo | + schemaFilter |
87 | + "TABLE_NAME='"+ params.getTableName() +"'"; |
||
88 | 19610 | jmvivo | |
89 | 19617 | jmvivo | ResultSet rsAllMeta = stAux1.executeQuery(sqlAllMeta);
|
90 | |||
91 | // ResultSet rsAllMeta = conn.getMetaData().getAttributes(null, null, tableName, "*");
|
||
92 | |||
93 | 19610 | jmvivo | String colName;
|
94 | int i;
|
||
95 | 19833 | jmvivo | |
96 | 19617 | jmvivo | featureType.setTableID(params.tableID()); |
97 | 20605 | vcaballero | AttributeDescriptor attr; |
98 | 19610 | jmvivo | for (i=1;i<=rsMetadata.getColumnCount();i++){ |
99 | colName= rsMetadata.getColumnName(i); |
||
100 | 19619 | jmvivo | rsAllMeta.first(); |
101 | 19617 | jmvivo | |
102 | 19610 | jmvivo | while (true){ |
103 | if (rsAllMeta.isAfterLast()){
|
||
104 | 20908 | jmvivo | attr = getAttributeFromJDBC(featureType,conn,rsMetadata,i); |
105 | 19610 | jmvivo | featureType.add(attr); |
106 | 20413 | vcaballero | // attr.setOrdinal(i-1);
|
107 | 19610 | jmvivo | break;
|
108 | } else if(rsAllMeta.getString("COLUMN_NAME").equals(colName)){ |
||
109 | 20908 | jmvivo | attr = getAttributeFromJDBC(featureType,conn,rsAllMeta); |
110 | 19610 | jmvivo | featureType.add(attr); |
111 | 20413 | vcaballero | // attr.setOrdinal(i-1);
|
112 | 19610 | jmvivo | break;
|
113 | } |
||
114 | rsAllMeta.next(); |
||
115 | } |
||
116 | 19626 | jmvivo | if (attr.getName().equals(params.getGeometryField())){
|
117 | if (attr.getDataType().equals(IFeatureAttributeDescriptor.TYPE_OBJECT)){
|
||
118 | 20420 | vcaballero | attr.loading(); |
119 | 19626 | jmvivo | attr.setType(IFeatureAttributeDescriptor.TYPE_GEOMETRY); |
120 | 20420 | vcaballero | attr.stopLoading(); |
121 | 19626 | jmvivo | }else{
|
122 | throw new InitializeException( |
||
123 | 19893 | jmvivo | "H2Utils.getFeatureType",
|
124 | 19626 | jmvivo | new Exception("Geometry Field '" |
125 | + params.getGeometryField() |
||
126 | + "' is a "
|
||
127 | + attr.getDataType() |
||
128 | + " but sould be "
|
||
129 | + IFeatureAttributeDescriptor.TYPE_OBJECT)); |
||
130 | } |
||
131 | |||
132 | } |
||
133 | 19610 | jmvivo | } |
134 | |||
135 | rs.close(); |
||
136 | rsAllMeta.close(); |
||
137 | } catch (java.sql.SQLException e) {
|
||
138 | // TODO Auto-generated catch block
|
||
139 | throw new SQLException(sql,"getFeatureType",e); |
||
140 | 20420 | vcaballero | } catch (IsNotAttributeSettingException e) {
|
141 | e.printStackTrace(); |
||
142 | 19610 | jmvivo | } |
143 | |||
144 | } |
||
145 | |||
146 | 19833 | jmvivo | static DBFeatureType getFeatureType(Connection conn,H2StoreParameters params) throws ReadException{ |
147 | DBFeatureType featureType = new DBFeatureType();
|
||
148 | |||
149 | |||
150 | loadFieldsToFeatureType(conn, params, featureType); |
||
151 | |||
152 | 20849 | jmvivo | try {
|
153 | if (params.getFieldsId() == null || params.getFieldsId().length == 0){ |
||
154 | String[] ids =loadFieldsId(conn,params); |
||
155 | if (ids == null){ |
||
156 | featureType.setReadOnly(true);
|
||
157 | ids = new String[featureType.size()]; |
||
158 | Iterator iter = featureType.iterator();
|
||
159 | for (int i=0;i<featureType.size();i++){ |
||
160 | ids[i]=((AttributeDescriptor)iter.next()).getName(); |
||
161 | } |
||
162 | } |
||
163 | featureType.setFieldsId(ids); |
||
164 | } else{
|
||
165 | featureType.setFieldsId(params.getFieldsId()); |
||
166 | } |
||
167 | } catch (DataException e) {
|
||
168 | throw new ReadException(H2Store.DATASTORE_NAME,e); |
||
169 | 20082 | jmvivo | } |
170 | 19833 | jmvivo | |
171 | if (params.getGeometryField() != null && params.getGeometryField() != ""){ |
||
172 | if (featureType.getFieldIndex(params.getGeometryField())< 0){ |
||
173 | // FIXME: crear una nueva excepcion??
|
||
174 | throw new InitializeException( |
||
175 | 19893 | jmvivo | H2Store.DATASTORE_NAME, |
176 | 19833 | jmvivo | new Exception("Geometry Field '"+ params.getGeometryField() +"' not Found")); |
177 | |||
178 | } |
||
179 | |||
180 | featureType.setDefaultGeometry(params.getGeometryField()); |
||
181 | } |
||
182 | |||
183 | return featureType;
|
||
184 | |||
185 | } |
||
186 | |||
187 | 20082 | jmvivo | private static String[] loadFieldsId(Connection conn, H2StoreParameters params) throws ReadException { |
188 | Statement st;
|
||
189 | StringBuffer sql = new StringBuffer(); |
||
190 | ResultSet rs;
|
||
191 | ArrayList list = new ArrayList(); |
||
192 | /*SELECT column_name FROM INFORMATION_SCHEMA.INDEXES
|
||
193 | * WHERE table_name='' AND
|
||
194 | * table_schema='' AND
|
||
195 | * table_catalog=''
|
||
196 | * AND index_type_name='PRIMARY KEY'
|
||
197 | *
|
||
198 | */
|
||
199 | sql.append("SELECT column_name FROM INFORMATION_SCHEMA.INDEXES WHERE table_name like '");
|
||
200 | sql.append(params.getTableName()); |
||
201 | sql.append("' AND table_schema like '");
|
||
202 | |||
203 | if (params.getSchema() == null || params.getSchema() == ""){ |
||
204 | sql.append(getDefaultSchema(conn, params.getDb())); |
||
205 | } else{
|
||
206 | sql.append(params.getSchema()); |
||
207 | } |
||
208 | |||
209 | |||
210 | if (params.getCatalog() == null || params.getCatalog() == ""){ |
||
211 | if (params.getDb() != null && params.getDb() != ""){ |
||
212 | sql.append("' AND table_catalog like '");
|
||
213 | sql.append(params.getDb()); |
||
214 | } |
||
215 | } else {
|
||
216 | sql.append("' AND table_catalog like '");
|
||
217 | sql.append(params.getCatalog()); |
||
218 | } |
||
219 | |||
220 | |||
221 | |||
222 | sql.append("' AND index_type_name='PRIMARY KEY'");
|
||
223 | |||
224 | 20849 | jmvivo | // System.out.println(sql.toString());
|
225 | 20082 | jmvivo | try {
|
226 | st = conn.createStatement(); |
||
227 | rs = st.executeQuery(sql.toString()); |
||
228 | while (rs.next()){
|
||
229 | list.add(rs.getString(1));
|
||
230 | } |
||
231 | rs.close(); |
||
232 | st.close(); |
||
233 | |||
234 | } catch (java.sql.SQLException e) {
|
||
235 | throw new ReadException(params.getDataStoreName(),e); |
||
236 | } |
||
237 | 20849 | jmvivo | if (list.size() == 0){ |
238 | return null; |
||
239 | } |
||
240 | 20082 | jmvivo | |
241 | String[] x = new String[] {""}; |
||
242 | return (String[])list.toArray(x); |
||
243 | |||
244 | } |
||
245 | |||
246 | 20908 | jmvivo | private static AttributeDescriptor getAttributeFromJDBC(FeatureType fType,Connection conn,ResultSetMetaData rsMetadata,int colIndex) throws SQLException{ |
247 | DBAttributeDescriptor column= (DBAttributeDescriptor) fType.createAttributeDescriptor(); |
||
248 | 19610 | jmvivo | try {
|
249 | 20420 | vcaballero | column.loading(); |
250 | 19610 | jmvivo | column.setName(rsMetadata.getColumnName(colIndex)); |
251 | 20058 | jmvivo | column.setCaseSensitive(rsMetadata.isCaseSensitive(colIndex)); |
252 | 19691 | jmvivo | column.setSqlType(rsMetadata.getColumnType(colIndex)); |
253 | 20058 | jmvivo | column.setAllowNull(rsMetadata.isNullable(colIndex) == ResultSetMetaData.columnNullable);
|
254 | column.setAutoIncrement(rsMetadata.isAutoIncrement(colIndex)); |
||
255 | column.setReadOnly(rsMetadata.isReadOnly(colIndex)); |
||
256 | column.setWritable(rsMetadata.isWritable(colIndex)); |
||
257 | column.setClassName(rsMetadata.getColumnClassName(colIndex)); |
||
258 | column.setCatalogName(rsMetadata.getCatalogName(colIndex)); |
||
259 | column.setDefinitelyWritable(rsMetadata.isDefinitelyWritable(colIndex)); |
||
260 | column.setLabel(rsMetadata.getColumnLabel(colIndex)); |
||
261 | column.setSchemaName(rsMetadata.getSchemaName(colIndex)); |
||
262 | column.setTableName(rsMetadata.getTableName(colIndex)); |
||
263 | column.setCatalogName(rsMetadata.getCatalogName(colIndex)); |
||
264 | column.setSqlTypeName(rsMetadata.getColumnTypeName(colIndex)); |
||
265 | column.setSearchable(rsMetadata.isSearchable(colIndex)); |
||
266 | column.setSigned(rsMetadata.isSigned(colIndex)); |
||
267 | column.setCurrency(rsMetadata.isCurrency(colIndex)); |
||
268 | column.setPrecision(rsMetadata.getPrecision(colIndex)); |
||
269 | column.setSize(rsMetadata.getColumnDisplaySize(colIndex)); switch (rsMetadata.getColumnType(colIndex)) {
|
||
270 | 19610 | jmvivo | case java.sql.Types.INTEGER:
|
271 | column.setType(IFeatureAttributeDescriptor.TYPE_INT); |
||
272 | 19617 | jmvivo | break;
|
273 | 19610 | jmvivo | case java.sql.Types.BIGINT:
|
274 | column.setType(IFeatureAttributeDescriptor.TYPE_LONG); |
||
275 | 19617 | jmvivo | break;
|
276 | 19610 | jmvivo | case java.sql.Types.REAL:
|
277 | column.setType(IFeatureAttributeDescriptor.TYPE_DOUBLE); |
||
278 | 19617 | jmvivo | break;
|
279 | 19610 | jmvivo | case java.sql.Types.DOUBLE:
|
280 | column.setType(IFeatureAttributeDescriptor.TYPE_DOUBLE); |
||
281 | 19617 | jmvivo | break;
|
282 | 19610 | jmvivo | case java.sql.Types.CHAR:
|
283 | column.setType(IFeatureAttributeDescriptor.TYPE_STRING); |
||
284 | 19617 | jmvivo | break;
|
285 | 19610 | jmvivo | case java.sql.Types.VARCHAR:
|
286 | column.setType(IFeatureAttributeDescriptor.TYPE_STRING); |
||
287 | 19617 | jmvivo | break;
|
288 | 19610 | jmvivo | case java.sql.Types.FLOAT:
|
289 | column.setType(IFeatureAttributeDescriptor.TYPE_FLOAT); |
||
290 | 19617 | jmvivo | break;
|
291 | 19610 | jmvivo | case java.sql.Types.DECIMAL:
|
292 | column.setType(IFeatureAttributeDescriptor.TYPE_FLOAT); |
||
293 | 19617 | jmvivo | break;
|
294 | 19610 | jmvivo | case java.sql.Types.DATE:
|
295 | column.setType(IFeatureAttributeDescriptor.TYPE_DATE); |
||
296 | 19617 | jmvivo | break;
|
297 | 20082 | jmvivo | case java.sql.Types.TIME:
|
298 | column.setType(IFeatureAttributeDescriptor.TYPE_TIME); |
||
299 | break;
|
||
300 | case java.sql.Types.TIMESTAMP:
|
||
301 | column.setType(IFeatureAttributeDescriptor.TYPE_TIMESTAMP); |
||
302 | break;
|
||
303 | 19617 | jmvivo | case java.sql.Types.BOOLEAN:
|
304 | column.setType(IFeatureAttributeDescriptor.TYPE_BOOLEAN); |
||
305 | break;
|
||
306 | 19610 | jmvivo | default:
|
307 | column.setType(IFeatureAttributeDescriptor.TYPE_OBJECT); |
||
308 | 19617 | jmvivo | break;
|
309 | 19610 | jmvivo | } |
310 | 20420 | vcaballero | column.stopLoading(); |
311 | 19610 | jmvivo | } catch (java.sql.SQLException e){
|
312 | throw new SQLException("","load attribute definition",e); |
||
313 | 20420 | vcaballero | } catch (IsNotAttributeSettingException e) {
|
314 | e.printStackTrace(); |
||
315 | 19610 | jmvivo | } |
316 | |||
317 | return column;
|
||
318 | |||
319 | } |
||
320 | |||
321 | 20908 | jmvivo | private static AttributeDescriptor getAttributeFromJDBC(FeatureType fType, Connection conn, ResultSet rsMetadata) throws SQLException{ |
322 | DBAttributeDescriptor column= (DBAttributeDescriptor) fType.createAttributeDescriptor(); |
||
323 | 19610 | jmvivo | try {
|
324 | 20420 | vcaballero | column.loading(); |
325 | 19610 | jmvivo | column.setName(rsMetadata.getString("COLUMN_NAME"));
|
326 | 19691 | jmvivo | column.setSqlType(rsMetadata.getInt("DATA_TYPE"));
|
327 | 19610 | jmvivo | switch (rsMetadata.getInt("DATA_TYPE")) { |
328 | case java.sql.Types.INTEGER:
|
||
329 | column.setType(IFeatureAttributeDescriptor.TYPE_INT); |
||
330 | 19617 | jmvivo | break;
|
331 | 19610 | jmvivo | case java.sql.Types.BIGINT:
|
332 | column.setType(IFeatureAttributeDescriptor.TYPE_LONG); |
||
333 | 19617 | jmvivo | break;
|
334 | 19610 | jmvivo | case java.sql.Types.REAL:
|
335 | column.setType(IFeatureAttributeDescriptor.TYPE_DOUBLE); |
||
336 | 19619 | jmvivo | // column.setPrecision(rsMetadata.getInt("DECIMAL_DIGITS"));
|
337 | column.setPrecision(rsMetadata.getInt("NUMERIC_PRECISION"));
|
||
338 | 19617 | jmvivo | break;
|
339 | 19610 | jmvivo | case java.sql.Types.DOUBLE:
|
340 | column.setType(IFeatureAttributeDescriptor.TYPE_DOUBLE); |
||
341 | 19619 | jmvivo | // column.setPrecision(rsMetadata.getInt("DECIMAL_DIGITS"));
|
342 | column.setPrecision(rsMetadata.getInt("NUMERIC_PRECISION"));
|
||
343 | 19617 | jmvivo | break;
|
344 | 19610 | jmvivo | case java.sql.Types.CHAR:
|
345 | column.setType(IFeatureAttributeDescriptor.TYPE_STRING); |
||
346 | 19626 | jmvivo | // column.setSize(rsMetadata.getInt("COLUMN_SIZE"));
|
347 | column.setSize(rsMetadata.getInt("CHARACTER_MAXIMUM_LENGTH"));
|
||
348 | 19617 | jmvivo | break;
|
349 | 19610 | jmvivo | case java.sql.Types.VARCHAR:
|
350 | column.setType(IFeatureAttributeDescriptor.TYPE_STRING); |
||
351 | 19626 | jmvivo | // column.setSize(rsMetadata.getInt("COLUMN_SIZE"));
|
352 | column.setSize(rsMetadata.getInt("CHARACTER_MAXIMUM_LENGTH"));
|
||
353 | |||
354 | 19617 | jmvivo | break;
|
355 | 19610 | jmvivo | case java.sql.Types.FLOAT:
|
356 | column.setType(IFeatureAttributeDescriptor.TYPE_FLOAT); |
||
357 | 19626 | jmvivo | // column.setSize(rsMetadata.getInt("COLUMN_SIZE"));
|
358 | column.setSize(rsMetadata.getInt("CHARACTER_MAXIMUM_LENGTH"));
|
||
359 | 19617 | jmvivo | break;
|
360 | 19610 | jmvivo | case java.sql.Types.DECIMAL:
|
361 | column.setType(IFeatureAttributeDescriptor.TYPE_FLOAT); |
||
362 | 19626 | jmvivo | // column.setSize(rsMetadata.getInt("COLUMN_SIZE"));
|
363 | column.setSize(rsMetadata.getInt("CHARACTER_MAXIMUM_LENGTH"));
|
||
364 | 19619 | jmvivo | // column.setPrecision(rsMetadata.getInt("DECIMAL_DIGITS"));
|
365 | column.setPrecision(rsMetadata.getInt("NUMERIC_PRECISION"));
|
||
366 | 19617 | jmvivo | break;
|
367 | 19610 | jmvivo | case java.sql.Types.DATE:
|
368 | column.setType(IFeatureAttributeDescriptor.TYPE_DATE); |
||
369 | 19617 | jmvivo | break;
|
370 | case java.sql.Types.BOOLEAN:
|
||
371 | column.setType(IFeatureAttributeDescriptor.TYPE_BOOLEAN); |
||
372 | break;
|
||
373 | 19610 | jmvivo | default:
|
374 | //FIXME: Falta comprobar si es geometrica!!!
|
||
375 | column.setType(IFeatureAttributeDescriptor.TYPE_OBJECT); |
||
376 | 19617 | jmvivo | break;
|
377 | 19610 | jmvivo | } |
378 | 19691 | jmvivo | |
379 | 19619 | jmvivo | column.setDefaultValue(rsMetadata.getObject("COLUMN_DEFAULT"));
|
380 | column.setAllowNull(rsMetadata.getBoolean("IS_NULLABLE"));
|
||
381 | 20420 | vcaballero | column.stopLoading(); |
382 | 19610 | jmvivo | } catch (java.sql.SQLException e){
|
383 | throw new SQLException("","load attribute definition",e); |
||
384 | 20420 | vcaballero | } catch (IsNotAttributeSettingException e) {
|
385 | e.printStackTrace(); |
||
386 | 19610 | jmvivo | } |
387 | |||
388 | return column;
|
||
389 | |||
390 | } |
||
391 | |||
392 | |||
393 | |||
394 | 20920 | vcaballero | // static void initializeTableEPSG_and_shapeType(Connection conn,String tableID, DBFeatureType dbld) throws ReadException {
|
395 | // try {
|
||
396 | // Statement stAux = conn.createStatement();
|
||
397 | //
|
||
398 | //// String sql = "SELECT * FROM GEOMETRY_COLUMNS WHERE F_TABLE_NAME = '"
|
||
399 | //// + getTableName() + "' AND F_GEOMETRY_COLUMN = '" + getLyrDef().getFieldGeometry() + "'";
|
||
400 | // String sql= "SELECT SRID("+dbld.getDefaultGeometry()+"), GeometryType("+dbld.getDefaultGeometry()+") FROM "+tableID +" WHERE "+dbld.getDefaultGeometry()+" is not null LIMIT 1";
|
||
401 | //
|
||
402 | // ResultSet rs = stAux.executeQuery(sql);
|
||
403 | // if(!rs.next()){
|
||
404 | // dbld.setDefaultSRS("");
|
||
405 | // dbld.setGeometryTypes(new int[]{FShape.MULTI});
|
||
406 | // return;
|
||
407 | // }
|
||
408 | // dbld.setDefaultSRS("EPSG:"+rs.getInt(1));
|
||
409 | //
|
||
410 | // String geometryType = rs.getString(2);
|
||
411 | // int shapeType = FShape.MULTI;
|
||
412 | // if (geometryType.compareToIgnoreCase("Point") == 0)
|
||
413 | // shapeType = FShape.POINT;
|
||
414 | // else if (geometryType.compareToIgnoreCase("LineString") == 0)
|
||
415 | // shapeType = FShape.LINE;
|
||
416 | // else if (geometryType.compareToIgnoreCase("Polygon") == 0)
|
||
417 | // shapeType = FShape.POLYGON;
|
||
418 | // else if (geometryType.compareToIgnoreCase("MultiPoint") == 0)
|
||
419 | // shapeType = FShape.POINT;
|
||
420 | // else if (geometryType.compareToIgnoreCase("MultiLineString") == 0)
|
||
421 | // shapeType = FShape.LINE;
|
||
422 | // else if (geometryType.compareToIgnoreCase("MultiPolygon") == 0)
|
||
423 | // shapeType = FShape.POLYGON;
|
||
424 | //
|
||
425 | // dbld.setGeometryTypes(new int[]{shapeType});
|
||
426 | // rs.close();
|
||
427 | //
|
||
428 | // } catch (java.sql.SQLException e) {
|
||
429 | // dbld.setDefaultSRS("");
|
||
430 | // dbld.setGeometryTypes(new int[]{FShape.MULTI});
|
||
431 | // throw new ReadException("H2Utils.getTableEPSG_and_shapeType",e);
|
||
432 | // }
|
||
433 | //
|
||
434 | // }
|
||
435 | 19610 | jmvivo | |
436 | static String getConnectionResourceID(String dbUrl,String dbUser){ |
||
437 | 19738 | vcaballero | return H2Store.CONNECTION_STRING+";"+dbUrl+";"+dbUser; |
438 | 19610 | jmvivo | |
439 | } |
||
440 | |||
441 | |||
442 | static String getJDBCUrl(String host,String db){ |
||
443 | String url;
|
||
444 | url = "jdbc:h2:tcp://"+host;
|
||
445 | if (db == null || db == ""){ |
||
446 | url=url+"/default";
|
||
447 | }else {
|
||
448 | url=url+"/"+db;
|
||
449 | } |
||
450 | |||
451 | return url;
|
||
452 | } |
||
453 | |||
454 | } |