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 |
} |