Revision 42052

View differences:

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