1 21 package com.db4o.inside.query; 22 23 import com.db4o.*; 24 import com.db4o.config.*; 25 import com.db4o.foundation.*; 26 import com.db4o.query.*; 27 28 29 32 public class HybridQueryResult extends AbstractQueryResult { 33 34 private AbstractQueryResult _delegate; 35 36 public HybridQueryResult(Transaction transaction, QueryEvaluationMode mode) { 37 super(transaction); 38 _delegate = forMode(transaction, mode); 39 } 40 41 private static AbstractQueryResult forMode(Transaction transaction, QueryEvaluationMode mode){ 42 if(mode == QueryEvaluationMode.LAZY){ 43 return new LazyQueryResult(transaction); 44 } 45 if(mode == QueryEvaluationMode.SNAPSHOT){ 46 return new SnapShotQueryResult(transaction); 47 } 48 return new IdListQueryResult(transaction); 49 } 50 51 public Object get(int index) { 52 _delegate = _delegate.supportElementAccess(); 53 return _delegate.get(index); 54 } 55 56 public int getId(int index) { 57 _delegate = _delegate.supportElementAccess(); 58 return _delegate.getId(index); 59 } 60 61 public int indexOf(int id) { 62 _delegate = _delegate.supportElementAccess(); 63 return _delegate.indexOf(id); 64 } 65 66 public IntIterator4 iterateIDs() { 67 return _delegate.iterateIDs(); 68 } 69 70 public Iterator4 iterator() { 71 return _delegate.iterator(); 72 } 73 74 public void loadFromClassIndex(YapClass clazz) { 75 _delegate.loadFromClassIndex(clazz); 76 } 77 78 public void loadFromClassIndexes(YapClassCollectionIterator iterator) { 79 _delegate.loadFromClassIndexes(iterator); 80 } 81 82 public void loadFromIdReader(YapReader reader) { 83 _delegate.loadFromIdReader(reader); 84 } 85 86 public void loadFromQuery(QQuery query) { 87 if(query.requiresSort()){ 88 _delegate = new IdListQueryResult(transaction()); 89 } 90 _delegate.loadFromQuery(query); 91 } 92 93 public int size() { 94 _delegate = _delegate.supportSize(); 95 return _delegate.size(); 96 } 97 98 public void sort(QueryComparator cmp) { 99 _delegate = _delegate.supportSort(); 100 _delegate.sort(cmp); 101 } 102 103 } 104 | Popular Tags |