Revision 3008 trunk/extensions/extGeoProcessing/src/com/iver/gvsig/geoprocessing/gui/GeoProcessingPanel.java

View differences:

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