From 67c42358e2940a166649b95a871ae7e47fb3ef17 Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Fri, 27 Sep 2013 21:47:01 +0200 Subject: wip --- src/main/java/io/trygvis/btree/BtreeFile.java | 63 +++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 src/main/java/io/trygvis/btree/BtreeFile.java (limited to 'src/main/java/io/trygvis/btree/BtreeFile.java') diff --git a/src/main/java/io/trygvis/btree/BtreeFile.java b/src/main/java/io/trygvis/btree/BtreeFile.java new file mode 100644 index 0000000..7300b5e --- /dev/null +++ b/src/main/java/io/trygvis/btree/BtreeFile.java @@ -0,0 +1,63 @@ +package io.trygvis.btree; + +import java.io.Closeable; +import java.io.IOException; +import java.nio.ByteBuffer; +import java.util.Iterator; + +public class BtreeFile implements Closeable { + private final HeapFile heap; + private final int keySize; + private final int itemsPerPage; + + public BtreeFile(HeapFile heap, int keySize) throws IOException { + this.heap = heap; + this.keySize = keySize; + itemsPerPage = heap.PAGE_SIZE / keySize; + + // Make sure we always have a page #0. + if (heap.pageCount() == 0) { + HeapPage root = heap.blankPage(); + heap.writePage(root); + } + } + + public void add(byte[] key, byte[] value) throws IOException { + HeapPage page = heap.loadPage(0); + + ByteBuffer k = ByteBuffer.wrap(key); + ByteBuffer current; + ByteBuffer smaller; + + Iterator it = page.items().iterator(); + + int position = 0; + + while(it.hasNext()) { + current = it.next(); + + int diff = k.compareTo(current); + + if(diff < 0) { + break; + } + } + +// page.prepend(); + } + + @Override + public void close() throws IOException { + heap.close(); + } + + public static class BtreeItem { + private final byte[] from; + private final int page; + + public BtreeItem(byte[] from, int page) { + this.from = from; + this.page = page; + } + } +} -- cgit v1.2.3