diff src/treecms/memory/OnMemoryTree.java @ 8:f96193babac0

changed byte[] to ByteBuffer added TreeEditor.updateTree(Node,NodeData,Node[]) for node path is known. added GUIEditor
author shoshi
date Thu, 31 Mar 2011 02:08:44 +0900
parents fc19e38b669b
children 17ed97ca9960
line wrap: on
line diff
--- a/src/treecms/memory/OnMemoryTree.java	Thu Mar 17 23:24:08 2011 +0900
+++ b/src/treecms/memory/OnMemoryTree.java	Thu Mar 31 02:08:44 2011 +0900
@@ -1,5 +1,6 @@
 package treecms.memory;
 
+import java.nio.ByteBuffer;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.atomic.AtomicReference;
@@ -17,7 +18,6 @@
  */
 final class OnMemoryTree implements Tree
 {
-	private OnMemoryNode m_root;
 	private AtomicReference<OnMemoryNode> m_ref;
 	
 	/**
@@ -26,7 +26,6 @@
 	 */
 	public OnMemoryTree(OnMemoryNode _newRoot)
 	{
-		m_root = _newRoot;
 		m_ref = new AtomicReference<OnMemoryNode>(_newRoot);
 	}
 	
@@ -106,7 +105,7 @@
 	 * @return キーと対応する値,見つからない場合はnull
 	 */
 	@Override
-	public byte[] get(byte[] _key)
+	public ByteBuffer get(ByteBuffer _key)
 	{
 		return m_ref.get().get(_key);
 	}
@@ -116,7 +115,7 @@
 	 * @return Nodeが保持するすべてのデータのマップ
 	 */
 	@Override
-	public Map<byte[],byte[]> getAll()
+	public Map<ByteBuffer,ByteBuffer> getAll()
 	{
 		return m_ref.get().getAll();
 	}
@@ -127,7 +126,7 @@
 	 * @param _value 値
 	 */
 	@Override
-	public void put(byte[] _key,byte[] _value)
+	public void put(ByteBuffer _key,ByteBuffer _value)
 	{
 		m_ref.get().put(_key,_value);
 	}
@@ -137,12 +136,32 @@
 	 * @param _map 追加される値のマップ
 	 */
 	@Override
-	public void putAll(Map<byte[], byte[]> _map)
+	public void putAll(Map<ByteBuffer, ByteBuffer> _map)
 	{
 		m_ref.get().putAll(_map);
 	}
 	
 	/**
+	 * キーとそれに対応する値を削除します。
+	 * @param _key キー
+	 */
+	@Override
+	public void remove(ByteBuffer _key)
+	{
+		m_ref.get().remove(_key);
+	}
+	
+	/**
+	 * 子供Nodeを削除します。
+	 * @param _child
+	 */
+	@Override
+	public void remove(Node _child)
+	{
+		m_ref.get().remove(_child);
+	}
+	
+	/**
 	 * ルートNodeを比較して置き換えます.
 	 * @param _except 比較する対象 
 	 * @param _newRoot 一致した場合置き換える対象
@@ -156,4 +175,5 @@
 		m_ref.set(_newRoot);
 		return true;
 	}
+
 }