Mercurial > hg > Members > shoshi > TreeCMSv2
annotate src/treecms/memory/OnMemoryMonotonicTreeNode.java @ 17:168deb591f21
commit
author | shoshi |
---|---|
date | Tue, 24 May 2011 00:33:12 +0900 |
parents | bb9760760744 |
children | 084de6909451 |
rev | line source |
---|---|
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
1 package treecms.memory; |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
2 |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
3 import java.nio.ByteBuffer; |
16 | 4 |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
5 import java.util.Iterator; |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
6 import java.util.List; |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
7 import java.util.Map; |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
8 import java.util.Set; |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
9 import treecms.api.Forest; |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
10 import treecms.api.MonotonicTreeNode; |
15 | 11 import treecms.api.NodeAttributes; |
12 import treecms.api.NodeChildren; | |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
13 import treecms.api.NodeID; |
15 | 14 import treecms.api.SingleNode; |
15 import treecms.tree.util.NodeChildrenImpl; | |
16 | 16 import treecms.tree.util.NodeData; |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
17 |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
18 /** |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
19 * SingleLinkedなNodeをラップしたDoubleLinkedなNodeの実装です. |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
20 * @author shoshi |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
21 */ |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
22 public class OnMemoryMonotonicTreeNode implements MonotonicTreeNode |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
23 { |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
24 private OnMemoryNode m_node; |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
25 private OnMemoryMonotonicTreeNode m_parent; |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
26 |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
27 /** |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
28 * コンストラクタです. |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
29 * @param _target 対象となるSingleLinked Node |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
30 * @param _parent このDoubleLinked Nodeの親,RootNodeならnull |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
31 * @param _tree このNodeがRootNodeなら,nullではいけない. |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
32 */ |
15 | 33 public OnMemoryMonotonicTreeNode(OnMemoryNode _target,OnMemoryMonotonicTreeNode _parent) |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
34 { |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
35 m_node = _target; |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
36 m_parent = _parent; |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
37 } |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
38 |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
39 @Override |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
40 public NodeID getID() |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
41 { |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
42 return m_node.getID(); |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
43 } |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
44 |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
45 @Override |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
46 public Forest getForest() |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
47 { |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
48 return m_node.getForest(); |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
49 } |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
50 |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
51 @Override |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
52 public MonotonicTreeNode getParent() |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
53 { |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
54 return m_parent; |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
55 } |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
56 |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
57 @Override |
15 | 58 public SingleNode getNode() |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
59 { |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
60 return m_node; |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
61 } |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
62 |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
63 /* |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
64 * 属性関連のメソッド |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
65 */ |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
66 |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
67 @Override |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
68 public ByteBuffer get(ByteBuffer _key) |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
69 { |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
70 return m_node.get(_key); |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
71 } |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
72 |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
73 @Override |
15 | 74 public NodeAttributes getAll() |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
75 { |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
76 return m_node.getAll(); |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
77 } |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
78 |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
79 @Override |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
80 public void put(ByteBuffer _key, ByteBuffer _value) |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
81 { |
17 | 82 NodeData<SingleNode> d = new NodeData<SingleNode>(m_node); |
83 d.put(_key,_value); | |
84 | |
85 cloneAndTransmit(d); | |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
86 } |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
87 |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
88 @Override |
15 | 89 public void putAll(NodeAttributes _map) |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
90 { |
17 | 91 NodeData<SingleNode> d = new NodeData<SingleNode>(m_node); |
92 d.putAll(_map); | |
93 | |
94 cloneAndTransmit(d); | |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
95 } |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
96 |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
97 @Override |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
98 public void remove(ByteBuffer _key) |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
99 { |
17 | 100 NodeData<SingleNode> d = new NodeData<SingleNode>(m_node); |
101 d.remove(_key); | |
102 | |
103 cloneAndTransmit(d); | |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
104 } |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
105 |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
106 @Override |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
107 public void removeAll(Set<ByteBuffer> _keys) |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
108 { |
16 | 109 NodeData<SingleNode> d = new NodeData<SingleNode>(m_node); |
110 d.removeAll(_keys); | |
111 | |
112 cloneAndTransmit(d); | |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
113 } |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
114 |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
115 @Override |
15 | 116 public void clearAttributes() |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
117 { |
16 | 118 NodeData<SingleNode> d = new NodeData<SingleNode>(m_node); |
119 d.clearAttributes(); | |
120 | |
121 cloneAndTransmit(d); | |
122 } | |
123 | |
124 public void cloneAndTransmit(NodeData<SingleNode> _d) | |
125 { | |
126 OnMemoryForest f = (OnMemoryForest)m_node.getForest(); | |
127 OnMemoryNode clone = f.createNode(m_node.getID().update(),_d); | |
128 transmit(m_node,clone); | |
17 | 129 |
130 m_node = clone; | |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
131 } |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
132 |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
133 /** |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
134 * このMonotonicNodeに変更が加えられたら,こちらのメソッドが呼び出されます. |
13 | 135 * 非破壊的に変更するために,SingleLinkedNodeのクローンを作成し,親にも複製を依頼します. |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
136 * |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
137 * RootNodeまで伝搬すると親のNodeはnullとなる.親Nodeは担当するMonotonicTreeのオブジェクトを保持しており,そこにRootNodeが変更されたことを通知する. |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
138 * 通知が終わり,処理が戻ってきた時に自身のOnMemoryNodeをクローンした新しいものに書き換えます. |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
139 * |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
140 * _fromがnullの場合は,自身が編集元であることを示します. |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
141 * @param _from 編集元のOnMemoryMonotonicTreeNode |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
142 */ |
14
8bf59f161b23
separete Node methods to NodeContext , NodeAttribute , NodeChildren
misaka
parents:
13
diff
changeset
|
143 public void transmit(OnMemoryNode _orig,OnMemoryNode _edit) |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
144 { |
15 | 145 OnMemoryForest f = (OnMemoryForest)m_node.getForest(); |
16 | 146 OnMemoryNode clone = f.createNode(m_node.getID().update(),null); |
147 clone.replace(_edit); | |
14
8bf59f161b23
separete Node methods to NodeContext , NodeAttribute , NodeChildren
misaka
parents:
13
diff
changeset
|
148 |
8bf59f161b23
separete Node methods to NodeContext , NodeAttribute , NodeChildren
misaka
parents:
13
diff
changeset
|
149 if(m_parent != null){ |
8bf59f161b23
separete Node methods to NodeContext , NodeAttribute , NodeChildren
misaka
parents:
13
diff
changeset
|
150 m_parent.transmit(m_node,(OnMemoryNode)clone); |
8bf59f161b23
separete Node methods to NodeContext , NodeAttribute , NodeChildren
misaka
parents:
13
diff
changeset
|
151 return; |
8bf59f161b23
separete Node methods to NodeContext , NodeAttribute , NodeChildren
misaka
parents:
13
diff
changeset
|
152 } |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
153 } |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
154 |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
155 /* |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
156 * 子供関連のメソッド |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
157 */ |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
158 @Override |
15 | 159 public List<MonotonicTreeNode> getList() |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
160 { |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
161 //NodeのリストよりMonotonicTreeNodeのリストを作成する. |
15 | 162 NodeChildren<MonotonicTreeNode> res = new NodeChildrenImpl<MonotonicTreeNode>(); |
163 for(Iterator<SingleNode> it = m_node.getList().iterator();it.hasNext();){ | |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
164 OnMemoryNode n = (OnMemoryNode)it.next(); |
15 | 165 res.add(new OnMemoryMonotonicTreeNode(n,this)); |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
166 } |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
167 |
15 | 168 return res.getList(); |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
169 } |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
170 |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
171 @Override |
15 | 172 public boolean add(MonotonicTreeNode _n) |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
173 { |
17 | 174 NodeData<SingleNode> d = new NodeData<SingleNode>(m_node); |
175 boolean ret = d.add(_n.getNode()); | |
176 if(ret){ | |
177 cloneAndTransmit(d); | |
178 } | |
179 | |
180 return ret; | |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
181 } |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
182 |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
183 @Override |
15 | 184 public boolean addAll(NodeChildren<MonotonicTreeNode> _list) |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
185 { |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
186 //MotonicTreeNodeのリストからNodeのリストを作成する. |
17 | 187 NodeChildren<SingleNode> c = new NodeChildrenImpl<SingleNode>(); |
15 | 188 for(Iterator<MonotonicTreeNode> it = _list.getList().iterator();it.hasNext();){ |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
189 MonotonicTreeNode mono = (MonotonicTreeNode)it.next(); |
17 | 190 c.add(mono.getNode()); |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
191 } |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
192 |
17 | 193 NodeData<SingleNode> d = new NodeData<SingleNode>(m_node); |
194 boolean ret = d.addAll(c); | |
195 if(ret){ | |
196 cloneAndTransmit(d); | |
197 } | |
198 | |
199 return ret; | |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
200 } |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
201 |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
202 @Override |
15 | 203 public MonotonicTreeNode remove(String _uuid) |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
204 { |
17 | 205 NodeData<SingleNode> d = new NodeData<SingleNode>(m_node); |
206 SingleNode n = d.remove(_uuid); | |
207 if(n != null){ | |
208 cloneAndTransmit(d); | |
209 return new OnMemoryMonotonicTreeNode((OnMemoryNode)n,null); | |
210 } | |
211 | |
212 return null; | |
15 | 213 } |
214 | |
215 @Override | |
216 public MonotonicTreeNode remove(int _index) | |
217 { | |
17 | 218 NodeData<SingleNode> d = new NodeData<SingleNode>(m_node); |
219 SingleNode n = d.remove(_index); | |
220 if(n != null){ | |
221 cloneAndTransmit(d); | |
222 return new OnMemoryMonotonicTreeNode((OnMemoryNode)n,null); | |
223 } | |
224 | |
225 return null; | |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
226 } |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
227 |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
228 @Override |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
229 public void clearChildren() |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
230 { |
17 | 231 NodeData<SingleNode> d = new NodeData<SingleNode>(m_node); |
232 d.clearChildren(); | |
233 cloneAndTransmit(d); | |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
234 } |
16 | 235 |
236 @Override | |
237 public Map<ByteBuffer, ByteBuffer> asMap() | |
238 { | |
239 return m_node.asMap(); | |
240 } | |
241 | |
242 @Override | |
243 public Set<ByteBuffer> getKeySet() | |
244 { | |
245 return m_node.getKeySet(); | |
246 } | |
247 | |
248 @Override | |
249 public Set<String> getUUIDSet() | |
250 { | |
251 return m_node.getUUIDSet(); | |
252 } | |
253 | |
254 @Override | |
255 public MonotonicTreeNode get(String _uuid) | |
256 { | |
257 SingleNode n = m_node.get(_uuid); | |
258 return new OnMemoryMonotonicTreeNode((OnMemoryNode)n,this); | |
259 } | |
260 | |
261 @Override | |
262 public MonotonicTreeNode get(int _index) | |
263 { | |
264 SingleNode n = m_node.get(_index); | |
265 return new OnMemoryMonotonicTreeNode((OnMemoryNode)n,this); | |
266 } | |
267 | |
268 @Override | |
269 public MonotonicTreeNode replace(MonotonicTreeNode _newChild) | |
270 { | |
17 | 271 NodeData<SingleNode> d = new NodeData<SingleNode>(m_node); |
272 SingleNode n = d.replace(_newChild.getNode()); | |
273 if(n != null){ | |
274 cloneAndTransmit(d); | |
275 return new OnMemoryMonotonicTreeNode((OnMemoryNode)n,(OnMemoryMonotonicTreeNode)null); | |
276 } | |
277 | |
278 return null; | |
16 | 279 } |
280 | |
281 @Override | |
282 public boolean contains(String _id) | |
283 { | |
284 return m_node.contains(_id); | |
285 } | |
286 | |
287 @Override | |
288 public boolean swap(String _uuid1, String _uuid2) | |
289 { | |
290 return m_node.swap(_uuid1,_uuid2); | |
291 } | |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
292 } |