comparison 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
comparison
equal deleted inserted replaced
2:4a5ee88f02cf 3:5fa718b63cd5
1 package treecms.memory; 1 package treecms.memory;
2 2
3 import java.util.LinkedList; 3 import java.util.LinkedList;
4 import java.util.concurrent.ConcurrentHashMap;
5
4 import treecms.api.Forest; 6 import treecms.api.Forest;
5 import treecms.api.Node; 7 import treecms.api.Node;
6 import treecms.api.NodeData; 8 import treecms.api.NodeData;
7 import treecms.api.NodeID; 9 import treecms.api.NodeID;
8 import treecms.api.Tree; 10 import treecms.api.Tree;
11 import treecms.tree.util.PreorderTreewalker;
9 12
10 public class OnMemoryTree implements Tree 13 public class OnMemoryTree implements Tree
11 { 14 {
12 OnMemoryNode m_root; 15 OnMemoryNode m_root;
13 OnMemoryForest m_forest; 16 OnMemoryForest m_forest;
17 ConcurrentHashMap<String,OnMemoryNode> m_table;
14 18
15 public OnMemoryTree(OnMemoryNode _newRoot,OnMemoryForest _forest) 19 public OnMemoryTree(OnMemoryNode _newRoot,OnMemoryForest _forest)
16 { 20 {
17 m_root = _newRoot; 21 m_root = _newRoot;
18 m_forest = _forest; 22 m_forest = _forest;
23
24 m_table = new ConcurrentHashMap<String,OnMemoryNode>();
25 for(Node elem : new PreorderTreewalker(m_root)){
26 m_table.put(elem.getID().getUUID(),(OnMemoryNode)elem);
27 }
19 } 28 }
20 29
21 @Override 30 @Override
22 public Forest getForest() 31 public Forest getForest()
23 { 32 {
43 } 52 }
44 53
45 @Override 54 @Override
46 public Node getNodeByUUID(String _uuid) 55 public Node getNodeByUUID(String _uuid)
47 { 56 {
48 return null; 57 return m_table.get(_uuid);
49 } 58 }
50 59
51 @Override 60 @Override
52 public synchronized Node updateTree(Node _target,NodeData _newData) 61 public synchronized Node updateTree(Node _target,NodeData _newData)
53 { 62 {
72 clone.m_data.set(_newData.get()); 81 clone.m_data.set(_newData.get());
73 }else{ 82 }else{
74 clone.m_data.add(_target.m_data.list()); 83 clone.m_data.add(_target.m_data.list());
75 clone.m_data.set(_target.m_data.get()); 84 clone.m_data.set(_target.m_data.get());
76 } 85 }
86
87 m_table.put(clone.getID().getUUID(),clone);
77 return clone; 88 return clone;
78 } 89 }
79 90
80 LinkedList<OnMemoryNode> findAndClone(OnMemoryNode _parent,OnMemoryNode _target,NodeData _newData) 91 LinkedList<OnMemoryNode> findAndClone(OnMemoryNode _parent,OnMemoryNode _target,NodeData _newData)
81 { 92 {
99 } 110 }
100 111
101 return null; //not found. 112 return null; //not found.
102 } 113 }
103 114
115 @Override
116 public Node getRoot()
117 {
118 return m_root;
119 }
120
104 } 121 }