Revision 118 trunk/org.gvsig.spatialite/org.gvsig.spatialite.provider/src/main/java/org/gvsig/spatialite/dal/SpatiaLiteHelper.java

View differences:

SpatiaLiteHelper.java
51 51
import org.gvsig.fmap.geom.type.GeometryType;
52 52
import org.slf4j.Logger;
53 53
import org.slf4j.LoggerFactory;
54
import org.spatialite.SQLiteConfig;
55
import org.spatialite.SQLiteConfig.TransactionMode;
54
import org.sqlite.SQLiteConfig;
55
import org.sqlite.SQLiteConfig.TransactionMode;
56 56

  
57 57
public class SpatiaLiteHelper extends JDBCHelperBase {
58 58

  
59 59
    static final Logger logger = LoggerFactory.getLogger(SpatiaLiteHelper.class);
60 60

  
61 61
    public static final String NAME = "SpatiaLite";
62
    public static final String SpatiaLiteJDBCDriver = "org.spatialite.JDBC";
62
    public static final String SpatiaLiteJDBCDriver = "org.sqlite.JDBC";
63
    public static final String URL_FORMAT = "jdbc:sqlite:%s";
63 64
    
64 65
    public static String getConnectionURL(SpatiaLiteConnectionParameters params) {
65 66
        String fname = params.getFile().getAbsolutePath().replace("\\","/");
......
78 79
        }
79 80
        String connectionURLFormat = params.getURLFormat(); 
80 81
        if( StringUtils.isBlank(connectionURLFormat) ) {
81
            connectionURLFormat = "jdbc:spatialite:%s";
82
            connectionURLFormat = URL_FORMAT;
82 83
        }
83 84
        String connectionURL = String.format(connectionURLFormat, fname);
84 85
        logger.debug("connectionURL: {}", connectionURL);
......
102 103
                this.dataSource = this.createDataSource();               
103 104
            }
104 105
            Connection conn = this.dataSource.getConnection();
105
            try {
106
                Statement st = conn.createStatement();
107
                st.execute("SELECT srid FROM spatial_ref_sys WHERE srid=0 LIMIT 1");
108
                JDBCUtils.closeQuietly(st);
109
            } catch(Exception ex) {
110
                Statement st = conn.createStatement();
111
                try {
112
                    JDBCUtils.executeQuery(st, "SELECT InitSpatialMetaData(1)");
113
                } catch(Exception ex2) {
114
                    logger.warn("Can't initialize spatial metadata for Spatialite (" +
115
                        " driver class "+StringUtils.defaultString(connectionParameters.getJDBCDriverClassName()) +
116
                        " url format "+StringUtils.defaultString(connectionParameters.getURLFormat()) +
117
                        " file "+connectionParameters.getFile()==null?"null":connectionParameters.getFile().getAbsolutePath() +
118
                        ").", ex2);
119
                }
120
                JDBCUtils.closeQuietly(st);
121
            }
106
            loadExtension(conn);
122 107
            return conn;
123 108
        }
124 109

  
......
140 125
            SQLiteConfig config = new SQLiteConfig();
141 126
            config.setSharedCache(true);
142 127
            config.enableLoadExtension(true);
143
            config.enableSpatiaLite(true);
144 128
            config.setTransactionMode(TransactionMode.IMMEDIATE);
145 129
            for (Map.Entry e : config.toProperties().entrySet()) {
146 130
                ds.addConnectionProperty((String)e.getKey(), (String)e.getValue());
......
168 152
            }
169 153
            needRegisterDriver = false;
170 154
        }
171

  
155
        
156
        public void loadExtension(Connection conn) {
157
    		Statement st = null;
158
            try {
159
                st = conn.createStatement();
160
                st.execute("SELECT load_extension('mod_spatialite')");
161
            } catch(Exception ex) {
162
                logger.warn("Can't load mod_spatialite extension module for SQLite (" +
163
                        " driver class "+StringUtils.defaultString(connectionParameters.getJDBCDriverClassName()) +
164
                        " url format "+StringUtils.defaultString(connectionParameters.getURLFormat()) +
165
                        " file "+connectionParameters.getFile()==null?"null":connectionParameters.getFile().getAbsolutePath() +
166
                        ").", ex);
167
            }
168
            finally {
169
            	JDBCUtils.closeQuietly(st);
170
            }
171
    	}
172 172
    }
173 173

  
174 174
    private ConnectionProvider connectionProvider = null;

Also available in: Unified diff