Statistics
| Revision:

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
}