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 / databaseworkspace / ConnectToDatabaseWorkspacePanel.java @ 44308

History | View | Annotate | Download (3.67 KB)

1
package org.gvsig.geodb.databaseworkspace;
2

    
3
import javax.swing.JComponent;
4
import javax.swing.event.ChangeEvent;
5
import javax.swing.event.ChangeListener;
6
import org.apache.commons.lang.StringUtils;
7
import org.gvsig.fmap.dal.DALLocator;
8
import org.gvsig.fmap.dal.DataManager;
9
import org.gvsig.fmap.dal.DatabaseWorkspaceManager;
10
import static org.gvsig.fmap.dal.DatabaseWorkspaceManager.CONFIG_NAME_STORESREPOSITORYID;
11
import static org.gvsig.fmap.dal.DatabaseWorkspaceManager.CONFIG_NAME_STORESREPOSITORYLABEL;
12
import org.gvsig.fmap.dal.StoresRepository;
13
import org.gvsig.fmap.dal.store.jdbc.JDBCServerExplorerParameters;
14
import org.gvsig.fmap.dal.swing.DALSwingLocator;
15
import org.gvsig.tools.swing.api.Component;
16
import org.gvsig.tools.swing.api.pickercontroller.PickerController;
17
import org.gvsig.tools.swing.api.windowmanager.Dialog;
18
import org.gvsig.tools.swing.api.windowmanager.WindowManager_v2;
19

    
20
/**
21
 *
22
 * @author jjdelcerro
23
 */
24
public class ConnectToDatabaseWorkspacePanel 
25
        extends ConnectToDatabaseWorkspacePanelView
26
        implements Component
27
    {
28

    
29
    private Dialog dialog;
30
    private PickerController<JDBCServerExplorerParameters> connectionPicker;
31

    
32
    public ConnectToDatabaseWorkspacePanel() {
33
        this.initComponents();
34
    }
35
    
36
    public boolean connect() {
37
        JDBCServerExplorerParameters conn = getConnection();
38
        if( conn == null ) {
39
            return false;
40
        }
41
        DataManager dataManager = DALLocator.getDataManager();
42
        DatabaseWorkspaceManager workspace = dataManager.createDatabaseWorkspaceManager(conn);
43
        StoresRepository repo = workspace.getStoresRepository();
44
        dataManager.getStoresRepository().addRepository(repo);
45
        return true;
46
    }
47

    
48
    private void initComponents() {
49
        this.connectionPicker = DALSwingLocator.getSwingManager().createJDBCConnectionPickerController(
50
                this.cboConnection,
51
                this.btnConnection
52
        );
53
        this.connectionPicker.addChangeListener(new ChangeListener() {
54
            @Override
55
            public void stateChanged(ChangeEvent e) {
56
                doUpdateStoresRepositoryInfo();
57
            }
58
        });
59
        doUpdateStoresRepositoryInfo();
60
    }
61

    
62
    @Override
63
    public JComponent asJComponent() {
64
        return this;
65
    }
66

    
67
    public JDBCServerExplorerParameters getConnection() {
68
        JDBCServerExplorerParameters conn = this.connectionPicker.get();
69
        if (conn == null) {
70
            return null;
71
        }
72
        DataManager dataManager = DALLocator.getDataManager();
73
        DatabaseWorkspaceManager workspace = dataManager.createDatabaseWorkspaceManager(conn);
74
        if( !workspace.isValidStoresRepository() ) {
75
            return null;
76
        }
77
        return conn;
78
    }
79

    
80
    private void doUpdateEnableComponents() {
81
        boolean theEnabled = this.getConnection() != null;
82
        if( dialog!=null ) {
83
            this.dialog.setButtonEnabled(WindowManager_v2.BUTTONS_OK, theEnabled);
84
        }
85
    }
86
    private void doUpdateStoresRepositoryInfo() {
87
        if( this.getConnection()==null ) {
88
            return;
89
        }
90
        DataManager dataManager = DALLocator.getDataManager();
91
        DatabaseWorkspaceManager workspace = dataManager.createDatabaseWorkspaceManager(getConnection());
92
        String id = workspace.get(CONFIG_NAME_STORESREPOSITORYID);
93
        String label = workspace.get(CONFIG_NAME_STORESREPOSITORYLABEL);
94
        this.txtID.setText(StringUtils.defaultIfBlank(id, ""));
95
        this.txtLabel.setText(StringUtils.defaultIfBlank(label, ""));
96
        
97
        this.doUpdateEnableComponents();
98
    }
99
    
100
    
101
    void setDialog(Dialog dialog) {
102
       this.dialog = dialog;
103
       this.doUpdateEnableComponents();
104
    }
105
    
106
}