Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.plugin / org.gvsig.geodb.app / org.gvsig.geodb.app.mainplugin / src / main / java / org / gvsig / geodb / vectorialdb / wizard / WizardDB.java @ 43406

History | View | Annotate | Download (23.6 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
package org.gvsig.geodb.vectorialdb.wizard;
25

    
26
import java.awt.BorderLayout;
27
import java.awt.Window;
28
import java.awt.event.ActionEvent;
29
import java.awt.event.ActionListener;
30
import java.util.ArrayList;
31
import java.util.Comparator;
32
import java.util.Iterator;
33
import java.util.List;
34
import java.util.Map;
35
import java.util.Map.Entry;
36

    
37
import javax.swing.DefaultListModel;
38
import javax.swing.JComboBox;
39
import javax.swing.JOptionPane;
40
import javax.swing.JPanel;
41
import javax.swing.JScrollPane;
42
import javax.swing.ListSelectionModel;
43
import javax.swing.SwingUtilities;
44
import javax.swing.event.AncestorEvent;
45
import javax.swing.event.AncestorListener;
46
import javax.swing.event.ListSelectionEvent;
47
import javax.swing.event.ListSelectionListener;
48

    
49
import org.apache.commons.collections.map.HashedMap;
50
import org.apache.commons.lang3.text.WordUtils;
51
import org.cresques.cts.IProjection;
52
import org.slf4j.Logger;
53
import org.slf4j.LoggerFactory;
54

    
55
import org.gvsig.andami.IconThemeHelper;
56
import org.gvsig.andami.PluginServices;
57
import org.gvsig.andami.PluginsLocator;
58
import org.gvsig.andami.PluginsManager;
59
import org.gvsig.andami.messages.NotificationManager;
60
import org.gvsig.app.ApplicationLocator;
61
import org.gvsig.app.ApplicationManager;
62
import org.gvsig.app.gui.WizardPanel;
63
import org.gvsig.app.prepareAction.PrepareContext;
64
import org.gvsig.app.project.Project;
65
import org.gvsig.app.project.ProjectManager;
66
import org.gvsig.app.project.documents.table.TableDocument;
67
import org.gvsig.app.project.documents.table.TableManager;
68
import org.gvsig.fmap.dal.DALLocator;
69
import org.gvsig.fmap.dal.DataManager;
70
import org.gvsig.fmap.dal.DataServerExplorerPool;
71
import org.gvsig.fmap.dal.DataServerExplorerPoolEntry;
72
import org.gvsig.fmap.dal.DataStoreParameters;
73
import org.gvsig.fmap.dal.exception.DataException;
74
import org.gvsig.fmap.dal.feature.FeatureStore;
75
import org.gvsig.fmap.dal.serverexplorer.db.DBServerExplorer;
76
import org.gvsig.fmap.dal.serverexplorer.db.DBServerExplorerParameters;
77
import org.gvsig.fmap.dal.store.db.DBStoreParameters;
78
import org.gvsig.fmap.mapcontext.layers.FLayer;
79
import org.gvsig.fmap.mapcontrol.MapControl;
80
import org.gvsig.geodb.ExtDB_Spatial;
81
import org.gvsig.gui.beans.swing.JButton;
82
import org.gvsig.i18n.Messages;
83
import org.gvsig.tools.dynobject.DynObject;
84

    
85
public class WizardDB extends WizardPanel implements ActionListener,
86
        ListSelectionListener {
87

    
88
    /**
89
     *
90
     */
91
    private static final long serialVersionUID = -7045762275505941695L;
92
    private static final String WIZARD_TAB_NAME = "DB";
93
    private static Logger logger = LoggerFactory.getLogger(WizardDB.class
94
            .getName());
95

    
96
    private JPanel namePanel = null;
97
    private JPanel tablesPanel = null;
98
    private JScrollPane tablesScrollPane = null;
99
    private AvailableTablesCheckBoxList tablesList = null;
100
    private JComboBox datasourceComboBox = null;
101
    private UserSelectedFieldsPanel fieldsPanel = null;
102
    private UserSelectedFieldsPanel emptyFieldsPanel = null;
103
    private JButton dbButton = null;
104
    private DBServerExplorerParameters dbExplorerParameters;
105
    private DBServerExplorer dbExplorer = null;
106

    
107
    private UserTableSettingsPanel settingsPanel = null;
108
    protected UserTableSettingsPanel emptySettingsPanel = null;
109
    private PrepareContext prepareDSContext;
110

    
111
    public WizardDB() {
112
        super();
113
        initialize();
114
        this.addAncestorListener(new AncestorListener() {
115
            public void ancestorAdded(AncestorEvent ae) {
116
            }
117

    
118
            public void ancestorRemoved(AncestorEvent ae) {
119
                if ( dbExplorer != null ) {
120
                    dbExplorer.dispose();
121
                    dbExplorer = null;
122
                }
123
            }
124

    
125
            public void ancestorMoved(AncestorEvent ae) {
126
            }
127
        });
128
    }
129

    
130
    public DBServerExplorer getServerExplorer() {
131
        return this.dbExplorer;
132
    }
133

    
134
    protected void initialize() {
135
        setTabName(WIZARD_TAB_NAME);
136
        setLayout(null);
137
        setSize(512, 478);
138

    
139
        emptyFieldsPanel = new UserSelectedFieldsPanel(null, true, this);
140
        add(emptyFieldsPanel);
141

    
142
        add(getNamePanel(), null);
143
        loadVectorialDBDatasourcesCombo(null);
144

    
145
        add(getTablesPanel(), null);
146

    
147
        emptySettingsPanel = createSettingsPanel(null);
148
        add(emptySettingsPanel);
149

    
150
    }
151

    
152
    @SuppressWarnings("rawtypes")
153
    private void loadVectorialDBDatasourcesCombo(MyExplorer sel) {
154
        DataManager dataManager = DALLocator.getDataManager();
155
        DataServerExplorerPool explorersPool = dataManager.getDataServerExplorerPool();
156
        Iterator it = explorersPool.iterator();
157
        getDatasourceComboBox().removeAllItems();
158
        getDatasourceComboBox().addItem("");
159
        while ( it.hasNext() ) {
160
            DataServerExplorerPoolEntry entry = (DataServerExplorerPoolEntry) it.next();
161
            MyExplorer myExplorer = new MyExplorer();
162
            myExplorer.setDbExplorerParameters((DBServerExplorerParameters) entry.getExplorerParameters());
163
            myExplorer.setName(entry.getName());
164
            getDatasourceComboBox().addItem(myExplorer);
165
            if ( sel != null && sel.getName().equalsIgnoreCase(myExplorer.getName()) ) {
166
                getDatasourceComboBox().setSelectedItem(myExplorer);
167
            }
168
        }
169

    
170
    }
171

    
172
    public void initWizard() {
173
    }
174

    
175
    @Override
176
    public void execute() {
177
        executeWizard();
178
    }
179

    
180
    @Override
181
    public Object executeWizard() {
182
        TablesListItem[] tables = getSelectedTables();
183

    
184
        DataManager man = DALLocator.getDataManager();
185
        FeatureStore store;
186

    
187
        String docName;
188
        TableDocument document;
189
        Project project = ProjectManager.getInstance().getCurrentProject();
190

    
191
        ApplicationManager appGvSIGMan = ApplicationLocator.getManager();
192
        PrepareContext context = this.getPrepareDataStoreContext();
193
        DBStoreParameters storeParams;
194
        List<TableDocument> tabledocs
195
                = new ArrayList<TableDocument>(tables.length);
196
        for ( TablesListItem table : tables ) {
197
            storeParams = getParameterForTable(table);
198

    
199
            try {
200
                storeParams = (DBStoreParameters) appGvSIGMan
201
                        .prepareOpenDataStoreParameters(storeParams, context);
202
            } catch (Exception e2) {
203
                NotificationManager.addError(e2);
204
                continue;
205
            }
206

    
207
            UserTableSettingsPanel userTableSettingsPanel = table
208
                    .getUserTableSettingsPanel();
209

    
210
            docName = userTableSettingsPanel.getUserLayerName();
211
            try {
212
                store = (FeatureStore) man.openStore(storeParams.getDataStoreName(), storeParams);
213
            } catch (Exception e) {
214
                NotificationManager.addError(e);
215
                return null;
216
            }
217

    
218
            try {
219
                appGvSIGMan.pepareOpenDataSource(
220
                        store, context);
221
            } catch (Exception e) {
222
                NotificationManager.addError(e);
223
                store.dispose();
224
                return null;
225
            }
226

    
227
            document = (TableDocument) ProjectManager.getInstance().createDocument(TableManager.TYPENAME, docName);
228
            document.setStore(store);
229
            // project.add(document);
230
            tabledocs.add(document);
231
        }
232
        return tabledocs;
233
    }
234

    
235
    protected DBStoreParameters getParameterForTable(TablesListItem table) {
236
        DBStoreParameters parameters = table.getParameters();
237

    
238
        UserTableSettingsPanel userTableSettingsPanel = table
239
                .getUserTableSettingsPanel();
240

    
241
        String fidField = userTableSettingsPanel.getIdFieldName();
242
        //IF is a multiple PK, remove the {} symbols
243
        if ( fidField.startsWith("{") && fidField.endsWith("}") ) {
244
            fidField = fidField.substring(1, fidField.length() - 1);
245
        }
246
        String[] pkFields = fidField.split(",");
247

    
248
        String[] fields = table.getUserSelectedFieldsPanel()
249
                .getUserSelectedFields(pkFields, null);
250

    
251
        if ( userTableSettingsPanel.isSqlActive() ) {
252
            String whereClause = userTableSettingsPanel
253
                    .getWhereClause();
254
            parameters.setBaseFilter(whereClause);
255
        } else {
256
            parameters.setBaseFilter("");
257
        }
258

    
259
        parameters.setFields(fields);
260

    
261
        return parameters;
262

    
263
    }
264

    
265
    @SuppressWarnings({"rawtypes", "unchecked"})
266
    protected TablesListItem[] getSelectedTables() {
267
        int count = tablesList.getModel().getSize();
268
        ArrayList resp = new ArrayList();
269

    
270
        for ( int i = 0; i < count; i++ ) {
271
            TablesListItem item = (TablesListItem) tablesList.getModel()
272
                    .getElementAt(i);
273

    
274
            if ( item.isSelected() ) {
275
                resp.add(item);
276
            }
277
        }
278

    
279
        return (TablesListItem[]) resp.toArray(new TablesListItem[0]);
280
    }
281

    
282
    /**
283
     * This method initializes namePanel
284
     *
285
     * @return javax.swing.JPanel
286
     */
287
    private JPanel getNamePanel() {
288
        if ( namePanel == null ) {
289
            namePanel = new JPanel();
290
            namePanel.setLayout(null);
291
            namePanel.setBounds(new java.awt.Rectangle(5, 5, 501, 51));
292
            namePanel.setBorder(javax.swing.BorderFactory.createTitledBorder(
293
                    null, PluginServices.getText(this, "choose_connection"),
294
                    javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
295
                    javax.swing.border.TitledBorder.DEFAULT_POSITION, null,
296
                    null));
297
            namePanel.add(getDatasourceComboBox(), null);
298
            namePanel.add(getJdbcButton(), null);
299
        }
300

    
301
        return namePanel;
302
    }
303

    
304
    /**
305
     * This method initializes tablesPanel
306
     *
307
     * @return javax.swing.JPanel
308
     */
309
    private JPanel getTablesPanel() {
310
        if ( tablesPanel == null ) {
311
            tablesPanel = new JPanel();
312
            tablesPanel.setLayout(new BorderLayout());
313
            tablesPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(
314
                    null, PluginServices.getText(this, "choose_table"),
315
                    javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
316
                    javax.swing.border.TitledBorder.DEFAULT_POSITION, null,
317
                    null));
318
            tablesPanel.setBounds(new java.awt.Rectangle(5, 55, 246, 166));
319
            tablesPanel
320
                    .add(getTablesScrollPane(), java.awt.BorderLayout.CENTER);
321
        }
322

    
323
        return tablesPanel;
324
    }
325

    
326
    /**
327
     * This method initializes settingsPanel
328
     *
329
     * @return javax.swing.JPanel
330
     */
331
    /**
332
     * This method initializes tablesScrollPane
333
     *
334
     * @return javax.swing.JScrollPane
335
     */
336
    private JScrollPane getTablesScrollPane() {
337
        if ( tablesScrollPane == null ) {
338
            tablesScrollPane = new JScrollPane();
339
            tablesScrollPane.setViewportView(getTablesList());
340
        }
341

    
342
        return tablesScrollPane;
343
    }
344

    
345
    /**
346
     * This method initializes tablesList
347
     *
348
     * @return javax.swing.JList
349
     */
350
    protected AvailableTablesCheckBoxList getTablesList() {
351
        if ( tablesList == null ) {
352
            tablesList = new AvailableTablesCheckBoxList(this);
353
            tablesList.addListSelectionListener(this);
354
            tablesList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
355
        }
356

    
357
        return tablesList;
358
    }
359

    
360
    /**
361
     * This method initializes layerNameTextField
362
     *
363
     * @return javax.swing.JTextField
364
     */
365
    /**
366
     * This method initializes jComboBox
367
     *
368
     * @return javax.swing.JComboBox
369
     */
370
    private JComboBox getDatasourceComboBox() {
371
        if ( datasourceComboBox == null ) {
372
            datasourceComboBox = new JComboBox();
373
            datasourceComboBox
374
                    .setBounds(new java.awt.Rectangle(10, 20, 446, 21));
375
            datasourceComboBox.addActionListener(this);
376
        }
377

    
378
        return datasourceComboBox;
379
    }
380

    
381
    public void actionPerformed(ActionEvent arg0) {
382
        if ( datasourceComboBox.getItemCount() == 0 ) {
383
            setEmptyPanels();
384
        }
385
        Object src = arg0.getSource();
386

    
387
        if ( src == datasourceComboBox ) {
388
            final Object selected = datasourceComboBox.getSelectedItem();
389
            if ( selected instanceof MyExplorer ) {
390
                // Lo lanzamos asi para evitar cuelgues depurando, ya que estamos
391
                // en el evento de un combo y ahi no se puede depurar sin mas.
392
                SwingUtilities.invokeLater(new Runnable() {
393

    
394
                    @Override
395
                    public void run() {
396
                        MyExplorer sel_obj = (MyExplorer) selected;
397

    
398
                        getDatasourceComboBox().repaint();
399
                        dbExplorerParameters = sel_obj.getDbSeverExplorerParameters();
400
                        updateTableList(dbExplorerParameters);
401
                    }
402
                });
403
            }
404

    
405
        } else if ( src == dbButton ) {
406
            MyExplorer sel = addNewConnection();
407
            if ( sel == null ) {
408
                loadVectorialDBDatasourcesCombo(null);
409
            } else {
410
                dbExplorerParameters = sel.getDbSeverExplorerParameters();
411
                loadVectorialDBDatasourcesCombo(sel);
412
                getDatasourceComboBox().setSelectedItem(sel);
413
            }
414
        }
415

    
416
    }
417

    
418
    @SuppressWarnings({"unchecked", "rawtypes"})
419
    private MyExplorer addNewConnection() {
420
        VectorialDBConnectionParamsDialog newco = new VectorialDBConnectionParamsDialog();
421
        newco.showDialog();
422
        if ( newco.isCanceled()) {
423
            return null;
424
        }
425
        MyExplorer myExplorer = new MyExplorer();
426
        myExplorer.setDbExplorerParameters(newco.getServerExplorerParameters());
427
        myExplorer.setName(newco.getConnectionName());
428
        loadVectorialDBDatasourcesCombo(myExplorer);
429
        return myExplorer;
430
    }
431

    
432
    protected TablesListItem createTabeListItem(DBStoreParameters param) {
433
        return new TablesListItem(param, this);
434
    }
435

    
436
    /**
437
     * Subclasses of this wizard will return a filtered list
438
     * if necessary
439
     *
440
     * @param explorer
441
     * @return
442
     * @throws DataException
443
     */
444
    protected List<DBStoreParameters> getTableList(DBServerExplorer explorer) throws DataException {
445
        List<DBStoreParameters> l = new ArrayList<>();
446
        l.addAll(explorer.list());
447
        l.sort(new Comparator<DBStoreParameters>() {
448
            @Override
449
            public int compare(DBStoreParameters o1, DBStoreParameters o2) {
450
                try {
451
                    return o1.getTable().compareToIgnoreCase(o2.getTable());
452
                } catch(Exception ex) {
453
                    return 0;
454
                }
455
            }
456
        });
457
        return l;
458
    }
459

    
460
    @SuppressWarnings("rawtypes")
461
    protected void updateTableList(
462
            DBServerExplorerParameters dbSeverExplorerParameters2) {
463
        if ( dbSeverExplorerParameters2 == null ) {
464
            return;
465
        }
466
        DataManager dm = DALLocator.getDataManager();
467
        String err_msg = Messages.getText("connection_error");
468
        try {
469
            dbExplorer = (DBServerExplorer) dm.openServerExplorer(dbSeverExplorerParameters2.getExplorerName(), dbSeverExplorerParameters2);
470

    
471
            List parameters = getTableList(dbExplorer);
472

    
473
            DefaultListModel lmodel = new DefaultListModel();
474

    
475
            Iterator iter = parameters.iterator();
476
            DBStoreParameters param;
477
            int count = 0;
478
            while ( iter.hasNext() ) {
479
                param = (DBStoreParameters) iter.next();
480
                lmodel.addElement(createTabeListItem(param));
481
                count++;
482
            }
483

    
484
            getTablesList().setModel(lmodel);
485
            getTablesScrollPane().setViewportView(tablesList);
486
            tablesScrollPane.updateUI();
487
        } catch (Exception e) {
488
            logger.info("Error while getting table names: " + e.getMessage(),e);
489

    
490
            String remove_question = Messages.getText(
491
                    "_Remove_connection_parameters_from_list_question");
492

    
493
            int opt = JOptionPane.showConfirmDialog(
494
                    ApplicationLocator.getManager().getRootComponent(),
495
                    WordUtils.wrap(err_msg + ": " + getLastMessage(e) + "\n" + remove_question, 80),
496
                    err_msg,
497
                    JOptionPane.YES_NO_OPTION);
498

    
499
            if ( opt == JOptionPane.YES_OPTION ) {
500
                removeDBPArameters(dbSeverExplorerParameters2);
501
                // dbExplorer.
502
                loadVectorialDBDatasourcesCombo(null);
503
            }
504
        }
505

    
506
    }
507

    
508
    /**
509
     * Removes DB parameters from list of pre-configured DB parameters
510
     *
511
     * @param dbSeverExplorerParameters2
512
     */
513
    private void removeDBPArameters(
514
            DBServerExplorerParameters dbparams) {
515

    
516
        PluginsManager manager = PluginsLocator.getManager();
517
        DynObject values = manager.getPlugin(ExtDB_Spatial.class).getPluginProperties();
518
        Map connections = (Map) values.getDynValue("db_connections");
519
        if ( connections == null ) {
520
            return;
521
        }
522

    
523
        DBServerExplorerParameters item = null;
524
        Iterator it = connections.entrySet().iterator();
525
        List<String> toremove = new ArrayList();
526

    
527
        while ( it.hasNext() ) {
528
            Map.Entry entry = (Entry) it.next();
529
            item = (DBServerExplorerParameters) entry.getValue();
530
            if ( dbparams.equals(item) ) {
531
                toremove.add((String) entry.getKey());
532
            }
533
        }
534

    
535
        if ( toremove.size() == 0 ) {
536
            return;
537
        }
538

    
539
        for ( int i = 0; i < toremove.size(); i++ ) {
540
            connections.remove(toremove.get(i));
541
        }
542
        values.setDynValue("db_connections", connections);
543

    
544
    }
545

    
546
    public void valueChanged(ListSelectionEvent arg0) {
547
        Object src = arg0.getSource();
548

    
549
        if ( src == tablesList ) {
550
            TablesListItem selected = (TablesListItem) tablesList
551
                    .getSelectedValue();
552

    
553
            setSettingsPanels(selected);
554
            checkFinishable();
555
        }
556
    }
557

    
558
    public boolean areSettingsValid() {
559
        int count = tablesList.getModel().getSize();
560

    
561
        boolean at_least_one = false;
562
        boolean resp = true;
563

    
564
        for ( int i = 0; i < count; i++ ) {
565
            TablesListItem item = (TablesListItem) tablesList.getModel()
566
                    .getElementAt(i);
567

    
568
            if ( item.isSelected() ) {
569
                at_least_one = true;
570
            }
571

    
572
            if ( item.disturbsWizardValidity() ) {
573
                resp = false;
574
            }
575
        }
576

    
577
        return (at_least_one && resp);
578
    }
579

    
580
    public void checkFinishable() {
581
        boolean finishable = areSettingsValid();
582
        callStateChanged(finishable);
583
    }
584

    
585
    /**
586
     * This method initializes jdbcButton
587
     *
588
     * @return javax.swing.JButton
589
     */
590
    private JButton getJdbcButton() {
591
        if ( dbButton == null ) {
592
            dbButton = new JButton();
593
            dbButton.addActionListener(this);
594
            dbButton.setToolTipText(PluginServices.getText(this,
595
                    "add_connection"));
596
            dbButton.setBounds(new java.awt.Rectangle(465, 20, 26, 21));
597

    
598
            dbButton.setIcon(IconThemeHelper.getImageIcon("geodb-connection-add"));
599
        }
600

    
601
        return dbButton;
602
    }
603

    
604
    private void showConnectionErrorMessage(String _msg) {
605
        String msg = (_msg.length() > 300) ? "" : (": " + _msg);
606
        String title = PluginServices.getText(this, "connection_error");
607
        JOptionPane.showMessageDialog(this, title + msg, title,
608
                JOptionPane.ERROR_MESSAGE);
609
    }
610

    
611
    private java.net.URL createResourceUrl(String path) {
612
        return getClass().getClassLoader().getResource(path);
613
    }
614

    
615
    public void setSettingsPanels(TablesListItem actTable) {
616
        if ( actTable == null ) {
617
            setEmptyPanels();
618

    
619
            return;
620
        }
621
        fieldsPanel = actTable.getUserSelectedFieldsPanel();
622

    
623
        removeFieldPanels();
624
        add(fieldsPanel);
625
        fieldsPanel.repaint();
626
        removeSettingsPanels();
627
        add(emptySettingsPanel);
628

    
629
        settingsPanel = createSettingsPanel(actTable);
630

    
631
        removeSettingsPanels();
632
        add(settingsPanel);
633
        settingsPanel.repaint();
634

    
635
        repaint();
636
    }
637

    
638
    protected UserTableSettingsPanel createSettingsPanel(TablesListItem actTable) {
639
        if ( actTable == null ) {
640
            return new UserTableSettingsPanel(null, "", true, this, null);
641
        }
642

    
643
        return actTable.getUserTableSettingsPanel();
644
    }
645

    
646
    protected void setEmptyPanels() {
647
        removeFieldPanels();
648
        add(emptyFieldsPanel);
649
        fieldsPanel = emptyFieldsPanel;
650

    
651
        repaint();
652
    }
653

    
654
    private void removeFieldPanels() {
655
        for ( int i = 0; i < getComponentCount(); i++ ) {
656
            if ( getComponent(i) instanceof UserSelectedFieldsPanel ) {
657
                remove(i);
658
            }
659
        }
660
    }
661

    
662
    public DataStoreParameters[] getParameters() {
663
        try {
664
            TablesListItem[] selected = getSelectedTables();
665
            int count = selected.length;
666
            DBStoreParameters[] dbParameters = new DBStoreParameters[count];
667

    
668
            for ( int i = 0; i < count; i++ ) {
669
                TablesListItem item = selected[i];
670

    
671
                dbParameters[i] = getParameterForTable(item);
672
            }
673

    
674
            return dbParameters;// layerArrayToGroup(all_layers, groupName);
675
        } catch (Exception e) {
676
            logger.info("Error while creating jdbc layer: " + e.getMessage(), e);
677
            NotificationManager.addError("Error while loading layer: "
678
                    + e.getMessage(), e);
679
        }
680

    
681
        return null;
682
    }
683

    
684
    /**
685
     * This method process the errors found in a layer
686
     *
687
     * @param lyr
688
     * @param mapControl
689
     */
690
    protected void processErrorsOfLayer(FLayer lyr, MapControl mapControl) {
691
        this.getMapContext().callNewErrorEvent(null);
692
    }
693

    
694
    private void removeSettingsPanels() {
695
        for ( int i = 0; i < getComponentCount(); i++ ) {
696
            if ( getComponent(i) instanceof UserTableSettingsPanel ) {
697
                remove(i);
698
            }
699
        }
700
    }
701

    
702
    protected PrepareContext getPrepareDataStoreContext() {
703
        if ( this.prepareDSContext == null ) {
704
            this.prepareDSContext = new PrepareContext() {
705
                public Window getOwnerWindow() {
706
                    return null;
707
                }
708

    
709
                public IProjection getViewProjection() {
710
                    return WizardDB.this.getMapContext().getProjection();
711
                }
712

    
713
            };
714
        }
715
        return this.prepareDSContext;
716
    }
717

    
718
    @Override
719
    public void close() {
720

    
721
    }
722

    
723
    protected String getLastMessage(Throwable ex) {
724

    
725
        Throwable p = ex;
726
        while ( p.getCause() != null && p.getCause() != p ) {
727
            p = p.getCause();
728
        }
729
        return p.getMessage();
730
    }
731

    
732
} // @jve:decl-index=0:visual-constraint="10,10"