Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.compat.cdc / org.gvsig.fmap.dal / org.gvsig.fmap.dal.db / org.gvsig.fmap.dal.db.h2 / src / main / java / org / gvsig / fmap / dal / store / h2 / H2SpatialConnectionParametersHelper.java @ 45069

History | View | Annotate | Download (4.51 KB)

1
package org.gvsig.fmap.dal.store.h2;
2

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

    
12
public class H2SpatialConnectionParametersHelper {
13

    
14
    private final JDBCConnectionParameters parameters;
15

    
16
    private static final String DATABASE_FILE = "database_file";
17
    private static final String MAXSECONDSIDLE = "MaxSecondsIdle";
18
    private static final String SERVERPORT = "ServerPort";
19
    private static final String SERVERALLOWOTHERS = "ServerAllowOthers";
20
    
21

    
22
    public H2SpatialConnectionParametersHelper(JDBCConnectionParameters parameters) {
23
        this.parameters = parameters;
24
    }
25

    
26
    public String getUrl() {
27
        String url = (String) this.getDynValue(JDBCConnectionParameters.URL_PARAMTER_NAME);
28
        if( StringUtils.isEmpty(url) ) {
29
            url = H2SpatialHelper.getConnectionURL((H2SpatialConnectionParameters) this.parameters);
30
            this.setDynValue(JDBCConnectionParameters.URL_PARAMTER_NAME, url);
31
        }
32
        return url;
33
    }
34

    
35
    public void validate() throws ValidateDataParametersException {
36
        if( this.getDynValue(JDBCConnectionParameters.JDBC_DRIVER_CLASS_PARAMTER_NAME) == null ) {
37
            this.setDynValue(JDBCConnectionParameters.JDBC_DRIVER_CLASS_PARAMTER_NAME,
38
                H2SpatialHelper.H2SPATIAL_JDBC_DRIVER
39
            );
40
        }
41
        if( getFile() == null ) {
42
            if( this.getDynValue(JDBCConnectionParameters.DBNAME_PARAMTER_NAME) == null ) {
43
                throw new ValidateDataParametersException();
44
            } else {
45
                setFile(new File((String) this.getDynValue(JDBCConnectionParameters.DBNAME_PARAMTER_NAME)));
46
            }
47
        } else {
48
            String dbName = (String) this.getDynValue(JDBCConnectionParameters.DBNAME_PARAMTER_NAME);
49
            if( StringUtils.isEmpty(dbName) ) {
50
                dbName = getDbNameFromFile(getFile());
51
                this.setDynValue(
52
                    JDBCConnectionParameters.DBNAME_PARAMTER_NAME,
53
                    dbName.toUpperCase()
54
                );
55
            }
56
        }        
57
        if( this.getDynValue(JDBCConnectionParameters.URL_PARAMTER_NAME) == null ) {
58
            String url = H2SpatialHelper.getConnectionURL((H2SpatialConnectionParameters) this.parameters);
59
            this.setDynValue(JDBCConnectionParameters.URL_PARAMTER_NAME, url);
60
        }
61
    }
62

    
63
    private Object getDynValue(String name) {
64
        return ((DataParameters) this.parameters).getDynValue(name);
65
    }
66

    
67
    private void setDynValue(String name, Object value) {
68
        ((DataParameters) this.parameters).setDynValue(name, value);
69
    }
70
    
71
    public int getMaxSecondsIdle() {
72
        Integer x = (Integer) this.getDynValue(MAXSECONDSIDLE);
73
        if( x == null ) {
74
            return -1;
75
        }
76
        return x;
77
    }
78
    
79
    public int getServerPort() {
80
        Integer x = (Integer) this.getDynValue(SERVERPORT);
81
        if( x == null ) {
82
            return -1;
83
        }
84
        return x;
85
    }
86
    
87
    public boolean getServerAllowOthers() {
88
        Boolean x = (Boolean) this.getDynValue(SERVERALLOWOTHERS);
89
        if( x == null ) {
90
            return false;
91
        }
92
        return x;
93
    }
94
            
95
    public File getFile() {
96
        File f = (File) this.getDynValue(DATABASE_FILE);
97
        if( this.getDynValue(DBParameters.DBNAME_PARAMTER_NAME) == null
98
            && f != null ) {
99
            String dbname = getDbNameFromFile(f);
100
            this.setDynValue(DBParameters.DBNAME_PARAMTER_NAME, dbname);
101
        }
102
        return f;
103
    }
104

    
105
    public void setFile(File database) {
106
        this.setDynValue(DATABASE_FILE, database);
107
        if( this.getDynValue(DBParameters.DBNAME_PARAMTER_NAME) == null
108
            && database != null ) {
109
            String dbname = getDbNameFromFile(database);
110
            this.setDynValue(DBParameters.DBNAME_PARAMTER_NAME, dbname);
111
        }
112
    }
113

    
114
    public Properties getProperties() {
115
        Properties props = new Properties();
116
        return props;
117
    }
118
    
119
    private String getDbNameFromFile(File f) {
120
        String fname = f.getName();
121
        if( fname.toLowerCase().endsWith(".mv.db") ) {
122
            fname = fname.substring(0, fname.length()-6);
123
        } else {
124
            fname = FilenameUtils.getBaseName(fname);
125
        }
126
        return fname;
127
    }
128

    
129
}