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]