You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@labs.apache.org by el...@apache.org on 2013/03/04 15:32:34 UTC

svn commit: r1452328 - /labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/store/PageIO.java

Author: elecharny
Date: Mon Mar  4 14:32:33 2013
New Revision: 1452328

URL: http://svn.apache.org/r1452328
Log:
o Used a ByteBuffer instead of a byte[] to store data
o Added a toString() method

Modified:
    labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/store/PageIO.java

Modified: labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/store/PageIO.java
URL: http://svn.apache.org/viewvc/labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/store/PageIO.java?rev=1452328&r1=1452327&r2=1452328&view=diff
==============================================================================
--- labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/store/PageIO.java (original)
+++ labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/store/PageIO.java Mon Mar  4 14:32:33 2013
@@ -20,6 +20,11 @@
 package org.apache.mavibot.btree.store;
 
 
+import java.nio.ByteBuffer;
+
+import org.apache.mavinot.btree.utils.Strings;
+
+
 /**
  * A structure containing a Page on disk. It's a byte[PageSize] plus a few informations like
  * the page offset on disk and a link to the next page.</br>
@@ -53,13 +58,13 @@ package org.apache.mavibot.btree.store;
 public class PageIO
 {
     /** The contain data */
-    private byte[] data;
+    private ByteBuffer data;
 
     /** A pointer to the next pageIO */
     private long nextPage;
 
     /** The offset on disk */
-    private long size;
+    private int size;
 
     /** The position of the page on disk */
     private long offset;
@@ -90,7 +95,7 @@ public class PageIO
     /**
      * @return the data
      */
-    public byte[] getData()
+    public ByteBuffer getData()
     {
         return data;
     }
@@ -99,7 +104,7 @@ public class PageIO
     /**
      * @param data the data to set
      */
-    public void setData( byte[] data )
+    public void setData( ByteBuffer data )
     {
         this.data = data;
     }
@@ -112,14 +117,7 @@ public class PageIO
     public long getNextPage()
     {
         // read the nextPage from the PageIO
-        nextPage = ( ( long ) data[0] << 56 ) +
-            ( ( data[1] & 0xFFL ) << 48 ) +
-            ( ( data[2] & 0xFFL ) << 40 ) +
-            ( ( data[3] & 0xFFL ) << 32 ) +
-            ( ( data[4] & 0xFFL ) << 24 ) +
-            ( ( data[5] & 0xFFL ) << 16 ) +
-            ( ( data[6] & 0xFFL ) << 8 ) +
-            ( data[7] & 0xFFL );
+        nextPage = data.getLong( 0 );
 
         return nextPage;
     }
@@ -132,14 +130,7 @@ public class PageIO
     {
         this.nextPage = nextPage;
 
-        data[0] = ( byte ) ( nextPage >>> 56 );
-        data[1] = ( byte ) ( nextPage >>> 48 );
-        data[2] = ( byte ) ( nextPage >>> 40 );
-        data[3] = ( byte ) ( nextPage >>> 32 );
-        data[4] = ( byte ) ( nextPage >>> 24 );
-        data[5] = ( byte ) ( nextPage >>> 16 );
-        data[6] = ( byte ) ( nextPage >>> 8 );
-        data[7] = ( byte ) ( nextPage );
+        data.putLong( 0, nextPage );
     }
 
 
@@ -148,10 +139,7 @@ public class PageIO
      */
     public long getSize()
     {
-        size = ( data[8] << 24 ) +
-            ( ( data[9] & 0xFF ) << 16 ) +
-            ( ( data[10] & 0xFF ) << 8 ) +
-            ( data[11] & 0xFF );
+        size = data.getInt( 8 );
 
         return size;
     }
@@ -160,12 +148,9 @@ public class PageIO
     /**
      * @param size the size to set
      */
-    public void setSize( long size )
+    public void setSize( int size )
     {
-        data[8] = ( byte ) ( size >>> 24 );
-        data[9] = ( byte ) ( size >>> 16 );
-        data[10] = ( byte ) ( size >>> 8 );
-        data[11] = ( byte ) ( size );
+        data.putInt( 8, size );
 
         this.size = size;
     }
@@ -187,4 +172,50 @@ public class PageIO
     {
         this.offset = offset;
     }
+
+
+    /**
+     * @see Object#toString()
+     */
+    public String toString()
+    {
+        StringBuilder sb = new StringBuilder();
+
+        sb.append( "PageIO[offset:" ).append( offset );
+
+        if ( size != -1 )
+        {
+            sb.append( ", size:" ).append( size );
+        }
+
+        if ( nextPage != -1L )
+        {
+            sb.append( ", next:" ).append( nextPage );
+        }
+
+        sb.append( "]" );
+
+        int start = 8;
+
+        if ( size != -1 )
+        {
+            start += 4;
+        }
+
+        byte[] array = data.array();
+        for ( int i = start; i < array.length; i++ )
+        {
+            if ( ( ( i - start ) % 16 ) == 0 )
+            {
+                sb.append( "\n    " );
+            }
+
+            sb.append( Strings.dumpByte( array[i] ) ).append( " " );
+        }
+        {
+
+        }
+
+        return sb.toString();
+    }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org