Revision 3067 org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.spi/src/main/java/org/gvsig/vectorediting/lib/spi/AbstractEditingProvider.java

View differences:

AbstractEditingProvider.java
24 24

  
25 25
package org.gvsig.vectorediting.lib.spi;
26 26

  
27
import java.util.ArrayList;
27 28
import java.util.List;
29
import org.gvsig.fmap.dal.exception.DataException;
28 30
import org.gvsig.fmap.dal.feature.EditableFeature;
29 31
import org.gvsig.fmap.dal.feature.Feature;
32
import org.gvsig.fmap.dal.feature.FeatureSelection;
30 33
import org.gvsig.fmap.geom.Geometry;
31 34
import org.gvsig.fmap.mapcontext.rendering.symbols.ISymbol;
35
import org.gvsig.tools.ToolsLocator;
36
import org.gvsig.tools.dispose.DisposableIterator;
32 37
import org.gvsig.tools.service.spi.AbstractProvider;
33 38
import org.gvsig.tools.service.spi.ProviderServices;
39
import org.gvsig.tools.task.SimpleTaskStatus;
34 40
import org.gvsig.vectorediting.lib.api.EditingServiceParameter;
35 41
import org.gvsig.vectorediting.lib.api.exceptions.InvalidEntryException;
36 42
import org.gvsig.vectorediting.lib.api.exceptions.StartServiceException;
......
158 164
        }
159 165
    }
160 166

  
167
    public List<Feature> getSelectedFeaturesCopy(FeatureSelection selection)  {
168
        SimpleTaskStatus status = ToolsLocator.getTaskStatusManager().createDefaultSimpleTaskStatus("Loading selection");
169
        try {
170
            status.add(); // Oh!, el status no sale por que esto se esta ejecutando en el thread de swing.
171
            status.setAutoremove(true);
172
            status.setRangeOfValues(0, selection.size());
173
            List<Feature> features = new ArrayList<>();
174
            DisposableIterator it = selection.fastIterator();
175
            while (it.hasNext()) {
176
                Feature feature = (Feature) it.next();
177
                if( feature.getDefaultGeometry()==null ) {
178
                    continue;
179
                }
180
                features.add(feature.getCopy());
181
                status.incrementCurrentValue();
182
            }
183
            status.terminate();
184
            return features;
185
        } catch (DataException ex) {
186
            status.abort();
187
            throw new RuntimeException("Can't calculate selected features", ex);
188
        }
189
    }
161 190

  
162 191

  
163 192
}

Also available in: Unified diff