Author: elecharny
Date: Sun Mar 17 21:43:35 2013
New Revision: 1457568
URL: http://svn.apache.org/r1457568
Log:
o Fixed the Node.setValue() method, we don't have to create a ElementHolder
when we get one as a parameter
o Correctly read the Node references to children (they are Offset, not pages)
Modified:
labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/Node.java
labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/store/RecordManager.java
Modified:
labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/Node.java
URL:
http://svn.apache.org/viewvc/labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/Node.java?rev=1457568&r1=1457567&r2=1457568&view=diff
==============================================================================
--- labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/Node.java
(original)
+++ labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/Node.java
Sun Mar 17 21:43:35 2013
@@ -846,8 +846,7 @@ public class Node<K, V> extends Abstract
*/
public void setValue( int pos, ElementHolder<Page<K, V>, K, V> value )
{
- Page<K, V> page = value.getValue( btree );
- children[pos] = btree.createHolder( page );
+ children[pos] = value;
}
Modified:
labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/store/RecordManager.java
URL:
http://svn.apache.org/viewvc/labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/store/RecordManager.java?rev=1457568&r1=1457567&r2=1457568&view=diff
==============================================================================
---
labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/store/RecordManager.java
(original)
+++
labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/store/RecordManager.java
Sun Mar 17 21:43:35 2013
@@ -133,6 +133,9 @@ public class RecordManager
/** The default file name */
private static final String DEFAULT_FILE_NAME = "mavibot.db";
+ /** A deserializer for Offsets */
+ private static final LongSerializer OFFSET_SERIALIZER = new
LongSerializer();
+
/**
* Create a Record manager which will either create the underlying file
@@ -553,7 +556,28 @@ public class RecordManager
else
{
// It's a node
- page = BTreeFactory.createNode( btree, revision, -nbElems );
+ int nodeNbElems = -nbElems;
+
+ page = BTreeFactory.createNode( btree, revision, nodeNbElems );
+
+ // Read each value and key
+ for ( int i = 0; i < nodeNbElems; i++ )
+ {
+ // This is an Offset
+ long offset = OFFSET_SERIALIZER.deserialize( byteBuffer );
+
+ ElementHolder valueHolder = new ReferenceHolder( btree, null,
offset );
+ ( ( Node ) page ).setValue( i, valueHolder );
+
+ Object key = btree.getKeySerializer().deserialize( byteBuffer
);
+ BTreeFactory.setKey( page, i, key );
+ }
+
+ // and read the last value, as it's a node
+ long offset = OFFSET_SERIALIZER.deserialize( byteBuffer );
+
+ ElementHolder valueHolder = new ReferenceHolder( btree, null,
offset );
+ ( ( Node ) page ).setValue( nodeNbElems, valueHolder );
}
return page;
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]