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.jdbc / src / main / java / org / gvsig / fmap / dal / store / jdbc / JDBCStoreParameters.java @ 45507

History | View | Annotate | Download (7.49 KB)

1
/**
2
 * gvSIG. Desktop Geographic Information System.
3
 *
4
 * Copyright (C) 2007-2013 gvSIG Association.
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 3
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 * For any additional information, do not hesitate to contact us
22
 * at info AT gvsig.com, or visit our website www.gvsig.com.
23
 */
24

    
25
package org.gvsig.fmap.dal.store.jdbc;
26

    
27
import java.text.MessageFormat;
28
import org.apache.commons.lang3.StringUtils;
29

    
30
import org.gvsig.fmap.dal.store.db.DBStoreParameters;
31

    
32
/**
33
 * Parameters class for JDBC generic provider
34
 *
35
 */
36
public class JDBCStoreParameters extends DBStoreParameters
37
                implements JDBCConnectionParameters {
38

    
39
//        public static final String PARAMETERS_DEFINITION_NAME = "JDBCStoreParameters";
40

    
41
        public JDBCStoreParameters() {
42
                super(
43
                        JDBCLibrary.NAME + "StoreParameters",
44
                        JDBCLibrary.NAME
45
                );
46
        }
47

    
48
        protected JDBCStoreParameters(String parametersDefinitionName) {
49
                super(
50
                        parametersDefinitionName,
51
                        JDBCLibrary.NAME
52
                );
53
        }
54

    
55
        public JDBCStoreParameters(String parametersDefinitionName, String providerName) {
56
                super(parametersDefinitionName,providerName);
57
        }
58

    
59
        public boolean isValid() {
60
                return this.getHost() != null;
61
        }
62

    
63
        public String getHost() {
64
                return (String) this.getDynValue(HOST_PARAMTER_NAME);
65
        }
66

    
67
        public Integer getPort() {
68
                return (Integer) this.getDynValue(PORT_PARAMTER_NAME);
69
        }
70

    
71
        @Override
72
        public int getBatchSize() {
73
            try {
74
                return (int) this.getDynValue(BATCH_SIZE_PARAMETER_NAME);
75
            } catch(Exception ex) {
76
                return DEFAULT_BATCH_SIZE;
77
            }
78
        }
79
        
80
        public String getDBName() {
81
                return (String) this.getDynValue(DBNAME_PARAMTER_NAME);
82
        }
83

    
84
        public String getUser() {
85
                return (String) this.getDynValue(USER_PARAMTER_NAME);
86
        }
87

    
88
        public String getPassword() {
89
                return (String) this.getDynValue(PASSWORD_PARAMTER_NAME);
90
        }
91

    
92
        public void setHost(String host) {
93
                this.setDynValue(HOST_PARAMTER_NAME, host);
94
        }
95

    
96
        public void setPort(int port) {
97
                this.setDynValue(PORT_PARAMTER_NAME, new Integer(port));
98
        }
99

    
100
        public void setPort(Integer port) {
101
                this.setDynValue(PORT_PARAMTER_NAME, port);
102
        }
103

    
104
        public void setDBName(String dbName) {
105
                this.setDynValue(DBNAME_PARAMTER_NAME, dbName);
106
        }
107

    
108
        public void setUser(String user) {
109
                this.setDynValue(USER_PARAMTER_NAME, user);
110
        }
111

    
112
        public void setPassword(String password) {
113
                this.setDynValue(PASSWORD_PARAMTER_NAME, password);
114
        }
115

    
116
        /**
117
         * Set <code>JDBC Driver class name</code> parameter
118
         *
119
         * @param className
120
         */
121
        public void setJDBCDriverClassName(String className) {
122
                this.setDynValue(JDBC_DRIVER_CLASS_PARAMTER_NAME, className);
123
        }
124

    
125
        public String getJDBCDriverClassName() {
126
                return (String) this.getDynValue(JDBC_DRIVER_CLASS_PARAMTER_NAME);
127
        }
128

    
129
        public String getCatalog() {
130
                return (String) this.getDynValue(CATALOG_PARAMTER_NAME);
131
        }
132

    
133

    
134
        /**
135
         * Set <code>catalog</code> parameter
136
         *
137
         * @param className
138
         */
139
        public void setCatalog(String catalog) {
140
                this.setDynValue(CATALOG_PARAMTER_NAME, catalog);
141
        }
142

    
143
        public String getSchema() {
144
                return (String) this.getDynValue(SCHEMA_PARAMTER_NAME);
145
        }
146

    
147
        /**
148
         * Set <code>schema</code> parameter
149
         *
150
         * @param className
151
         */
152
        public void setSchema(String schema) {
153
                this.setDynValue(SCHEMA_PARAMTER_NAME, schema);
154
        }
155

    
156
        public String getTable() {
157
                return (String) this.getDynValue(TABLE_PARAMTER_NAME);
158
        }
159

    
160
        public void setTable(String table) {
161
                this.setDynValue(TABLE_PARAMTER_NAME, table);
162
        }
163

    
164
        public String getFieldsString() {
165
                return (String) this.getDynValue(FIELDS_PARAMTER_NAME);
166
        }
167

    
168
        public String[] getFields() {
169
                String fields = (String) this.getDynValue(FIELDS_PARAMTER_NAME);
170
                if (fields == null) {
171
                        return null;
172
                }
173
                // FIXME check for fields with spaces and special chars
174
                return fields.split(",");
175
        }
176

    
177
        public void setFields(String fields) {
178
                this.setDynValue(FIELDS_PARAMTER_NAME, fields);
179
        }
180

    
181
        public void setFields(String[] fields) {
182
                StringBuilder str = new StringBuilder();
183
                for (int i = 0; i < fields.length - 1; i++) {
184
                        str.append(fields[i]);
185
                        str.append(",");
186
                }
187
                str.append(fields[fields.length - 1]);
188

    
189
                this.setDynValue(FIELDS_PARAMTER_NAME, str.toString());
190
        }
191

    
192
        public String getSQL() {
193
                return (String) this.getDynValue(SQL_PARAMTER_NAME);
194
        }
195

    
196
        public void setSQL(String sql) {
197
                this.setDynValue(SQL_PARAMTER_NAME, sql);
198
        }
199

    
200
        public String getBaseFilter() {
201
                return (String) this.getDynValue(BASEFILTER_PARAMTER_NAME);
202
        }
203

    
204
        public void setBaseFilter(String initialFilter) {
205
                this.setDynValue(BASEFILTER_PARAMTER_NAME, initialFilter);
206
        }
207

    
208
        public String getBaseOrder() {
209
                return (String) this.getDynValue(BASEORDER_PARAMTER_NAME);
210
        }
211

    
212
        public void setBaseOrder(String order) {
213
                this.setDynValue(BASEORDER_PARAMTER_NAME, order);
214
        }
215

    
216
        public String getPkFieldsString() {
217
                return (String) this.getDynValue(PKFIELDS_PARAMTER_NAME);
218
        }
219

    
220
        public String[] getPkFields() {
221
                String fields = (String) this.getDynValue(PKFIELDS_PARAMTER_NAME);
222
                if (fields == null) {
223
                        return null;
224
                }
225
                // FIXME check for fields with spaces and special chars
226
                return fields.split(",");
227
        }
228

    
229
        public void setPkFields(String fields) {
230
                this.setDynValue(PKFIELDS_PARAMTER_NAME, fields);
231
        }
232

    
233
        public void setPkFields(String[] fields) {
234
                StringBuilder str = new StringBuilder();
235
                for (int i = 0; i < fields.length - 1; i++) {
236
                        str.append(fields[i]);
237
                        str.append(",");
238
                }
239
                str.append(fields[fields.length - 1]);
240

    
241
                this.setDynValue(PKFIELDS_PARAMTER_NAME, str.toString());
242
        }
243

    
244
        /**
245
         * Return table <code>name</code> or <code>schema.tableName</code> if
246
         * <code>schema</code> parameter is set.
247
         *
248
         * @return
249
         */
250
        public String tableID() {
251
                if (  StringUtils.isEmpty(this.getSchema()) ) {
252
            return escapeName(this.getTable());
253
                }
254
        return escapeName(this.getSchema()) + "." + escapeName(this.getTable());
255
        }
256

    
257
    protected String escapeName(String name) {
258
        return "\"".concat(name).concat("\"");
259
    }
260

    
261
        /**
262
         * Compound a string that can identify the source
263
         *
264
         * @return
265
         */
266
        public String getSourceId() {
267
                if (getTable() != null) {
268
                        return MessageFormat.format(
269
                                        "provider={0}:url=\"{1}\":table=\"{2}\":user={3}:driverclass={4}", 
270
                                        this.getDataStoreName(),
271
                                        this.getUrl(),
272
                                        this.getTable(),
273
                                        this.getUser(),
274
                                        this.getJDBCDriverClassName()
275
                        );
276
                }
277
                return MessageFormat.format(
278
                                "provider={0}:url=\"{1}\":sql=\"{2}\":user={3}:driverclass={4}", 
279
                                this.getDataStoreName(),
280
                                this.getUrl(),
281
                                this.getSQL(),
282
                                this.getUser(),
283
                                this.getJDBCDriverClassName()
284
                );
285
        }
286

    
287
        public String getUrl() {
288
                return (String) this.getDynValue(URL_PARAMTER_NAME);
289
        }
290

    
291
        /**
292
         * Set <code>JDBC connection url</code> parameter
293
         *
294
         * @param url
295
         */
296
        public void setUrl(String url) {
297
                this.setDynValue(URL_PARAMTER_NAME, url);
298
        }
299

    
300
    @Override
301
    public JDBCStoreParameters getCopy() {
302
        return (JDBCStoreParameters) super.getCopy();
303
    }
304

    
305
        
306
}