Statistics
| Revision:

svn-gvsig-desktop / branches / v2_0_0_prep / extensions / extDalTransformJoin / src / org / gvsig / project / document / table / gui / JoinWizardController.java @ 28897

History | View | Annotate | Download (6.24 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.app.join.JoinToolExtension;
15
import org.gvsig.fmap.dal.exception.DataException;
16
import org.gvsig.fmap.dal.exception.ReadException;
17
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
18
import org.gvsig.fmap.dal.feature.FeatureStore;
19
import org.gvsig.project.document.table.FeatureTableDocument;
20

    
21
import com.iver.andami.PluginServices;
22
import com.iver.andami.messages.NotificationManager;
23
import com.iver.cit.gvsig.gui.simpleWizard.SimpleWizard;
24
import com.iver.cit.gvsig.project.documents.table.FieldSelectionModel;
25

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

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

    
36

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

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

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

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

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

    
70
                // create second step (target table)
71
                final TableWizardStep targTableWzrd = new TableWizardStep(wizard.getWizardComponents(), "Title" );
72
                targTableWzrd.getHeaderLbl().setText(PluginServices.getText(this,"Target_table_options"));
73
                targTableWzrd.getTableNameLbl().setText(PluginServices.getText(this,"Target_table_"));
74
                targTableWzrd.getFieldNameLbl().setText(PluginServices.getText(this,"Field_to_use_for_JOIN_"));
75
                targTableWzrd.getFieldPrefixLbl().setText(PluginServices.getText(this,"Field_prefix_"));
76
                targTableWzrd.getTableNameCmb().addItemListener(
77
                                new ItemListener() {
78

    
79
                                        public void itemStateChanged(ItemEvent e) {
80
                                                if (e.getStateChange()==e.SELECTED) {
81
                                                        try {
82
                                                                //tabla
83
                                                                FeatureTableDocument sourcePt = (FeatureTableDocument) srcTableWzrd.getTableNameCmb().getSelectedItem();
84
                                                                FeatureTableDocument targetPt = (FeatureTableDocument) targTableWzrd.getTableNameCmb().getSelectedItem();
85
                                                                targTableWzrd.getFieldPrefixTxt().setText(tableOperations.sanitizeFieldName(targetPt.getName()));
86

    
87
                                                                //?ndice del campo
88
                                                                FeatureStore sds = sourcePt.getStore();
89
                                                                String fieldName = (String) srcTableWzrd.getFieldNameCmb().getSelectedItem();
90
                                                                FeatureAttributeDescriptor fad=sds.getDefaultFeatureType().getAttributeDescriptor(fieldName);
91
//                                                                int fieldIndex = sds.getFieldIndexByName(fieldName);
92
//                                                                if (fieldIndex!=-1) {
93
//                                                                        int type = sds.getFieldType(fieldIndex);
94
                                                                        targTableWzrd.setFieldModel(new FieldSelectionModel(
95
                                                                                        targetPt.getStore(),
96
                                                                                        PluginServices.getText(this, "seleccione_campo_enlace"),
97
                                                                                        fad.getDataType()));
98
//                                                                }
99
//                                                                else {
100
//                                                                        NotificationManager.addError(PluginServices.getText(this, "Error_getting_table_fields")
101
//                                                                                        , new Exception());
102
//                                                                }
103
                                                        } catch (ReadException e2) {
104
                                                                NotificationManager.addError(PluginServices.getText(this, "Error_getting_table_fields"),
105
                                                                                e2);
106
                                                        } catch (DataException e2) {
107
                                                                NotificationManager.addError(PluginServices.getText(this, "Error_getting_table_fields"),
108
                                                                                e2);
109
                                                        }
110
                                                }
111

    
112
                                        }
113
                                }
114
                );
115
                for (int i=0; i<pts.length; i++) {
116
                        targTableWzrd.getTableNameCmb().addItem(pts[i]);
117
                }
118

    
119
                // add steps and configure wizard
120
                wizard.getWizardComponents().addWizardPanel(srcTableWzrd);
121
                wizard.getWizardComponents().addWizardPanel(targTableWzrd);
122
                wizard.getWizardComponents().updateComponents();
123
                wizard.setSize(new Dimension(450, 230));
124
                wizard.getWizardComponents().setFinishAction(new FinishAction(wizard.getWizardComponents()) {
125
                        public void performAction() {
126
                                FeatureTableDocument sourceProjectTable = (FeatureTableDocument) srcTableWzrd.getTableNameCmb().getSelectedItem();
127
                                String field1 = (String) srcTableWzrd.getFieldNameCmb().getSelectedItem();
128
                                String prefix1 = srcTableWzrd.getFieldPrefixTxt().getText();
129
                                if (sourceProjectTable==null || field1==null || prefix1 == null) {
130
                                        NotificationManager.showMessageError(
131
                                                        PluginServices.getText(this, "Join_parameters_are_incomplete"), new InvalidParameterException());
132
                                        return;
133
                                }
134
                                FeatureTableDocument targetProjectTable = (FeatureTableDocument) targTableWzrd.getTableNameCmb().getSelectedItem();
135
                                String field2 = (String) targTableWzrd.getFieldNameCmb().getSelectedItem();
136
                                String prefix2 = targTableWzrd.getFieldPrefixTxt().getText();
137
                                if (targetProjectTable==null || field2==null || prefix2 == null) {
138
                                        NotificationManager.showMessageError(
139
                                                        PluginServices.getText(this, "Join_parameters_are_incomplete"), new InvalidParameterException());
140
                                        return;
141
                                }
142
                                tableOperations.execJoin(sourceProjectTable, field1, prefix1, targetProjectTable, field2, prefix2);
143

    
144
                                PluginServices.getMDIManager().closeWindow(wizard);
145
                        }
146
                }
147
                );
148

    
149
                // show the wizard
150
                PluginServices.getMDIManager().addWindow(wizard);
151
        }
152

    
153
        private class InvalidParameterException extends Exception {
154
        }
155
}