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]

Reply via email to