Revision 3008 trunk/extensions/extGeoProcessing/src/com/iver/gvsig/geoprocessing/gui/GeoProcessingPanel.java
GeoProcessingPanel.java | ||
---|---|---|
988 | 988 |
String layerToClipName = (String)((JComboBox)geoProcessingClipPanel.getComponent(0)).getSelectedItem(); |
989 | 989 |
FLayer layerToClip = layers.getLayer(layerToClipName); |
990 | 990 |
boolean selected = false; |
991 |
//if (((JCheckBox)geoProcessingClipPanel.getComponent(1)).isSelected()) selected = true;
|
|
991 |
if (((JCheckBox)geoProcessingClipPanel.getComponent(1)).isSelected()) selected = true; |
|
992 | 992 |
Geometry[] geometriesToClip = getJtsGeometries(layerToClip, selected); |
993 | 993 |
String clippingLayerName = (String)((JComboBox)geoProcessingClipPanel.getComponent(3)).getSelectedItem(); |
994 | 994 |
FLayer clippingLayer = layers.getLayer(clippingLayerName); |
995 |
//if (((JCheckBox)geoProcessingClipPanel.getComponent(5)).isSelected()) selected = true;
|
|
995 |
if (((JCheckBox)geoProcessingClipPanel.getComponent(5)).isSelected()) selected = true; |
|
996 | 996 |
Geometry[] clippingGeometries = getJtsGeometries(clippingLayer, selected); |
997 | 997 |
AlphanumericData lyr = (AlphanumericData)layerToClip; |
998 | 998 |
SelectableDataSource sds; |
... | ... | |
1001 | 1001 |
ds = lyr.getRecordset(); |
1002 | 1002 |
sds = lyr.getRecordset(); |
1003 | 1003 |
// Tener en cuenta que podemos estar trabajando solo con una selecci?n |
1004 |
//FBitSet fBitSet = ((Selectable)lyr).getSelection(); |
|
1004 |
FBitSet fBitSet = sds.getSelection(); |
|
1005 |
// Clono porque preguntarle al FBitSet si est? lleno es una putada ... |
|
1006 |
FBitSet otherFBitSet = (FBitSet)fBitSet.clone(); |
|
1007 |
if (otherFBitSet.cardinality()==0) otherFBitSet.set(0, (int)sds.getRowCount()); |
|
1008 |
Value[][] selectedValues = new Value[otherFBitSet.cardinality()][ds.getFieldCount()]; |
|
1009 |
int l=0; |
|
1010 |
for (int i=0;i<ds.getRowCount();i++) { |
|
1011 |
if (otherFBitSet.get(i)) { |
|
1012 |
selectedValues[l] = ds.getRow(i); |
|
1013 |
l++; |
|
1014 |
} |
|
1015 |
} |
|
1005 | 1016 |
String[] fieldNames = new String[sds.getFieldCount()-1]; |
1006 | 1017 |
int[] fieldTypes = new int[sds.getFieldCount()-1]; |
1007 | 1018 |
for (int i = 0; i < sds.getFieldCount()-1; i++) { |
... | ... | |
1025 | 1036 |
geometriesClipped.add(geometryToClip.intersection(clippingGeometry)); |
1026 | 1037 |
Value[] row = new Value[fieldNames.length+1]; // +1 porque faltaba el PK |
1027 | 1038 |
for (int m=0;m<fieldNames.length;m++) { |
1028 |
row[m] = ds.getFieldValue(i, m);
|
|
1039 |
row[m] = selectedValues[i][m];
|
|
1029 | 1040 |
} |
1030 | 1041 |
row[fieldNames.length] = ValueFactory.createValue(i); |
1031 | 1042 |
values.add(row); |
... | ... | |
1105 | 1116 |
dw.insertFilledRow(((Value[])values.get(i))); |
1106 | 1117 |
} |
1107 | 1118 |
dw.commitTrans(); |
1119 |
//if (((AlphanumericData)layerToClip).getRecordset().getSelection().nextClearBit(0)==-1 || ((AlphanumericData)layerToClip).getRecordset().getSelection().isEmpty()) ((AlphanumericData)layerToClip).getRecordset().setSelection(new FBitSet()); |
|
1120 |
//if (((AlphanumericData)layerToClip).getRecordset().getSelection().nextClearBit(0)==-1) ((AlphanumericData)layerToClip).getRecordset().setSelection(new FBitSet()); |
|
1121 |
//if (((AlphanumericData)clippingLayer).getRecordset().getSelection().nextClearBit(0)==-1) ((AlphanumericData)clippingLayer).getRecordset().setSelection(new FBitSet()); |
|
1108 | 1122 |
} catch (DriverException e) { |
1109 | 1123 |
// TODO Auto-generated catch block |
1110 | 1124 |
e.printStackTrace(); |
Also available in: Unified diff