root / branches / v2_0_0_prep / extensions / extDalTransformJoin / src / org / gvsig / project / document / table / gui / JoinWizardController.java @ 31496
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.getDataType())); |
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 |
} |