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

View differences:

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