root / branches / v2_0_0_prep / extensions / extDalTransformJoin / src / org / gvsig / app / join / daltransform / SelectParametersWizardPanel.java @ 38552
History | View | Annotate | Download (10.6 KB)
1 | 28897 | jpiera | /* gvSIG. Geographic Information System of the Valencian Government
|
---|---|---|---|
2 | *
|
||
3 | * Copyright (C) 2007-2008 Infrastructures and Transports Department
|
||
4 | * of the Valencian Government (CIT)
|
||
5 | *
|
||
6 | * This program is free software; you can redistribute it and/or
|
||
7 | * modify it under the terms of the GNU General Public License
|
||
8 | * as published by the Free Software Foundation; either version 2
|
||
9 | * of the License, or (at your option) any later version.
|
||
10 | *
|
||
11 | * This program is distributed in the hope that it will be useful,
|
||
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
14 | * GNU General Public License for more details.
|
||
15 | *
|
||
16 | * You should have received a copy of the GNU General Public License
|
||
17 | * along with this program; if not, write to the Free Software
|
||
18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||
19 | * MA 02110-1301, USA.
|
||
20 | *
|
||
21 | */
|
||
22 | |||
23 | /*
|
||
24 | * AUTHORS (In addition to CIT):
|
||
25 | * 2009 {Iver T.I.} {Task}
|
||
26 | */
|
||
27 | |||
28 | package org.gvsig.app.join.daltransform; |
||
29 | |||
30 | 38552 | jldominguez | import java.awt.event.ActionEvent; |
31 | import java.awt.event.ActionListener; |
||
32 | import java.util.ArrayList; |
||
33 | |||
34 | import javax.swing.JOptionPane; |
||
35 | |||
36 | import org.slf4j.Logger; |
||
37 | import org.slf4j.LoggerFactory; |
||
38 | |||
39 | 29627 | jpiera | import org.gvsig.andami.PluginServices; |
40 | 38552 | jldominguez | import org.gvsig.app.ApplicationLocator; |
41 | import org.gvsig.app.join.utils.TransformUtils; |
||
42 | 35520 | nfrancisco | import org.gvsig.daltransform.swing.DataTransformWizardPanel; |
43 | import org.gvsig.daltransform.swing.impl.AbstractDataTransformWizardPanel; |
||
44 | import org.gvsig.daltransform.swing.impl.components.FeatureTypeAttributesCombo; |
||
45 | import org.gvsig.daltransform.swing.impl.components.FeatureTypeAttributesList; |
||
46 | 28897 | jpiera | import org.gvsig.fmap.dal.exception.DataException; |
47 | 38552 | jldominguez | import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor; |
48 | 28897 | jpiera | import org.gvsig.fmap.dal.feature.FeatureStore; |
49 | 38552 | jldominguez | import org.gvsig.fmap.dal.feature.FeatureType; |
50 | import org.gvsig.i18n.Messages; |
||
51 | 28897 | jpiera | |
52 | |||
53 | /**
|
||
54 | * @author <a href="mailto:jpiera@gvsig.org">Jorge Piera</a>
|
||
55 | */
|
||
56 | 38552 | jldominguez | public class SelectParametersWizardPanel extends AbstractDataTransformWizardPanel |
57 | implements DataTransformWizardPanel, ActionListener{ |
||
58 | |||
59 | private static Logger logger = |
||
60 | LoggerFactory.getLogger(SelectParametersWizardPanel.class); |
||
61 | |||
62 | 28897 | jpiera | private javax.swing.JLabel attributesLabel;
|
63 | private FeatureTypeAttributesList attributesList;
|
||
64 | private javax.swing.JScrollPane attributesScroll;
|
||
65 | private FeatureTypeAttributesCombo key1Combo;
|
||
66 | private javax.swing.JLabel key1Label;
|
||
67 | 38552 | jldominguez | private FeatureTypeAttributesCombo key2_Combo;
|
68 | 28897 | jpiera | private javax.swing.JLabel key2Label;
|
69 | private javax.swing.JLabel prefix1Label;
|
||
70 | private javax.swing.JTextField prefix1Text;
|
||
71 | private javax.swing.JLabel prefix2Label;
|
||
72 | private javax.swing.JTextField prefix2Text;
|
||
73 | 38552 | jldominguez | |
74 | private FeatureStore secondFeatStore = null; |
||
75 | 28897 | jpiera | |
76 | /**
|
||
77 | * @param featureTransformWizardModel
|
||
78 | */
|
||
79 | 29164 | jpiera | public SelectParametersWizardPanel() {
|
80 | super();
|
||
81 | 28897 | jpiera | initComponents(); |
82 | initLabels(); |
||
83 | } |
||
84 | |||
85 | private void initLabels(){ |
||
86 | key1Label.setText(PluginServices.getText(this,"join_first_key")); |
||
87 | key2Label.setText(PluginServices.getText(this,"join_second_key")); |
||
88 | prefix1Label.setText(PluginServices.getText(this,"join_first_prefix")); |
||
89 | prefix2Label.setText(PluginServices.getText(this,"join_second_prefix")); |
||
90 | attributesLabel.setText(PluginServices.getText(this,"join_select_attributes")); |
||
91 | } |
||
92 | |||
93 | private void initComponents() { |
||
94 | java.awt.GridBagConstraints gridBagConstraints; |
||
95 | |||
96 | prefix2Text = new javax.swing.JTextField();
|
||
97 | 38552 | jldominguez | key2_Combo = new FeatureTypeAttributesCombo();
|
98 | 28897 | jpiera | prefix1Text = new javax.swing.JTextField();
|
99 | key1Label = new javax.swing.JLabel();
|
||
100 | 38552 | jldominguez | |
101 | 28897 | jpiera | key1Combo = new FeatureTypeAttributesCombo();
|
102 | 38552 | jldominguez | // listen to changes in first combo
|
103 | // we'll update second combo leaving
|
||
104 | // fields of same type
|
||
105 | key1Combo.addActionListener(this);
|
||
106 | |||
107 | 28897 | jpiera | key2Label = new javax.swing.JLabel();
|
108 | prefix1Label = new javax.swing.JLabel();
|
||
109 | prefix2Label = new javax.swing.JLabel();
|
||
110 | attributesLabel = new javax.swing.JLabel();
|
||
111 | attributesScroll = new javax.swing.JScrollPane();
|
||
112 | attributesList = new FeatureTypeAttributesList();
|
||
113 | |||
114 | setLayout(new java.awt.GridBagLayout());
|
||
115 | gridBagConstraints = new java.awt.GridBagConstraints();
|
||
116 | gridBagConstraints.gridx = 0;
|
||
117 | gridBagConstraints.gridy = 7;
|
||
118 | gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; |
||
119 | gridBagConstraints.weightx = 1.0;
|
||
120 | gridBagConstraints.insets = new java.awt.Insets(2, 2, 3, 2); |
||
121 | add(prefix2Text, gridBagConstraints); |
||
122 | |||
123 | gridBagConstraints = new java.awt.GridBagConstraints();
|
||
124 | gridBagConstraints.gridx = 0;
|
||
125 | gridBagConstraints.gridy = 3;
|
||
126 | gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; |
||
127 | gridBagConstraints.weightx = 1.0;
|
||
128 | gridBagConstraints.insets = new java.awt.Insets(2, 2, 3, 2); |
||
129 | 38552 | jldominguez | add(key2_Combo, gridBagConstraints); |
130 | 28897 | jpiera | gridBagConstraints = new java.awt.GridBagConstraints();
|
131 | gridBagConstraints.gridx = 0;
|
||
132 | gridBagConstraints.gridy = 5;
|
||
133 | gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; |
||
134 | gridBagConstraints.weightx = 1.0;
|
||
135 | gridBagConstraints.insets = new java.awt.Insets(2, 2, 3, 2); |
||
136 | add(prefix1Text, gridBagConstraints); |
||
137 | |||
138 | key1Label.setText("jLabel1");
|
||
139 | gridBagConstraints = new java.awt.GridBagConstraints();
|
||
140 | gridBagConstraints.gridx = 0;
|
||
141 | gridBagConstraints.gridy = 0;
|
||
142 | gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; |
||
143 | gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); |
||
144 | add(key1Label, gridBagConstraints); |
||
145 | |||
146 | gridBagConstraints = new java.awt.GridBagConstraints();
|
||
147 | gridBagConstraints.gridx = 0;
|
||
148 | gridBagConstraints.gridy = 1;
|
||
149 | gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; |
||
150 | gridBagConstraints.weightx = 1.0;
|
||
151 | gridBagConstraints.insets = new java.awt.Insets(2, 2, 3, 2); |
||
152 | add(key1Combo, gridBagConstraints); |
||
153 | |||
154 | key2Label.setText("jLabel2");
|
||
155 | gridBagConstraints = new java.awt.GridBagConstraints();
|
||
156 | gridBagConstraints.gridx = 0;
|
||
157 | gridBagConstraints.gridy = 2;
|
||
158 | gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; |
||
159 | gridBagConstraints.insets = new java.awt.Insets(3, 2, 2, 2); |
||
160 | add(key2Label, gridBagConstraints); |
||
161 | |||
162 | prefix1Label.setText("jLabel1");
|
||
163 | gridBagConstraints = new java.awt.GridBagConstraints();
|
||
164 | gridBagConstraints.gridx = 0;
|
||
165 | gridBagConstraints.gridy = 4;
|
||
166 | gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; |
||
167 | gridBagConstraints.insets = new java.awt.Insets(3, 2, 2, 2); |
||
168 | add(prefix1Label, gridBagConstraints); |
||
169 | |||
170 | prefix2Label.setText("jLabel2");
|
||
171 | gridBagConstraints = new java.awt.GridBagConstraints();
|
||
172 | gridBagConstraints.gridx = 0;
|
||
173 | gridBagConstraints.gridy = 6;
|
||
174 | gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; |
||
175 | gridBagConstraints.insets = new java.awt.Insets(3, 2, 2, 2); |
||
176 | add(prefix2Label, gridBagConstraints); |
||
177 | |||
178 | attributesLabel.setText("attributesLabel");
|
||
179 | gridBagConstraints = new java.awt.GridBagConstraints();
|
||
180 | gridBagConstraints.gridx = 0;
|
||
181 | gridBagConstraints.gridy = 8;
|
||
182 | gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; |
||
183 | gridBagConstraints.insets = new java.awt.Insets(3, 2, 2, 2); |
||
184 | add(attributesLabel, gridBagConstraints); |
||
185 | |||
186 | attributesScroll.setViewportView(attributesList); |
||
187 | |||
188 | gridBagConstraints = new java.awt.GridBagConstraints();
|
||
189 | gridBagConstraints.gridx = 0;
|
||
190 | gridBagConstraints.gridy = 9;
|
||
191 | gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; |
||
192 | gridBagConstraints.weightx = 1.0;
|
||
193 | gridBagConstraints.weighty = 1.0;
|
||
194 | gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); |
||
195 | add(attributesScroll, gridBagConstraints); |
||
196 | } |
||
197 | |||
198 | /**
|
||
199 | * @return
|
||
200 | */
|
||
201 | public String getKeyAttr1() { |
||
202 | return key1Combo.getSelectedFeatureAttributeDescriptor().getName();
|
||
203 | } |
||
204 | |||
205 | /**
|
||
206 | * @return
|
||
207 | */
|
||
208 | public String getkeyAtrr2() { |
||
209 | 38552 | jldominguez | return key2_Combo.getSelectedFeatureAttributeDescriptor().getName();
|
210 | 28897 | jpiera | } |
211 | |||
212 | /**
|
||
213 | * @return
|
||
214 | */
|
||
215 | public String getPrefix1() { |
||
216 | return prefix1Text.getText();
|
||
217 | } |
||
218 | |||
219 | /**
|
||
220 | * @return
|
||
221 | */
|
||
222 | public String getPrefix2() { |
||
223 | return prefix2Text.getText();
|
||
224 | } |
||
225 | |||
226 | /**
|
||
227 | * @return
|
||
228 | */
|
||
229 | public String[] getAttributes() { |
||
230 | return attributesList.getAttributesName();
|
||
231 | } |
||
232 | |||
233 | /**
|
||
234 | * @param selectedFeatureStore
|
||
235 | * @throws DataException
|
||
236 | */
|
||
237 | public void updateFeatureStores(FeatureStore selectedFeatureStore) throws DataException { |
||
238 | 38552 | jldominguez | secondFeatStore = selectedFeatureStore; |
239 | 28897 | jpiera | key1Combo.addFeatureAttributes(getFeatureStore().getDefaultFeatureType()); |
240 | attributesList.addFeatureAttributes(selectedFeatureStore.getDefaultFeatureType()); |
||
241 | 38552 | jldominguez | |
242 | if (key1Combo.getItemCount() == 0) { |
||
243 | |||
244 | String _msg =
|
||
245 | Messages.getText("_First_table_has_no_fields");
|
||
246 | String _tit = Messages.getText("_Join"); |
||
247 | |||
248 | JOptionPane.showMessageDialog(
|
||
249 | this, _msg, _tit,
|
||
250 | JOptionPane.ERROR_MESSAGE);
|
||
251 | |||
252 | getDataTransformWizard().setApplicable(false);
|
||
253 | } else {
|
||
254 | key1Combo.setSelectedIndex(0);
|
||
255 | } |
||
256 | 28897 | jpiera | } |
257 | 38552 | jldominguez | |
258 | |||
259 | /**
|
||
260 | * Listen to changes in first combo box (key1)
|
||
261 | */
|
||
262 | public void actionPerformed(ActionEvent e) { |
||
263 | |||
264 | Object src = e.getSource();
|
||
265 | if (src == key1Combo
|
||
266 | && key1Combo != null
|
||
267 | && key2_Combo != null
|
||
268 | && secondFeatStore != null) {
|
||
269 | |||
270 | FeatureAttributeDescriptor att = |
||
271 | key1Combo.getSelectedFeatureAttributeDescriptor(); |
||
272 | if (att != null) { |
||
273 | |||
274 | int the_type = att.getType();
|
||
275 | key2_Combo.removeAllItems(); |
||
276 | FeatureType ft = null;
|
||
277 | |||
278 | try {
|
||
279 | ft = secondFeatStore.getDefaultFeatureType(); |
||
280 | } catch (DataException de) {
|
||
281 | logger.info("While getting feat type: " + de.getMessage());
|
||
282 | getDataTransformWizard().setApplicable(false);
|
||
283 | ApplicationLocator.getManager().message( |
||
284 | Messages.getText("_Error_getting_attributes"),
|
||
285 | JOptionPane.ERROR_MESSAGE);
|
||
286 | return;
|
||
287 | } |
||
288 | |||
289 | ArrayList<Integer> comparable_types = |
||
290 | TransformUtils.getComparableDataTypes(ft, the_type); |
||
291 | |||
292 | if (key2_Combo.addFeatureAttributes(ft, comparable_types) == 0) { |
||
293 | getDataTransformWizard().setApplicable(false);
|
||
294 | |||
295 | String _msg =
|
||
296 | Messages.getText("_No_compatible_field_in_second_table");
|
||
297 | String _tit = Messages.getText("_Join"); |
||
298 | |||
299 | JOptionPane.showMessageDialog(
|
||
300 | this, _msg, _tit,
|
||
301 | JOptionPane.ERROR_MESSAGE);
|
||
302 | } else {
|
||
303 | getDataTransformWizard().setApplicable(true);
|
||
304 | // JOptionPane.showMessageDialog(this, "(2) OK !!");
|
||
305 | } |
||
306 | } |
||
307 | } |
||
308 | |||
309 | } |
||
310 | 28897 | jpiera | } |