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
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