Mercurial > hg > Members > shoshi > TreeCMSv2
annotate src/treecms/memory/OnMemoryTreeNode.java @ 14:8bf59f161b23
separete Node methods to NodeContext , NodeAttribute , NodeChildren
author | misaka |
---|---|
date | Tue, 17 May 2011 18:44:14 +0900 |
parents | fbbb7e414346 |
children | 22cd920986c5 |
rev | line source |
---|---|
11 | 1 package treecms.memory; |
2 | |
3 import java.nio.ByteBuffer; | |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
4 import java.util.Collections; |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
5 import java.util.Iterator; |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
6 import java.util.LinkedList; |
11 | 7 import java.util.List; |
8 import java.util.Map; | |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
9 import java.util.Set; |
11 | 10 import treecms.api.Forest; |
11 import treecms.api.Node; | |
12 import treecms.api.NodeID; | |
13 import treecms.api.TreeNode; | |
14 | |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
15 /** |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
16 * DoubleLinkedなNodeであるTreeNodeのOnMemory実装です. |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
17 * @author shoshi |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
18 */ |
11 | 19 public class OnMemoryTreeNode implements TreeNode |
20 { | |
21 public OnMemoryTreeNode m_parent; | |
22 public OnMemoryNode m_node; | |
23 | |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
24 /** |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
25 * コンストラクタです. |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
26 * @param _node 対象となるSingleLinkedなNode |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
27 * @param _parent 親のOnMemoryTreeNode |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
28 */ |
11 | 29 public OnMemoryTreeNode(OnMemoryNode _node,OnMemoryTreeNode _parent) |
30 { | |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
31 //とりあえず、チェック |
11 | 32 if(_node == null){ |
33 throw new NullPointerException(); | |
34 } | |
35 | |
36 m_node = _node; | |
37 | |
38 //このノードがルートの場合、親はnullで構わない. | |
39 m_parent = _parent; | |
40 } | |
41 | |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
42 /* |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
43 * 親関連のメソッド |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
44 */ |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
45 |
11 | 46 @Override |
47 public NodeID getID() | |
48 { | |
49 return m_node.getID(); | |
50 } | |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
51 |
11 | 52 @Override |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
53 public Node getNode() |
11 | 54 { |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
55 return m_node; |
11 | 56 } |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
57 |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
58 @Override |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
59 public TreeNode getParent() |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
60 { |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
61 return m_parent; |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
62 } |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
63 |
11 | 64 @Override |
65 public Forest getForest() | |
66 { | |
67 return m_node.getForest(); | |
68 } | |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
69 |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
70 /* |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
71 * 子供関連のメソッド |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
72 */ |
11 | 73 |
74 @Override | |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
75 public Iterator<TreeNode> getChildren() |
11 | 76 { |
77 /* | |
78 * m_node(対象ノード)のリストにはNodeが格納されており、TreeNodeのリストを取得するためにはTreeNodeで要素を構成する必要がある. | |
79 */ | |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
80 LinkedList<TreeNode> ret = new LinkedList<TreeNode>(); |
14
8bf59f161b23
separete Node methods to NodeContext , NodeAttribute , NodeChildren
misaka
parents:
12
diff
changeset
|
81 for(Iterator<Node> it = m_node.getList().iterator();it.hasNext();){ |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
82 OnMemoryNode n = (OnMemoryNode)it.next(); |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
83 ret.add(new OnMemoryTreeNode(n,this)); |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
84 } |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
85 |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
86 return Collections.unmodifiableList(ret).iterator(); |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
87 } |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
88 |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
89 @Override |
14
8bf59f161b23
separete Node methods to NodeContext , NodeAttribute , NodeChildren
misaka
parents:
12
diff
changeset
|
90 public void add(TreeNode _child) |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
91 { |
14
8bf59f161b23
separete Node methods to NodeContext , NodeAttribute , NodeChildren
misaka
parents:
12
diff
changeset
|
92 m_node.add(_child.getNode()); |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
93 } |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
94 |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
95 @Override |
14
8bf59f161b23
separete Node methods to NodeContext , NodeAttribute , NodeChildren
misaka
parents:
12
diff
changeset
|
96 public void addAll(NodeChildren _children) |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
97 { |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
98 /* |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
99 * TreeNodeのリストからNodeのリストへ変換する |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
100 */ |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
101 LinkedList<Node> res = new LinkedList<Node>(); |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
102 for(Iterator<TreeNode> it = _children.iterator();it.hasNext();){ |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
103 TreeNode tn = it.next(); |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
104 res.add(tn.getNode()); |
11 | 105 } |
106 | |
14
8bf59f161b23
separete Node methods to NodeContext , NodeAttribute , NodeChildren
misaka
parents:
12
diff
changeset
|
107 m_node.addAll(res); |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
108 } |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
109 |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
110 @Override |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
111 public void removeChild(TreeNode _child) |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
112 { |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
113 m_node.removeChild(_child.getNode()); |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
114 } |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
115 |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
116 @Override |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
117 public void removeChildren(List<TreeNode> _children) |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
118 { |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
119 LinkedList<Node> res = new LinkedList<Node>(); |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
120 for(Iterator<TreeNode> it = _children.iterator();it.hasNext();){ |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
121 TreeNode tn = it.next(); |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
122 res.add(tn.getNode()); |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
123 } |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
124 |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
125 m_node.removeChildren(res); |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
126 } |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
127 |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
128 @Override |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
129 public void clearChildren() |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
130 { |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
131 m_node.clearChildren(); |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
132 } |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
133 |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
134 /* |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
135 * 属性関連のメソッド |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
136 */ |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
137 |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
138 @Override |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
139 public ByteBuffer get(ByteBuffer _key) |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
140 { |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
141 return m_node.get(_key); |
11 | 142 } |
143 | |
144 @Override | |
145 public Map<ByteBuffer, ByteBuffer> getAll() | |
146 { | |
147 return m_node.getAll(); | |
148 } | |
149 | |
150 @Override | |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
151 public void put(ByteBuffer _key,ByteBuffer _value) |
11 | 152 { |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
153 m_node.put(_key,_value); |
11 | 154 } |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
155 |
11 | 156 @Override |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
157 public void putAll(Map<ByteBuffer,ByteBuffer> _map) |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
158 { |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
159 m_node.putAll(_map); |
11 | 160 } |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
161 |
11 | 162 @Override |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
163 public void remove(ByteBuffer _key) |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
164 { |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
165 m_node.remove(_key); |
11 | 166 } |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
167 |
11 | 168 @Override |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
169 public void removeAll(Set<ByteBuffer> _keySet) |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
170 { |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
171 m_node.removeAll(_keySet); |
11 | 172 } |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
173 |
11 | 174 @Override |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
175 public void clear() |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
176 { |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
11
diff
changeset
|
177 m_node.clear(); |
11 | 178 } |
179 } |