Revision 43400 trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.h2spatial.app/org.gvsig.h2spatial.app.mainplugin/src/main/java/org/gvsig/h2spatial/H2SpatialExtension.java
H2SpatialExtension.java | ||
---|---|---|
9 | 9 |
import java.text.MessageFormat; |
10 | 10 |
import java.util.ArrayList; |
11 | 11 |
import java.util.List; |
12 |
import javax.swing.JOptionPane; |
|
12 | 13 |
import org.apache.commons.collections.CollectionUtils; |
13 | 14 |
import org.apache.commons.io.FilenameUtils; |
14 | 15 |
import org.apache.commons.lang3.ArrayUtils; |
16 |
import org.apache.commons.lang3.BooleanUtils; |
|
15 | 17 |
import org.apache.commons.lang3.StringUtils; |
16 | 18 |
import org.gvsig.andami.IconThemeHelper; |
17 | 19 |
import org.gvsig.andami.plugins.Extension; |
... | ... | |
20 | 22 |
import org.gvsig.app.project.documents.view.ViewDocument; |
21 | 23 |
import org.gvsig.app.project.documents.view.ViewManager; |
22 | 24 |
import org.gvsig.fmap.dal.DALLocator; |
25 |
import org.gvsig.fmap.dal.DataManager; |
|
23 | 26 |
import org.gvsig.fmap.dal.feature.FeatureStore; |
24 | 27 |
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemStoreParameters; |
25 | 28 |
import org.gvsig.fmap.dal.store.jdbc.JDBCServerExplorer; |
26 | 29 |
import org.gvsig.fmap.dal.store.jdbc.JDBCServerExplorerParameters; |
27 | 30 |
import org.gvsig.fmap.dal.swing.DALSwingLocator; |
28 | 31 |
import org.gvsig.fmap.dal.swing.jdbc.JDBCConnectionPanel; |
32 |
import org.gvsig.fmap.geom.primitive.Envelope; |
|
29 | 33 |
import org.gvsig.fmap.mapcontext.MapContextLocator; |
30 | 34 |
import org.gvsig.fmap.mapcontext.MapContextManager; |
31 | 35 |
import org.gvsig.fmap.mapcontext.layers.FLayer; |
32 | 36 |
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect; |
33 | 37 |
import org.gvsig.tools.ToolsLocator; |
38 |
import org.gvsig.tools.folders.FoldersManager; |
|
39 |
import org.gvsig.tools.i18n.I18nManager; |
|
34 | 40 |
import org.gvsig.tools.swing.api.ToolsSwingLocator; |
35 | 41 |
import org.gvsig.tools.swing.api.windowmanager.Dialog; |
36 | 42 |
import org.gvsig.tools.swing.api.windowmanager.WindowManager; |
... | ... | |
42 | 48 |
|
43 | 49 |
public class H2SpatialExtension extends Extension { |
44 | 50 |
|
51 |
public static String DAL_EXPLORER_NAME = "H2Spatial"; |
|
52 |
|
|
45 | 53 |
@Override |
46 | 54 |
public void initialize() { |
47 | 55 |
} |
... | ... | |
61 | 69 |
|
62 | 70 |
@Override |
63 | 71 |
public void execute(String actionCommand) { |
64 |
if( "tools-h2spatial-show-admintool".equalsIgnoreCase(actionCommand) ) { |
|
72 |
switch(actionCommand.toLowerCase()) { |
|
73 |
case "tools-h2spatial-show-admintool": |
|
65 | 74 |
startserver(); |
66 | 75 |
startbrowser(); |
67 |
return;
|
|
68 |
} |
|
69 |
if( "tools-h2spatial-linklayer".equalsIgnoreCase(actionCommand) ) {
|
|
76 |
break;
|
|
77 |
|
|
78 |
case "tools-h2spatial-linklayer":
|
|
70 | 79 |
linkActiveLayers(); |
80 |
break; |
|
81 |
|
|
82 |
case "tools-h2spatial-import": |
|
83 |
importTables(); |
|
84 |
break; |
|
85 |
|
|
86 |
case "tools-h2spatial-downloadosm": |
|
87 |
downloadOSM(); |
|
88 |
break; |
|
71 | 89 |
} |
72 | 90 |
} |
73 | 91 |
|
... | ... | |
124 | 142 |
|
125 | 143 |
@Override |
126 | 144 |
public boolean isEnabled(String action) { |
145 |
ApplicationManager application = ApplicationLocator.getManager(); |
|
146 |
|
|
127 | 147 |
if( "tools-h2spatial-show-admintool".equalsIgnoreCase(action) ) { |
128 | 148 |
return true; |
129 | 149 |
} |
130 | 150 |
if( "tools-h2spatial-linklayer".equalsIgnoreCase(action) ) { |
131 | 151 |
return ! CollectionUtils.isEmpty(this.getSelectedLayers()); |
132 | 152 |
} |
153 |
if( "tools-h2spatial-import".equalsIgnoreCase(action) ) { |
|
154 |
return true; |
|
155 |
} |
|
156 |
if( "tools-h2spatial-downloadosm".equalsIgnoreCase(action) ) { |
|
157 |
ViewDocument viewDoc = (ViewDocument) application.getActiveDocument(ViewManager.TYPENAME); |
|
158 |
if( viewDoc == null ) { |
|
159 |
return false; |
|
160 |
} |
|
161 |
Envelope env = viewDoc.getMapContext().getViewPort().getEnvelope(); |
|
162 |
return !(env != null && env.isEmpty()); |
|
163 |
} |
|
133 | 164 |
return false; |
134 | 165 |
} |
135 | 166 |
|
... | ... | |
138 | 169 |
return true; |
139 | 170 |
} |
140 | 171 |
|
141 |
|
|
142 |
|
|
143 | 172 |
private void startbrowser() { |
144 |
// try { |
|
145 |
// DesktopOpen desktop = ToolsUtilLocator.getToolsUtilManager().createDesktopOpen(); |
|
146 |
// desktop.browse(new URI("http://localhost:8082")); |
|
147 |
// } catch (URISyntaxException ex) { |
|
148 |
// } |
|
149 | 173 |
WindowManager winmanager = ToolsSwingLocator.getWindowManager(); |
150 | 174 |
WebBrowserPanel webbrowser = WebBrowserFactory.createWebBrowserPanel(); |
151 | 175 |
winmanager.showWindow( |
... | ... | |
157 | 181 |
|
158 | 182 |
} |
159 | 183 |
|
184 |
private void importTables() { |
|
185 |
I18nManager i18n = ToolsLocator.getI18nManager(); |
|
186 |
WindowManager_v2 winmanager = (WindowManager_v2) ToolsSwingLocator.getWindowManager(); |
|
187 |
final importTable panel = new importTable(); |
|
188 |
final Dialog dlg = winmanager.createDialog( |
|
189 |
panel, |
|
190 |
i18n.getTranslation("_Select_files_to_import"), |
|
191 |
i18n.getTranslation("_Select_files_to_import_as_tables_in_H2_database"), |
|
192 |
WindowManager_v2.BUTTONS_OK_CANCEL |
|
193 |
); |
|
194 |
dlg.addActionListener(new ActionListener() { |
|
195 |
@Override |
|
196 |
public void actionPerformed(ActionEvent e) { |
|
197 |
if( dlg.getAction()==WindowManager_v2.BUTTONS_OK ) { |
|
198 |
doImportTables( |
|
199 |
panel.getExplorerParameters(), |
|
200 |
panel.getFileType(), |
|
201 |
panel.getFile(), |
|
202 |
panel.getTableName(), |
|
203 |
panel.getDeleteTables() |
|
204 |
); |
|
205 |
} |
|
206 |
} |
|
207 |
}); |
|
208 |
dlg.show(WindowManager.MODE.WINDOW); |
|
209 |
} |
|
210 |
|
|
211 |
private void doImportTables(JDBCServerExplorerParameters explorerParameters, String fileType, File file, String tableName, boolean deleteTables) { |
|
212 |
I18nManager i18n = ToolsLocator.getI18nManager(); |
|
213 |
ApplicationManager application = ApplicationLocator.getManager(); |
|
214 |
|
|
215 |
StringBuilder sql = new StringBuilder(); |
|
216 |
switch(fileType.toLowerCase()) { |
|
217 |
case "gpx": |
|
218 |
sql.append("CALL GPXRead('"); |
|
219 |
sql.append(file.getAbsolutePath()); |
|
220 |
sql.append("', '"); |
|
221 |
sql.append(tableName); |
|
222 |
sql.append("', "); |
|
223 |
sql.append(BooleanUtils.toStringTrueFalse(deleteTables)); |
|
224 |
sql.append(");"); |
|
225 |
break; |
|
226 |
case "geojson": |
|
227 |
sql.append("CALL GeoJsonRead('"); |
|
228 |
sql.append(file.getAbsolutePath()); |
|
229 |
sql.append("', '"); |
|
230 |
sql.append(tableName); |
|
231 |
sql.append("');"); |
|
232 |
break; |
|
233 |
case "osm": |
|
234 |
sql.append("CALL OSMRead('"); |
|
235 |
sql.append(file.getAbsolutePath()); |
|
236 |
sql.append("', '"); |
|
237 |
sql.append(tableName); |
|
238 |
sql.append("', "); |
|
239 |
sql.append(BooleanUtils.toStringTrueFalse(deleteTables)); |
|
240 |
sql.append(");"); |
|
241 |
break; |
|
242 |
default: |
|
243 |
return; |
|
244 |
} |
|
245 |
try { |
|
246 |
DataManager dataManager = DALLocator.getDataManager(); |
|
247 |
JDBCServerExplorer explorer = (JDBCServerExplorer) dataManager.openServerExplorer( |
|
248 |
explorerParameters.getExplorerName(), |
|
249 |
explorerParameters |
|
250 |
); |
|
251 |
explorer.execute(sql.toString()); |
|
252 |
} catch(Exception ex) { |
|
253 |
logger.warn("Can't import file.",ex); |
|
254 |
application.messageDialog( |
|
255 |
i18n.getTranslation("_Warning"), |
|
256 |
i18n.getTranslation("_Cant_import_file.") + |
|
257 |
"\n" + |
|
258 |
i18n.getTranslation("_See_the_log_file_to_more_information"), |
|
259 |
JOptionPane.WARNING_MESSAGE |
|
260 |
); |
|
261 |
} |
|
262 |
} |
|
263 |
|
|
160 | 264 |
private void linkActiveLayers() { |
161 | 265 |
final List<FLyrVect> layers = this.getSelectedLayers(); |
162 | 266 |
if( CollectionUtils.isEmpty(layers) ) { |
... | ... | |
166 | 270 |
jdbcConnectionPanel.setConnectorFilter(new JDBCConnectionPanel.ConnectorFilter() { |
167 | 271 |
@Override |
168 | 272 |
public boolean accept(JDBCServerExplorerParameters parameters) { |
169 |
return StringUtils.equalsIgnoreCase(parameters.getExplorerName(), "H2Spatial");
|
|
273 |
return StringUtils.equalsIgnoreCase(parameters.getExplorerName(), DAL_EXPLORER_NAME);
|
|
170 | 274 |
} |
171 | 275 |
}); |
172 | 276 |
WindowManager_v2 winmanager = (WindowManager_v2) ToolsSwingLocator.getWindowManager(); |
... | ... | |
208 | 312 |
} catch (Exception ex) { |
209 | 313 |
} |
210 | 314 |
} |
315 |
|
|
316 |
private void downloadOSM() { |
|
317 |
|
|
318 |
I18nManager i18n = ToolsLocator.getI18nManager(); |
|
319 |
FoldersManager foldersManager = ToolsLocator.getFoldersManager(); |
|
320 |
ApplicationManager application = ApplicationLocator.getManager(); |
|
321 |
|
|
322 |
ViewDocument viewDoc = (ViewDocument) application.getActiveDocument(ViewManager.TYPENAME); |
|
323 |
if( viewDoc == null ) { |
|
324 |
return; |
|
325 |
} |
|
326 |
final Envelope env = viewDoc.getMapContext().getViewPort().getEnvelope(); |
|
327 |
final File[] files = application.showSaveFileDialog( |
|
328 |
i18n.getTranslation("_Select_the_file_in_which_to_save_the_data"), |
|
329 |
foldersManager.get("DataFolder") |
|
330 |
); |
|
331 |
if( !ArrayUtils.isEmpty(files) ) { |
|
332 |
final JDBCConnectionPanel jdbcConnectionPanel = DALSwingLocator.getSwingManager().createJDBCConnectionPanel(); |
|
333 |
jdbcConnectionPanel.setConnectorFilter(new JDBCConnectionPanel.ConnectorFilter() { |
|
334 |
@Override |
|
335 |
public boolean accept(JDBCServerExplorerParameters parameters) { |
|
336 |
return StringUtils.equalsIgnoreCase(parameters.getExplorerName(), DAL_EXPLORER_NAME); |
|
337 |
} |
|
338 |
}); |
|
339 |
WindowManager_v2 winmanager = (WindowManager_v2) ToolsSwingLocator.getWindowManager(); |
|
340 |
final Dialog dlg = winmanager.createDialog( |
|
341 |
jdbcConnectionPanel.asJComponent(), |
|
342 |
"Select database", |
|
343 |
null, |
|
344 |
WindowManager_v2.BUTTONS_OK_CANCEL |
|
345 |
); |
|
346 |
dlg.addActionListener(new ActionListener() { |
|
347 |
@Override |
|
348 |
public void actionPerformed(ActionEvent e) { |
|
349 |
if( dlg.getAction()==WindowManager_v2.BUTTONS_OK ) { |
|
350 |
doDownloadOSM( |
|
351 |
env, |
|
352 |
files[0], |
|
353 |
jdbcConnectionPanel.getServerExplorerParameters() |
|
354 |
); |
|
355 |
} |
|
356 |
} |
|
357 |
}); |
|
358 |
dlg.show(WindowManager.MODE.WINDOW); |
|
359 |
} |
|
360 |
} |
|
361 |
|
|
362 |
private void doDownloadOSM(Envelope env, File f, JDBCServerExplorerParameters explorerParameters) { |
|
363 |
I18nManager i18n = ToolsLocator.getI18nManager(); |
|
364 |
ApplicationManager application = ApplicationLocator.getManager(); |
|
365 |
|
|
366 |
try { |
|
367 |
String sql = MessageFormat.format( |
|
368 |
"CALL ST_OSMDownloader(''{0}'':geometry, ''{1}'');", |
|
369 |
env.getGeometry().convertToWKT(), |
|
370 |
f.getAbsolutePath() |
|
371 |
); |
|
372 |
DataManager dataManager = DALLocator.getDataManager(); |
|
373 |
JDBCServerExplorer explorer = (JDBCServerExplorer) dataManager.openServerExplorer( |
|
374 |
explorerParameters.getExplorerName(), |
|
375 |
explorerParameters |
|
376 |
); |
|
377 |
explorer.execute(sql); |
|
378 |
} catch(Exception ex) { |
|
379 |
logger.warn("Can't download from OSM.",ex); |
|
380 |
application.messageDialog( |
|
381 |
i18n.getTranslation("_Warning"), |
|
382 |
i18n.getTranslation("_Cant_download_from_OSM.") + |
|
383 |
"\n" + |
|
384 |
i18n.getTranslation("_See_the_log_file_to_more_information"), |
|
385 |
JOptionPane.WARNING_MESSAGE |
|
386 |
); |
|
387 |
} |
|
388 |
} |
|
211 | 389 |
} |
Also available in: Unified diff