Statistics
| Revision:

svn-gvsig-desktop / branches / v2_0_0_prep / libraries / libFMap_daldb / src / org / gvsig / fmap / dal / store / mysql / MySQLServerExplorer.java @ 33717

History | View | Annotate | Download (5.45 KB)

1 28948 jmvivo
/* gvSIG. Geographic Information System of the Valencian Government
2
*
3
* Copyright (C) 2007-2008 Infrastructures and Transports Department
4
* of the Valencian Government (CIT)
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 2
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
*/
22
23
/*
24
* AUTHORS (In addition to CIT):
25
* 2009 IVER T.I   {{Task}}
26
*/
27
28
/**
29
 *
30
 */
31
package org.gvsig.fmap.dal.store.mysql;
32
33
import java.sql.Connection;
34
import java.sql.SQLException;
35
import java.sql.Statement;
36
37
import org.gvsig.fmap.dal.DataStoreParameters;
38
import org.gvsig.fmap.dal.NewDataStoreParameters;
39
import org.gvsig.fmap.dal.exception.DataException;
40
import org.gvsig.fmap.dal.exception.InitializeException;
41
import org.gvsig.fmap.dal.exception.ProviderNotRegisteredException;
42
import org.gvsig.fmap.dal.exception.RemoveException;
43 29445 jmvivo
import org.gvsig.fmap.dal.spi.DataServerExplorerProviderServices;
44 28948 jmvivo
import org.gvsig.fmap.dal.store.jdbc.JDBCHelper;
45
import org.gvsig.fmap.dal.store.jdbc.JDBCServerExplorer;
46
import org.gvsig.fmap.dal.store.jdbc.JDBCStoreParameters;
47
import org.gvsig.fmap.dal.store.jdbc.TransactionalAction;
48
import org.gvsig.fmap.dal.store.jdbc.exception.JDBCExecuteSQLException;
49
import org.gvsig.fmap.dal.store.jdbc.exception.JDBCSQLException;
50
import org.slf4j.Logger;
51
import org.slf4j.LoggerFactory;
52
53
/**
54
 * @author jmvivo
55
 *
56
 */
57
public class MySQLServerExplorer extends JDBCServerExplorer {
58
        final static private Logger logger = LoggerFactory
59
                        .getLogger(MySQLServerExplorer.class);
60
61
        public static final String NAME = "MySQLExplorer";
62
63
64
65
        public MySQLServerExplorer(
66 29445 jmvivo
                        MySQLServerExplorerParameters parameters,
67
                        DataServerExplorerProviderServices services)
68 28948 jmvivo
                        throws InitializeException {
69 29445 jmvivo
                super(parameters, services);
70 28948 jmvivo
        }
71
72 29445 jmvivo
        private MySQLServerExplorerParameters getMySQLparameters() {
73
                return (MySQLServerExplorerParameters) super.getParameters();
74 28948 jmvivo
        }
75
76 29445 jmvivo
77 28948 jmvivo
        protected JDBCHelper createHelper() throws InitializeException {
78 29445 jmvivo
                return new MySQLHelper(this, getMySQLparameters());
79 28948 jmvivo
        }
80
81
82
        protected String getStoreName() {
83
                return MySQLStoreProvider.NAME;
84
        }
85
86 33717 jjdelcerro
        public String getProviderName() {
87 28948 jmvivo
                return NAME;
88
        }
89
90
        protected JDBCStoreParameters createStoreParams()
91
                        throws InitializeException, ProviderNotRegisteredException {
92
                MySQLStoreParameters orgParams = (MySQLStoreParameters) super
93
                                .createStoreParams();
94
95 29445 jmvivo
                orgParams.setUseSSL(getMySQLparameters().getUseSSL());
96 28948 jmvivo
97
                return orgParams;
98
        }
99
100
101
        // ****************************
102
103
104
        public boolean canAdd() {
105
                return true;
106
        }
107
108
        protected void checkIsMine(DataStoreParameters dsp) {
109
                if (!(dsp instanceof MySQLStoreParameters)) {
110
                        // FIXME Excpetion ???
111
                        throw new IllegalArgumentException(
112
                                        "not instance of MySQLStoreParameters");
113
                }
114
                super.checkIsMine(dsp);
115
116 29445 jmvivo
                MySQLServerExplorerParameters myParameters = getMySQLparameters();
117 28948 jmvivo
                MySQLStoreParameters myp = (MySQLStoreParameters) dsp;
118
                if (myp.getUseSSL().booleanValue() != myParameters.getUseSSL()) {
119
                        throw new IllegalArgumentException("worng explorer: useSSL (mine:"
120
                                        + myParameters.getUseSSL() + " other:" + myp.getUseSSL()
121
                                        + ")");
122
                }
123
        }
124
125
        public void remove(DataStoreParameters dsp) throws RemoveException {
126
                final MySQLStoreParameters myParams =(MySQLStoreParameters) dsp;
127
128
                TransactionalAction action = new TransactionalAction() {
129
                        public boolean continueTransactionAllowed() {
130
                                return false;
131
                        }
132
                        public Object action(Connection conn) throws DataException {
133
134
135
                                Statement st;
136
                                try{
137
                                        st = conn.createStatement();
138
                                } catch (SQLException e) {
139
                                        throw new JDBCSQLException(e);
140
                                }
141
142
                                String sqlDrop = "Drop table "
143
                                        + myParams.tableID();
144
145
                                try{
146
                                        try{
147
                                                st.execute(sqlDrop);
148
                                        } catch (SQLException e) {
149
                                                throw new JDBCExecuteSQLException(sqlDrop, e);
150
                                        }
151
152
                                } finally{
153
                                        try{ st.close(); } catch (SQLException e) {};
154
                                }
155
                                return null;
156
                        }
157
                };
158
                try {
159
                        this.helper.doConnectionAction(action);
160
                } catch (Exception e) {
161 33717 jjdelcerro
                        throw new RemoveException(this.getProviderName(), e);
162 28948 jmvivo
                }
163
        }
164
165
        public NewDataStoreParameters getAddParameters() throws DataException {
166 29445 jmvivo
                MySQLServerExplorerParameters parameters = getMySQLparameters();
167 28948 jmvivo
                MySQLNewStoreParameters params = new MySQLNewStoreParameters();
168 29445 jmvivo
                params.setHost(parameters.getHost());
169
                params.setPort(parameters.getPort());
170
                params.setDBName(parameters.getDBName());
171
                params.setUser(parameters.getUser());
172
                params.setPassword(parameters.getPassword());
173
                params.setCatalog(parameters.getCatalog());
174
                params.setSchema(parameters.getSchema());
175
                params.setJDBCDriverClassName(parameters.getJDBCDriverClassName());
176
                params.setUrl(parameters.getUrl());
177
                params.setUseSSL(parameters.getUseSSL());
178 28948 jmvivo
179
180
                params.setDefaultFeatureType(this.getServerExplorerProviderServices()
181
                                .createNewFeatureType());
182
183
184
                return params;
185
        }
186
187
188
189
        // ***********************
190
        // ***********************
191
192
193
        public boolean hasGeometrySupport() {
194
                return true;
195
        }
196
197
        protected MySQLHelper getMyHelper() {
198
                return (MySQLHelper) getHelper();
199
        }
200
201
}