Revision 39058 branches/v2_0_0_prep/libraries/libFMap_mapcontext/src/org/gvsig/fmap/mapcontext/layers/vectorial/impl/DefaultGraphicLayer.java

View differences:

DefaultGraphicLayer.java
26 26
*/
27 27
package org.gvsig.fmap.mapcontext.layers.vectorial.impl;
28 28

  
29
import java.awt.Graphics2D;
30
import java.awt.geom.Point2D;
31
import java.awt.image.BufferedImage;
32 29
import java.util.Iterator;
33 30

  
34 31
import org.cresques.cts.ICoordTrans;
......
50 47
import org.gvsig.fmap.geom.Geometry.SUBTYPES;
51 48
import org.gvsig.fmap.geom.Geometry.TYPES;
52 49
import org.gvsig.fmap.geom.GeometryLocator;
53
import org.gvsig.fmap.geom.exception.CreateEnvelopeException;
50
import org.gvsig.fmap.geom.GeometryManager;
54 51
import org.gvsig.fmap.geom.primitive.Envelope;
55
import org.gvsig.fmap.mapcontext.ViewPort;
56 52
import org.gvsig.fmap.mapcontext.exceptions.LegendLayerException;
57 53
import org.gvsig.fmap.mapcontext.exceptions.LoadLayerException;
58
import org.gvsig.fmap.mapcontext.exceptions.ReprojectLayerException;
59 54
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
60 55
import org.gvsig.fmap.mapcontext.layers.vectorial.GraphicLayer;
61 56
import org.gvsig.fmap.mapcontext.rendering.legend.IVectorLegend;
......
63 58
import org.gvsig.fmap.mapcontext.rendering.symbols.ISymbol;
64 59
import org.gvsig.tools.dispose.DisposableIterator;
65 60
import org.gvsig.tools.exception.BaseException;
66
import org.gvsig.tools.task.Cancellable;
67 61
import org.slf4j.Logger;
68 62
import org.slf4j.LoggerFactory;
69 63

  
......
90 84
	private int tagIndex;
91 85
	private int priorityIndex;
92 86
	
93
	public void initialize(IProjection projection) throws ValidateDataParametersException, DataException, LoadLayerException { 
87
	public void initialize(IProjection projection) throws ValidateDataParametersException, DataException, LoadLayerException {
88
		GeometryManager geomManager = GeometryLocator.getGeometryManager();
94 89
		store = dataManager.createMemoryStore(FEATURE_ATTR_PRIORITY);
95 90
		store.edit();
96 91

  
......
99 94
		editableFeatureType.add(GraphicLayer.FEATURE_ATTR_GROUPID, DataTypes.STRING);
100 95

  
101 96
		EditableFeatureAttributeDescriptor geometryDescriptor = editableFeatureType.add(GraphicLayer.FEATURE_ATTR_GEOMETRY, DataTypes.GEOMETRY);
102
		geometryDescriptor.setGeometryType(TYPES.GEOMETRY);
103
		geometryDescriptor.setGeometrySubType(SUBTYPES.GEOM2D);
97
		try {
98
			geometryDescriptor.setGeometryType(geomManager.getGeometryType(TYPES.GEOMETRY, SUBTYPES.GEOM2D));
99
		} catch (Exception e) {
100
			logger.info("Can't create/assign geomery type to feature type of GraphicLayer.", e);
101
		}
104 102
		geometryDescriptor.setSRS(projection);
105 103
		editableFeatureType.setDefaultGeometryAttributeName(GraphicLayer.FEATURE_ATTR_GEOMETRY);
106 104

  
......
130 128
		tagIndex = ftype.getIndex(GraphicLayer.FEATURE_ATTR_TAG);
131 129
		priorityIndex = ftype.getIndex(GraphicLayer.FEATURE_ATTR_PRIORITY);
132 130

  
133
		this.setDataStore(store);
131
		this.bindToDataStore(store);
134 132
		
135 133
		setName("Graphic Layer");
136 134
	}
......
160 158
			synchronized (store) {				
161 159
				if (!store.isEditing()){
162 160
					store.edit(FeatureStore.MODE_APPEND);
161
					insertGeometry(groupId, geom, idsym, label, tag, priority);
162
					store.finishEditing();
163
				} else {
164
					insertGeometry(groupId, geom, idsym, label, tag, priority);
163 165
				}
164
				insertGeometry(groupId, geom, idsym, label, tag, priority);
165
				store.finishEditing();
166 166
			}
167 167
			store.endComplexNotification();
168 168
		} catch (DataException e) {
......
202 202
        	synchronized (store) {				
203 203
        		if (!store.isEditing()) {
204 204
        			store.edit(FeatureStore.MODE_APPEND);
205
            		store.disableNotifications();
206
            		for (; geoms.hasNext();) {
207
            			Geometry geom = (Geometry) geoms.next();
208
            			insertGeometry(groupId, geom, idsym, label, tag, priority);
209
            		}
210
            		store.enableNotifications();
211
            		store.finishEditing();
212
        		} else {
213
            		store.disableNotifications();
214
            		for (; geoms.hasNext();) {
215
            			Geometry geom = (Geometry) geoms.next();
216
            			insertGeometry(groupId, geom, idsym, label, tag, priority);
217
            		}
218
            		store.enableNotifications();
205 219
        		}
206
        		store.disableNotifications();
207
        		for (; geoms.hasNext();) {
208
        			Geometry geom = (Geometry) geoms.next();
209
        			insertGeometry(groupId, geom, idsym, label, tag, priority);
210
        		}
211
        		store.enableNotifications();
212
        		store.finishEditing();
213 220
			}
214 221
        } catch (DataException e) {
215 222
            logger.error("Error adding a geometry to the graphic layer", e);
......
237 244
		try{
238 245
			if (!store.isEditing()){
239 246
				store.edit();
247
				featureSet = store.getFeatureSet();
248
				for (iterator = featureSet.fastIterator(); iterator.hasNext();) {
249
					Feature feature = (Feature) iterator.next();
250
					featureSet.delete(feature);
251
				}
252
				store.finishEditing();			
253
			} else {
254
				featureSet = store.getFeatureSet();
255
				for (iterator = featureSet.fastIterator(); iterator.hasNext();) {
256
					Feature feature = (Feature) iterator.next();
257
					featureSet.delete(feature);
258
				}
240 259
			}
241
			featureSet = store.getFeatureSet();
242
			for (iterator = featureSet.fastIterator(); iterator.hasNext();) {
243
				Feature feature = (Feature) iterator.next();
244
				featureSet.delete(feature);
245
			}
246
			store.finishEditing();			
247 260
		} catch (DataException e) {
248 261
			logger.error("Error clearing all the geometry of the graphic layer", e);
249 262
		} finally {
......
269 282
			store.beginComplexNotification();
270 283
			if (!store.isEditing()){
271 284
				store.edit();
272
			}
273
			featureSet = store.getFeatureSet();
274
			store.beginEditingGroup(groupId);
275
			for (iterator = featureSet.fastIterator(); iterator.hasNext();) {
276
				Feature feature = (Feature) iterator.next();
277
				if (feature.get(FEATURE_ATTR_GROUPID).equals(groupId)) {
278
					featureSet.delete(feature);
285
				featureSet = store.getFeatureSet();
286
				store.beginEditingGroup(groupId);
287
				for (iterator = featureSet.fastIterator(); iterator.hasNext();) {
288
					Feature feature = (Feature) iterator.next();
289
					if (feature.get(FEATURE_ATTR_GROUPID).equals(groupId)) {
290
						featureSet.delete(feature);
291
					}
279 292
				}
293
				store.endEditingGroup();
294
				store.finishEditing();
295
			} else {
296
				featureSet = store.getFeatureSet();
297
				store.beginEditingGroup(groupId);
298
				for (iterator = featureSet.fastIterator(); iterator.hasNext();) {
299
					Feature feature = (Feature) iterator.next();
300
					if (feature.get(FEATURE_ATTR_GROUPID).equals(groupId)) {
301
						featureSet.delete(feature);
302
					}
303
				}
304
				store.endEditingGroup();
280 305
			}
281
			store.endEditingGroup();
282
			store.finishEditing();
283 306
			store.endComplexNotification();
284 307
		} catch (DataException e) {
285 308
			logger.error("Error clearing all the geometry of the graphic layer", e);

Also available in: Unified diff