Statistics
| Revision:

root / branches / v2_0_0_prep / extensions / extDalTransformJoin / src / org / gvsig / project / document / table / gui / JoinWizardController.java @ 33331

History | View | Annotate | Download (6.44 KB)

1
/**
2
 *
3
 */
4
package org.gvsig.project.document.table.gui;
5

    
6
import java.awt.Dimension;
7
import java.awt.event.ItemEvent;
8
import java.awt.event.ItemListener;
9

    
10
import javax.swing.ImageIcon;
11

    
12
import jwizardcomponent.FinishAction;
13

    
14
import org.gvsig.andami.PluginServices;
15
import org.gvsig.andami.messages.NotificationManager;
16
import org.gvsig.app.gui.simpleWizard.SimpleWizard;
17
import org.gvsig.app.join.JoinToolExtension;
18
import org.gvsig.app.project.documents.table.TableDocument;
19
import org.gvsig.app.project.documents.table.FieldSelectionModel;
20
import org.gvsig.app.project.documents.table.gui.TableWizardStep;
21
import org.gvsig.fmap.dal.exception.DataException;
22
import org.gvsig.fmap.dal.exception.ReadException;
23
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
24
import org.gvsig.fmap.dal.feature.FeatureStore;
25

    
26

    
27
public class JoinWizardController {
28
        private final JoinToolExtension tableOperations;
29

    
30
        /**
31
         * @param tableOperations
32
         */
33
        public JoinWizardController(JoinToolExtension tableOperations) {
34
                this.tableOperations = tableOperations;
35
        }
36

    
37

    
38
        public void runWizard(TableDocument[] pts) {
39
                // create wizard
40
                ImageIcon logo = PluginServices.getIconTheme().get("table-join");
41
                final SimpleWizard wizard = new SimpleWizard(logo);
42
                wizard.getWindowInfo().setTitle(PluginServices.getText(this, "Table_Join"));
43

    
44
                // create first step (source table)
45
                final TableWizardStep srcTableWzrd = new TableWizardStep(wizard.getWizardComponents(), "Title" );
46
                srcTableWzrd.getHeaderLbl().setText(PluginServices.getText(this,"Source_table_options"));
47
                srcTableWzrd.getTableNameLbl().setText(PluginServices.getText(this,"Source_table_"));
48
                srcTableWzrd.getFieldNameLbl().setText(PluginServices.getText(this,"Field_to_use_for_JOIN_"));
49
                srcTableWzrd.getFieldPrefixLbl().setText(PluginServices.getText(this,"Field_prefix_"));
50
                srcTableWzrd.getTableNameCmb().addItemListener(
51
                                new ItemListener() {
52

    
53
                                        public void itemStateChanged(ItemEvent e) {
54
                                                if (e.getStateChange()==e.SELECTED) {
55
                                                        TableDocument pt = (TableDocument) srcTableWzrd.getTableNameCmb().getSelectedItem();
56

    
57
                                                        srcTableWzrd.setFieldModel(new FieldSelectionModel(
58
                                                                        pt.getStore(),
59
                                                                        PluginServices.getText(this, "seleccione_campo_enlace"),
60
                                                                        -1));
61
                                                        srcTableWzrd.getFieldPrefixTxt().setText(tableOperations.sanitizeFieldName(pt.getName()));
62
                                                }
63

    
64
                                        }
65
                                }
66
                );
67
                for (int i=0; i<pts.length; i++) {
68
                        srcTableWzrd.getTableNameCmb().addItem(pts[i]);
69
                }
70

    
71
                // create second step (target table)
72
                final TableWizardStep targTableWzrd = new TableWizardStep(wizard.getWizardComponents(), "Title" );
73
                targTableWzrd.getHeaderLbl().setText(PluginServices.getText(this,"Target_table_options"));
74
                targTableWzrd.getTableNameLbl().setText(PluginServices.getText(this,"Target_table_"));
75
                targTableWzrd.getFieldNameLbl().setText(PluginServices.getText(this,"Field_to_use_for_JOIN_"));
76
                targTableWzrd.getFieldPrefixLbl().setText(PluginServices.getText(this,"Field_prefix_"));
77
                targTableWzrd.getTableNameCmb().addItemListener(
78
                        new ItemListener() {
79
                                public void itemStateChanged(ItemEvent e) {
80
                                        if (e.getStateChange()==e.SELECTED) 
81
                                                setTrgtWzrdFieldType(srcTableWzrd, targTableWzrd);
82
                                }
83
                        }
84
                );
85
                srcTableWzrd.getFieldNameCmb().addItemListener(new ItemListener() {
86
                        public void itemStateChanged(ItemEvent e) {
87
                                if (e.getStateChange()==e.SELECTED)
88
                                        setTrgtWzrdFieldType(srcTableWzrd,targTableWzrd);
89
                        }
90
                });
91
                for (int i=0; i<pts.length; i++) {
92
                        targTableWzrd.getTableNameCmb().addItem(pts[i]);
93
                }
94

    
95
                // add steps and configure wizard
96
                wizard.getWizardComponents().addWizardPanel(srcTableWzrd);
97
                wizard.getWizardComponents().addWizardPanel(targTableWzrd);
98
                wizard.getWizardComponents().updateComponents();
99
                wizard.setSize(new Dimension(450, 230));
100
                wizard.getWizardComponents().setFinishAction(new FinishAction(wizard.getWizardComponents()) {
101
                        public void performAction() {
102
                                TableDocument sourceProjectTable = (TableDocument) srcTableWzrd.getTableNameCmb().getSelectedItem();
103
                                String field1 = (String) srcTableWzrd.getFieldNameCmb().getSelectedItem();
104
                                String prefix1 = srcTableWzrd.getFieldPrefixTxt().getText();
105
                                if (sourceProjectTable==null || field1==null || prefix1 == null) {
106
                                        NotificationManager.showMessageError(
107
                                                        PluginServices.getText(this, "Join_parameters_are_incomplete"), new InvalidParameterException());
108
                                        return;
109
                                }
110
                                TableDocument targetProjectTable = (TableDocument) targTableWzrd.getTableNameCmb().getSelectedItem();
111
                                String field2 = (String) targTableWzrd.getFieldNameCmb().getSelectedItem();
112
                                String prefix2 = targTableWzrd.getFieldPrefixTxt().getText();
113
                                if (targetProjectTable==null || field2==null || prefix2 == null) {
114
                                        NotificationManager.showMessageError(
115
                                                        PluginServices.getText(this, "Join_parameters_are_incomplete"), new InvalidParameterException());
116
                                        return;
117
                                }
118
                                tableOperations.execJoin(sourceProjectTable, field1, prefix1, targetProjectTable, field2, prefix2);
119

    
120
                                PluginServices.getMDIManager().closeWindow(wizard);
121
                        }
122
                }
123
                );
124

    
125
                // show the wizard
126
                PluginServices.getMDIManager().addWindow(wizard);
127
        }
128
        
129
        private void setTrgtWzrdFieldType(TableWizardStep srcTableWzrd,TableWizardStep targTableWzrd) {
130
                try {
131
                        //tabla
132
                        TableDocument sourcePt = (TableDocument) srcTableWzrd.getTableNameCmb().getSelectedItem();
133
                        TableDocument targetPt = (TableDocument) targTableWzrd.getTableNameCmb().getSelectedItem();
134
                        targTableWzrd.getFieldPrefixTxt().setText(tableOperations.sanitizeFieldName(targetPt.getName()));
135

    
136
                        //?ndice del campo
137
                        FeatureStore sds = sourcePt.getStore();
138
                        String fieldName = (String) srcTableWzrd.getFieldNameCmb().getSelectedItem();
139
                        FeatureAttributeDescriptor fad=sds.getDefaultFeatureType().getAttributeDescriptor(fieldName);
140
//                        int fieldIndex = sds.getFieldIndexByName(fieldName);
141
//                        if (fieldIndex!=-1) {
142
//                                int type = sds.getFieldType(fieldIndex);
143
                                targTableWzrd.setFieldModel(new FieldSelectionModel(
144
                                                targetPt.getStore(),
145
                                                PluginServices.getText(this, "seleccione_campo_enlace"),
146
                                                fad.getType()));
147
//                        }
148
//                        else {
149
//                                NotificationManager.addError(PluginServices.getText(this, "Error_getting_table_fields")
150
//                                                , new Exception());
151
//                        }
152
                } catch (ReadException e2) {
153
                        NotificationManager.addError(PluginServices.getText(this, "Error_getting_table_fields"),
154
                                        e2);
155
                } catch (DataException e2) {
156
                        NotificationManager.addError(PluginServices.getText(this, "Error_getting_table_fields"),
157
                                        e2);
158
                }
159
        }
160

    
161
        private class InvalidParameterException extends Exception {
162
        }
163
}