Revision 42052
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.annotation/org.gvsig.annotation.lib/org.gvsig.annotation.lib.impl/src/main/java/org/gvsig/annotation/impl/DefaultAnnotationCreationService.java | ||
---|---|---|
211 | 211 |
private void copyFeatureStore(FeatureStore sourceStore, |
212 | 212 |
FeatureStore destinationStore, int textAttribute) |
213 | 213 |
throws AnnotationCreationException, DataException { |
214 |
|
|
215 |
//Start the edition |
|
216 |
destinationStore.edit(); |
|
217 |
|
|
218 |
//Copy data |
|
219 |
FeatureSet featureSet = sourceStore.getFeatureSet(); |
|
220 |
DisposableIterator iterator = featureSet.iterator(); |
|
214 |
FeatureSet featureSet = null; |
|
215 |
DisposableIterator iterator = null; |
|
221 | 216 |
|
222 |
taskStatus.setRangeOfValues(0, featureSet.getSize()); |
|
217 |
try{ |
|
218 |
//Start the edition |
|
219 |
destinationStore.edit(); |
|
223 | 220 |
|
224 |
//Create the attribute inserter's |
|
225 |
AttributeInserter fontTypeAttributeInserter = createInserter(sourceFontTypeAttribute, manager.getDefaultFontType()); |
|
226 |
AttributeInserter fontStyleAttributeInserter = createInserter(sourceFontStyleAttribute, manager.getDefaultFontStyle()); |
|
227 |
AttributeInserter fontColorAttributeInserter = createInserter(sourceFontColorAttribute, manager.getDefaultFontColor()); |
|
228 |
AttributeInserter fontRotationAttributeInserter = createInserter(sourceRotationAttribute, manager.getDefaultFontRotation()); |
|
229 |
AttributeInserter fontHeigthAttributeInserter = createInserter(sourceHeigthAttribute, manager.getDefaultFontHeight()); |
|
221 |
//Copy data |
|
222 |
featureSet = sourceStore.getFeatureSet(); |
|
223 |
iterator = featureSet.iterator(); |
|
224 |
|
|
225 |
|
|
226 |
taskStatus.setRangeOfValues(0, featureSet.getSize()); |
|
227 |
|
|
228 |
//Create the attribute inserter's |
|
229 |
AttributeInserter fontTypeAttributeInserter = createInserter(sourceFontTypeAttribute, manager.getDefaultFontType()); |
|
230 |
AttributeInserter fontStyleAttributeInserter = createInserter(sourceFontStyleAttribute, manager.getDefaultFontStyle()); |
|
231 |
AttributeInserter fontColorAttributeInserter = createInserter(sourceFontColorAttribute, manager.getDefaultFontColor()); |
|
232 |
AttributeInserter fontRotationAttributeInserter = createInserter(sourceRotationAttribute, manager.getDefaultFontRotation()); |
|
233 |
AttributeInserter fontHeigthAttributeInserter = createInserter(sourceHeigthAttribute, manager.getDefaultFontHeight()); |
|
234 |
|
|
235 |
Feature sourceFeature; |
|
236 |
long featureCount = 0; |
|
237 |
while (iterator.hasNext()) { |
|
238 |
sourceFeature = (Feature) iterator.next(); |
|
239 |
|
|
240 |
EditableFeature destinationFeature = destinationStore.createNewFeature().getEditable(); |
|
241 |
try { |
|
242 |
destinationFeature.set(destinationGeometryAttributeName, annotationPositionCalculator.getAnnotationPosition(sourceFeature)); |
|
243 |
} catch (AnnotationPositionCalculationException e) { |
|
244 |
LOG.error("Not possible to get the point for the geometry", e); |
|
245 |
} |
|
246 |
destinationFeature.set(AnnotationManager.TEXTVALUE_ATTRIBUTE_NAME, sourceFeature.get(textAttribute)); |
|
247 |
destinationFeature.set(AnnotationManager.FONTTYPE_ATTRIBUTE_NAME, fontTypeAttributeInserter.getValue(sourceFeature)); |
|
248 |
destinationFeature.set(AnnotationManager.FONTSTYLE_ATTRIBUTE_NAME, fontStyleAttributeInserter.getValue(sourceFeature)); |
|
249 |
destinationFeature.set(AnnotationManager.FONTCOLOR_ATTRIBUTE_NAME, fontColorAttributeInserter.getValue(sourceFeature)); |
|
250 |
destinationFeature.set(AnnotationManager.FONTROTATION_ATTRIBUTE_NAME, fontRotationAttributeInserter.getValue(sourceFeature)); |
|
251 |
destinationFeature.set(AnnotationManager.FONTHEGTH_ATTRIBUTE_NAME, fontHeigthAttributeInserter.getValue(sourceFeature)); |
|
252 |
|
|
253 |
destinationStore.insert(destinationFeature); |
|
254 |
featureCount++; |
|
255 |
this.taskStatus.setCurValue(featureCount); |
|
256 |
|
|
257 |
if (this.taskStatus.isCancellationRequested()) { |
|
258 |
return; |
|
259 |
} |
|
260 |
} |
|
261 |
}finally{ |
|
230 | 262 |
|
231 |
Feature sourceFeature; |
|
232 |
long featureCount = 0; |
|
233 |
while (iterator.hasNext()) { |
|
234 |
sourceFeature = (Feature) iterator.next(); |
|
235 |
|
|
236 |
EditableFeature destinationFeature = destinationStore.createNewFeature().getEditable(); |
|
237 |
try { |
|
238 |
destinationFeature.set(destinationGeometryAttributeName, annotationPositionCalculator.getAnnotationPosition(sourceFeature)); |
|
239 |
} catch (AnnotationPositionCalculationException e) { |
|
240 |
LOG.error("Not possible to get the point for the geometry", e); |
|
263 |
//Finish the edition |
|
264 |
if(destinationStore.isEditing()){ |
|
265 |
destinationStore.finishEditing(); |
|
241 | 266 |
} |
242 |
destinationFeature.set(AnnotationManager.TEXTVALUE_ATTRIBUTE_NAME, sourceFeature.get(textAttribute)); |
|
243 |
destinationFeature.set(AnnotationManager.FONTTYPE_ATTRIBUTE_NAME, fontTypeAttributeInserter.getValue(sourceFeature)); |
|
244 |
destinationFeature.set(AnnotationManager.FONTSTYLE_ATTRIBUTE_NAME, fontStyleAttributeInserter.getValue(sourceFeature)); |
|
245 |
destinationFeature.set(AnnotationManager.FONTCOLOR_ATTRIBUTE_NAME, fontColorAttributeInserter.getValue(sourceFeature)); |
|
246 |
destinationFeature.set(AnnotationManager.FONTROTATION_ATTRIBUTE_NAME, fontRotationAttributeInserter.getValue(sourceFeature)); |
|
247 |
destinationFeature.set(AnnotationManager.FONTHEGTH_ATTRIBUTE_NAME, fontHeigthAttributeInserter.getValue(sourceFeature)); |
|
248 |
|
|
249 |
destinationStore.insert(destinationFeature); |
|
250 |
featureCount++; |
|
251 |
this.taskStatus.setCurValue(featureCount); |
|
252 |
|
|
253 |
if (this.taskStatus.isCancellationRequested()) { |
|
254 |
return; |
|
255 |
} |
|
267 |
|
|
268 |
//Dispose resources |
|
269 |
if(iterator != null){ |
|
270 |
iterator.dispose(); |
|
271 |
} |
|
272 |
if(featureSet != null){ |
|
273 |
featureSet.dispose(); |
|
274 |
} |
|
275 |
|
|
276 |
this.taskStatus.terminate(); |
|
277 |
this.taskStatus.remove(); |
|
256 | 278 |
} |
257 |
|
|
258 |
//Finish the edition |
|
259 |
destinationStore.finishEditing(); |
|
260 |
|
|
261 |
//Dispose resources |
|
262 |
iterator.dispose(); |
|
263 |
featureSet.dispose(); |
|
264 |
|
|
265 |
this.taskStatus.terminate(); |
|
266 |
this.taskStatus.remove(); |
|
267 | 279 |
} |
268 | 280 |
|
269 | 281 |
private void copyLegend(FeatureStore destinationStore) throws ValidateDataParametersException, DataException, IOException { |
Also available in: Unified diff