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

History | View | Annotate | Download (23.1 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.Iterator;
32
import java.util.List;
33
import java.util.Map;
34
import java.util.Map.Entry;
35

    
36
import javax.swing.DefaultListModel;
37
import javax.swing.JComboBox;
38
import javax.swing.JOptionPane;
39
import javax.swing.JPanel;
40
import javax.swing.JScrollPane;
41
import javax.swing.ListSelectionModel;
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

    
47
import org.apache.commons.collections.map.HashedMap;
48
import org.cresques.cts.IProjection;
49
import org.slf4j.Logger;
50
import org.slf4j.LoggerFactory;
51

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

    
82
public class WizardDB extends WizardPanel implements ActionListener,
83
        ListSelectionListener {
84

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

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

    
104
    private UserTableSettingsPanel settingsPanel = null;
105
    protected UserTableSettingsPanel emptySettingsPanel = null;
106
    private PrepareContext prepareDSContext;
107

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

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

    
122
            public void ancestorMoved(AncestorEvent ae) {
123
            }
124
        });
125
    }
126

    
127
    public DBServerExplorer getServerExplorer() {
128
        return this.dbExplorer;
129
    }
130

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

    
136
        emptyFieldsPanel = new UserSelectedFieldsPanel(null, true, this);
137
        add(emptyFieldsPanel);
138

    
139
        add(getNamePanel(), null);
140
        loadVectorialDBDatasourcesCombo(null);
141

    
142
        add(getTablesPanel(), null);
143

    
144
        emptySettingsPanel = createSettingsPanel(null);
145
        add(emptySettingsPanel);
146

    
147
    }
148

    
149
    @SuppressWarnings("rawtypes")
150
    private void loadVectorialDBDatasourcesCombo(MyExplorer sel) {
151
        DataManager dataManager = DALLocator.getDataManager();
152
        DataServerExplorerPool explorersPool = dataManager.getDataServerExplorerPool();
153
        Iterator it = explorersPool.iterator();
154
        getDatasourceComboBox().removeAllItems();
155
        getDatasourceComboBox().addItem("");
156
        while ( it.hasNext() ) {
157
            DataServerExplorerPoolEntry entry = (DataServerExplorerPoolEntry) it.next();
158
            MyExplorer myExplorer = new MyExplorer();
159
            myExplorer.setDbExplorerParameters((DBServerExplorerParameters) entry.getExplorerParameters());
160
            myExplorer.setName(entry.getName());
161
            getDatasourceComboBox().addItem(myExplorer);
162
            if ( sel != null && sel.getName().equalsIgnoreCase(myExplorer.getName()) ) {
163
                getDatasourceComboBox().setSelectedItem(myExplorer);
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
        DBStoreParameters 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 = (DBStoreParameters) 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 DBStoreParameters getParameterForTable(TablesListItem table) {
233
        DBStoreParameters 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
            Object selected = datasourceComboBox.getSelectedItem();
386
            if ( selected instanceof MyExplorer ) {
387
                MyExplorer sel_obj = (MyExplorer) selected;
388

    
389
                getDatasourceComboBox().repaint();
390
                dbExplorerParameters = sel_obj.getDbSeverExplorerParameters();
391
                updateTableList(dbExplorerParameters);
392
            }
393

    
394
        } else if ( src == dbButton ) {
395
            MyExplorer sel = addNewConnection();
396

    
397
            if ( sel != null ) {
398
                dbExplorerParameters = sel.getDbSeverExplorerParameters();
399
                loadVectorialDBDatasourcesCombo(sel);
400
                getDatasourceComboBox().setSelectedItem(sel);
401

    
402
            }
403
        }
404

    
405
    }
406

    
407
    @SuppressWarnings({"unchecked", "rawtypes"})
408
    private MyExplorer addNewConnection() {
409
        MyExplorer myExplorer = new MyExplorer();
410
        DBServerExplorerParameters resp = null;
411

    
412
        VectorialDBConnectionParamsDialog newco = new VectorialDBConnectionParamsDialog();
413
        newco.showDialog();
414

    
415
        if ( newco.isOkPressed() ) {
416
            try {
417
                resp = newco.getParameters();
418
            } catch (Exception e) {
419
                showConnectionErrorMessage(e.getMessage());
420
                return null;
421
            }
422
            DataManager dataManager = DALLocator.getDataManager();
423
            DataServerExplorerPool explorersPool = dataManager.getDataServerExplorerPool();
424
            explorersPool.add(newco.getConnectionName(), resp);
425

    
426
//                        SingleVectorialDBConnectionExtension.saveAllToPersistence();
427
            myExplorer.setDbExplorerParameters(resp);
428
            myExplorer.setName(newco.getConnectionName());
429
            return myExplorer;
430
        } else {
431
            return null;
432
        }
433
    }
434

    
435
    protected TablesListItem createTabeListItem(DBStoreParameters param) {
436
        return new TablesListItem(param, this);
437
    }
438

    
439
    /**
440
     * Subclasses of this wizard will return a filtered list
441
     * if necessary
442
     *
443
     * @param explorer
444
     * @return
445
     * @throws DataException
446
     */
447
    protected List getTableList(DBServerExplorer explorer) throws DataException {
448
        return explorer.list();
449
    }
450

    
451
    @SuppressWarnings("rawtypes")
452
    protected void updateTableList(
453
            DBServerExplorerParameters dbSeverExplorerParameters2) {
454
        if ( dbSeverExplorerParameters2 == null ) {
455
            return;
456
        }
457
        DataManager dm = DALLocator.getDataManager();
458
        String err_msg = Messages.getText("connection_error");
459
        try {
460
            dbExplorer = (DBServerExplorer) dm.openServerExplorer(dbSeverExplorerParameters2.getExplorerName(), dbSeverExplorerParameters2);
461

    
462
            List parameters = getTableList(dbExplorer);
463

    
464
            DefaultListModel lmodel = new DefaultListModel();
465

    
466
            Iterator iter = parameters.iterator();
467
            DBStoreParameters param;
468
            int count = 0;
469
            while ( iter.hasNext() ) {
470
                param = (DBStoreParameters) iter.next();
471
                lmodel.addElement(createTabeListItem(param));
472
                count++;
473
            }
474

    
475
            getTablesList().setModel(lmodel);
476
            getTablesScrollPane().setViewportView(tablesList);
477
            tablesScrollPane.updateUI();
478
        } catch (Exception e) {
479
            logger.info("Error while getting table names: " + e.getMessage());
480

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

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

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

    
497
    }
498

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

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

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

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

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

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

    
535
    }
536

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

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

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

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

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

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

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

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

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

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

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

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

    
592
        return dbButton;
593
    }
594

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

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

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

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

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

    
620
        settingsPanel = createSettingsPanel(actTable);
621

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

    
626
        repaint();
627
    }
628

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

    
634
        return actTable.getUserTableSettingsPanel();
635
    }
636

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

    
642
        repaint();
643
    }
644

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

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

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

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

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

    
672
        return null;
673
    }
674

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

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

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

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

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

    
709
    @Override
710
    public void close() {
711

    
712
    }
713

    
714
    protected String getLastMessage(Throwable ex) {
715

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

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