Mercurial > hg > Members > shoshi > TreeCMSv2
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 } |