1 21 package com.db4o.inside.query; 22 23 import com.db4o.ext.*; 24 import com.db4o.foundation.*; 25 import com.db4o.query.QueryComparator; 26 27 30 public class StatefulQueryResult { 31 32 private final QueryResult _delegate; 33 private final Iterable4Adaptor _iterable; 34 35 public StatefulQueryResult(QueryResult queryResult){ 36 _delegate = queryResult; 37 _iterable = new Iterable4Adaptor(queryResult); 38 } 39 40 public Object get(int index) { 41 return _delegate.get(index); 42 } 43 44 public long[] getIDs() { 45 long[] ids = new long[size()]; 46 int i = 0; 47 final IntIterator4 iterator = _delegate.iterateIDs(); 48 while (iterator.moveNext()) { 49 ids[i++] = iterator.currentInt(); 50 } 51 return ids; 52 } 53 54 public boolean hasNext() { 55 return _iterable.hasNext(); 56 } 57 58 public Object next() { 59 return _iterable.next(); 60 } 61 62 public void reset() { 63 _iterable.reset(); 64 } 65 66 public int size() { 67 return _delegate.size(); 68 } 69 70 public void sort(QueryComparator cmp) { 71 _delegate.sort(cmp); 72 } 73 74 Object streamLock() { 75 return objectContainer().lock(); 77 } 78 79 ExtObjectContainer objectContainer() { 80 return _delegate.objectContainer(); 81 } 82 83 public int indexOf(Object a_object) { 84 synchronized(streamLock()){ 85 int id = (int)objectContainer().getID(a_object); 86 if(id <= 0){ 87 return -1; 88 } 89 return _delegate.indexOf(id); 90 } 91 } 92 93 public Iterator4 iterateIDs() { 94 return _delegate.iterateIDs(); 95 } 96 97 public Iterator4 iterator() { 98 return _delegate.iterator(); 99 } 100 } 101 | Popular Tags |