Revision 44871 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/editing/memory/FeatureManager.java

View differences:

FeatureManager.java
37 37
import org.gvsig.fmap.dal.feature.FeatureStore;
38 38
import org.gvsig.fmap.dal.feature.FeatureType;
39 39
import org.gvsig.fmap.dal.feature.impl.DefaultFeature;
40
import org.gvsig.fmap.dal.feature.impl.DefaultFeatureReference;
40
import org.gvsig.fmap.dal.feature.spi.FeatureProvider;
41 41

  
42

  
43 42
public class FeatureManager {
44 43

  
45 44
    private int deltaSize;
......
201 200
        return added.size() > 0 || modifiedFromOriginal.size() > 0 || deleted.size() > 0;
202 201
    }
203 202

  
204
    public Iterator getDeleted() {
205
        return new DeletedIterator();
206

  
207
    }
208

  
209 203
    public long getPendingChangesCount() {
210 204
        long count = 0;
211 205
        if( this.added!=null ) {
......
220 214
        return count;
221 215
    }
222 216

  
223
    private class DeletedIterator implements Iterator {
217
    public Iterator<FeatureReference> getDeleted() {
218
        return new DeletedsFeatureReferencesIterator();
224 219

  
220
    }
221

  
222
    private class DeletedsFeatureReferencesIterator implements Iterator<FeatureReference> {
223

  
225 224
        private Boolean hasnext = null;
226 225
        private final Iterator iter;
227
        private DefaultFeatureReference obj;
226
        private FeatureReference reference;
228 227

  
229
        public DeletedIterator() {
228
        public DeletedsFeatureReferencesIterator() {
230 229
            iter = deleted.iterator();
231 230
        }
232 231

  
......
237 236
            }
238 237
            hasnext = false;
239 238
            while (iter.hasNext()) {
240
                obj = (DefaultFeatureReference) iter.next();
241
                if (obj.isNewFeature()) {
242
                    continue;
239
                reference = (FeatureReference) iter.next();
240
                if (!reference.isNewFeature()) {
241
                  hasnext = true;
242
                  break;
243 243
                }
244
                hasnext = true;
245
                break;
246 244
            }
247 245
            return hasnext;
248 246
        }
249 247

  
250 248
        @Override
251
        public Object next() {
249
        public FeatureReference next() {
252 250
            if (!hasNext()) {
253 251
                throw new NoSuchElementException();
254 252
            }
255 253
            hasnext = null;
256
            return obj;
254
            return reference;
257 255
        }
258 256

  
259 257
        @Override
......
263 261

  
264 262
    }
265 263

  
266
    public Iterator getInserted() {
267
        return new InsertedIterator();
264
    public Iterator<FeatureProvider> getInserted() {
265
        Iterator<Feature> it = new InsertedFeaturesIterator();
266
        return new Iterator<FeatureProvider>() {
267
          @Override
268
          public boolean hasNext() {
269
            return it.hasNext();
270
          }
271

  
272
          @Override
273
          public FeatureProvider next() {
274
            return ((DefaultFeature)it.next()).getData();
275
          }
276
        };
268 277
    }
269 278

  
270
    private class InsertedIterator implements Iterator {
279
    public Iterator<Feature> getInsertedFeatures() {
280
        return new InsertedFeaturesIterator();
281
    }
271 282

  
283
    private class InsertedFeaturesIterator implements Iterator<Feature> {
284

  
272 285
        private final Iterator addedIter;
273
        private DefaultFeature obj;
286
        private Feature feature;
274 287
        private Boolean hasnext = null;
275 288

  
276
        public InsertedIterator() {
289
        public InsertedFeaturesIterator() {
277 290
            addedIter = added.values().iterator();
278 291
        }
279 292

  
......
286 299
            int pos;
287 300
            while (addedIter.hasNext()) {
288 301
                pos = ((Integer) addedIter.next());
289
                obj = (DefaultFeature) expansionAdapter.getObject(pos);
290
                if (!deleted.contains(obj.getReference())) {
302
                feature = (Feature) expansionAdapter.getObject(pos);
303
                if (!deleted.contains(feature.getReference())) {
291 304
                    hasnext = true;
292 305
                    break;
293 306
                }
......
296 309
        }
297 310

  
298 311
        @Override
299
        public Object next() {
312
        public Feature next() {
300 313
            if (!hasNext()) {
301 314
                throw new NoSuchElementException();
302 315
            }
303 316
            hasnext = null;
304
            return obj.getData();
317
            return feature;
305 318
        }
306 319

  
307 320
        @Override
......
311 324

  
312 325
    }
313 326

  
314
    public Iterator getUpdated() {
315
        return new UpdatedIterator();
327
    public Iterator<Feature> getUpdatedFeatures() {
328
        return new UpdatedFeaturesIterator();
316 329
    }
317 330

  
318
    private class UpdatedIterator implements Iterator {
331
    public Iterator<FeatureProvider> getUpdated() {
332
        Iterator<Feature> it = new UpdatedFeaturesIterator();
333
        return new Iterator<FeatureProvider>() {
334
          @Override
335
          public boolean hasNext() {
336
            return it.hasNext();
337
          }
319 338

  
339
          @Override
340
          public FeatureProvider next() {
341
            return ((DefaultFeature)it.next()).getData();
342
          }
343
        };
344
    }
345

  
346
    private class UpdatedFeaturesIterator implements Iterator<Feature> {
347

  
320 348
        private Boolean hasnext = null;
321 349
        private final Iterator iter;
322
        private DefaultFeature obj;
350
        private Feature feature;
323 351
        private int pos;
324 352

  
325
        public UpdatedIterator() {
353
        public UpdatedFeaturesIterator() {
326 354
            iter = expansionAdapter.iterator();
327 355
            pos = -1;
328 356
        }
......
335 363
            hasnext = false;
336 364
            while (iter.hasNext()) {
337 365
                pos++;
338
                obj = (DefaultFeature) iter.next();
339
                if (deleted.contains(obj.getReference())) {
340
                    continue;
341
                } else if (!modifiedFromOriginal.containsValue(pos)) {
342
                    continue;
343
                } else {
366
                feature = (Feature) iter.next();
367
                if ( !deleted.contains(feature.getReference()) &&
368
                     modifiedFromOriginal.containsValue(pos)) {
344 369
                    hasnext = true;
345 370
                    break;
346 371
                }
......
349 374
        }
350 375

  
351 376
        @Override
352
        public Object next() {
377
        public Feature next() {
353 378
            if (!hasNext()) {
354 379
                throw new NoSuchElementException();
355 380
            }
356 381
            hasnext = null;
357
            return obj.getData();
382
            return feature;
358 383
        }
359 384

  
360 385
        @Override

Also available in: Unified diff