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