diff src/org/dancres/blitz/entry/ci/BitLocatorImpl.java @ 0:3dc0c5604566

Initial checkin of blitz 2.0 fcs - no installer yet.
author Dan Creswell <dan.creswell@gmail.com>
date Sat, 21 Mar 2009 11:00:06 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/org/dancres/blitz/entry/ci/BitLocatorImpl.java	Sat Mar 21 11:00:06 2009 +0000
@@ -0,0 +1,65 @@
+package org.dancres.blitz.entry.ci;
+
+import java.io.IOException;
+
+import org.dancres.blitz.oid.OID;
+
+import org.dancres.blitz.entry.TupleLocator;
+
+import org.dancres.struct.BitIndex;
+import org.dancres.struct.BitVisitor;
+
+/**
+   Used by CacheIndexer.
+ */
+class BitLocatorImpl implements TupleLocator {
+    private BitVisitor theHits;
+    private OID[] theOIDs;
+    private int theIndex = 0;
+    private OID theCurrent;
+
+    BitLocatorImpl(BitIndex aHits, OID[] aListOfOIDs, boolean hitOnZero) {
+        theOIDs = aListOfOIDs;
+        theHits = aHits.getVisitor(hitOnZero);
+    }
+
+    /**
+       Invoke this to load the next matching Tuple.
+
+       @return <code>true</code> if there was a tuple, <code>false</code>
+       otherwise
+     */
+    public boolean fetchNext() throws IOException {
+        int myNext;
+
+        while ((myNext = theHits.getNext()) != -1) {
+            theCurrent = (OID) theOIDs[myNext];
+
+            if (theCurrent != null)
+                return true;
+            else {
+                /*
+                  System.err.println("There should've been a OID here: " +
+                  myNext);
+                */
+            }
+        }
+
+        return false;
+    }
+
+    /**
+       @return the OID of the tuple just fetched with
+       <code>fetchNext</code>
+     */
+    public OID getOID() {
+        return theCurrent;
+    }
+
+    /**
+       When you've finished with the TupleLocator instance, call release.
+     */
+    public void release() throws IOException {
+        // System.out.println("Iterated: " + theIndex);
+    }
+}