diff src/treecms/memory/OnMemoryTree.java @ 3:5fa718b63cd5

finished treecms.memory basic implementation ( not tested yet. )
author shoshi
date Fri, 18 Feb 2011 02:14:10 +0900
parents 4a5ee88f02cf
children f5ed85be5640
line wrap: on
line diff
--- a/src/treecms/memory/OnMemoryTree.java	Wed Feb 16 21:08:32 2011 +0900
+++ b/src/treecms/memory/OnMemoryTree.java	Fri Feb 18 02:14:10 2011 +0900
@@ -1,21 +1,30 @@
 package treecms.memory;
 
 import java.util.LinkedList;
+import java.util.concurrent.ConcurrentHashMap;
+
 import treecms.api.Forest;
 import treecms.api.Node;
 import treecms.api.NodeData;
 import treecms.api.NodeID;
 import treecms.api.Tree;
+import treecms.tree.util.PreorderTreewalker;
 
 public class OnMemoryTree implements Tree
 {
 	OnMemoryNode m_root;
 	OnMemoryForest m_forest;
+	ConcurrentHashMap<String,OnMemoryNode> m_table;
 	
 	public OnMemoryTree(OnMemoryNode _newRoot,OnMemoryForest _forest)
 	{
 		m_root = _newRoot;
 		m_forest = _forest;
+		
+		m_table = new ConcurrentHashMap<String,OnMemoryNode>();
+		for(Node elem : new PreorderTreewalker(m_root)){
+			m_table.put(elem.getID().getUUID(),(OnMemoryNode)elem);
+		}
 	}
 	
 	@Override
@@ -45,7 +54,7 @@
 	@Override
 	public Node getNodeByUUID(String _uuid)
 	{
-		return null;
+		return m_table.get(_uuid);
 	}
 
 	@Override
@@ -74,6 +83,8 @@
 			clone.m_data.add(_target.m_data.list());
 			clone.m_data.set(_target.m_data.get());
 		}
+		
+		m_table.put(clone.getID().getUUID(),clone);
 		return clone;
 	}
 	
@@ -101,4 +112,10 @@
 		return null; //not found.
 	}
 
+	@Override
+	public Node getRoot()
+	{
+		return m_root;
+	}
+
 }