You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by el...@apache.org on 2013/09/30 08:32:28 UTC
svn commit: r1527458 [1/14] - in /directory/mavibot/trunk/mavibot: img/
src/main/java/org/apache/directory/mavibot/btree/
src/main/java/org/apache/directory/mavibot/btree/managed/
src/main/java/org/apache/directory/mavibot/btree/memory/ src/main/java/o...
Author: elecharny
Date: Mon Sep 30 06:32:25 2013
New Revision: 1527458
URL: http://svn.apache.org/r1527458
Log:
Split the BTree packages into 2 different packages :
- one for in-memory btrees
- one for managed btree
Added:
directory/mavibot/trunk/mavibot/img/ElementHolder.graphml
directory/mavibot/trunk/mavibot/img/ElementHolder.png (with props)
directory/mavibot/trunk/mavibot/img/MavibotValue.graphml
directory/mavibot/trunk/mavibot/img/MavibotValue.png (with props)
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/managed/
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/managed/AbstractBorrowedFromSiblingResult.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/managed/AbstractDeleteResult.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/managed/AbstractPage.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/managed/AbstractResult.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/managed/BTree.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/managed/BTreeBuilder.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/managed/BTreeConfiguration.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/managed/BTreeFactory.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/managed/BorrowedFromLeftResult.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/managed/BorrowedFromRightResult.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/managed/BorrowedFromSiblingResult.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/managed/BulkDataSorter.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/managed/CacheHolder.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/managed/CursorImpl.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/managed/DeleteResult.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/managed/DuplicateKeyVal.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/managed/ElementHolder.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/managed/InsertResult.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/managed/InternalUtil.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/managed/Leaf.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/managed/MemoryHolder.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/managed/MergedWithSiblingResult.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/managed/ModifyResult.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/managed/MultipleMemoryHolder.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/managed/Node.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/managed/NotPresentResult.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/managed/Page.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/managed/PageIO.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/managed/ParentPos.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/managed/RecordManager.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/managed/ReferenceHolder.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/managed/RemoveResult.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/managed/RevisionName.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/managed/RevisionNameComparator.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/managed/RevisionNameSerializer.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/managed/SplitResult.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/managed/Transaction.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/memory/
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/memory/AbstractBorrowedFromSiblingResult.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/memory/AbstractDeleteResult.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/memory/AbstractPage.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/memory/AbstractResult.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/memory/BTree.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/memory/BTreeBuilder.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/memory/BTreeConfiguration.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/memory/BTreeFactory.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/memory/BTreeTypeEnum.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/memory/BorrowedFromLeftResult.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/memory/BorrowedFromRightResult.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/memory/BorrowedFromSiblingResult.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/memory/BulkDataSorter.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/memory/CursorImpl.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/memory/DeleteResult.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/memory/DuplicateKeyVal.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/memory/ElementHolder.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/memory/InsertResult.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/memory/InternalUtil.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/memory/Leaf.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/memory/MemoryHolder.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/memory/MergedWithSiblingResult.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/memory/ModifyResult.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/memory/MultipleMemoryHolder.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/memory/Node.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/memory/NotPresentResult.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/memory/Page.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/memory/ParentPos.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/memory/RemoveResult.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/memory/SplitResult.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/memory/Transaction.java
directory/mavibot/trunk/mavibot/src/test/java/org/apache/directory/mavibot/btree/managed/
directory/mavibot/trunk/mavibot/src/test/java/org/apache/directory/mavibot/btree/managed/ReadTest.java
directory/mavibot/trunk/mavibot/src/test/java/org/apache/directory/mavibot/btree/managed/RecordManagerFreePageTest.java
directory/mavibot/trunk/mavibot/src/test/java/org/apache/directory/mavibot/btree/managed/RecordManagerPrivateMethodTest.java
directory/mavibot/trunk/mavibot/src/test/java/org/apache/directory/mavibot/btree/managed/RecordManagerTest.java
directory/mavibot/trunk/mavibot/src/test/java/org/apache/directory/mavibot/btree/managed/RecordManagerWithDuplicatesTest.java
directory/mavibot/trunk/mavibot/src/test/java/org/apache/directory/mavibot/btree/managed/StoreTest.java
directory/mavibot/trunk/mavibot/src/test/java/org/apache/directory/mavibot/btree/memory/
directory/mavibot/trunk/mavibot/src/test/java/org/apache/directory/mavibot/btree/memory/BTreeBuilderTest.java
directory/mavibot/trunk/mavibot/src/test/java/org/apache/directory/mavibot/btree/memory/BTreeConfigurationTest.java
directory/mavibot/trunk/mavibot/src/test/java/org/apache/directory/mavibot/btree/memory/BTreeDuplicateKeyTest.java
directory/mavibot/trunk/mavibot/src/test/java/org/apache/directory/mavibot/btree/memory/BTreeFlushTest.java
directory/mavibot/trunk/mavibot/src/test/java/org/apache/directory/mavibot/btree/memory/BulkDataSorterTest.java
directory/mavibot/trunk/mavibot/src/test/java/org/apache/directory/mavibot/btree/memory/InMemoryBTreeTest.java
directory/mavibot/trunk/mavibot/src/test/java/org/apache/directory/mavibot/btree/memory/InMemoryBTreeTestOps.java
directory/mavibot/trunk/mavibot/src/test/java/org/apache/directory/mavibot/btree/memory/LeafTest.java
directory/mavibot/trunk/mavibot/src/test/java/org/apache/directory/mavibot/btree/memory/MultiThreadedBtreeTest.java
Removed:
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/AbstractBorrowedFromSiblingResult.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/AbstractDeleteResult.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/AbstractPage.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/AbstractResult.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/BTree.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/BTreeBuilder.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/BTreeConfiguration.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/BTreeFactory.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/BorrowedFromLeftResult.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/BorrowedFromRightResult.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/BorrowedFromSiblingResult.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/CacheHolder.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/DeleteResult.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/DuplicateKeyVal.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/ElementHolder.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/InsertResult.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/InternalUtil.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/Leaf.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/MemoryHolder.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/MergedWithSiblingResult.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/ModifyResult.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/MultipleMemoryHolder.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/Node.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/NotPresentResult.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/Page.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/PageIO.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/ParentPos.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/RecordManager.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/ReferenceHolder.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/RemoveResult.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/SplitResult.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/Transaction.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/util/BulkDataSorter.java
directory/mavibot/trunk/mavibot/src/test/java/org/apache/directory/mavibot/btree/BTreeBuilderTest.java
directory/mavibot/trunk/mavibot/src/test/java/org/apache/directory/mavibot/btree/BTreeConfigurationTest.java
directory/mavibot/trunk/mavibot/src/test/java/org/apache/directory/mavibot/btree/BTreeDuplicateKeyTest.java
directory/mavibot/trunk/mavibot/src/test/java/org/apache/directory/mavibot/btree/BTreeFlushTest.java
directory/mavibot/trunk/mavibot/src/test/java/org/apache/directory/mavibot/btree/InMemoryBTreeTest.java
directory/mavibot/trunk/mavibot/src/test/java/org/apache/directory/mavibot/btree/InMemoryBTreeTestOps.java
directory/mavibot/trunk/mavibot/src/test/java/org/apache/directory/mavibot/btree/LeafTest.java
directory/mavibot/trunk/mavibot/src/test/java/org/apache/directory/mavibot/btree/MultiThreadedBtreeTest.java
directory/mavibot/trunk/mavibot/src/test/java/org/apache/directory/mavibot/btree/ReadTest.java
directory/mavibot/trunk/mavibot/src/test/java/org/apache/directory/mavibot/btree/RecordManagerFreePageTest.java
directory/mavibot/trunk/mavibot/src/test/java/org/apache/directory/mavibot/btree/RecordManagerPrivateMethodTest.java
directory/mavibot/trunk/mavibot/src/test/java/org/apache/directory/mavibot/btree/RecordManagerTest.java
directory/mavibot/trunk/mavibot/src/test/java/org/apache/directory/mavibot/btree/RecordManagerWithDuplicatesTest.java
directory/mavibot/trunk/mavibot/src/test/java/org/apache/directory/mavibot/btree/StoreTest.java
directory/mavibot/trunk/mavibot/src/test/java/org/apache/directory/mavibot/btree/util/
Modified:
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/BTreeHeader.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/Cursor.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/Result.java
directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/Tuple.java
Added: directory/mavibot/trunk/mavibot/img/ElementHolder.graphml
URL: http://svn.apache.org/viewvc/directory/mavibot/trunk/mavibot/img/ElementHolder.graphml?rev=1527458&view=auto
==============================================================================
--- directory/mavibot/trunk/mavibot/img/ElementHolder.graphml (added)
+++ directory/mavibot/trunk/mavibot/img/ElementHolder.graphml Mon Sep 30 06:32:25 2013
@@ -0,0 +1,195 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:y="http://www.yworks.com/xml/graphml" xmlns:yed="http://www.yworks.com/xml/yed/3" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://www.yworks.com/xml/schema/graphml/1.1/ygraphml.xsd">
+ <!--Created by yFiles for Java 2.11-->
+ <key for="graphml" id="d0" yfiles.type="resources"/>
+ <key for="port" id="d1" yfiles.type="portgraphics"/>
+ <key for="port" id="d2" yfiles.type="portgeometry"/>
+ <key for="port" id="d3" yfiles.type="portuserdata"/>
+ <key attr.name="url" attr.type="string" for="node" id="d4"/>
+ <key attr.name="description" attr.type="string" for="node" id="d5"/>
+ <key for="node" id="d6" yfiles.type="nodegraphics"/>
+ <key attr.name="Description" attr.type="string" for="graph" id="d7"/>
+ <key attr.name="url" attr.type="string" for="edge" id="d8"/>
+ <key attr.name="description" attr.type="string" for="edge" id="d9"/>
+ <key for="edge" id="d10" yfiles.type="edgegraphics"/>
+ <graph edgedefault="directed" id="G">
+ <data key="d7"/>
+ <node id="n0">
+ <data key="d5"/>
+ <data key="d6">
+ <y:GenericNode configuration="BevelNode2">
+ <y:Geometry height="30.0" width="164.0" x="132.5" y="100.0"/>
+ <y:Fill color="#FFFF99" transparent="false"/>
+ <y:BorderStyle hasColor="false" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="77.1484375" x="43.42578125" y="5.93359375">Element<T><y:LabelModel>
+ <y:SmartNodeLabelModel distance="4.0"/>
+ </y:LabelModel>
+ <y:ModelParameter>
+ <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+ </y:ModelParameter>
+ </y:NodeLabel>
+ <y:StyleProperties>
+ <y:Property class="java.lang.Boolean" name="ModernNodeShadow" value="true"/>
+ </y:StyleProperties>
+ </y:GenericNode>
+ </data>
+ </node>
+ <node id="n1">
+ <data key="d5"/>
+ <data key="d6">
+ <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+ <y:Geometry height="30.0" width="164.0" x="296.0" y="176.5"/>
+ <y:Fill color="#CCFFCC" transparent="false"/>
+ <y:BorderStyle hasColor="false" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="125.7578125" x="19.12109375" y="5.93359375">AbstractElement<T><y:LabelModel>
+ <y:SmartNodeLabelModel distance="4.0"/>
+ </y:LabelModel>
+ <y:ModelParameter>
+ <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+ </y:ModelParameter>
+ </y:NodeLabel>
+ </y:GenericNode>
+ </data>
+ </node>
+ <node id="n2">
+ <data key="d5"/>
+ <data key="d6">
+ <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+ <y:Geometry height="30.0" width="237.0" x="426.0" y="253.0"/>
+ <y:Fill color="#CCFFFF" transparent="false"/>
+ <y:BorderStyle hasColor="false" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="32.265625" modelName="custom" textColor="#000000" visible="true" width="132.701171875" x="52.1494140625" y="-1.1328125">SingleElement<V> ->
+AbstractElement<V><y:LabelModel>
+ <y:SmartNodeLabelModel distance="4.0"/>
+ </y:LabelModel>
+ <y:ModelParameter>
+ <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+ </y:ModelParameter>
+ </y:NodeLabel>
+ </y:GenericNode>
+ </data>
+ </node>
+ <node id="n3">
+ <data key="d5"/>
+ <data key="d6">
+ <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+ <y:Geometry height="30.0" width="237.0" x="426.0" y="313.0"/>
+ <y:Fill color="#CCFFFF" transparent="false"/>
+ <y:BorderStyle hasColor="false" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="32.265625" modelName="custom" textColor="#000000" visible="true" width="178.896484375" x="29.0517578125" y="-1.1328125">BtreeValue<V> ->
+AbstractValue<BTree<V, V>><y:LabelModel>
+ <y:SmartNodeLabelModel distance="4.0"/>
+ </y:LabelModel>
+ <y:ModelParameter>
+ <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+ </y:ModelParameter>
+ </y:NodeLabel>
+ </y:GenericNode>
+ </data>
+ </node>
+ <node id="n4">
+ <data key="d5"/>
+ <data key="d6">
+ <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+ <y:Geometry height="30.0" width="237.0" x="426.0" y="373.0"/>
+ <y:Fill color="#CCFFFF" transparent="false"/>
+ <y:BorderStyle hasColor="false" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="32.265625" modelName="custom" textColor="#000000" visible="true" width="170.248046875" x="33.3759765625" y="-1.1328125">LeafValue<V> ->
+AbstractValue<Leaf<V, V>><y:LabelModel>
+ <y:SmartNodeLabelModel distance="4.0"/>
+ </y:LabelModel>
+ <y:ModelParameter>
+ <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+ </y:ModelParameter>
+ </y:NodeLabel>
+ </y:GenericNode>
+ </data>
+ </node>
+ <node id="n5">
+ <data key="d5"/>
+ <data key="d6">
+ <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+ <y:Geometry height="30.0" width="237.0" x="426.0" y="433.0"/>
+ <y:Fill color="#CCFFFF" transparent="false"/>
+ <y:BorderStyle hasColor="false" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="32.265625" modelName="custom" textColor="#000000" visible="true" width="176.599609375" x="30.2001953125" y="-1.1328125">NodeValue<V> ->
+AbstractValue<Node<V, V>><y:LabelModel>
+ <y:SmartNodeLabelModel distance="4.0"/>
+ </y:LabelModel>
+ <y:ModelParameter>
+ <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+ </y:ModelParameter>
+ </y:NodeLabel>
+ </y:GenericNode>
+ </data>
+ </node>
+ <edge id="e0" source="n3" target="n1">
+ <data key="d9"/>
+ <data key="d10">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
+ <y:Point x="378.0" y="328.0"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="white_delta"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e1" source="n2" target="n1">
+ <data key="d9"/>
+ <data key="d10">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
+ <y:Point x="378.0" y="268.0"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="white_delta"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e2" source="n1" target="n0">
+ <data key="d9"/>
+ <data key="d10">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
+ <y:Point x="214.5" y="191.5"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="transparent_circle"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e3" source="n4" target="n1">
+ <data key="d9"/>
+ <data key="d10">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
+ <y:Point x="378.0" y="388.0"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="white_delta"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e4" source="n5" target="n1">
+ <data key="d9"/>
+ <data key="d10">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
+ <y:Point x="378.0" y="448.0"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="white_delta"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ </graph>
+ <data key="d0">
+ <y:Resources/>
+ </data>
+</graphml>
Added: directory/mavibot/trunk/mavibot/img/ElementHolder.png
URL: http://svn.apache.org/viewvc/directory/mavibot/trunk/mavibot/img/ElementHolder.png?rev=1527458&view=auto
==============================================================================
Binary file - no diff available.
Propchange: directory/mavibot/trunk/mavibot/img/ElementHolder.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: directory/mavibot/trunk/mavibot/img/MavibotValue.graphml
URL: http://svn.apache.org/viewvc/directory/mavibot/trunk/mavibot/img/MavibotValue.graphml?rev=1527458&view=auto
==============================================================================
--- directory/mavibot/trunk/mavibot/img/MavibotValue.graphml (added)
+++ directory/mavibot/trunk/mavibot/img/MavibotValue.graphml Mon Sep 30 06:32:25 2013
@@ -0,0 +1,349 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:y="http://www.yworks.com/xml/graphml" xmlns:yed="http://www.yworks.com/xml/yed/3" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://www.yworks.com/xml/schema/graphml/1.1/ygraphml.xsd">
+ <!--Created by yFiles for Java 2.11-->
+ <key for="graphml" id="d0" yfiles.type="resources"/>
+ <key for="port" id="d1" yfiles.type="portgraphics"/>
+ <key for="port" id="d2" yfiles.type="portgeometry"/>
+ <key for="port" id="d3" yfiles.type="portuserdata"/>
+ <key attr.name="url" attr.type="string" for="node" id="d4"/>
+ <key attr.name="description" attr.type="string" for="node" id="d5"/>
+ <key for="node" id="d6" yfiles.type="nodegraphics"/>
+ <key attr.name="Description" attr.type="string" for="graph" id="d7"/>
+ <key attr.name="url" attr.type="string" for="edge" id="d8"/>
+ <key attr.name="description" attr.type="string" for="edge" id="d9"/>
+ <key for="edge" id="d10" yfiles.type="edgegraphics"/>
+ <graph edgedefault="directed" id="G">
+ <data key="d7"/>
+ <node id="n0">
+ <data key="d5"/>
+ <data key="d6">
+ <y:GenericNode configuration="BevelNode2">
+ <y:Geometry height="30.0" width="164.0" x="158.0" y="125.0"/>
+ <y:Fill color="#FFFF99" transparent="false"/>
+ <y:BorderStyle hasColor="false" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="145.73828125" x="9.130859375" y="5.93359375">ElementHolder<E, K, V><y:LabelModel>
+ <y:SmartNodeLabelModel distance="4.0"/>
+ </y:LabelModel>
+ <y:ModelParameter>
+ <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+ </y:ModelParameter>
+ </y:NodeLabel>
+ <y:StyleProperties>
+ <y:Property class="java.lang.Boolean" name="ModernNodeShadow" value="true"/>
+ </y:StyleProperties>
+ </y:GenericNode>
+ </data>
+ </node>
+ <node id="n1">
+ <data key="d5"/>
+ <data key="d6">
+ <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+ <y:Geometry height="30.0" width="164.0" x="321.5" y="201.5"/>
+ <y:Fill color="#CCFFCC" transparent="false"/>
+ <y:BorderStyle hasColor="false" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="134.46484375" x="14.767578125" y="5.93359375">CacheHolder<E, K, V><y:LabelModel>
+ <y:SmartNodeLabelModel distance="4.0"/>
+ </y:LabelModel>
+ <y:ModelParameter>
+ <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+ </y:ModelParameter>
+ </y:NodeLabel>
+ </y:GenericNode>
+ </data>
+ </node>
+ <node id="n2">
+ <data key="d5"/>
+ <data key="d6">
+ <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+ <y:Geometry height="30.0" width="164.0" x="321.5" y="518.0"/>
+ <y:Fill color="#CCFFCC" transparent="false"/>
+ <y:BorderStyle hasColor="false" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="146.03125" x="8.984375" y="5.93359375">MemoryHolder<E, K, V><y:LabelModel>
+ <y:SmartNodeLabelModel distance="4.0"/>
+ </y:LabelModel>
+ <y:ModelParameter>
+ <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+ </y:ModelParameter>
+ </y:NodeLabel>
+ </y:GenericNode>
+ </data>
+ </node>
+ <node id="n3">
+ <data key="d5"/>
+ <data key="d6">
+ <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+ <y:Geometry height="30.0" width="237.0" x="451.5" y="278.0"/>
+ <y:Fill color="#CCFFFF" transparent="false"/>
+ <y:BorderStyle hasColor="false" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="32.265625" modelName="custom" textColor="#000000" visible="true" width="232.861328125" x="2.0693359375" y="-1.1328125">NodeCacheHolder<K, V> ->
+CacheHolder<NodeValue<K, V>, K, V><y:LabelModel>
+ <y:SmartNodeLabelModel distance="4.0"/>
+ </y:LabelModel>
+ <y:ModelParameter>
+ <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+ </y:ModelParameter>
+ </y:NodeLabel>
+ </y:GenericNode>
+ </data>
+ </node>
+ <node id="n4">
+ <data key="d5"/>
+ <data key="d6">
+ <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+ <y:Geometry height="30.0" width="237.0" x="451.5" y="338.0"/>
+ <y:Fill color="#CCFFFF" transparent="false"/>
+ <y:BorderStyle hasColor="false" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="32.265625" modelName="custom" textColor="#000000" visible="true" width="226.509765625" x="5.2451171875" y="-1.1328125">LeafCacheHolder>K, V> ->
+CacheHolder<LeafValue<K, V>, K, V><y:LabelModel>
+ <y:SmartNodeLabelModel distance="4.0"/>
+ </y:LabelModel>
+ <y:ModelParameter>
+ <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+ </y:ModelParameter>
+ </y:NodeLabel>
+ </y:GenericNode>
+ </data>
+ </node>
+ <node id="n5">
+ <data key="d5"/>
+ <data key="d6">
+ <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+ <y:Geometry height="30.0" width="237.0" x="451.5" y="398.0"/>
+ <y:Fill color="#CCFFFF" transparent="false"/>
+ <y:BorderStyle hasColor="false" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="32.265625" modelName="custom" textColor="#000000" visible="true" width="221.974609375" x="7.5126953125" y="-1.1328125">ValueCacheHolder<K, V> ->
+CacheHolder<SingleValue<V>, K, V><y:LabelModel>
+ <y:SmartNodeLabelModel distance="4.0"/>
+ </y:LabelModel>
+ <y:ModelParameter>
+ <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+ </y:ModelParameter>
+ </y:NodeLabel>
+ </y:GenericNode>
+ </data>
+ </node>
+ <node id="n6">
+ <data key="d5"/>
+ <data key="d6">
+ <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+ <y:Geometry height="30.0" width="237.0" x="451.5" y="578.0"/>
+ <y:Fill color="#CCFFFF" transparent="false"/>
+ <y:BorderStyle hasColor="false" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="32.265625" modelName="custom" textColor="#000000" visible="true" width="244.427734375" x="-3.7138671875" y="-1.1328125">NodeMemoryHolder<K, V> ->
+MemoryHolder<NodeValue<K, V>, K, V><y:LabelModel>
+ <y:SmartNodeLabelModel distance="4.0"/>
+ </y:LabelModel>
+ <y:ModelParameter>
+ <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+ </y:ModelParameter>
+ </y:NodeLabel>
+ </y:GenericNode>
+ </data>
+ </node>
+ <node id="n7">
+ <data key="d5"/>
+ <data key="d6">
+ <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+ <y:Geometry height="30.0" width="237.0" x="451.5" y="638.0"/>
+ <y:Fill color="#CCFFFF" transparent="false"/>
+ <y:BorderStyle hasColor="false" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="32.265625" modelName="custom" textColor="#000000" visible="true" width="238.076171875" x="-0.5380859375" y="-1.1328125">LeafMemoryHolder<K, V> ->
+MemoryHolder<LeafValue<K, V>, K, V><y:LabelModel>
+ <y:SmartNodeLabelModel distance="4.0"/>
+ </y:LabelModel>
+ <y:ModelParameter>
+ <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+ </y:ModelParameter>
+ </y:NodeLabel>
+ </y:GenericNode>
+ </data>
+ </node>
+ <node id="n8">
+ <data key="d5"/>
+ <data key="d6">
+ <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+ <y:Geometry height="30.0" width="237.0" x="451.5" y="698.0"/>
+ <y:Fill color="#CCFFFF" transparent="false"/>
+ <y:BorderStyle hasColor="false" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="32.265625" modelName="custom" textColor="#000000" visible="true" width="233.541015625" x="1.7294921875" y="-1.1328125">ValueMemoryHolder<K, V> ->
+MemoryHolder<SingleValue<V>, K, V><y:LabelModel>
+ <y:SmartNodeLabelModel distance="4.0"/>
+ </y:LabelModel>
+ <y:ModelParameter>
+ <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+ </y:ModelParameter>
+ </y:NodeLabel>
+ </y:GenericNode>
+ </data>
+ </node>
+ <node id="n9">
+ <data key="d5"/>
+ <data key="d6">
+ <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+ <y:Geometry height="30.0" width="237.0" x="451.5" y="458.0"/>
+ <y:Fill color="#CCFFFF" transparent="false"/>
+ <y:BorderStyle hasColor="false" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="32.265625" modelName="custom" textColor="#000000" visible="true" width="219.73046875" x="8.634765625" y="-1.1328125">MultipleValueCacheHolder<K, V> ->
+CacheHolder<BTreeValue<V>, K, V><y:LabelModel>
+ <y:SmartNodeLabelModel distance="4.0"/>
+ </y:LabelModel>
+ <y:ModelParameter>
+ <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+ </y:ModelParameter>
+ </y:NodeLabel>
+ </y:GenericNode>
+ </data>
+ </node>
+ <node id="n10">
+ <data key="d5"/>
+ <data key="d6">
+ <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+ <y:Geometry height="30.0" width="237.0" x="451.5" y="758.0"/>
+ <y:Fill color="#CCFFFF" transparent="false"/>
+ <y:BorderStyle hasColor="false" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="32.265625" modelName="custom" textColor="#000000" visible="true" width="231.296875" x="2.8515625" y="-1.1328125">MultipleValueMemoryHolder<K, V> ->
+MemoryHolder<BTreeValue<V>, K, V><y:LabelModel>
+ <y:SmartNodeLabelModel distance="4.0"/>
+ </y:LabelModel>
+ <y:ModelParameter>
+ <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+ </y:ModelParameter>
+ </y:NodeLabel>
+ </y:GenericNode>
+ </data>
+ </node>
+ <edge id="e0" source="n6" target="n2">
+ <data key="d9"/>
+ <data key="d10">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
+ <y:Point x="403.5" y="593.0"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="white_delta"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e1" source="n7" target="n2">
+ <data key="d9"/>
+ <data key="d10">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
+ <y:Point x="403.5" y="653.0"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="white_delta"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e2" source="n8" target="n2">
+ <data key="d9"/>
+ <data key="d10">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
+ <y:Point x="403.5" y="713.0"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="white_delta"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e3" source="n10" target="n2">
+ <data key="d9"/>
+ <data key="d10">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
+ <y:Point x="403.5" y="773.0"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="white_delta"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e4" source="n9" target="n1">
+ <data key="d9"/>
+ <data key="d10">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
+ <y:Point x="403.5" y="473.0"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="white_delta"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e5" source="n5" target="n1">
+ <data key="d9"/>
+ <data key="d10">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
+ <y:Point x="403.5" y="413.0"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="white_delta"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e6" source="n4" target="n1">
+ <data key="d9"/>
+ <data key="d10">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
+ <y:Point x="403.5" y="353.0"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="white_delta"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e7" source="n3" target="n1">
+ <data key="d9"/>
+ <data key="d10">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
+ <y:Point x="403.5" y="293.0"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="white_delta"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e8" source="n2" target="n0">
+ <data key="d9"/>
+ <data key="d10">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
+ <y:Point x="240.0" y="533.0"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="transparent_circle"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e9" source="n1" target="n0">
+ <data key="d9"/>
+ <data key="d10">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
+ <y:Point x="240.0" y="216.5"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="transparent_circle"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ </graph>
+ <data key="d0">
+ <y:Resources/>
+ </data>
+</graphml>
Added: directory/mavibot/trunk/mavibot/img/MavibotValue.png
URL: http://svn.apache.org/viewvc/directory/mavibot/trunk/mavibot/img/MavibotValue.png?rev=1527458&view=auto
==============================================================================
Binary file - no diff available.
Propchange: directory/mavibot/trunk/mavibot/img/MavibotValue.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Modified: directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/BTreeHeader.java
URL: http://svn.apache.org/viewvc/directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/BTreeHeader.java?rev=1527458&r1=1527457&r2=1527458&view=diff
==============================================================================
--- directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/BTreeHeader.java (original)
+++ directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/BTreeHeader.java Mon Sep 30 06:32:25 2013
@@ -49,7 +49,7 @@ import java.util.concurrent.atomic.Atomi
*
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
*/
-/* No qualifier*/class BTreeHeader
+public class BTreeHeader
{
/** The current revision */
private AtomicLong revision = new AtomicLong( 0L );
@@ -123,7 +123,7 @@ import java.util.concurrent.atomic.Atomi
/**
* @param versions the versions to set
*/
- /* No qualifier*/void setVersions( long[] versions )
+ public void setVersions( long[] versions )
{
this.versions = versions;
}
@@ -132,7 +132,7 @@ import java.util.concurrent.atomic.Atomi
/**
* @return the btreeOffset
*/
- /* No qualifier*/long getBTreeOffset()
+ public long getBTreeOffset()
{
return btreeOffset;
}
@@ -141,7 +141,7 @@ import java.util.concurrent.atomic.Atomi
/**
* @param btreeOffset the btreeOffset to set
*/
- /* No qualifier*/void setBTreeOffset( long btreeOffset )
+ public void setBTreeOffset( long btreeOffset )
{
this.btreeOffset = btreeOffset;
}
@@ -150,7 +150,7 @@ import java.util.concurrent.atomic.Atomi
/**
* @return the rootPageOffset
*/
- /* No qualifier*/long getRootPageOffset()
+ public long getRootPageOffset()
{
return rootPageOffset;
}
@@ -159,7 +159,7 @@ import java.util.concurrent.atomic.Atomi
/**
* @param rootPageOffset the rootPageOffset to set
*/
- /* No qualifier*/void setRootPageOffset( long rootPageOffset )
+ public void setRootPageOffset( long rootPageOffset )
{
this.rootPageOffset = rootPageOffset;
}
@@ -177,7 +177,7 @@ import java.util.concurrent.atomic.Atomi
/**
* @param revision the revision to set
*/
- /* No qualifier*/void setRevision( long revision )
+ public void setRevision( long revision )
{
this.revision.set( revision );
}
@@ -188,7 +188,7 @@ import java.util.concurrent.atomic.Atomi
*
* @return the new revision
*/
- /* No qualifier*/long incrementRevision()
+ public long incrementRevision()
{
return revision.incrementAndGet();
}
@@ -206,7 +206,7 @@ import java.util.concurrent.atomic.Atomi
/**
* Increment the number of elements
*/
- /* No qualifier*/void incrementNbElems()
+ public void incrementNbElems()
{
nbElems.incrementAndGet();
}
@@ -215,7 +215,7 @@ import java.util.concurrent.atomic.Atomi
/**
* Decrement the number of elements
*/
- /* No qualifier*/void decrementNbElems()
+ public void decrementNbElems()
{
nbElems.decrementAndGet();
}
@@ -233,7 +233,7 @@ import java.util.concurrent.atomic.Atomi
/**
* @return the nextBTreeOffset
*/
- /* No qualifier*/long getNextBTreeOffset()
+ public long getNextBTreeOffset()
{
return nextBTreeOffset;
}
@@ -242,7 +242,7 @@ import java.util.concurrent.atomic.Atomi
/**
* @param nextBtreeOffset the nextBtreeOffset to set
*/
- /* No qualifier*/void setNextBTreeOffset( long nextBTreeOffset )
+ public void setNextBTreeOffset( long nextBTreeOffset )
{
this.nextBTreeOffset = nextBTreeOffset;
}
@@ -269,7 +269,7 @@ import java.util.concurrent.atomic.Atomi
/**
* @return the keySerializerFQCN
*/
- /* No qualifier*/String getKeySerializerFQCN()
+ public String getKeySerializerFQCN()
{
return keySerializerFQCN;
}
@@ -278,7 +278,7 @@ import java.util.concurrent.atomic.Atomi
/**
* @param keySerializerFQCN the keySerializerFQCN to set
*/
- /* No qualifier*/void setKeySerializerFQCN( String keySerializerFQCN )
+ public void setKeySerializerFQCN( String keySerializerFQCN )
{
this.keySerializerFQCN = keySerializerFQCN;
}
@@ -287,7 +287,7 @@ import java.util.concurrent.atomic.Atomi
/**
* @return the valueSerializerFQCN
*/
- /* No qualifier*/String getValueSerializerFQCN()
+ public String getValueSerializerFQCN()
{
return valueSerializerFQCN;
}
@@ -296,19 +296,19 @@ import java.util.concurrent.atomic.Atomi
/**
* @param valueSerializerFQCN the valueSerializerFQCN to set
*/
- /* No qualifier*/void setValueSerializerFQCN( String valueSerializerFQCN )
+ public void setValueSerializerFQCN( String valueSerializerFQCN )
{
this.valueSerializerFQCN = valueSerializerFQCN;
}
- /* No qualifier*/boolean isAllowDuplicates()
+ public boolean isAllowDuplicates()
{
return ( allowDuplicates == 1 );
}
- /* No qualifier*/void setAllowDuplicates( boolean allowDuplicates )
+ public void setAllowDuplicates( boolean allowDuplicates )
{
this.allowDuplicates = ( allowDuplicates ? 1 : 0 );
}
Modified: directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/Cursor.java
URL: http://svn.apache.org/viewvc/directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/Cursor.java?rev=1527458&r1=1527457&r2=1527458&view=diff
==============================================================================
--- directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/Cursor.java (original)
+++ directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/Cursor.java Mon Sep 30 06:32:25 2013
@@ -20,13 +20,7 @@
package org.apache.directory.mavibot.btree;
-import static org.apache.directory.mavibot.btree.InternalUtil.changeNextDupsContainer;
-import static org.apache.directory.mavibot.btree.InternalUtil.changePrevDupsContainer;
-import static org.apache.directory.mavibot.btree.InternalUtil.setDupsContainer;
-
import java.io.IOException;
-import java.util.LinkedList;
-import java.util.NoSuchElementException;
import org.apache.directory.mavibot.btree.exception.EndOfFileExceededException;
@@ -42,45 +36,8 @@ import org.apache.directory.mavibot.btre
*
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
*/
-public class Cursor<K, V>
+public interface Cursor<K, V>
{
- /** The transaction used for this cursor */
- private Transaction<K, V> transaction;
-
- /** The Tuple used to return the results */
- private Tuple<K, V> tuple = new Tuple<K, V>();
-
- /** The stack of pages from the root down to the leaf */
- private LinkedList<ParentPos<K, V>> stack;
-
- /** The BTree we are walking */
- private BTree<K, V> btree;
-
- private boolean allowDuplicates;
-
- /** a copy of the stack given at the time of initializing the cursor. This is used for moving the cursor to start position */
- private LinkedList<ParentPos<K, V>> _initialStack;
-
-
- /**
- * Creates a new instance of Cursor, starting on a page at a given position.
- *
- * @param transaction The transaction this operation is protected by
- * @param stack The stack of parent's from root to this page
- */
- /* No qualifier */Cursor( BTree<K, V> btree, Transaction<K, V> transaction, LinkedList<ParentPos<K, V>> stack )
- {
- this.transaction = transaction;
- this.stack = stack;
- this.btree = btree;
- this.allowDuplicates = btree.isAllowDuplicates();
-
- _initialStack = new LinkedList<ParentPos<K, V>>();
-
- cloneStack( stack, _initialStack );
- }
-
-
/**
* Find the next key/value
*
@@ -88,190 +45,7 @@ public class Cursor<K, V>
* @throws IOException
* @throws EndOfFileExceededException
*/
- public Tuple<K, V> next() throws EndOfFileExceededException, IOException
- {
- ParentPos<K, V> parentPos = stack.getFirst();
-
- if ( parentPos.page == null )
- {
- // This is the end : no more value
- throw new NoSuchElementException( "No more tuples present" );
- }
-
- if ( parentPos.pos == parentPos.page.getNbElems() )
- {
- // End of the leaf. We have to go back into the stack up to the
- // parent, and down to the leaf
- parentPos = findNextParentPos();
-
- // we also need to check for the type of page cause
- // findNextParentPos will never return a null ParentPos
- if ( parentPos.page == null || ( parentPos.page instanceof Node ) )
- {
- // This is the end : no more value
- throw new NoSuchElementException( "No more tuples present" );
- }
- }
-
- // can happen if next() is called after prev()
- if ( parentPos.pos < 0 )
- {
- parentPos.pos = 0;
- }
-
- Leaf<K, V> leaf = ( Leaf<K, V> ) ( parentPos.page );
- tuple.setKey( leaf.keys[parentPos.pos] );
-
- if ( allowDuplicates )
- {
- MultipleMemoryHolder<K,V> mvHolder = ( MultipleMemoryHolder<K,V> ) leaf.values[parentPos.pos];
-
- if( mvHolder.isSingleValue() )
- {
- tuple.setValue( mvHolder.getValue( btree ) );
- parentPos.pos++;
- }
- else
- {
- setDupsContainer( parentPos, btree );
-
- // can happen if next() is called after prev()
- if ( parentPos.dupPos < 0 )
- {
- parentPos.dupPos = 0;
- }
-
- tuple.setValue( parentPos.dupsContainer.rootPage.getKey( parentPos.dupPos ) );
- parentPos.dupPos++;
-
- if ( parentPos.dupsContainer.getNbElems() == parentPos.dupPos )
- {
- parentPos.pos++;
- changeNextDupsContainer( parentPos, btree );
- }
- }
- }
- else
- {
- tuple.setValue( leaf.values[parentPos.pos].getValue( btree ) );
- parentPos.pos++;
- }
-
- return tuple;
- }
-
-
- /**
- * Find the leaf containing the following elements.
- *
- * @return the new ParentPos instance, or null if we have no following leaf
- * @throws IOException
- * @throws EndOfFileExceededException
- */
- private ParentPos<K, V> findNextParentPos() throws EndOfFileExceededException, IOException
- {
- ParentPos<K, V> lastParentPos = null;
-
- while ( true )
- {
- // We first go up the tree, until we reach a page whose current position
- // is not the last one
- ParentPos<K, V> parentPos = stack.peek();
-
- if ( parentPos == null )
- {
- stack.push( lastParentPos );
- return lastParentPos;
- }
-
- if ( parentPos.pos == parentPos.page.getNbElems() )
- {
- lastParentPos = stack.pop();
- continue;
- }
- else
- {
- // Then we go down the tree until we find a leaf which position is not the last one.
- int newPos = ++parentPos.pos;
- ParentPos<K, V> newParentPos = parentPos;
-
- while ( newParentPos.page instanceof Node )
- {
- Node<K, V> node = ( Node<K, V> ) newParentPos.page;
-
- newParentPos = new ParentPos<K, V>( node.children[newPos].getValue( btree ), 0 );
-
- stack.push( newParentPos );
-
- newPos = 0;
- }
-
- if ( allowDuplicates )
- {
- changeNextDupsContainer( newParentPos, btree );
- }
-
- return newParentPos;
- }
- }
- }
-
-
- /**
- * Find the leaf containing the previous elements.
- *
- * @return the new ParentPos instance, or null if we have no previous leaf
- * @throws IOException
- * @throws EndOfFileExceededException
- */
- private ParentPos<K, V> findPreviousParentPos() throws EndOfFileExceededException, IOException
- {
- ParentPos<K, V> lastParentPos = null;
-
- while ( true )
- {
- // We first go up the tree, until we reach a page which current position
- // is not the first one
- ParentPos<K, V> parentPos = stack.peek();
-
- if ( parentPos == null )
- {
- stack.push( lastParentPos );
- return lastParentPos;
- }
-
- if ( parentPos.pos == 0 )
- {
- lastParentPos = stack.pop();
- continue;
- }
- else
- {
- // Then we go down the tree until we find a leaf which position is not the first one.
- int newPos = --parentPos.pos;
- ParentPos<K, V> newParentPos = parentPos;
-
- while ( newParentPos.page instanceof Node )
- {
- Node<K, V> node = ( Node<K, V> ) newParentPos.page;
-
- newParentPos = new ParentPos<K, V>( node.children[newPos].getValue( btree ), node.children[newPos]
- .getValue( btree ).getNbElems() );
-
- stack.push( newParentPos );
-
- newPos = node.getNbElems();
- }
-
- if ( allowDuplicates )
- {
- changePrevDupsContainer( newParentPos, btree );
- }
-
- return newParentPos;
- }
- }
- }
+ Tuple<K, V> next() throws EndOfFileExceededException, IOException;
/**
@@ -281,115 +55,7 @@ public class Cursor<K, V>
* @throws IOException
* @throws EndOfFileExceededException
*/
- public Tuple<K, V> prev() throws EndOfFileExceededException, IOException
- {
- ParentPos<K, V> parentPos = stack.peek();
-
- if ( parentPos.page == null )
- {
- // This is the end : no more value
- throw new NoSuchElementException( "No more tuples present" );
- }
-
- if ( parentPos.pos == 0 && parentPos.dupPos == 0 )
- {
- // End of the leaf. We have to go back into the stack up to the
- // parent, and down to the leaf
- parentPos = findPreviousParentPos();
-
- // we also need to check for the type of page cause
- // findPrevParentPos will never return a null ParentPos
- if ( parentPos.page == null || ( parentPos.page instanceof Node ) )
- {
- // This is the end : no more value
- throw new NoSuchElementException( "No more tuples present" );
- }
- }
-
- Leaf<K, V> leaf = ( Leaf<K, V> ) ( parentPos.page );
-
- if ( allowDuplicates )
- {
- boolean posDecremented = false;
-
- // can happen if prev() was called after next()
- if ( parentPos.pos == parentPos.page.getNbElems() )
- {
- parentPos.pos--;
- posDecremented = true;
- }
-
- MultipleMemoryHolder<K,V> mvHolder = ( MultipleMemoryHolder<K,V> ) leaf.values[parentPos.pos];
-
- boolean prevHasSubtree = false;
- // if the current key has only one value then advance to previous position
- if( mvHolder.isSingleValue() )
- {
- if( !posDecremented )
- {
- parentPos.pos--;
- mvHolder = ( MultipleMemoryHolder<K,V> ) leaf.values[parentPos.pos];
- posDecremented = true;
- }
-
- if( mvHolder.isSingleValue() )
- {
- tuple.setKey( leaf.keys[parentPos.pos] );
- tuple.setValue( mvHolder.getValue( btree ) );
- }
- else
- {
- prevHasSubtree = true;
- }
- }
- else
- {
- prevHasSubtree = true;
- }
-
- if( prevHasSubtree )
- {
- setDupsContainer( parentPos, btree );
-
- if ( parentPos.dupPos == parentPos.dupsContainer.getNbElems() )
- {
- parentPos.dupPos--;
- }
- else if ( parentPos.dupPos == 0 )
- {
- changePrevDupsContainer( parentPos, btree );
- parentPos.pos--;
-
- if( parentPos.dupsContainer != null )
- {
- parentPos.dupPos--;
- }
- }
- else
- {
- parentPos.dupPos--;
- }
-
- tuple.setKey( leaf.keys[parentPos.pos] );
- if( parentPos.dupsContainer != null )
- {
- tuple.setValue( parentPos.dupsContainer.rootPage.getKey( parentPos.dupPos ) );
- }
- else
- {
- tuple.setValue( leaf.values[parentPos.pos].getValue( btree ) );
- }
- }
- }
- else
- {
- parentPos.pos--;
- tuple.setKey( leaf.keys[parentPos.pos] );
- tuple.setValue( leaf.values[parentPos.pos].getValue( btree ) );
- }
-
- return tuple;
- }
+ Tuple<K, V> prev() throws EndOfFileExceededException, IOException;
/**
@@ -398,37 +64,7 @@ public class Cursor<K, V>
* @throws IOException
* @throws EndOfFileExceededException
*/
- public boolean hasNext() throws EndOfFileExceededException, IOException
- {
- ParentPos<K, V> parentPos = stack.peek();
-
- if ( parentPos.page == null )
- {
- return false;
- }
-
- for ( ParentPos<K, V> p : stack )
- {
- if ( allowDuplicates && ( p.page instanceof Leaf ) )
- {
- if( ( p.dupsContainer == null ) && ( p.pos != p.page.getNbElems() ) )
- {
- return true;
- }
- else if ( ( p.dupsContainer != null ) && ( p.dupPos != p.dupsContainer.getNbElems() )
- && ( p.pos != p.page.getNbElems() ) )
- {
- return true;
- }
- }
- else if ( p.pos != p.page.getNbElems() )
- {
- return true;
- }
- }
-
- return false;
- }
+ boolean hasNext() throws EndOfFileExceededException, IOException;
/**
@@ -437,64 +73,25 @@ public class Cursor<K, V>
* @throws IOException
* @throws EndOfFileExceededException
*/
- public boolean hasPrev() throws EndOfFileExceededException, IOException
- {
- ParentPos<K, V> parentPos = stack.peek();
-
- if ( parentPos.page == null )
- {
- return false;
- }
-
- for ( ParentPos<K, V> p : stack )
- {
- if ( allowDuplicates && ( p.page instanceof Leaf ) )
- {
- if( ( p.dupsContainer == null ) && ( p.pos != 0 ) )
- {
- return true;
- }
- else if ( ( p.dupsContainer != null ) &&
- ( ( p.dupPos != 0 ) || ( p.pos != 0 ) ) )
- {
- return true;
- }
- }
- else if ( p.pos != 0 )
- {
- return true;
- }
- }
-
- return false;
- }
+ boolean hasPrev() throws EndOfFileExceededException, IOException;
/**
* Closes the cursor, thus releases the associated transaction
*/
- public void close()
- {
- transaction.close();
- }
+ void close();
/**
* @return The revision this cursor is based on
*/
- public long getRevision()
- {
- return transaction.getRevision();
- }
+ long getRevision();
/**
* @return The creation date for this cursor
*/
- public long getCreationDate()
- {
- return transaction.getCreationDate();
- }
+ long getCreationDate();
/**
@@ -514,41 +111,7 @@ public class Cursor<K, V>
* @throws EndOfFileExceededException
* @throws IOException
*/
- public void moveToNextNonDuplicateKey() throws EndOfFileExceededException, IOException
- {
- ParentPos<K, V> parentPos = stack.getFirst();
-
- if ( parentPos.page == null )
- {
- return;
- }
-
- if ( parentPos.pos == ( parentPos.page.getNbElems() - 1 ) )
- {
- // End of the leaf. We have to go back into the stack up to the
- // parent, and down to the leaf
- // increment the position cause findNextParentPos checks "parentPos.pos == parentPos.page.getNbElems()"
- parentPos.pos++;
- ParentPos<K, V> nextPos = findNextParentPos();
-
- // if the returned value is a Node OR if it is same as the parentPos
- // that means cursor is already at the last position
- // call afterLast() to restore the stack with the path to the right most element
- if ( ( nextPos.page instanceof Node ) || ( nextPos == parentPos ) )
- {
- afterLast();
- }
- else
- {
- parentPos = nextPos;
- }
- }
- else
- {
- parentPos.pos++;
- changeNextDupsContainer( parentPos, btree );
- }
- }
+ void moveToNextNonDuplicateKey() throws EndOfFileExceededException, IOException;
/**
@@ -567,35 +130,7 @@ public class Cursor<K, V>
* @throws EndOfFileExceededException
* @throws IOException
*/
- public void moveToPrevNonDuplicateKey() throws EndOfFileExceededException, IOException
- {
- ParentPos<K, V> parentPos = stack.peek();
-
- if ( parentPos.page == null )
- {
- // This is the end : no more value
- return;
- }
-
- if ( parentPos.pos == 0 )
- {
- // End of the leaf. We have to go back into the stack up to the
- // parent, and down to the leaf
- parentPos = findPreviousParentPos();
-
- // if the returned value is a Node that means cursor is already at the first position
- // call beforeFirst() to restore the stack to the initial state
- if ( parentPos.page instanceof Node )
- {
- beforeFirst();
- }
- }
- else
- {
- changePrevDupsContainer( parentPos, btree );
- parentPos.pos--;
- }
- }
+ void moveToPrevNonDuplicateKey() throws EndOfFileExceededException, IOException;
/**
@@ -607,10 +142,7 @@ public class Cursor<K, V>
* If the cursor was created using browseFrom(K), then calling beforeFirst() will reset the position
* to the just before the position where K is present.
*/
- public void beforeFirst() throws IOException
- {
- cloneStack( _initialStack, stack );
- }
+ void beforeFirst() throws IOException;
/**
@@ -618,31 +150,5 @@ public class Cursor<K, V>
*
* @throws IOException
*/
- public void afterLast() throws IOException
- {
- stack.clear();
- stack = BTreeFactory.getPathToRightMostLeaf( btree );
- }
-
-
- /**
- * clones the original stack of ParentPos objects
- *
- * @param original the original stack
- * @param clone the stack where the cloned ParentPos objects to be copied
- */
- private void cloneStack( LinkedList<ParentPos<K, V>> original, LinkedList<ParentPos<K, V>> clone )
- {
- clone.clear();
-
- // preserve the first position
- for ( ParentPos<K, V> o : original )
- {
- ParentPos<K, V> tmp = new ParentPos<K, V>( o.page, o.pos );
- tmp.dupPos = o.dupPos;
- tmp.dupsContainer = o.dupsContainer;
- clone.add( tmp );
- }
- }
-
+ public void afterLast() throws IOException;
}
Modified: directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/Result.java
URL: http://svn.apache.org/viewvc/directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/Result.java?rev=1527458&r1=1527457&r2=1527458&view=diff
==============================================================================
--- directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/Result.java (original)
+++ directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/Result.java Mon Sep 30 06:32:25 2013
@@ -31,17 +31,17 @@ import java.util.List;
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
*/
-/* No qualifier */interface Result<K, V>
+public interface Result<P>
{
/**
* @return the copiedPage
*/
- /* No qualifier */List<Page<K, V>> getCopiedPages();
+ /* No qualifier */List<P> getCopiedPages();
/**
* Add a new copied page
* @param copiedPage the added page
*/
- /* No qualifier */void addCopiedPage( Page<K, V> copiedPage );
+ /* No qualifier */void addCopiedPage( P copiedPage );
}
Modified: directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/Tuple.java
URL: http://svn.apache.org/viewvc/directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/Tuple.java?rev=1527458&r1=1527457&r2=1527458&view=diff
==============================================================================
--- directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/Tuple.java (original)
+++ directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/Tuple.java Mon Sep 30 06:32:25 2013
@@ -70,7 +70,7 @@ public class Tuple<K, V>
/**
* @param key the key to set
*/
- /* No qualifier*/void setKey( K key )
+ public void setKey( K key )
{
this.key = key;
}
@@ -88,7 +88,7 @@ public class Tuple<K, V>
/**
* @param value the value to set
*/
- /* No qualifier*/void setValue( V value )
+ public void setValue( V value )
{
this.value = value;
}
Added: directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/managed/AbstractBorrowedFromSiblingResult.java
URL: http://svn.apache.org/viewvc/directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/managed/AbstractBorrowedFromSiblingResult.java?rev=1527458&view=auto
==============================================================================
--- directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/managed/AbstractBorrowedFromSiblingResult.java (added)
+++ directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/managed/AbstractBorrowedFromSiblingResult.java Mon Sep 30 06:32:25 2013
@@ -0,0 +1,129 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.directory.mavibot.btree.managed;
+
+
+import java.util.List;
+
+import org.apache.directory.mavibot.btree.Tuple;
+
+
+/**
+ * The result of a delete operation, when the child has not been merged, and when
+ * we have borrowed an element from the left sibling. It contains the
+ * reference to the modified page, and the removed element.
+ *
+ * @param <K> The type for the Key
+ * @param <V> The type for the stored value
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+/* No qualifier */abstract class AbstractBorrowedFromSiblingResult<K, V> extends AbstractDeleteResult<K, V> implements
+ BorrowedFromSiblingResult<K, V>
+{
+ /** The modified sibling reference */
+ private Page<K, V> modifiedSibling;
+
+ /** Tells if the sibling is the left or right one */
+ protected SiblingPosition position;
+
+ /** The two possible position for the sibling */
+ protected enum SiblingPosition
+ {
+ LEFT,
+ RIGHT
+ }
+
+
+ /**
+ * The default constructor for RemoveResult.
+ *
+ * @param modifiedPage The modified page
+ * @param modifiedSibling The modified sibling
+ * @param removedElement The removed element (can be null if the key wasn't present in the tree)
+ */
+ /* No qualifier */AbstractBorrowedFromSiblingResult( Page<K, V> modifiedPage, Page<K, V> modifiedSibling,
+ Tuple<K, V> removedElement, SiblingPosition position )
+ {
+ super( modifiedPage, removedElement );
+ this.modifiedSibling = modifiedSibling;
+ this.position = position;
+ }
+
+
+ /**
+ * A constructor for RemoveResult with a list of copied pages.
+ *
+ * @param copiedPages the list of copied pages
+ * @param modifiedPage The modified page
+ * @param modifiedSibling The modified sibling
+ * @param removedElement The removed element (can be null if the key wasn't present in the tree)
+ */
+ /* No qualifier */AbstractBorrowedFromSiblingResult( List<Page<K, V>> copiedPages, Page<K, V> modifiedPage,
+ Page<K, V> modifiedSibling,
+ Tuple<K, V> removedElement, SiblingPosition position )
+ {
+ super( copiedPages, modifiedPage, removedElement );
+ this.modifiedSibling = modifiedSibling;
+ this.position = position;
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ public Page<K, V> getModifiedSibling()
+ {
+ return modifiedSibling;
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ public boolean isFromLeft()
+ {
+ return position == SiblingPosition.LEFT;
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ public boolean isFromRight()
+ {
+ return position == SiblingPosition.RIGHT;
+ }
+
+
+ /**
+ * @see Object#toString()
+ */
+ public String toString()
+ {
+ StringBuilder sb = new StringBuilder();
+
+ sb.append( "\n removed element : " ).append( getRemovedElement() );
+ sb.append( "\n modifiedPage : " ).append( getModifiedPage() );
+ sb.append( "\n modifiedSibling : " ).append( getModifiedSibling() );
+
+ return sb.toString();
+ }
+}
Added: directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/managed/AbstractDeleteResult.java
URL: http://svn.apache.org/viewvc/directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/managed/AbstractDeleteResult.java?rev=1527458&view=auto
==============================================================================
--- directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/managed/AbstractDeleteResult.java (added)
+++ directory/mavibot/trunk/mavibot/src/main/java/org/apache/directory/mavibot/btree/managed/AbstractDeleteResult.java Mon Sep 30 06:32:25 2013
@@ -0,0 +1,100 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.directory.mavibot.btree.managed;
+
+
+import java.util.List;
+
+import org.apache.directory.mavibot.btree.Tuple;
+
+
+/**
+ * An abstract class to gather common elements of the DeleteResult
+ *
+ * @param <K> The type for the Key
+ * @param <V> The type for the stored value
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+/* No qualifier */abstract class AbstractDeleteResult<K, V> extends AbstractResult<K, V> implements DeleteResult<K, V>
+{
+ /** The modified page reference */
+ private Page<K, V> modifiedPage;
+
+ /** The removed element if the key was found in the tree*/
+ private Tuple<K, V> removedElement;
+
+
+ /**
+ * The default constructor for AbstractDeleteResult.
+ *
+ * @param modifiedPage The modified page
+ * @param removedElement The removed element (can be null if the key wasn't present in the tree)
+ */
+ /* No qualifier */AbstractDeleteResult( Page<K, V> modifiedPage, Tuple<K, V> removedElement )
+ {
+ super();
+ this.modifiedPage = modifiedPage;
+ this.removedElement = removedElement;
+ }
+
+
+ /**
+ * The default constructor for AbstractDeleteResult.
+ *
+ * @param copiedPages the list of copied pages
+ * @param modifiedPage The modified page
+ * @param removedElement The removed element (can be null if the key wasn't present in the tree)
+ */
+ /* No qualifier */AbstractDeleteResult( List<Page<K, V>> copiedPages, Page<K, V> modifiedPage,
+ Tuple<K, V> removedElement )
+ {
+ super( copiedPages );
+ this.modifiedPage = modifiedPage;
+ this.removedElement = removedElement;
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ public Page<K, V> getModifiedPage()
+ {
+ return modifiedPage;
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ public Tuple<K, V> getRemovedElement()
+ {
+ return removedElement;
+ }
+
+
+ /**
+ * @param modifiedPage the modifiedPage to set
+ */
+ /* No qualifier */void setModifiedPage( Page<K, V> modifiedPage )
+ {
+ this.modifiedPage = modifiedPage;
+ }
+}