Revision 43089 trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/feature/impl/IndexFeatureSet.java
IndexFeatureSet.java | ||
---|---|---|
37 | 37 |
import org.gvsig.fmap.dal.feature.Feature; |
38 | 38 |
import org.gvsig.fmap.dal.feature.FeatureReference; |
39 | 39 |
import org.gvsig.fmap.dal.feature.FeatureSet; |
40 |
import org.gvsig.fmap.dal.feature.FeatureStore; |
|
40 | 41 |
import org.gvsig.fmap.dal.feature.FeatureType; |
41 | 42 |
import org.gvsig.fmap.dal.feature.impl.dynobjectutils.DynObjectSetFeatureSetFacade; |
43 |
import org.gvsig.fmap.dal.feature.impl.featureset.AbstractFeatureSet; |
|
42 | 44 |
import org.gvsig.fmap.dal.feature.spi.FeatureProvider; |
43 | 45 |
import org.gvsig.fmap.dal.feature.spi.FeatureReferenceProviderServices; |
44 | 46 |
import org.gvsig.fmap.dal.feature.spi.FeatureSetProvider; |
... | ... | |
51 | 53 |
import org.gvsig.tools.exception.BaseException; |
52 | 54 |
import org.gvsig.tools.visitor.Visitor; |
53 | 55 |
|
56 |
public class IndexFeatureSet |
|
57 |
extends AbstractFeatureSet |
|
58 |
implements FeatureSet, FeatureSetProvider, Iterable<Feature> { |
|
54 | 59 |
|
55 |
public class IndexFeatureSet implements FeatureSet, FeatureSetProvider, Iterable<Feature> { |
|
56 |
|
|
57 | 60 |
LongList featureReferences = null; |
58 | 61 |
FeatureStoreProvider storeProvider = null; |
59 | 62 |
FeatureStoreProviderServices store = null; |
... | ... | |
159 | 162 |
return new FastIndexIterator(this.featureReferences.iterator(index)); |
160 | 163 |
} |
161 | 164 |
|
162 |
public DisposableIterator fastIterator() throws DataException { |
|
163 |
if (store.getFeatureStore().isEditing()) { |
|
164 |
return this.iterator(); |
|
165 |
} |
|
166 |
return new FastIndexIterator(this.featureReferences.iterator()); |
|
167 |
} |
|
168 |
|
|
169 | 165 |
public long getSize() throws DataException { |
170 | 166 |
return featureReferences.getSize(); |
171 | 167 |
} |
... | ... | |
174 | 170 |
return featureReferences.isEmpty(); |
175 | 171 |
} |
176 | 172 |
|
177 |
public DisposableIterator iterator() { |
|
178 |
return new IndexIterator(this.featureReferences.iterator()); |
|
179 |
} |
|
180 |
|
|
181 | 173 |
public DisposableIterator iterator(long index) throws DataException { |
182 | 174 |
return new IndexIterator(this.featureReferences.iterator(index)); |
183 | 175 |
} |
... | ... | |
213 | 205 |
|
214 | 206 |
} |
215 | 207 |
|
216 |
public boolean isFromStore(DataStore store) { |
|
217 |
return this.store.equals(store); |
|
218 |
} |
|
219 |
|
|
220 |
public void accept(Visitor visitor) throws BaseException { |
|
221 |
accept(visitor, 0); |
|
222 |
} |
|
223 |
|
|
224 |
public void accept(Visitor visitor, long firstValueIndex) |
|
225 |
throws BaseException { |
|
226 |
synchronized (store.getFeatureStore()) { |
|
227 |
DisposableIterator iterator = fastIterator(firstValueIndex); |
|
228 |
|
|
229 |
if (iterator != null) { |
|
230 |
try { |
|
231 |
while (iterator.hasNext()) { |
|
232 |
Feature feature = (Feature) iterator.next(); |
|
233 |
visitor.visit(feature); |
|
234 |
} |
|
235 |
} finally { |
|
236 |
iterator.dispose(); |
|
237 |
} |
|
238 |
} |
|
239 |
} |
|
240 |
} |
|
241 |
|
|
242 |
public DynObjectSet getDynObjectSet() { |
|
243 |
return new DynObjectSetFeatureSetFacade(this, store.getFeatureStore()); |
|
208 |
@Override |
|
209 |
public FeatureStore getFeatureStore() { |
|
210 |
return this.store.getFeatureStore(); |
|
244 | 211 |
} |
245 | 212 |
|
246 |
public DynObjectSet getDynObjectSet(boolean fast) { |
|
247 |
return new DynObjectSetFeatureSetFacade(this, store.getFeatureStore(), |
|
248 |
fast); |
|
249 |
} |
|
213 |
|
|
214 |
|
|
250 | 215 |
|
251 | 216 |
} |
Also available in: Unified diff