Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.plugin / org.gvsig.app / org.gvsig.app.mainplugin / src / main / java / org / gvsig / app / extension / copytable / CopyTableExtension.java @ 46629

History | View | Annotate | Download (5.59 KB)

1
package org.gvsig.app.extension.copytable;
2

    
3
import java.awt.event.ActionEvent;
4
import java.awt.event.ActionListener;
5
import javax.swing.JComponent;
6
import javax.swing.SwingUtilities;
7
import org.gvsig.andami.plugins.Extension;
8
import org.gvsig.app.ApplicationLocator;
9
import org.gvsig.tools.dispose.DisposeUtils;
10
import org.gvsig.tools.swing.api.ToolsSwingLocator;
11
import org.gvsig.tools.swing.api.windowmanager.Dialog;
12
import org.gvsig.tools.swing.api.windowmanager.WindowManager;
13
import org.gvsig.tools.swing.api.windowmanager.WindowManager_v2;
14
import org.gvsig.tools.task.SimpleTaskStatus;
15

    
16
/**
17
 *
18
 * @author jjdelcerro
19
 */
20
public class CopyTableExtension extends Extension {
21

    
22
    @Override
23
    public void initialize() {
24
    }
25

    
26
    @Override
27
    public void execute(String actionCommand) {
28
        if( "tools-copytable".equalsIgnoreCase(actionCommand) ) {
29
//            doCopyTable1();
30
            doCopyTable2();
31
        }
32
    }
33

    
34
    @Override
35
    public boolean isEnabled() {
36
        return true;
37
    }
38

    
39
    @Override
40
    public boolean isVisible() {
41
        return true;
42
    }
43

    
44
    private void doCopyTable1() {
45
        WindowManager_v2 windowManager = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
46
        CopyTable1Panel panel = new CopyTable1Panel();
47
        Dialog dialog = windowManager.createDialog(
48
                panel,
49
                "Copy data", 
50
                "Copia datos de una tabla a otra",
51
                WindowManager_v2.BUTTONS_OK_CANCEL
52
        );
53
        dialog.setAutoclose(false);
54
        dialog.setButtonLabel(WindowManager_v2.BUTTON_OK, "Copiar datos");
55
        dialog.setButtonLabel(WindowManager_v2.BUTTON_CANCEL, "Cerrar");
56
        dialog.addActionListener(new ActionListener() {
57
            @Override
58
            public void actionPerformed(ActionEvent e) {
59
                switch( dialog.getAction()) {
60
                    case WindowManager_v2.BUTTON_OK:
61
                        dialog.setButtonEnabled(WindowManager_v2.BUTTON_OK, false);
62
                        CopyTable1Process process = new CopyTable1Process();
63
                        process.copy(
64
                                panel.getSource(), 
65
                                panel.getSourceFieldJoin(), 
66
                                panel.getSourceFilter(), 
67
                                panel.getTarget(), 
68
                                panel.getTargetFieldJoin(), 
69
                                panel.getInsertIfNotExistsTarget(), 
70
                                panel.getUpdateIfExistsInTarget(), 
71
                                panel.getUpdateIfExistsInTargetCondition(), 
72
                                panel.getFields(), 
73
                                panel.getFieldsToUpdate(),
74
                                panel.getStatus()
75
                        );
76
                        break;
77

    
78
                    case WindowManager_v2.BUTTON_CANCEL:
79
                        ((JComponent)dialog).setVisible(false);
80
                        break;
81
                }
82
            }
83
        });
84
        dialog.show(WindowManager.MODE.WINDOW);
85
    }
86

    
87
    private void doCopyTable2() {
88
        WindowManager_v2 windowManager = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
89
        CopyTable2Panel panel = new CopyTable2Panel();
90
        Dialog dialog = windowManager.createDialog(
91
                panel,
92
                "Copy data (Experimental)", 
93
                "Copia datos de una tabla a otra",
94
                WindowManager_v2.BUTTONS_OK_CANCEL
95
        );
96
        dialog.setAutoclose(false);
97
        dialog.setButtonLabel(WindowManager_v2.BUTTON_OK, "Copiar datos");
98
        dialog.setButtonLabel(WindowManager_v2.BUTTON_CANCEL, "Cerrar");
99
        dialog.addActionListener(new ActionListener() {
100
            @Override
101
            public void actionPerformed(ActionEvent e) {
102
                switch( dialog.getAction()) {
103
                    case WindowManager_v2.BUTTON_OK:
104
                        dialog.setButtonEnabled(WindowManager_v2.BUTTON_OK, false);                        
105
                        CopyTable2Process process = CopyTable2Process.createProcess();
106
                        CopyTable2ProcessParameters params = process.createParameters();
107
                        panel.fetch(params);
108
                        panel.addHistory(params);
109
                        process
110
                            .setParameters(params)
111
                            .setStatus(panel.getStatus())
112
                            .setPostProcess(()->{
113
                                postProcess(dialog, process, panel);
114
                                DisposeUtils.dispose(params);
115
                            });
116
                        process.start();
117
                        break;
118

    
119
                    case WindowManager_v2.BUTTON_CANCEL:
120
                        ((JComponent)dialog).setVisible(false);
121
                        break;
122
                }
123
            }
124
        });
125
        dialog.show(WindowManager.MODE.WINDOW);
126
    }
127
    
128
    public void postProcess(Dialog dialog, CopyTable2Process process, CopyTable2Panel panel){
129
        if(SwingUtilities.isEventDispatchThread()){
130
            SwingUtilities.invokeLater(()->{postProcess(dialog, process, panel);});
131
            return;
132
        }
133
        CopyTable2ProcessParameters params = process.getParameters();
134
        ApplicationLocator.getApplicationManager().refreshDocument(params.getTargetStore());
135
        dialog.setButtonEnabled(WindowManager_v2.BUTTON_OK, true);      
136
        SimpleTaskStatus status = process.getStatus();
137
        if(status.isCancelled()){
138
            panel.message("Copia cancelada.");
139
        } else if(!status.isAborted()){
140
            panel.message("Copia completada.");
141
        }
142

    
143
        
144
    }
145

    
146
}