Revision 44202 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/featureset/DefaultFeatureSet.java

View differences:

DefaultFeatureSet.java
229 229
    }
230 230

  
231 231
    private long calculateSize() throws DataException {
232
        long limit = this.query.getLimit();
233
        long mySize = 0;
234
        
232 235
        int mode = this.getIteratorMode();
233
        long limit = this.query.getLimit();
234
        if ((mode & EDITED) != EDITED) {
236
        switch (mode) {
237
        case DEFAULT:
238
        case ORDERED:
235 239
            if (this.provider.isEmpty()) {
236 240
                return 0;
237 241
            }
238
        }
239
        if ((mode & FILTERED) == FILTERED) {
240
            long mySize = 0;
242
            mySize = provider.getSize();
243
            return (limit>0 && mySize>limit)? limit:mySize;
244

  
245
        case FILTERED:
246
        case ORDERED_FILTERED:
241 247
            DisposableIterator iter = null;
242 248
            try {
243 249
                iter = this.fastIterator();
......
246 252
                    mySize++;
247 253
                }
248 254
            } catch (NoSuchElementException e) {
249
                return mySize;
255

  
250 256
            } finally {
251 257
                DisposeUtils.disposeQuietly(iter);
252 258
            }
253
        } else if ((mode & EDITED) == EDITED) {
254
            long mySize = provider.getSize()
259
            return mySize;
260

  
261
        case EDITED:
262
        case EDITED_FILTERED:
263
        case ORDERD_EDITED:
264
        case ORDERED_EDITED_FILTER:
265
            mySize = provider.getSize()
255 266
                + store.getFeatureManager().getDeltaSize();
256 267
            return (limit>0 && mySize>limit)? limit:mySize;
268

  
269
        default:
270
            throw new IllegalArgumentException();
257 271
        }
258
        long mySize = provider.getSize();
259
        return (limit>0 && mySize>limit)? limit:mySize;
260 272
    }
261 273

  
262 274
    public void dispose() {

Also available in: Unified diff