Revision 30747

View differences:

branches/v2_0_0_prep/libraries/libFMap_dal/src/org/gvsig/fmap/dal/store/memory/MemoryStoreProvider.java
28 28
package org.gvsig.fmap.dal.store.memory;
29 29

  
30 30
import java.util.ArrayList;
31
import java.util.Hashtable;
31 32
import java.util.Iterator;
32 33
import java.util.List;
34
import java.util.Map;
33 35

  
34 36
import org.gvsig.fmap.dal.DataTypes;
35 37
import org.gvsig.fmap.dal.exception.DataException;
......
41 43
import org.gvsig.fmap.dal.feature.FeatureType;
42 44
import org.gvsig.fmap.dal.feature.exception.PerformEditingException;
43 45
import org.gvsig.fmap.dal.feature.spi.FeatureProvider;
46
import org.gvsig.fmap.dal.feature.spi.FeatureReferenceProviderServices;
44 47
import org.gvsig.fmap.dal.feature.spi.memory.AbstractMemoryStoreProvider;
45 48
import org.gvsig.fmap.dal.spi.DataStoreProviderServices;
49
import org.gvsig.fmap.geom.GeometryLocator;
50
import org.gvsig.fmap.geom.GeometryManager;
51
import org.gvsig.fmap.geom.exception.CreateEnvelopeException;
52
import org.gvsig.fmap.geom.primitive.Envelope;
46 53
import org.gvsig.tools.ToolsLocator;
47 54
import org.gvsig.tools.dynobject.DynClass;
48 55
import org.gvsig.tools.dynobject.DynField;
......
56 63
public class MemoryStoreProvider extends AbstractMemoryStoreProvider{
57 64
	private static final Logger logger = LoggerFactory.getLogger(MemoryStoreProvider.class);
58 65

  
66
	private static GeometryManager geomManager = GeometryLocator.getGeometryManager();
59 67
	public static final String NAME = "Memory";
60 68
	public static final String DESCRIPTION = "Memory provider";
61 69
	public static final String DYNCLASS_NAME = "MemoryStore";
62 70
	protected static DynClass DYNCLASS = null;
63 71
	private long counterNewsOIDs = 0;
72
	private Envelope envelope = null;
73
	private Map oids = null;
64 74
	
65 75
	private Double sourceID = null;
66 76

  
......
69 79
		super(memoryStoreParameters, storeServices);
70 80
		sourceID = new Double(Math.random());
71 81
		data = new ArrayList();
82
		oids = new Hashtable();
72 83
		initialize();
73 84
	}	
74 85

  
......
139 150
	public void performChanges(Iterator deleteds, Iterator inserteds,
140 151
			Iterator updateds, Iterator originalFeatureTypesUpdated)
141 152
	throws PerformEditingException {
142
		try {
153
		try {		
154
			FeatureType featureType = this.getStoreServices().getDefaultFeatureType();
155
			List types = new ArrayList(1);
156
			types.add(featureType);			
157
			getStoreServices().setFeatureTypes(types, featureType);	
158
			
159
			//Sets the envelope			
160
			envelope = 
161
				geomManager.createEnvelope(featureType.getDefaultGeometryAttribute().getGeometrySubType());
162
					
143 163
			FeatureSet set = this.getFeatureStore().getFeatureSet();
144 164
			DisposableIterator iter = set.fastIterator();
145 165
			data.clear();
166
			oids.clear();
146 167
			while (iter.hasNext()) {
147 168
				Feature feature=(Feature) iter.next();
148
				data.add(feature);
169
				FeatureProvider featureProvider = this.getStoreServices().getFeatureProviderFromFeature(feature);
170
				data.add(featureProvider);
171
				oids.put(featureProvider.getOID(), featureProvider);
172
				envelope.add(feature.getDefaultEnvelope());
149 173
			}
150 174
		} catch (DataException e) {
151 175
			logger.error("Error adding features", e);
176
		} catch (CreateEnvelopeException e) {
177
			logger.error("Error creating the envelope", e);
152 178
		}
153 179
	}
180
	
181
	public Envelope getEnvelope() throws DataException {
182
		return envelope;
183
	}
184
	
185
	/*
186
	 * (non-Javadoc)
187
	 * @see org.gvsig.fmap.dal.feature.spi.FeatureStoreProvider#getFeatureProviderByReference(org.gvsig.fmap.dal.feature.spi.FeatureReferenceProviderServices)
188
	 */
189
	public FeatureProvider getFeatureProviderByReference(
190
			FeatureReferenceProviderServices reference)
191
			throws DataException {		
192
		return (FeatureProvider) oids.get(reference.getOID());
193
	}
194
	
195
	
154 196
}
155 197

  

Also available in: Unified diff