Author: elecharny
Date: Tue Jun 19 17:40:22 2012
New Revision: 1351784

URL: http://svn.apache.org/viewvc?rev=1351784&view=rev
Log:
o Made the BasePage an abstract class, and renamed it AbstractPage (doing the 
opposite was a wrong move)
o Added the find(K) method

Added:
    
labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/AbstractPage.java
      - copied, changed from r1351421, 
labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/BasePage.java
Removed:
    
labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/BasePage.java
Modified:
    labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/BTree.java
    labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/Leaf.java
    labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/Node.java
    labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/Page.java

Copied: 
labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/AbstractPage.java
 (from r1351421, 
labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/BasePage.java)
URL: 
http://svn.apache.org/viewvc/labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/AbstractPage.java?p2=labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/AbstractPage.java&p1=labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/BasePage.java&r1=1351421&r2=1351784&rev=1351784&view=diff
==============================================================================
--- 
labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/BasePage.java 
(original)
+++ 
labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/AbstractPage.java
 Tue Jun 19 17:40:22 2012
@@ -28,7 +28,7 @@ package org.apache.mavibot.btree;
  *
  * @author <a href="mailto:[email protected]";>Mavibot labs Project</a>
  */
-public class BasePage<K, V> implements Page<K, V>
+public abstract class AbstractPage<K, V> implements Page<K, V>
 {
     /** Parent B+Tree. */
     protected transient BTree<K, V> btree;
@@ -51,7 +51,7 @@ public class BasePage<K, V> implements P
      * 
      * @param btree The associated BTree
      */
-    protected BasePage( BTree<K, V> btree )
+    protected AbstractPage( BTree<K, V> btree )
     {
         this.btree = btree;
     }
@@ -61,7 +61,7 @@ public class BasePage<K, V> implements P
      * Internal constructor used to create Page instance used when a page is 
being copied or overflow
      */
     @SuppressWarnings("unchecked") // Cannot create an array of generic objects
-    protected BasePage( BTree<K, V> btree, long revision, int nbElems )
+    protected AbstractPage( BTree<K, V> btree, long revision, int nbElems )
     {
         this.btree = btree;
         this.revision = revision;
@@ -80,15 +80,6 @@ public class BasePage<K, V> implements P
     }
 
     /**
-     * {@inheritDoc}
-     */
-    public InsertResult<K, V> insert( long revision, K key, V value )
-    {
-        return null;
-    }
-    
-    
-    /**
      * Find the position of the given key in the page. If we have found the 
key,
      * we will return its position as a negative value.
      * <p/>
@@ -194,23 +185,6 @@ public class BasePage<K, V> implements P
     
     
     /**
-     * Copy the current page and all its keys, with a new revision.
-     * 
-     * @param revision The new revision
-     * @return The copied page
-     */
-    protected Page<K, V> copy( long revision )
-    {
-        Page<K, V> newPage = new BasePage<K, V>( btree, revision, nbElems );
-
-        // Copy the keys
-        System.arraycopy( keys, 0, ((BasePage<K, V>)newPage).keys, 0, nbElems 
);
-
-        return newPage;
-    }
-
-
-    /**
      * {@inheritDoc}
      */
     public long getRevision()

Modified: 
labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/BTree.java
URL: 
http://svn.apache.org/viewvc/labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/BTree.java?rev=1351784&r1=1351783&r2=1351784&view=diff
==============================================================================
--- 
labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/BTree.java 
(original)
+++ 
labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/BTree.java 
Tue Jun 19 17:40:22 2012
@@ -180,6 +180,7 @@ public class BTree<K, V>
      * @param key Inserted key
      * @param value Inserted value
      * @return Existing value, if any.
+     * @throws IOException TODO
      */
     public V insert( K key, V value ) throws IOException
     {
@@ -187,6 +188,20 @@ public class BTree<K, V>
         
         return insert( key, value, revision );
     }
+    
+    
+    /**
+     * Find a value in the tree, given its key. if the key is not found,
+     * it will return null.
+     * 
+     * @param key The key we are looking at
+     * @return The found value, or null if the key is not present in the tree
+     * @throws IOException TODO
+     */
+    public V find( K key ) throws IOException
+    {
+        return rootPage.find( key );
+    }
 
 
     /**

Modified: 
labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/Leaf.java
URL: 
http://svn.apache.org/viewvc/labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/Leaf.java?rev=1351784&r1=1351783&r2=1351784&view=diff
==============================================================================
--- labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/Leaf.java 
(original)
+++ labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/Leaf.java 
Tue Jun 19 17:40:22 2012
@@ -27,7 +27,7 @@ package org.apache.mavibot.btree;
  *
  * @author <a href="mailto:[email protected]";>Mavibot labs Project</a>
  */
-public class Leaf<K, V> extends BasePage<K, V>
+public class Leaf<K, V> extends AbstractPage<K, V>
 {
     /** Values associated with keys */
     private V[] values;
@@ -98,7 +98,25 @@ public class Leaf<K, V> extends BasePage
             return result;
         }
     }
-    
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public V find( K key )
+    {
+        int pos = findPos( key );
+        
+        if ( pos < 0 )
+        {
+            return values[- ( pos + 1 ) ];
+        }
+        else
+        {
+            return null;
+        }
+    }
+
     
     /**
      * Copy the current page and all of the keys, values and children, if it's 
not a leaf.

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=1351784&r1=1351783&r2=1351784&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 
Tue Jun 19 17:40:22 2012
@@ -28,7 +28,7 @@ package org.apache.mavibot.btree;
  *
  * @author <a href="mailto:[email protected]";>Mavibot labs Project</a>
  */
-public class Node<K, V> extends BasePage<K, V>
+public class Node<K, V> extends AbstractPage<K, V>
 {
     /** Children pages associated with keys. */
     protected Page<K, V>[] children;
@@ -147,6 +147,24 @@ public class Node<K, V> extends BasePage
             return result;
         }
     }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public V find( K key )
+    {
+        int pos = findPos( key );
+        
+        if ( pos < 0 )
+        {
+            return children[- ( pos + 1 ) ].find( key );
+        }
+        else
+        {
+            return children[pos].find( key );
+        }
+    }
     
     
     /**

Modified: 
labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/Page.java
URL: 
http://svn.apache.org/viewvc/labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/Page.java?rev=1351784&r1=1351783&r2=1351784&view=diff
==============================================================================
--- labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/Page.java 
(original)
+++ labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/Page.java 
Tue Jun 19 17:40:22 2012
@@ -56,6 +56,15 @@ public interface Page<K, V>
     
     
     /**
+     * Find the value associated with the given key, if any.
+     * 
+     * @param key The key we are looking for
+     * @return The associated value, or null if there is none
+     */
+    V find( K key );
+    
+    
+    /**
      * @return the revision
      */
     long getRevision();



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to