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 | } |