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 / SQLiteConnectionParametersHelper.java @ 47579

History | View | Annotate | Download (3.41 KB)

1

    
2
package org.gvsig.sqlite.dal;
3

    
4
import java.io.File;
5
import java.util.Properties;
6
import org.apache.commons.io.FilenameUtils;
7
import org.apache.commons.lang3.BooleanUtils;
8
import org.apache.commons.lang3.StringUtils;
9
import org.gvsig.fmap.dal.DataParameters;
10
import org.gvsig.fmap.dal.exception.ValidateDataParametersException;
11
import org.gvsig.fmap.dal.resource.db.DBParameters;
12
import org.gvsig.fmap.dal.store.jdbc.JDBCConnectionParameters;
13

    
14

    
15
public class SQLiteConnectionParametersHelper {
16

    
17
    private final JDBCConnectionParameters parameters;
18
    
19
    private static final String ENABLE_SHARED_CACHE = "enable_shared_cache";
20
    private static final String ENABLE_LOAD_EXTENSION = "enable_load_extension";
21
    private static final String DATABASE_FILE = "database_file";
22
    
23
    public SQLiteConnectionParametersHelper(JDBCConnectionParameters parameters) {
24
        this.parameters = parameters;
25
    }
26

    
27
    public String getUrl() {
28
        String url = (String) this.getDynValue(JDBCConnectionParameters.URL_PARAMTER_NAME);
29
        if( StringUtils.isBlank(url) ) {
30
            url = SQLiteUtils.getConnectionURL((SQLiteConnectionParameters) this.parameters);
31
            this.setDynValue(JDBCConnectionParameters.URL_PARAMTER_NAME,url);
32
        }
33
        return url;
34
    }
35
    
36
    public void validate() throws ValidateDataParametersException {
37
        if (this.getDynValue(JDBCConnectionParameters.JDBC_DRIVER_CLASS_PARAMTER_NAME) == null) {
38
            this.setDynValue(JDBCConnectionParameters.JDBC_DRIVER_CLASS_PARAMTER_NAME,
39
                    SQLiteUtils.SQLITE_JDBC_DRIVER
40
            );
41
        }
42
        if (getFile() == null) {
43
            throw new ValidateDataParametersException();
44
        }
45
    }
46

    
47
    private Object getDynValue(String name) {
48
        return ((DataParameters)this.parameters).getDynValue(name);
49
    }
50
    
51
    private void setDynValue(String name, Object value) {
52
        ((DataParameters)this.parameters).setDynValue(name,value);
53
    }
54
    
55
    public boolean getEnableLoadExtension() {
56
        return (boolean) this.getDynValue(ENABLE_LOAD_EXTENSION);
57
    }
58

    
59
    public boolean getEnableSharedCache() {
60
        return (boolean) this.getDynValue(ENABLE_SHARED_CACHE);
61
    }
62

    
63
    public void setEnableLoadExtension(boolean v) {
64
        this.setDynValue(ENABLE_LOAD_EXTENSION, v);
65
    }
66

    
67
    public void setEnableSharedCache(boolean v) {
68
        this.setDynValue(ENABLE_SHARED_CACHE, v);
69
    }
70

    
71
    public File getFile() {
72
        File f = (File) this.getDynValue(DATABASE_FILE);
73
        if( this.getDynValue(DBParameters.DBNAME_PARAMTER_NAME)==null &&
74
            f != null ) {
75
            String dbname = FilenameUtils.getBaseName(f.getName());
76
            this.setDynValue(DBParameters.DBNAME_PARAMTER_NAME, dbname);
77
        }
78
        return f;
79
    }
80
    
81
    public void setFile(File database) {
82
        this.setDynValue(DATABASE_FILE, database);
83
        if( this.getDynValue(DBParameters.DBNAME_PARAMTER_NAME)==null &&
84
            database != null ) {
85
            String dbname = FilenameUtils.getBaseName(database.getName());
86
            this.setDynValue(DBParameters.DBNAME_PARAMTER_NAME, dbname);
87
        }
88
    }
89

    
90
    public Properties getProperties() {
91
        Properties props = new Properties();
92
        props.setProperty("enable_shared_cache", BooleanUtils.toStringTrueFalse(getEnableSharedCache()));
93
        props.setProperty("enable_load_extension", BooleanUtils.toStringTrueFalse(getEnableLoadExtension()));
94
        return props;
95
    }    
96
}