Revision 45694

View differences:

trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.jdbc/src/main/java/org/gvsig/fmap/dal/store/jdbc2/spi/ConnectionProvider.java
25 25

  
26 26
import java.sql.Connection;
27 27
import java.sql.SQLException;
28
import org.gvsig.tools.dispose.Disposable;
28 29

  
29 30
/**
30 31
 *
31 32
 * @author gvSIG Team
32 33
 */
33
public interface ConnectionProvider {
34
public interface ConnectionProvider extends Disposable {
34 35

  
35 36
    public Connection getConnection() throws SQLException;
36 37

  
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.jdbc/src/main/java/org/gvsig/fmap/dal/store/jdbc2/spi/FakeConnectionParameters.java
1
/*
2
 * To change this license header, choose License Headers in Project Properties.
3
 * To change this template file, choose Tools | Templates
4
 * and open the template in the editor.
5
 */
6
package org.gvsig.fmap.dal.store.jdbc2.spi;
7

  
8
import org.gvsig.fmap.dal.store.jdbc.JDBCServerExplorerParameters;
9

  
10
/**
11
 *
12
 * @author fdiaz
13
 */
14
public class FakeConnectionParameters extends JDBCServerExplorerParameters {
15
    
16
}
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.jdbc/src/main/java/org/gvsig/fmap/dal/store/jdbc2/spi/JDBCSQLBuilderBase.java
23 23
 */
24 24
package org.gvsig.fmap.dal.store.jdbc2.spi;
25 25

  
26
import java.math.BigDecimal;
26 27
import java.sql.Connection;
27 28
import java.sql.PreparedStatement;
28 29
import java.sql.SQLException;
30
import java.sql.Time;
31
import java.sql.Timestamp;
29 32
import java.util.ArrayList;
30 33
import java.util.Date;
31 34
import java.util.List;
......
49 52
import org.gvsig.fmap.geom.exception.CreateGeometryException;
50 53
import org.gvsig.fmap.geom.primitive.Primitive;
51 54
import org.gvsig.fmap.geom.type.GeometryType;
55
import org.gvsig.tools.ToolsLocator;
56
import org.gvsig.tools.dataTypes.DataType;
57
import org.gvsig.tools.dataTypes.DataTypes;
58
import org.gvsig.tools.dataTypes.DataTypesManager;
52 59
import org.gvsig.tools.dispose.Disposable;
53 60

  
54 61
@SuppressWarnings("UseSpecificCatch")
......
116 123
    }
117 124

  
118 125
    public List<Object> getParameters(FeatureProvider feature) {
126
        return getParameters(feature, null);
127
    }
128
    public List<Object> getParameters(FeatureProvider feature, List<Integer> types) {
119 129
        try {
130
            DataTypesManager dataTypesManager = ToolsLocator.getDataTypesManager();
120 131
            FeatureType type = feature.getType();
121 132
            List<Object> values = new ArrayList<>();
122 133
            Object value;
......
124 135
                if (parameter.is_constant()) {
125 136
                    value = parameter.value();
126 137
                    values.add(value);
138
                    if(types != null) {
139
                        if (value == null) {
140
                            types.add(org.gvsig.fmap.dal.DataTypes.OBJECT);
141
                        } else {
142
                            DataType dataType = dataTypesManager.getDataType(value.getClass());
143
                            types.add(dataType.getType());
144
                        }
145
                    }
146
                    
127 147
                } else {
128 148
                    String name = parameter.name();
129 149
                    value = feature.get(name);
......
135 155
                        } else {
136 156
                            values.add(new java.sql.Date(((Date)value).getTime()));
137 157
                        }
158
                        if (types != null) {
159
                            types.add(org.gvsig.fmap.dal.DataTypes.DATE);
160
                        }
161
                        
138 162
                        break;
139 163
                    case org.gvsig.fmap.dal.DataTypes.GEOMETRY:
140 164
                        Geometry geom = this.forceGeometryType(
......
142 166
                            (Geometry)value
143 167
                        );
144 168
                        values.add(geom);
169
                        if (types != null) {
170
                            types.add(org.gvsig.fmap.dal.DataTypes.GEOMETRY);
171
                        }
145 172
                        break;
146 173
                    default:
147 174
                        values.add(value);
175
                        if (types != null) {
176
                            types.add(attrDesc.getDataType().getType());
177
                        }
178

  
148 179
                        break;
149 180
                    }
150 181
                }
......
163 194

  
164 195
    public Disposable setParameters(PreparedStatement st, FeatureProvider feature) {
165 196
        try {
166
            List<Object> values = this.getParameters(feature);
167
            return this.setStatementParameters(st, values, this.geometry_support_type());
197
            List<Integer> types = new ArrayList<>();
198
            
199
            List<Object> values = this.getParameters(feature, types);
200
            return this.setStatementParameters(st, values, types, this.geometry_support_type());
168 201
        } catch (Exception ex) {
169 202
            String f = "unknow";
170 203
            try {
......
241 274
                    values.add(((FeatureReferenceProviderServices)reference).getKeyValue(name));
242 275
                }
243 276
            }
244
            return this.setStatementParameters(st, values, this.geometry_support_type());
277
            return this.setStatementParameters(st, values, null, this.geometry_support_type());
245 278
        } catch (Exception ex) {
246 279
            String f = "unknow";
247 280
            try {
......
258 291
        List values,
259 292
        GeometrySupportType geometrySupportType) throws SQLException {
260 293
        
294
        return setStatementParameters(st, values, null, geometrySupportType);
295
    }
296
    
297
    public Disposable setStatementParameters(
298
        PreparedStatement st, 
299
        List values,
300
        List<Integer> types, //Can be null
301
        GeometrySupportType geometrySupportType) throws SQLException {
302
        
261 303
        if (values == null) {
262 304
            return new Disposable() {
263 305
                @Override
......
343 385
                            break;
344 386
                    }
345 387
                } else {
388
                    if(types == null){
346 389
                        st.setObject(columnIndex, value);
390
                    } else {
391
                        setStatementValue(st, columnIndex, types.get(columnIndex-1), value);
347 392
                    }
393
                        
394
                }
348 395
                columnIndex++;
349 396
            }
350 397
            return new Disposable() {
......
356 403
            throw new SQLException("Can't set values for the prepared statement.", ex);
357 404
        }        
358 405
    }
406

  
407
    protected void setStatementValue(PreparedStatement st, int columnIndex, int type, Object value) throws SQLException {
408
        switch (type){
409
            case DataTypes.BOOLEAN:
410
                if(value == null){
411
                    st.setNull(columnIndex, java.sql.Types.BIT);
412
                } else {
413
                    st.setBoolean(columnIndex, (boolean) value);
414
                }
415
                break;
416
            case DataTypes.INTEGER:
417
                if(value == null){
418
                    st.setNull(columnIndex, java.sql.Types.INTEGER);
419
                } else {
420
                    st.setInt(columnIndex, (int) value);
421
                }
422
                break;
423
            case DataTypes.BYTE:
424
                if(value == null){
425
                    st.setNull(columnIndex, java.sql.Types.TINYINT);
426
                } else {
427
                    st.setByte(columnIndex, (byte) value);
428
                }
429
                break;
430
            case DataTypes.LONG:
431
                if(value == null){
432
                    st.setNull(columnIndex, java.sql.Types.BIGINT);
433
                } else {
434
                    st.setLong(columnIndex, (long) value);
435
                }
436
                break;
437
            case DataTypes.FLOAT:
438
                if(value == null){
439
                    st.setNull(columnIndex, java.sql.Types.REAL);
440
                } else {
441
                    st.setFloat(columnIndex, (float) value);
442
                }
443
                break;
444
            case DataTypes.DOUBLE:
445
                if(value == null){
446
                    st.setNull(columnIndex, java.sql.Types.DOUBLE);
447
                } else {
448
                    st.setDouble(columnIndex, (double) value);
449
                }
450
                break;
451
            case DataTypes.DECIMAL:
452
                if(value == null){
453
                    st.setNull(columnIndex, java.sql.Types.DECIMAL);
454
                } else {
455
                    st.setBigDecimal(columnIndex, (BigDecimal) value);
456
                }
457
                break;
458
            case DataTypes.STRING:
459
                if(value == null){
460
                    st.setNull(columnIndex, java.sql.Types.VARCHAR);
461
                } else {
462
                    st.setString(columnIndex, (String) value);
463
                }
464
                break;
465
            case DataTypes.TIMESTAMP:
466
                if(value == null){
467
                    st.setNull(columnIndex, java.sql.Types.TIMESTAMP);
468
                } else {
469
                    st.setTimestamp(columnIndex, (Timestamp) value);
470
                }
471
                break;
472
            case DataTypes.TIME:
473
                if(value == null){
474
                    st.setNull(columnIndex, java.sql.Types.TIME);
475
                } else {
476
                    st.setTime(columnIndex, (Time) value);
477
                }
478
                break;
479
            case DataTypes.DATE:
480
                if(value == null){
481
                    st.setNull(columnIndex, java.sql.Types.DATE);
482
                } else {
483
                    st.setDate(columnIndex, (java.sql.Date)value);
484
                }
485
                break;
486
            case DataTypes.BYTEARRAY:
487
                if(value == null){
488
                    st.setNull(columnIndex, java.sql.Types.BINARY);
489
                } else {
490
                    st.setBytes(columnIndex, (byte[]) value);
491
                }
492
                break;
493
            default:
494
                st.setObject(columnIndex, value);
495
                LOGGER.debug("Attention, using a statement.setObject");
496
        }
497
    }
359 498
}
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.jdbc/src/main/java/org/gvsig/fmap/dal/store/jdbc2/spi/FakeConnectionProvider.java
23 23
 */
24 24
package org.gvsig.fmap.dal.store.jdbc2.spi;
25 25

  
26
import java.io.IOException;
26 27
import java.sql.Connection;
27 28
import java.sql.SQLException;
28 29
import org.gvsig.fmap.dal.store.jdbc.JDBCConnectionParameters;
......
57 58
    public void registerDriver() throws SQLException {
58 59

  
59 60
    }
60
    
61

  
62
    @Override
63
    public void dispose() {
64
    }
65

  
61 66
}
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.jdbc/src/main/java/org/gvsig/fmap/dal/store/jdbc2/spi/operations/AppendOperation.java
60 60
    protected PreparedStatement preparedStatement;
61 61
    protected String insertSQL;
62 62
    protected int batchCount;
63
    private final int batchSize;
63
    private int batchSize; //No es final para facilitar la depuracion
64 64
    private final Disposable[] disposableParameters;
65 65
    
66 66
    public AppendOperation(
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.mdb/src/test/java/org/gvsig/fmap/dal/store/mdb/MDBSQLBuilderTest.java
10 10
import org.gvsig.fmap.dal.SQLBuilder.Privilege;
11 11
import org.gvsig.fmap.dal.feature.spi.SQLBuilderBase;
12 12
import org.gvsig.fmap.dal.store.jdbc2.OperationsFactory.TableReference;
13
import org.gvsig.fmap.dal.store.jdbc2.spi.FakeConnectionParameters;
13 14
import org.gvsig.fmap.dal.store.jdbc2.spi.operations.OperationsFactoryBase;
14 15
import org.gvsig.fmap.geom.DataTypes;
15 16
import org.gvsig.fmap.geom.Geometry;
......
36 37
    }
37 38

  
38 39
    private SQLBuilder createSQLBuilder() {
39
        return new MDBSQLBuilder(new MDBHelper(null));
40
        return new MDBSQLBuilder(new MDBHelper(new FakeConnectionParameters()));
40 41
    }
41 42
    
42 43
    public void testCalulateEnvelopeOfColumn() throws Exception {
......
69 70
        System.out.println("# SQL:: " + sqlbuilder.toString());
70 71
        System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names()));
71 72
        System.out.println("# Parametros:: " + ArrayUtils.toString(sqlbuilder.parameters_names()));
73
//                "SELECT NVL2(ST_Extent(\"the_geom\"),ST_AsBinary(ST_Extent(\"the_geom\")),NULL) FROM \"dbo\".\"test1\" WHERE ( (\"the_geom\") IS NOT NULL )",
72 74
        assertEquals(
73
                "SELECT NVL2(ST_Extent(\"the_geom\"),ST_AsBinary(ST_Extent(\"the_geom\")),NULL) FROM \"dbo\".\"test1\" WHERE ( (\"the_geom\") IS NOT NULL )",
75
                "SELECT ST_AsBinary(ST_ExtentAggregate([the_geom])) FROM [test1] WHERE ( ([the_geom]) IS NOT NULL )",
74 76
                sqlbuilder.toString()
75 77
        );
76 78
        assertEquals(
......
121 123
        System.out.println("# SQL:: " + sqlbuilder.toString());
122 124
        System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names()));
123 125
        System.out.println("# Parametros:: " + ArrayUtils.toString(sqlbuilder.parameters_names()));
126
//                "SELECT NVL2(ST_Extent(\"the_geom\"),ST_AsBinary(ST_Extent(\"the_geom\")),NULL) AS \"envelope\" FROM \"dbo\".\"test1\" WHERE (( ((ST_Envelope(\"the_geom\")) && (ST_GeomFromWKB((x'000000000300000001000000050000000000000000000000000000000000000000000000004059000000000000405900000000000040590000000000004059000000000000000000000000000000000000000000000000000000000000'), (4326)))) AND ST_Intersects((ST_Envelope(\"the_geom\")),(ST_GeomFromWKB((x'000000000300000001000000050000000000000000000000000000000000000000000000004059000000000000405900000000000040590000000000004059000000000000000000000000000000000000000000000000000000000000'), (4326))) )) AND x = 27)",
124 127
        assertEquals(
125
                "SELECT NVL2(ST_Extent(\"the_geom\"),ST_AsBinary(ST_Extent(\"the_geom\")),NULL) AS \"envelope\" FROM \"dbo\".\"test1\" WHERE (( ((ST_Envelope(\"the_geom\")) && (ST_GeomFromWKB((x'000000000300000001000000050000000000000000000000000000000000000000000000004059000000000000405900000000000040590000000000004059000000000000000000000000000000000000000000000000000000000000'), (4326)))) AND ST_Intersects((ST_Envelope(\"the_geom\")),(ST_GeomFromWKB((x'000000000300000001000000050000000000000000000000000000000000000000000000004059000000000000405900000000000040590000000000004059000000000000000000000000000000000000000000000000000000000000'), (4326))) )) AND x = 27)",
128
                "SELECT ST_AsBinary(ST_ExtentAggregate([the_geom])) AS [envelope] FROM [test1] WHERE (ST_Intersects((ST_Envelope([the_geom])), (x'000000000300000001000000050000000000000000000000000000000000000000000000004059000000000000405900000000000040590000000000004059000000000000000000000000000000000000000000000000000000000000')) AND x = 27)",
126 129
                sqlbuilder.toString()
127 130
        );
128 131
        assertEquals(
......
154 157
        //# Variables:: []
155 158
        //# Parametros:: []
156 159

  
160
//                "SELECT COUNT(*) FROM \"dbo\".\"test1\" WHERE pp = 200",
157 161
        assertEquals(
158
                "SELECT COUNT(*) FROM \"dbo\".\"test1\" WHERE pp = 200",
162
                "SELECT COUNT(*) FROM [test1] WHERE pp = 200",
159 163
                sqlbuilder.toString()
160 164
        );
161 165
        assertEquals(
......
216 220
        System.out.println("# SQL:: " + sqlbuilder.toString());
217 221
        System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names()));
218 222
        System.out.println("# Parametros:: " + ArrayUtils.toString(sqlbuilder.parameters_names()));
223
//                "CREATE TABLE \"dbo\".\"test1\" (\"name\" VARCHAR(45) DEFAULT NULL, \"id\" INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL, \"geom\" GEOMETRY(1) CHECK NVL2(\"geom\", ST_GeometryTypeCode(\"geom\") = 0 AND ST_CoordDim(\"geom\") = 2, TRUE) )",
219 224
        assertEquals(
220
                "CREATE TABLE \"dbo\".\"test1\" (\"name\" VARCHAR(45) DEFAULT NULL, \"id\" INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL, \"geom\" GEOMETRY(1) CHECK NVL2(\"geom\", ST_GeometryTypeCode(\"geom\") = 0 AND ST_CoordDim(\"geom\") = 2, TRUE) )",
225
                "CREATE TABLE [test1] ([name] VARCHAR(45) DEFAULT NULL, [id] INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL, [geom] CLOB DEFAULT NULL )",
221 226
                sqlbuilder.toString()
222 227
        );
223 228
        assertEquals(
......
242 247
        System.out.println("# SQL:: " + sqlbuilder.toString());
243 248
        System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names()));
244 249
        System.out.println("# Parametros:: " + ArrayUtils.toString(sqlbuilder.parameters_names()));
250
//                "DROP TABLE \"dbo\".\"test1\"",
245 251
        assertEquals(
246
                "DROP TABLE \"dbo\".\"test1\"",
252
                "DROP TABLE [test1]",
247 253
                sqlbuilder.toString()
248 254
        );
249 255
        assertEquals(
......
311 317
        //# Variables:: []
312 318
        //# Parametros:: []        
313 319
        
320
//                "SELECT * FROM \"dbo\".\"test1\" LIMIT 1",
314 321
        assertEquals(
315
                "SELECT * FROM \"dbo\".\"test1\" LIMIT 1",
322
                "SELECT * FROM [test1] LIMIT 1",
316 323
                sqlbuilder.toString()
317 324
        );
318 325
        assertEquals(
......
349 356
        System.out.println("# SQL:: " + sqlbuilder.toString());
350 357
        System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names()));
351 358
        System.out.println("# Parametros:: " + ArrayUtils.toString(sqlbuilder.parameters_names()));
359
//                "DELETE FROM \"dbo\".\"test1\" WHERE (( (\"id1\") = (?) ) AND ( (\"id2\") = (?) ))",
352 360
        assertEquals(
353
                "DELETE FROM \"dbo\".\"test1\" WHERE (( (\"id1\") = (?) ) AND ( (\"id2\") = (?) ))",
361
                "DELETE FROM [test1] WHERE (( ([id1]) = (?) ) AND ( ([id2]) = (?) ))",
354 362
                sqlbuilder.toString()
355 363
        );
356 364
        assertEquals(
......
378 386
        System.out.println("# SQL:: " + sqlbuilder.toString());
379 387
        System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names()));
380 388
        System.out.println("# Parametros:: " + ArrayUtils.toString(sqlbuilder.parameters_names()));
389
//                "INSERT INTO \"dbo\".\"test1\" ( \"id\", \"name\", \"geom\" ) VALUES ( ?, ?, ST_GeomFromWKB((?), (4326)) )",
381 390
        assertEquals(
382
                "INSERT INTO \"dbo\".\"test1\" ( \"id\", \"name\", \"geom\" ) VALUES ( ?, ?, ST_GeomFromWKB((?), (4326)) )",
391
                "INSERT INTO [test1] ( [id], [name], [geom] ) VALUES ( ?, ?, ? )",
383 392
                sqlbuilder.toString()
384 393
        );
385 394
        assertEquals(
......
407 416
        System.out.println("# SQL:: " + sqlbuilder.toString());
408 417
        System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names()));
409 418
        System.out.println("# Parametros:: " + ArrayUtils.toString(sqlbuilder.parameters_names()));
419
//                "INSERT INTO \"dbo\".\"test1\" ( \"id\", \"name\", \"geom\" ) VALUES ( ?, ?, ST_GeomFromWKB((?), (4326)) )",
410 420
        assertEquals(
411
                "INSERT INTO \"dbo\".\"test1\" ( \"id\", \"name\", \"geom\" ) VALUES ( ?, ?, ST_GeomFromWKB((?), (4326)) )",
421
                "INSERT INTO [test1] ( [id], [name], [geom] ) VALUES ( ?, ?, ? )",
412 422
                sqlbuilder.toString()
413 423
        );
414 424
        assertEquals(
......
443 453
        System.out.println("# SQL:: " + sqlbuilder.toString());
444 454
        System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names()));
445 455
        System.out.println("# Parametros:: " + ArrayUtils.toString(sqlbuilder.parameters_names()));
456
//                "UPDATE \"dbo\".\"test1\" SET \"name\" = ?, \"geom\" = ST_GeomFromWKB((?), (4326)) WHERE ( (\"id\") = (?) )",
446 457
        assertEquals(
447
                "UPDATE \"dbo\".\"test1\" SET \"name\" = ?, \"geom\" = ST_GeomFromWKB((?), (4326)) WHERE ( (\"id\") = (?) )",
458
                "UPDATE [test1] SET [name] = ?, [geom] = ? WHERE ( ([id]) = (?) )",
448 459
                sqlbuilder.toString()
449 460
        );
450 461
        assertEquals(
......
480 491
        System.out.println("# SQL:: " + sqlbuilder.toString());
481 492
        System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names()));
482 493
        System.out.println("# Parametros:: " + ArrayUtils.toString(sqlbuilder.parameters_names()));
494
//                "UPDATE \"dbo\".\"test1\" SET \"name\" = ?, \"geom\" = ST_GeomFromWKB((?), (?)) WHERE ( (\"id\") = (?) )",
483 495
        assertEquals(
484
                "UPDATE \"dbo\".\"test1\" SET \"name\" = ?, \"geom\" = ST_GeomFromWKB((?), (?)) WHERE ( (\"id\") = (?) )",
496
                "UPDATE [test1] SET [name] = ?, [geom] = ? WHERE ( ([id]) = (?) )",
485 497
                sqlbuilder.toString()
486 498
        );
487 499
        assertEquals(
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.mdb/src/main/java/org/gvsig/fmap/dal/store/mdb/MDBHelper.java
22 22
package org.gvsig.fmap.dal.store.mdb;
23 23

  
24 24
import java.io.File;
25
import java.io.IOException;
25 26
import java.sql.Clob;
26 27
import java.sql.Connection;
27 28
import java.sql.ResultSet;
......
114 115

  
115 116
        private BasicDataSource dataSource = null;
116 117

  
117
        private final MDBConnectionParameters connectionParameters;
118
        private MDBConnectionParameters connectionParameters;
118 119

  
119 120
//        private static Server server = null;
120 121
        private static String server = null;
......
265 266
            needRegisterDriver = false;
266 267
        }
267 268

  
269
        @Override
270
        public void dispose() {
271
            if( this.dataSource!=null ) {
272
                try {
273
                    this.dataSource.close();
274
                } catch (SQLException ex) {
275
                    LOGGER.warn("Can't close BasicDataSource", ex);
276
                }
277
                this.dataSource = null;
278
            }
279
            this.connectionParameters = null;
280
        }
281

  
268 282
    }
269 283

  
270 284
    private ConnectionProvider connectionProvider = null;
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.h2spatial/org.gvsig.h2spatial.h2gis132/org.gvsig.h2spatial.h2gis132.provider/src/main/java/org/gvsig/fmap/dal/store/h2/H2SpatialHelper.java
22 22
package org.gvsig.fmap.dal.store.h2;
23 23

  
24 24
import java.io.File;
25
import java.io.IOException;
25 26
import java.sql.Connection;
26 27
import java.sql.SQLException;
27 28
import java.text.MessageFormat;
......
134 135

  
135 136
        private BasicDataSource dataSource = null;
136 137

  
137
        private final H2SpatialConnectionParameters connectionParameters;
138
        private H2SpatialConnectionParameters connectionParameters;
138 139
        
139 140
        private static Server server = null;
140 141
        private static boolean startServer = true;
......
371 372
            needRegisterDriver = false;
372 373
        }
373 374

  
375
        @Override
376
        public void dispose() {
377
            if( this.dataSource!=null ) {
378
                try {
379
                    this.dataSource.close();
380
                } catch (SQLException ex) {
381
                    LOGGER.warn("Can't close BasicDataSource", ex);
382
                }
383
                this.dataSource = null;
384
            }
385
            this.connectionParameters = null;
386
        }
387

  
374 388
    }
375 389

  
376 390
    private ConnectionProvider connectionProvider = null;

Also available in: Unified diff