svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.plugin / org.gvsig.sqlite / org.gvsig.sqlite.provider / src / main / java / org / gvsig / sqlite / dal / SQLiteExplorer.java @ 47546
History | View | Annotate | Download (3.98 KB)
1 |
package org.gvsig.sqlite.dal; |
---|---|
2 |
|
3 |
import java.io.File; |
4 |
import org.apache.commons.lang3.StringUtils; |
5 |
import org.gvsig.fmap.dal.DataStore; |
6 |
import org.gvsig.fmap.dal.NewDataStoreParameters; |
7 |
import org.gvsig.fmap.dal.exception.DataException; |
8 |
import org.gvsig.fmap.dal.exception.InitializeException; |
9 |
import org.gvsig.fmap.dal.spi.DataServerExplorerProviderServices; |
10 |
import org.gvsig.fmap.dal.store.jdbc.JDBCServerExplorerParameters; |
11 |
import org.gvsig.fmap.dal.store.jdbc2.JDBCHelper; |
12 |
import org.gvsig.fmap.dal.store.jdbc2.spi.JDBCServerExplorerBase; |
13 |
import org.gvsig.tools.resourcesstorage.ResourcesStorage; |
14 |
|
15 |
/**
|
16 |
*
|
17 |
* @author gvSIG Team
|
18 |
*/
|
19 |
@SuppressWarnings("UseSpecificCatch") |
20 |
public class SQLiteExplorer extends JDBCServerExplorerBase { |
21 |
|
22 |
public SQLiteExplorer(JDBCServerExplorerParameters parameters, DataServerExplorerProviderServices services, JDBCHelper helper) throws InitializeException { |
23 |
super(parameters, services, helper);
|
24 |
} |
25 |
|
26 |
@Override
|
27 |
public SQLiteExplorerParameters getParameters() {
|
28 |
return (SQLiteExplorerParameters) super.getParameters(); |
29 |
} |
30 |
|
31 |
@Override
|
32 |
public ResourcesStorage getResourcesStorage(DataStore dataStore) {
|
33 |
ResourcesStorage ress = super.getResourcesStorage(dataStore);
|
34 |
return ress;
|
35 |
} |
36 |
|
37 |
@Override
|
38 |
public SQLiteHelper getHelper() {
|
39 |
return (SQLiteHelper) super.getHelper(); |
40 |
} |
41 |
|
42 |
@Override
|
43 |
public boolean exists() { |
44 |
try {
|
45 |
SQLiteExplorerParameters serverParameters = this.getParameters();
|
46 |
return SQLiteUtils.existsdb(serverParameters.getFile());
|
47 |
} catch(Throwable th) { |
48 |
return false; |
49 |
} |
50 |
} |
51 |
|
52 |
@Override
|
53 |
public boolean add(String providerName, NewDataStoreParameters theParams, boolean overwrite) throws DataException { |
54 |
// FIXME: probablemente aqui se deberia crear la tabla gpkg_spatial_ref_sys
|
55 |
// si no existe y llenarla con lo que toque antes de intentar
|
56 |
// crear la tabla que se quiere a?adir a la BBDD (de llamar a super.add).
|
57 |
//
|
58 |
// En geopackage la tabla gpkg_spatial_ref_sys solo tiene las entradas
|
59 |
// correspondientes a los CRS que se usan, y no todos como en pg o h2,
|
60 |
// asi que antes de a?adir una tabla deberiamos cerciorarnos si esta dado
|
61 |
// de alta su CRS y si no a?adirlo.
|
62 |
//
|
63 |
// Para crear la tabla usar algo como:
|
64 |
// CREATE TABLE "gpkg_spatial_ref_sys" (
|
65 |
// "srs_name" TEXT NOT NULL,
|
66 |
// "srs_id" INTEGER NOT NULL,
|
67 |
// "organization" TEXT NOT NULL,
|
68 |
// "organization_coordsys_id" INTEGER NOT NULL,
|
69 |
// "definition" TEXT NOT NULL,
|
70 |
// "description" TEXT,
|
71 |
// PRIMARY KEY("srs_id")
|
72 |
// );
|
73 |
//
|
74 |
// Si la tabla no existe, probablemente seria interesante crear a capon
|
75 |
// una entrada en ella con:
|
76 |
// INSERT INTO "main"."gpkg_spatial_ref_sys" ("srs_name", "srs_id", "organization", "organization_coordsys_id", "definition", "description") VALUES ('WGS 84 geodetic', '4326', 'EPSG', '4326', 'GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]]', 'longitude/latitude coordinates in decimal degrees on the WGS 84 spheroid');
|
77 |
//
|
78 |
// Para asegurarse que los test funcionen ya que la libreria de proyecciones
|
79 |
// usada en los test no tiene la capacidad de obtener el WKT de la proyeccion.
|
80 |
// Es probable que tambien debamos a?adir la entrada para EPSG:25830 ya
|
81 |
// que los tests de ARENA2 lo usan, pero no me gusta.
|
82 |
// Igual deberiamos tener una tabla en CSV con todas las proyecciones en el
|
83 |
// plugin y buscar en ella para no tener que dar de alta nada a capon. Tal vez
|
84 |
// Pillarla de la base de datos oficial de EPSG directamente.
|
85 |
//
|
86 |
return super.add(providerName, theParams, overwrite); |
87 |
} |
88 |
|
89 |
} |