Revision 118 trunk/org.gvsig.spatialite/org.gvsig.spatialite.provider/src/main/java/org/gvsig/spatialite/dal/SpatiaLiteHelper.java
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