1 21 package com.db4o.cs; 22 23 import com.db4o.*; 24 import com.db4o.foundation.*; 25 26 27 30 public class LazyClientIdIterator implements IntIterator4{ 31 32 private final LazyClientQueryResult _queryResult; 33 34 private int _current; 35 36 private int[] _ids; 37 38 private final int _batchSize; 39 40 private int _available; 41 42 public LazyClientIdIterator(LazyClientQueryResult queryResult){ 43 _queryResult = queryResult; 44 _batchSize = queryResult.config().prefetchObjectCount(); 45 _ids = new int[_batchSize]; 46 _current = -1; 47 } 48 49 public int currentInt() { 50 if(_current < 0){ 51 throw new IllegalStateException (); 52 } 53 return _ids[_current]; 54 } 55 56 public Object current() { 57 return new Integer (currentInt()); 58 } 59 60 public boolean moveNext() { 61 if(_available < 0){ 62 return false; 63 } 64 if(_available == 0){ 65 _queryResult.fetchIDs(_batchSize); 66 _available --; 67 _current = 0; 68 return (_available > 0); 69 } 70 _current++; 71 _available --; 72 return true; 73 } 74 75 public void reset() { 76 _queryResult.reset(); 77 _available = 0; 78 _current = -1; 79 } 80 81 public void loadFromIdReader(YapReader reader, int count) { 82 for (int i = 0; i < count; i++) { 83 _ids[i] = reader.readInt(); 84 } 85 if(count > 0){ 86 _available = count; 87 return; 88 } 89 _available = -1; 90 } 91 92 } 93 | Popular Tags |