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 @ 46542

History | View | Annotate | Download (23.8 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
import javax.swing.JComboBox;
37
import javax.swing.JOptionPane;
38
import javax.swing.JPanel;
39
import javax.swing.JScrollPane;
40
import javax.swing.ListSelectionModel;
41
import javax.swing.SwingUtilities;
42
import javax.swing.event.AncestorEvent;
43
import javax.swing.event.AncestorListener;
44
import javax.swing.event.ListSelectionEvent;
45
import javax.swing.event.ListSelectionListener;
46
import org.apache.commons.lang3.text.WordUtils;
47
import org.cresques.cts.IProjection;
48
import org.gvsig.andami.IconThemeHelper;
49
import org.gvsig.andami.PluginServices;
50
import org.gvsig.andami.PluginsLocator;
51
import org.gvsig.andami.PluginsManager;
52
import org.gvsig.andami.messages.NotificationManager;
53
import org.gvsig.app.ApplicationLocator;
54
import org.gvsig.app.ApplicationManager;
55
import org.gvsig.app.gui.WizardPanel;
56
import org.gvsig.app.prepareAction.PrepareContext;
57
import org.gvsig.app.project.Project;
58
import org.gvsig.app.project.ProjectManager;
59
import org.gvsig.app.project.documents.table.TableDocument;
60
import org.gvsig.app.project.documents.table.TableManager;
61
import org.gvsig.fmap.dal.DALLocator;
62
import org.gvsig.fmap.dal.DataManager;
63
import org.gvsig.fmap.dal.DataServerExplorerPool;
64
import org.gvsig.fmap.dal.DataServerExplorerPoolEntry;
65
import org.gvsig.fmap.dal.DataStoreParameters;
66
import org.gvsig.fmap.dal.exception.DataException;
67
import org.gvsig.fmap.dal.feature.FeatureStore;
68
import org.gvsig.fmap.dal.serverexplorer.db.DBServerExplorer;
69
import org.gvsig.fmap.dal.serverexplorer.db.DBServerExplorerParameters;
70
import org.gvsig.fmap.dal.store.db.AbstractDBStoreParameters;
71
import org.gvsig.fmap.mapcontext.layers.FLayer;
72
import org.gvsig.fmap.mapcontrol.MapControl;
73
import org.gvsig.geodb.ExtDB_Spatial;
74
import org.gvsig.gui.beans.swing.JButton;
75
import org.gvsig.i18n.Messages;
76
import org.gvsig.tools.dynobject.DynObject;
77
import org.slf4j.Logger;
78
import org.slf4j.LoggerFactory;
79

    
80
public class WizardDB extends WizardPanel implements ActionListener,
81
        ListSelectionListener {
82

    
83
    /**
84
     *
85
     */
86
    private static final long serialVersionUID = -7045762275505941695L;
87
    private static final String WIZARD_TAB_NAME = "DB";
88
    private static Logger logger = LoggerFactory.getLogger(WizardDB.class
89
            .getName());
90

    
91
    private JPanel namePanel = null;
92
    private JPanel tablesPanel = null;
93
    private JScrollPane tablesScrollPane = null;
94
    private AvailableTablesCheckBoxList tablesList = null;
95
    private JComboBox datasourceComboBox = null;
96
    private UserSelectedFieldsPanel fieldsPanel = null;
97
    private UserSelectedFieldsPanel emptyFieldsPanel = null;
98
    private JButton dbButton = null;
99
    private DBServerExplorerParameters dbExplorerParameters;
100
    private DBServerExplorer dbExplorer = null;
101

    
102
    private UserTableSettingsPanel settingsPanel = null;
103
    protected UserTableSettingsPanel emptySettingsPanel = null;
104
    private PrepareContext prepareDSContext;
105

    
106
    public WizardDB() {
107
        super();
108
        initialize();
109
        this.addAncestorListener(new AncestorListener() {
110
            public void ancestorAdded(AncestorEvent ae) {
111
            }
112

    
113
            public void ancestorRemoved(AncestorEvent ae) {
114
                if ( dbExplorer != null ) {
115
                    dbExplorer.dispose();
116
                    dbExplorer = null;
117
                }
118
            }
119

    
120
            public void ancestorMoved(AncestorEvent ae) {
121
            }
122
        });
123
    }
124

    
125
    public DBServerExplorer getServerExplorer() {
126
        return this.dbExplorer;
127
    }
128

    
129
    protected void initialize() {
130
        setTabName(WIZARD_TAB_NAME);
131
        setLayout(null);
132
        setSize(512, 478);
133

    
134
        emptyFieldsPanel = new UserSelectedFieldsPanel(null, true, this);
135
        add(emptyFieldsPanel);
136

    
137
        add(getNamePanel(), null);
138
        loadVectorialDBDatasourcesCombo(null);
139

    
140
        add(getTablesPanel(), null);
141

    
142
        emptySettingsPanel = createSettingsPanel(null);
143
        add(emptySettingsPanel);
144

    
145
    }
146

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

    
167
    }
168

    
169
    public void initWizard() {
170
    }
171

    
172
    @Override
173
    public void execute() {
174
        executeWizard();
175
    }
176

    
177
    @Override
178
    public Object executeWizard() {
179
        TablesListItem[] tables = getSelectedTables();
180

    
181
        DataManager man = DALLocator.getDataManager();
182
        FeatureStore store;
183

    
184
        String docName;
185
        TableDocument document;
186
        Project project = ProjectManager.getInstance().getCurrentProject();
187

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

    
196
            try {
197
                storeParams = (AbstractDBStoreParameters) appGvSIGMan
198
                        .prepareOpenDataStoreParameters(storeParams, context);
199
            } catch (Exception e2) {
200
                NotificationManager.addError(e2);
201
                continue;
202
            }
203

    
204
            UserTableSettingsPanel userTableSettingsPanel = table
205
                    .getUserTableSettingsPanel();
206

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

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

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

    
232
    protected AbstractDBStoreParameters getParameterForTable(TablesListItem table) {
233
        AbstractDBStoreParameters parameters = table.getParameters();
234

    
235
        UserTableSettingsPanel userTableSettingsPanel = table
236
                .getUserTableSettingsPanel();
237

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

    
245
        String[] fields = table.getUserSelectedFieldsPanel()
246
                .getUserSelectedFields(pkFields, null);
247

    
248
        if ( userTableSettingsPanel.isSqlActive() ) {
249
            String whereClause = userTableSettingsPanel
250
                    .getWhereClause();
251
            parameters.setBaseFilter(whereClause);
252
        } else {
253
            parameters.setBaseFilter("");
254
        }
255

    
256
        parameters.setFields(fields);
257

    
258
        return parameters;
259

    
260
    }
261

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

    
267
        for ( int i = 0; i < count; i++ ) {
268
            TablesListItem item = (TablesListItem) tablesList.getModel()
269
                    .getElementAt(i);
270

    
271
            if ( item.isSelected() ) {
272
                resp.add(item);
273
            }
274
        }
275

    
276
        return (TablesListItem[]) resp.toArray(new TablesListItem[0]);
277
    }
278

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

    
298
        return namePanel;
299
    }
300

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

    
320
        return tablesPanel;
321
    }
322

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

    
339
        return tablesScrollPane;
340
    }
341

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

    
354
        return tablesList;
355
    }
356

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

    
375
        return datasourceComboBox;
376
    }
377

    
378
    public void actionPerformed(ActionEvent arg0) {
379
        if ( datasourceComboBox.getItemCount() == 0 ) {
380
            setEmptyPanels();
381
        }
382
        Object src = arg0.getSource();
383

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

    
391
                    @Override
392
                    public void run() {
393
                        MyExplorer sel_obj = (MyExplorer) selected;
394

    
395
                        getDatasourceComboBox().repaint();
396
                        dbExplorerParameters = sel_obj.getDbSeverExplorerParameters();
397
                        updateTableList(dbExplorerParameters);
398
                    }
399
                });
400
            }
401

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

    
413
    }
414

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

    
429
    protected TablesListItem createTabeListItem(AbstractDBStoreParameters param) {
430
        return new TablesListItem(param, this);
431
    }
432

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

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

    
468
            List parameters = getTableList(dbExplorer);
469
            List<TablesListItem> tableListItems = new ArrayList<>();
470
            Iterator<AbstractDBStoreParameters> iter = parameters.iterator();
471
            while ( iter.hasNext() ) {
472
                AbstractDBStoreParameters param = iter.next();
473
                tableListItems.add(createTabeListItem(param));
474
            }
475
            tableListItems.sort(null);
476
            getTablesList().setListData(tableListItems.toArray(new TablesListItem[0]));
477
            getTablesScrollPane().setViewportView(tablesList);
478
            tablesScrollPane.updateUI();
479
        } catch (Exception e) {
480
            logger.info("Error while getting table names: " + e.getMessage(),e);
481

    
482
            String remove_question = Messages.getText(
483
                    "_Remove_connection_parameters_from_list_question");
484

    
485
            int opt = JOptionPane.showConfirmDialog(
486
                    ApplicationLocator.getManager().getRootComponent(),
487
                    WordUtils.wrap(err_msg + ": " + getLastMessage(e) + "\n" + remove_question, 80),
488
                    err_msg,
489
                    JOptionPane.YES_NO_OPTION);
490

    
491
            if ( opt == JOptionPane.YES_OPTION ) {
492
                removeDBPArameters(dbSeverExplorerParameters2);
493
                // dbExplorer.
494
                loadVectorialDBDatasourcesCombo(null);
495
            }
496
        }
497

    
498
    }
499

    
500
    /**
501
     * Removes DB parameters from list of pre-configured DB parameters
502
     *
503
     * @param dbSeverExplorerParameters2
504
     */
505
    private void removeDBPArameters(
506
            DBServerExplorerParameters dbparams) {
507

    
508
        PluginsManager manager = PluginsLocator.getManager();
509
        DynObject values = manager.getPlugin(ExtDB_Spatial.class).getPluginProperties();
510
        Map connections = (Map) values.getDynValue("db_connections");
511
        if ( connections == null ) {
512
            return;
513
        }
514

    
515
        DBServerExplorerParameters item = null;
516
        Iterator it = connections.entrySet().iterator();
517
        List<String> toremove = new ArrayList();
518

    
519
        while ( it.hasNext() ) {
520
            Map.Entry entry = (Entry) it.next();
521
            item = (DBServerExplorerParameters) entry.getValue();
522
            if ( dbparams.equals(item) ) {
523
                toremove.add((String) entry.getKey());
524
            }
525
        }
526

    
527
        if ( toremove.size() == 0 ) {
528
            return;
529
        }
530

    
531
        for ( int i = 0; i < toremove.size(); i++ ) {
532
            connections.remove(toremove.get(i));
533
        }
534
        values.setDynValue("db_connections", connections);
535

    
536
    }
537

    
538
    public void valueChanged(ListSelectionEvent arg0) {
539
        Object src = arg0.getSource();
540

    
541
        if ( src == tablesList ) {
542
            TablesListItem selected = (TablesListItem) tablesList
543
                    .getSelectedValue();
544

    
545
            setSettingsPanels(selected);
546
            checkFinishable();
547
        }
548
    }
549

    
550
    public boolean areSettingsValid() {
551
        int count = tablesList.getModel().getSize();
552

    
553
        boolean at_least_one = false;
554
        boolean resp = true;
555

    
556
        for ( int i = 0; i < count; i++ ) {
557
            TablesListItem item = (TablesListItem) tablesList.getModel()
558
                    .getElementAt(i);
559

    
560
            if ( item.isSelected() ) {
561
                at_least_one = true;
562
            }
563

    
564
            if ( item.disturbsWizardValidity() ) {
565
                resp = false;
566
            }
567
        }
568

    
569
        return (at_least_one && resp);
570
    }
571

    
572
    public void checkFinishable() {
573
        boolean finishable = areSettingsValid();
574
        callStateChanged(finishable);
575
    }
576

    
577
    /**
578
     * This method initializes jdbcButton
579
     *
580
     * @return javax.swing.JButton
581
     */
582
    private JButton getJdbcButton() {
583
        if ( dbButton == null ) {
584
            dbButton = new JButton();
585
            dbButton.addActionListener(this);
586
            dbButton.setToolTipText(PluginServices.getText(this,
587
                    "add_connection"));
588
            dbButton.setBounds(new java.awt.Rectangle(465, 20, 26, 21));
589

    
590
            dbButton.setIcon(IconThemeHelper.getImageIcon("geodb-connection-add"));
591
        }
592

    
593
        return dbButton;
594
    }
595

    
596
    private void showConnectionErrorMessage(String _msg) {
597
        String msg = (_msg.length() > 300) ? "" : (": " + _msg);
598
        String title = PluginServices.getText(this, "connection_error");
599
        JOptionPane.showMessageDialog(this, title + msg, title,
600
                JOptionPane.ERROR_MESSAGE);
601
    }
602

    
603
    private java.net.URL createResourceUrl(String path) {
604
        return getClass().getClassLoader().getResource(path);
605
    }
606

    
607
    public void setSettingsPanels(TablesListItem actTable) {
608
        if ( actTable == null ) {
609
            setEmptyPanels();
610

    
611
            return;
612
        }
613
        fieldsPanel = actTable.getUserSelectedFieldsPanel();
614

    
615
        removeFieldPanels();
616
        add(fieldsPanel);
617
        fieldsPanel.repaint();
618
        removeSettingsPanels();
619
        add(emptySettingsPanel);
620

    
621
        settingsPanel = createSettingsPanel(actTable);
622

    
623
        removeSettingsPanels();
624
        add(settingsPanel);
625
        settingsPanel.repaint();
626

    
627
        repaint();
628
    }
629

    
630
    protected UserTableSettingsPanel createSettingsPanel(TablesListItem actTable) {
631
        if ( actTable == null ) {
632
            return new UserTableSettingsPanel(null, "", true, this, null);
633
        }
634

    
635
        return actTable.getUserTableSettingsPanel();
636
    }
637

    
638
    protected void setEmptyPanels() {
639
        removeFieldPanels();
640
        add(emptyFieldsPanel);
641
        fieldsPanel = emptyFieldsPanel;
642

    
643
        repaint();
644
    }
645

    
646
    private void removeFieldPanels() {
647
        for ( int i = 0; i < getComponentCount(); i++ ) {
648
            if ( getComponent(i) instanceof UserSelectedFieldsPanel ) {
649
                remove(i);
650
            }
651
        }
652
    }
653

    
654
    public DataStoreParameters[] getParameters() {
655
        try {
656
            TablesListItem[] selected = getSelectedTables();
657
            int count = selected.length;
658
            AbstractDBStoreParameters[] dbParameters = new AbstractDBStoreParameters[count];
659

    
660
            for ( int i = 0; i < count; i++ ) {
661
                TablesListItem item = selected[i];
662

    
663
                dbParameters[i] = getParameterForTable(item);
664
            }
665

    
666
            return dbParameters;// layerArrayToGroup(all_layers, groupName);
667
        } catch (Exception e) {
668
            logger.info("Error while creating jdbc layer: " + e.getMessage(), e);
669
            NotificationManager.addError("Error while loading layer: "
670
                    + e.getMessage(), e);
671
        }
672

    
673
        return null;
674
    }
675

    
676
    /**
677
     * This method process the errors found in a layer
678
     *
679
     * @param lyr
680
     * @param mapControl
681
     */
682
    protected void processErrorsOfLayer(FLayer lyr, MapControl mapControl) {
683
        this.getMapContext().callNewErrorEvent(null);
684
    }
685

    
686
    private void removeSettingsPanels() {
687
        for ( int i = 0; i < getComponentCount(); i++ ) {
688
            if ( getComponent(i) instanceof UserTableSettingsPanel ) {
689
                remove(i);
690
            }
691
        }
692
    }
693

    
694
    protected PrepareContext getPrepareDataStoreContext() {
695
        if ( this.prepareDSContext == null ) {
696
            this.prepareDSContext = new PrepareContext() {
697
                public Window getOwnerWindow() {
698
                    return null;
699
                }
700

    
701
                public IProjection getViewProjection() {
702
                    return WizardDB.this.getMapContext().getProjection();
703
                }
704

    
705
            };
706
        }
707
        return this.prepareDSContext;
708
    }
709

    
710
    @Override
711
    public void close() {
712

    
713
    }
714

    
715
    protected String getLastMessage(Throwable ex) {
716

    
717
        Throwable p = ex;
718
        while ( p.getCause() != null && p.getCause() != p ) {
719
            p = p.getCause();
720
        }
721
        return p.getMessage();
722
    }
723

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