Revision 47701
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.app/org.gvsig.app.mainplugin/src/main/java/org/gvsig/app/extension/copytable/CopyTable2Panel.java | ||
---|---|---|
17 | 17 |
import javax.swing.ListSelectionModel; |
18 | 18 |
import javax.swing.SwingUtilities; |
19 | 19 |
import javax.swing.event.ChangeEvent; |
20 |
import javax.swing.event.ChangeListener; |
|
21 | 20 |
import javax.swing.event.TreeSelectionEvent; |
22 | 21 |
import javax.swing.table.AbstractTableModel; |
23 | 22 |
import javax.swing.table.DefaultTableColumnModel; |
... | ... | |
87 | 86 |
private BookmarksController bookmarksController; |
88 | 87 |
private HistoryController historyController; |
89 | 88 |
private ExpressionPickerController pickerJoinExpression; |
89 |
private DataSwingManager dataSwingManager; |
|
90 | 90 |
|
91 | 91 |
|
92 | 92 |
private class FeatureAttributeCellEditor extends AbstractCellEditor implements TableCellEditor { |
... | ... | |
163 | 163 |
|
164 | 164 |
private class Row { |
165 | 165 |
String attrname; |
166 |
String attrlabel; |
|
166 | 167 |
String expression; |
167 | 168 |
boolean update; |
168 | 169 |
|
170 |
public Row(String attrlabel, String attrname, String expression, boolean update) { |
|
171 |
this.attrlabel = attrlabel; |
|
172 |
this.attrname = attrname; |
|
173 |
this.expression = expression; |
|
174 |
this.update = update; |
|
175 |
} |
|
176 |
|
|
169 | 177 |
public Object get(int index) { |
170 | 178 |
switch(index) { |
171 | 179 |
case 0: |
172 | 180 |
return update; |
173 | 181 |
case 1: |
174 |
return attrname;
|
|
182 |
return attrlabel;
|
|
175 | 183 |
case 2: |
176 | 184 |
return expression; |
177 | 185 |
default: |
... | ... | |
185 | 193 |
this.update = (boolean) value; |
186 | 194 |
break; |
187 | 195 |
case 1: |
188 |
this.attrname = (String) value;
|
|
196 |
this.attrlabel = (String) value;
|
|
189 | 197 |
break; |
190 | 198 |
case 2: |
191 | 199 |
this.expression = (String) value; |
... | ... | |
194 | 202 |
break; |
195 | 203 |
} |
196 | 204 |
} |
205 |
|
|
206 |
public String getAttrname() { |
|
207 |
return attrname; |
|
208 |
} |
|
209 |
|
|
210 |
public String getExpression() { |
|
211 |
return expression; |
|
212 |
} |
|
213 |
|
|
214 |
public boolean isUpdate() { |
|
215 |
return update; |
|
216 |
} |
|
217 |
|
|
218 |
private void setExpression(String expression) { |
|
219 |
this.expression = expression; |
|
220 |
} |
|
221 |
|
|
222 |
private void setUpdate(boolean update) { |
|
223 |
this.update = update; |
|
224 |
} |
|
225 |
|
|
226 |
private void setAttrname(String name) { |
|
227 |
this.attrname = name; |
|
228 |
this.attrlabel = name; |
|
229 |
} |
|
197 | 230 |
} |
198 | 231 |
|
232 |
|
|
199 | 233 |
public MyTableModel() { |
200 | 234 |
this.rows = new ArrayList<>(); |
201 | 235 |
this.tableType = null; |
202 | 236 |
if( target!=null ) { |
203 | 237 |
this.tableType = target.getDefaultFeatureTypeQuietly(); |
204 | 238 |
for (FeatureAttributeDescriptor targetAttr : tableType) { |
205 |
Row row = new Row(); |
|
206 |
row.attrname = targetAttr.getName(); |
|
207 |
|
|
208 |
row.expression = getSourceExpression(row.attrname); |
|
209 |
if( targetAttr.isComputed()) { |
|
210 |
row.update = false; |
|
211 |
} else { |
|
212 |
row.update = true; |
|
213 |
} |
|
239 |
Row row = new Row( |
|
240 |
getDataSwingManager().getAttributeDescriptorLabel(targetAttr), |
|
241 |
targetAttr.getName(), |
|
242 |
getSourceExpression(targetAttr.getName()), |
|
243 |
!(targetAttr.isComputed()) |
|
244 |
); |
|
214 | 245 |
this.rows.add(row); |
215 | 246 |
} |
216 | 247 |
} |
217 | 248 |
for (Row row : this.rows) { |
218 |
if(row.expression == null){
|
|
249 |
if(row.getExpression() == null){
|
|
219 | 250 |
continue; |
220 | 251 |
} |
221 | 252 |
// Row first = null; |
... | ... | |
224 | 255 |
if(row == row1){ |
225 | 256 |
continue; |
226 | 257 |
} |
227 |
if(StringUtils.equalsIgnoreCase(row.expression, row1.expression)){
|
|
258 |
if(StringUtils.equalsIgnoreCase(row.getExpression(), row1.getExpression())){
|
|
228 | 259 |
// if(first == null){ |
229 | 260 |
// first = row; |
230 | 261 |
// } |
231 | 262 |
dup = true; |
232 |
row1.expression = null;
|
|
263 |
row1.setExpression(null);
|
|
233 | 264 |
} |
234 | 265 |
} |
235 | 266 |
// if (first != null) { |
236 | 267 |
// first.expression = null; |
237 | 268 |
// } |
238 | 269 |
if(dup){ |
239 |
row.expression = null;
|
|
270 |
row.setExpression(null);
|
|
240 | 271 |
} |
241 | 272 |
} |
242 | 273 |
this.columnNames = new String[] { |
... | ... | |
251 | 282 |
}; |
252 | 283 |
} |
253 | 284 |
|
254 |
String getSourceExpression(String targetFieldName){ |
|
285 |
final String getSourceExpression(String targetFieldName){
|
|
255 | 286 |
FeatureType sourceType = source.getDefaultFeatureTypeQuietly(); |
256 | 287 |
ExpressionBuilder expBuilder = source.createExpressionBuilder(); |
257 | 288 |
Integer minDistance = Integer.MAX_VALUE; |
... | ... | |
310 | 341 |
case 2: |
311 | 342 |
return this.rows.get(rowIndex).get(columnIndex); |
312 | 343 |
case 1: |
313 |
FeatureAttributeDescriptor attrdesc = this.tableType.getAttributeDescriptor(this.rows.get(rowIndex).attrname);
|
|
344 |
FeatureAttributeDescriptor attrdesc = this.tableType.getAttributeDescriptor(this.rows.get(rowIndex).getAttrname());
|
|
314 | 345 |
return attrdesc; |
315 | 346 |
default: |
316 | 347 |
return null; |
... | ... | |
363 | 394 |
this.initComponents(); |
364 | 395 |
} |
365 | 396 |
|
397 |
private DataSwingManager getDataSwingManager() { |
|
398 |
if( this.dataSwingManager==null ) { |
|
399 |
this.dataSwingManager = DALSwingLocator.getSwingManager(); |
|
400 |
} |
|
401 |
return this.dataSwingManager; |
|
402 |
} |
|
403 |
|
|
366 | 404 |
private void initComponents() { |
367 |
DataSwingManager dataSwingManager = DALSwingLocator.getSwingManager(); |
|
368 | 405 |
ExpressionEvaluatorSwingManager expressionSwingManager = ExpressionEvaluatorSwingLocator.getManager(); |
369 | 406 |
this.status = ToolsSwingLocator.getTaskStatusSwingManager().createTaskStatusController(lblStatusLabel, lblStatusMessage, pbStatus); |
370 | 407 |
|
... | ... | |
391 | 428 |
this.historyController.addActionListener(bookmarksAndHistoryListener); |
392 | 429 |
this.bookmarksController.addActionListener(bookmarksAndHistoryListener); |
393 | 430 |
|
394 |
this.treeSourceTableController = dataSwingManager.createStoresRepositoryController(this.treeSourceTable);
|
|
431 |
this.treeSourceTableController = getDataSwingManager().createStoresRepositoryController(this.treeSourceTable);
|
|
395 | 432 |
this.treeSourceTable.addTreeSelectionListener((TreeSelectionEvent e) -> { |
396 | 433 |
doChangeSource(); |
397 | 434 |
doUpdateComponents(); |
398 | 435 |
}); |
399 |
this.pickerSourceFieldJoin = dataSwingManager.createAttributeDescriptorPickerController(cboSourceJoinField);
|
|
436 |
this.pickerSourceFieldJoin = getDataSwingManager().createAttributeDescriptorPickerController(cboSourceJoinField);
|
|
400 | 437 |
this.pickerSourceFieldJoin.setAllowNull(true); |
401 | 438 |
this.pickerSourceFieldJoin.addChangeListener((ChangeEvent e) -> { |
402 | 439 |
doUpdateComponents(); |
403 | 440 |
}); |
404 | 441 |
|
405 |
this.treeTargetTableController = dataSwingManager.createStoresRepositoryController(this.treeTargetTable);
|
|
442 |
this.treeTargetTableController = getDataSwingManager().createStoresRepositoryController(this.treeTargetTable);
|
|
406 | 443 |
this.treeTargetTable.addTreeSelectionListener((TreeSelectionEvent e) -> { |
407 | 444 |
doChangeTarget(); |
408 | 445 |
doUpdateComponents(); |
409 | 446 |
}); |
410 |
this.pickerTargetFieldJoin = dataSwingManager.createAttributeDescriptorPickerController(cboTargetJoinField);
|
|
447 |
this.pickerTargetFieldJoin = getDataSwingManager().createAttributeDescriptorPickerController(cboTargetJoinField);
|
|
411 | 448 |
this.pickerTargetFieldJoin.setAllowNull(true); |
412 | 449 |
this.pickerTargetFieldJoin.addChangeListener((ChangeEvent e) -> { |
413 | 450 |
doUpdateComponents(); |
... | ... | |
467 | 504 |
|
468 | 505 |
column = new TableColumn(); |
469 | 506 |
column.setHeaderValue("Campo destino"); |
470 |
column.setCellRenderer(dataSwingManager.createDefaultFeatureAttributeTableCellRenderer());
|
|
507 |
column.setCellRenderer(getDataSwingManager().createDefaultFeatureAttributeTableCellRenderer());
|
|
471 | 508 |
column.setCellEditor(null); |
472 | 509 |
column.setResizable(true); |
473 | 510 |
column.setModelIndex(1); |
... | ... | |
626 | 663 |
} |
627 | 664 |
this.source = theSource; |
628 | 665 |
|
629 |
DataSwingManager dataSwingManager = DALSwingLocator.getSwingManager(); |
|
630 |
dataSwingManager.resetExpressionBuilder(this.pickerTargetUpdateExpression.getConfig()); |
|
631 |
dataSwingManager.resetExpressionBuilder(this.pickerJoinExpression.getConfig()); |
|
632 |
dataSwingManager.addToExpressionBuilder(this.pickerTargetUpdateExpression.getConfig(), this.source, "source"); |
|
633 |
dataSwingManager.addToExpressionBuilder(this.pickerJoinExpression.getConfig(), this.source, "source", true); |
|
666 |
getDataSwingManager().resetExpressionBuilder(this.pickerTargetUpdateExpression.getConfig()); |
|
667 |
getDataSwingManager().resetExpressionBuilder(this.pickerJoinExpression.getConfig()); |
|
668 |
getDataSwingManager().addToExpressionBuilder(this.pickerTargetUpdateExpression.getConfig(), this.source, "source"); |
|
669 |
getDataSwingManager().addToExpressionBuilder(this.pickerJoinExpression.getConfig(), this.source, "source", true); |
|
634 | 670 |
|
635 | 671 |
this.pickerSourceFieldJoin.setFeatureType(this.source.getDefaultFeatureTypeQuietly()); |
636 | 672 |
try { |
... | ... | |
641 | 677 |
|
642 | 678 |
if( this.target!=null ) { |
643 | 679 |
this.tableFields.setModel(new MyTableModel()); |
644 |
dataSwingManager.addToExpressionBuilder(this.pickerTargetUpdateExpression.getConfig(), this.target, "target");
|
|
645 |
dataSwingManager.addToExpressionBuilder(this.pickerJoinExpression.getConfig(), this.target, "target");
|
|
680 |
getDataSwingManager().addToExpressionBuilder(this.pickerTargetUpdateExpression.getConfig(), this.target, "target");
|
|
681 |
getDataSwingManager().addToExpressionBuilder(this.pickerJoinExpression.getConfig(), this.target, "target");
|
|
646 | 682 |
} |
647 | 683 |
} |
648 | 684 |
|
... | ... | |
655 | 691 |
DisposeUtils.disposeQuietly(this.target); |
656 | 692 |
} |
657 | 693 |
this.target = theTarget; |
658 |
DataSwingManager dataSwingManager = DALSwingLocator.getSwingManager(); |
|
659 |
dataSwingManager.resetExpressionBuilder(this.pickerTargetUpdateExpression.getConfig()); |
|
660 |
dataSwingManager.resetExpressionBuilder(this.pickerJoinExpression.getConfig()); |
|
661 |
dataSwingManager.addToExpressionBuilder(this.pickerTargetUpdateExpression.getConfig(), this.target, "target"); |
|
662 |
dataSwingManager.addToExpressionBuilder(this.pickerJoinExpression.getConfig(), this.target, "target"); |
|
694 |
getDataSwingManager().resetExpressionBuilder(this.pickerTargetUpdateExpression.getConfig()); |
|
695 |
getDataSwingManager().resetExpressionBuilder(this.pickerJoinExpression.getConfig()); |
|
696 |
getDataSwingManager().addToExpressionBuilder(this.pickerTargetUpdateExpression.getConfig(), this.target, "target"); |
|
697 |
getDataSwingManager().addToExpressionBuilder(this.pickerJoinExpression.getConfig(), this.target, "target"); |
|
663 | 698 |
|
664 | 699 |
this.pickerTargetFieldJoin.setFeatureType(this.target.getDefaultFeatureTypeQuietly()); |
665 | 700 |
try { |
... | ... | |
670 | 705 |
|
671 | 706 |
if( this.source!=null ) { |
672 | 707 |
this.tableFields.setModel(new MyTableModel()); |
673 |
dataSwingManager.addToExpressionBuilder(this.pickerTargetUpdateExpression.getConfig(), this.source, "source");
|
|
674 |
dataSwingManager.addToExpressionBuilder(this.pickerJoinExpression.getConfig(), this.source, "source", true);
|
|
708 |
getDataSwingManager().addToExpressionBuilder(this.pickerTargetUpdateExpression.getConfig(), this.source, "source");
|
|
709 |
getDataSwingManager().addToExpressionBuilder(this.pickerJoinExpression.getConfig(), this.source, "source", true);
|
|
675 | 710 |
} |
676 | 711 |
} |
677 | 712 |
|
... | ... | |
767 | 802 |
MyTableModel fieldsModel = new MyTableModel(); |
768 | 803 |
this.tableFields.setModel(fieldsModel); |
769 | 804 |
for (MyTableModel.Row row : fieldsModel.rows) { |
770 |
ProcessFieldParameters paramfield = params.get(row.attrname);
|
|
771 |
row.attrname = paramfield.getName();
|
|
805 |
ProcessFieldParameters paramfield = params.get(row.getAttrname());
|
|
806 |
row.setAttrname(paramfield.getName());
|
|
772 | 807 |
Expression expression = paramfield.getExpression(); |
773 | 808 |
if (expression != null) { |
774 |
row.expression = expression.getPhrase();
|
|
809 |
row.setExpression(expression.getPhrase());
|
|
775 | 810 |
} else { |
776 |
row.expression = null;
|
|
811 |
row.setExpression(null);
|
|
777 | 812 |
} |
778 |
row.update = paramfield.isCopyThisFieldActive();
|
|
813 |
row.setUpdate(paramfield.isCopyThisFieldActive());
|
|
779 | 814 |
} |
780 | 815 |
|
781 | 816 |
//Options |
... | ... | |
840 | 875 |
MyTableModel model = (MyTableModel) this.tableFields.getModel(); |
841 | 876 |
for (MyTableModel.Row row : model) { |
842 | 877 |
Expression exp = null; |
843 |
if( org.apache.commons.lang.StringUtils.isNotBlank(row.expression)) {
|
|
844 |
exp = ExpressionUtils.createExpression(row.expression);
|
|
878 |
if( org.apache.commons.lang.StringUtils.isNotBlank(row.getExpression())) {
|
|
879 |
exp = ExpressionUtils.createExpression(row.getExpression());
|
|
845 | 880 |
} |
846 |
params.add(row.attrname, row.update, exp);
|
|
881 |
params.add(row.getAttrname(), row.isUpdate(), exp);
|
|
847 | 882 |
} |
848 | 883 |
} |
849 | 884 |
|
Also available in: Unified diff