Revision 27525 branches/v2_0_0_prep/libraries/libFMap_dal/src/org/gvsig/fmap/dal/feature/impl/DefaultFeatureSelection.java

View differences:

DefaultFeatureSelection.java
28 28

  
29 29
import java.util.ArrayList;
30 30
import java.util.HashMap;
31
import java.util.Iterator;
32 31
import java.util.List;
33 32
import java.util.Map;
34 33
import java.util.Map.Entry;
......
41 40
import org.gvsig.fmap.dal.feature.FeatureSelection;
42 41
import org.gvsig.fmap.dal.feature.FeatureSet;
43 42
import org.gvsig.fmap.dal.feature.FeatureType;
43
import org.gvsig.fmap.dal.feature.DisposableIterator;
44 44
import org.gvsig.fmap.dal.feature.exception.ReversedSelectionIteratorException;
45 45
import org.gvsig.tools.persistence.PersistenceException;
46 46
import org.gvsig.tools.persistence.PersistentState;
......
124 124
        }
125 125

  
126 126
        disableNotifications();
127
        for (Iterator iter = features.fastIterator(); iter.hasNext();) {
127
        for (DisposableIterator iter = features.fastIterator(); iter.hasNext();) {
128 128
            change |= select((Feature) iter.next(), undoable);
129 129
        }
130 130
        enableNotifications();
......
177 177
            getCommands().startComplex("_selectionDeselectFeatureSet");
178 178
        }
179 179
        disableNotifications();
180
        for (Iterator iter = features.fastIterator(); iter.hasNext();) {
180
        for (DisposableIterator iter = features.fastIterator(); iter.hasNext();) {
181 181
            change |= deselect((Feature) iter.next(), undoable);
182 182
        }
183 183
        enableNotifications();
......
211 211
        // Go through the map of FeatureTypes, and return only the ones that
212 212
        // have at least a Feature.
213 213
        List types = new ArrayList();
214
        for (Iterator iterator = featureTypeCounts.entrySet().iterator(); iterator
214
        for (java.util.Iterator iterator = featureTypeCounts.entrySet()
215
				.iterator(); iterator
215 216
                .hasNext();) {
216 217
            Map.Entry entry = (Entry) iterator.next();
217 218
            FeatureType type = (FeatureType) entry.getKey();
......
237 238
     * Returns the list of selected values, or the deselected ones if the
238 239
     * selection has been reversed.
239 240
     */
240
    public Iterator iterator() {
241
    public DisposableIterator iterator() {
241 242
        return iterator(0);
242 243
    }
243 244

  
......
247 248
     *
248 249
     * WARN: not very good performance implementation.
249 250
     */
250
    public Iterator iterator(long index) {
251
    public DisposableIterator iterator(long index) {
251 252
        return iterator(index, false);
252 253
    }
253 254

  
......
257 258
     *
258 259
     * WARN: not really a fast implementation.
259 260
     */
260
    public Iterator fastIterator() {
261
    public DisposableIterator fastIterator() {
261 262
        return fastIterator(0);
262 263
    }
263 264

  
......
267 268
     *
268 269
     * WARN: not really a fast implementation.
269 270
     */
270
    public Iterator fastIterator(long index) {
271
    public DisposableIterator fastIterator(long index) {
271 272
        return iterator(index, true);
272 273
    }
273 274

  
274 275
    public void loadState(PersistentState state) throws PersistenceException {
275 276
        super.loadState(state);
276
        for (Iterator iterator = fastIterator(); iterator.hasNext();) {
277
        for (DisposableIterator iterator = fastIterator(); iterator.hasNext();) {
277 278
            Feature feature = (Feature) iterator.next();
278 279
            getFeatureTypeCount(feature.getType()).add();
279 280
        }
......
287 288
    /**
288 289
     * Creates an iterator for the Selection.
289 290
     */
290
    private Iterator iterator(long index, boolean fastIterator) {
291
    private DisposableIterator iterator(long index, boolean fastIterator) {
291 292
        if (isReversed()) {
292
            Iterator iter = new ReversedFeatureIteratorFacade(getData(),
293
            DisposableIterator iter = new ReversedFeatureIteratorFacade(getData(),
293 294
                    getFeatureStore(), fastIterator);
294 295
            for (long l = 0; l < index && iter.hasNext(); l++) {
295 296
                iter.next();
......
300 301
            // TODO: maybe we could add a new referenceIterator(int index)
301 302
            // method that could be implemented in a more performant way
302 303

  
303
            Iterator iter = referenceIterator();
304
            java.util.Iterator iter = referenceIterator();
304 305
            for (long l = 0; l < index && iter.hasNext(); l++) {
305 306
                iter.next();
306 307
            }
......
323 324
     *
324 325
     * @author <a href="mailto:cordin@disid.com">C?sar Ordi?ana</a>
325 326
     */
326
    private class FeatureIteratorFacade implements Iterator {
327
    private class FeatureIteratorFacade implements DisposableIterator {
327 328

  
328 329
        final Logger logger = LoggerFactory
329 330
                .getLogger(FeatureIteratorFacade.class);
330 331

  
331
        private Iterator refIterator;
332
        private java.util.Iterator refIterator;
332 333

  
333 334
        private DefaultFeatureStore featureStore;
334 335

  
335
        public FeatureIteratorFacade(Iterator refIterator,
336
        public FeatureIteratorFacade(java.util.Iterator iter,
336 337
                DefaultFeatureStore featureStore) {
337
            this.refIterator = refIterator;
338
            this.refIterator = iter;
338 339
            this.featureStore = featureStore;
339 340
        }
340 341

  
......
373 374
        protected Feature getFeature(FeatureReference ref) throws DataException {
374 375
            return ref.getFeature();
375 376
        }
377

  
378
		public void dispose() {
379
			refIterator = null;
380
			featureStore = null;
381
		}
376 382
    }
377 383

  
378 384
    /**
......
381 387
     *
382 388
     * @author <a href="mailto:cordin@disid.com">C?sar Ordi?ana</a>
383 389
     */
384
    private class ReversedFeatureIteratorFacade implements Iterator {
390
    private class ReversedFeatureIteratorFacade implements DisposableIterator {
385 391

  
386 392
        final Logger logger = LoggerFactory
387 393
                .getLogger(ReversedFeatureIteratorFacade.class);
388 394

  
389
        private Iterator refIterator;
390 395

  
391 396
        private SelectionData selectionData;
392 397

  
393
        private Iterator iterator;
398
        private DisposableIterator iterator;
394 399

  
395 400
        private Feature nextFeature = null;
396 401

  
......
425 430
            return tmp;
426 431
        }
427 432

  
428
        /**
429
         * Returns the next FeatureReference.
430
         *
431
         * @return the next FeatureReference
432
         */
433
        public FeatureReference nextFeatureReference() {
434
            return (FeatureReference) refIterator.next();
435
        }
436

  
437 433
        public void remove() {
438 434
            iterator.remove();
439 435
        }
......
449 445
                }
450 446
            }
451 447
        }
448

  
449
		public void dispose() {
450
			this.iterator.dispose();
451
			this.selectionData = null;
452
			this.nextFeature = null;
453
		}
452 454
    }
453 455

  
454 456
    private class FeatureTypeCount {

Also available in: Unified diff