Mercurial > hg > Members > shoshi > TreeCMSv2
annotate src/treecms/memory/OnMemoryMonotonicTreeNode.java @ 21:f3150b37f9be
commit
author | shoshi |
---|---|
date | Mon, 06 Jun 2011 21:49:04 +0900 |
parents | 084de6909451 |
children | fa784faafc78 |
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; |
20 | 9 import java.util.concurrent.ConcurrentHashMap; |
10 import java.util.concurrent.atomic.AtomicReferenceFieldUpdater; | |
11 | |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
12 import treecms.api.Forest; |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
13 import treecms.api.MonotonicTreeNode; |
21 | 14 import treecms.api.Node; |
15 | 15 import treecms.api.NodeAttributes; |
16 import treecms.api.NodeChildren; | |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
17 import treecms.api.NodeID; |
15 | 18 import treecms.tree.util.NodeChildrenImpl; |
16 | 19 import treecms.tree.util.NodeData; |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
20 |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
21 /** |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
22 * SingleLinkedなNodeをラップしたDoubleLinkedなNodeの実装です. |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
23 * @author shoshi |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
24 */ |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
25 public class OnMemoryMonotonicTreeNode implements MonotonicTreeNode |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
26 { |
21 | 27 private Node m_node; |
20 | 28 |
29 private static final AtomicReferenceFieldUpdater<OnMemoryMonotonicTreeNode,OnMemoryMonotonicTreeNode> m_parentUpdater | |
30 = AtomicReferenceFieldUpdater.newUpdater(OnMemoryMonotonicTreeNode.class,OnMemoryMonotonicTreeNode.class,"m_parent"); | |
31 | |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
32 private OnMemoryMonotonicTreeNode m_parent; |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
33 |
21 | 34 private final Map<String,OnMemoryMonotonicTreeNode> m_cache; |
20 | 35 |
15 | 36 public OnMemoryMonotonicTreeNode(OnMemoryNode _target,OnMemoryMonotonicTreeNode _parent) |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
37 { |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
38 m_node = _target; |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
39 m_parent = _parent; |
21 | 40 m_cache = new ConcurrentHashMap<String,OnMemoryMonotonicTreeNode>(); |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
41 } |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
42 |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
43 @Override |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
44 public NodeID getID() |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
45 { |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
46 return m_node.getID(); |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
47 } |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
48 |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
49 @Override |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
50 public Forest getForest() |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
51 { |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
52 return m_node.getForest(); |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
53 } |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
54 |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
55 @Override |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
56 public MonotonicTreeNode getParent() |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
57 { |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
58 return m_parent; |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
59 } |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
60 |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
61 @Override |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
62 public ByteBuffer get(ByteBuffer _key) |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
63 { |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
64 return m_node.get(_key); |
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 |
15 | 68 public NodeAttributes getAll() |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
69 { |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
70 return m_node.getAll(); |
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 |
20 | 74 public synchronized void put(ByteBuffer _key, ByteBuffer _value) |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
75 { |
21 | 76 NodeData<Node> d = new NodeData<Node>(m_node,m_node); |
17 | 77 d.put(_key,_value); |
78 | |
79 cloneAndTransmit(d); | |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
80 } |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
81 |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
82 @Override |
20 | 83 public synchronized void putAll(NodeAttributes _map) |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
84 { |
21 | 85 NodeData<Node> d = new NodeData<Node>(m_node,m_node); |
17 | 86 d.putAll(_map); |
87 | |
88 cloneAndTransmit(d); | |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
89 } |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
90 |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
91 @Override |
20 | 92 public synchronized void remove(ByteBuffer _key) |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
93 { |
21 | 94 NodeData<Node> d = new NodeData<Node>(m_node,m_node); |
17 | 95 d.remove(_key); |
96 | |
97 cloneAndTransmit(d); | |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
98 } |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
99 |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
100 @Override |
20 | 101 public synchronized void removeAll(Set<ByteBuffer> _keys) |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
102 { |
21 | 103 NodeData<Node> d = new NodeData<Node>(m_node,m_node); |
16 | 104 d.removeAll(_keys); |
105 | |
106 cloneAndTransmit(d); | |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
107 } |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
108 |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
109 @Override |
20 | 110 public synchronized void clearAttributes() |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
111 { |
21 | 112 NodeData<Node> d = new NodeData<Node>(m_node,m_node); |
16 | 113 d.clearAttributes(); |
114 | |
115 cloneAndTransmit(d); | |
116 } | |
117 | |
21 | 118 public synchronized void cloneAndTransmit(NodeData<Node> _d) |
16 | 119 { |
120 OnMemoryForest f = (OnMemoryForest)m_node.getForest(); | |
21 | 121 Node clone = f.createNode(m_node.getID().update(),_d); |
16 | 122 transmit(m_node,clone); |
17 | 123 |
124 m_node = clone; | |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
125 } |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
126 |
21 | 127 public synchronized void transmit(Node _orig,Node _edit) |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
128 { |
15 | 129 OnMemoryForest f = (OnMemoryForest)m_node.getForest(); |
16 | 130 OnMemoryNode clone = f.createNode(m_node.getID().update(),null); |
131 clone.replace(_edit); | |
14
8bf59f161b23
separete Node methods to NodeContext , NodeAttribute , NodeChildren
misaka
parents:
13
diff
changeset
|
132 |
8bf59f161b23
separete Node methods to NodeContext , NodeAttribute , NodeChildren
misaka
parents:
13
diff
changeset
|
133 if(m_parent != null){ |
8bf59f161b23
separete Node methods to NodeContext , NodeAttribute , NodeChildren
misaka
parents:
13
diff
changeset
|
134 m_parent.transmit(m_node,(OnMemoryNode)clone); |
8bf59f161b23
separete Node methods to NodeContext , NodeAttribute , NodeChildren
misaka
parents:
13
diff
changeset
|
135 return; |
8bf59f161b23
separete Node methods to NodeContext , NodeAttribute , NodeChildren
misaka
parents:
13
diff
changeset
|
136 } |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
137 } |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
138 |
20 | 139 private synchronized OnMemoryMonotonicTreeNode getCache(OnMemoryNode _node) |
140 { | |
141 NodeID id = _node.getID(); | |
142 OnMemoryMonotonicTreeNode mono; | |
143 synchronized(m_cache){ | |
144 mono = m_cache.get(id); | |
145 if(mono == null){ | |
146 //cache not found . create it | |
147 mono = new OnMemoryMonotonicTreeNode(_node,this); | |
148 } | |
149 } | |
150 return mono; | |
151 } | |
152 | |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
153 @Override |
21 | 154 public synchronized Node getNode() |
155 { | |
156 return m_node; | |
157 } | |
158 | |
159 @Override | |
20 | 160 public synchronized List<MonotonicTreeNode> getList() |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
161 { |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
162 //NodeのリストよりMonotonicTreeNodeのリストを作成する. |
15 | 163 NodeChildren<MonotonicTreeNode> res = new NodeChildrenImpl<MonotonicTreeNode>(); |
21 | 164 for(Iterator<Node> it = m_node.getList().iterator();it.hasNext();){ |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
165 OnMemoryNode n = (OnMemoryNode)it.next(); |
20 | 166 res.add(getCache(n)); |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
167 } |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
168 |
15 | 169 return res.getList(); |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
170 } |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
171 |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
172 @Override |
20 | 173 public synchronized boolean add(MonotonicTreeNode _n) |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
174 { |
20 | 175 OnMemoryMonotonicTreeNode mono = (OnMemoryMonotonicTreeNode)_n; |
21 | 176 NodeData<Node> d = new NodeData<Node>(m_node,m_node); |
20 | 177 boolean ret = d.add(mono.m_node); |
17 | 178 if(ret){ |
179 cloneAndTransmit(d); | |
180 } | |
181 | |
182 return ret; | |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
183 } |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
184 |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
185 @Override |
20 | 186 public synchronized boolean addAll(NodeChildren<MonotonicTreeNode> _list) |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
187 { |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
188 //MotonicTreeNodeのリストからNodeのリストを作成する. |
21 | 189 NodeChildren<Node> c = new NodeChildrenImpl<Node>(); |
15 | 190 for(Iterator<MonotonicTreeNode> it = _list.getList().iterator();it.hasNext();){ |
20 | 191 OnMemoryMonotonicTreeNode mono = (OnMemoryMonotonicTreeNode)it.next(); |
192 c.add(mono.m_node); | |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
193 } |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
194 |
21 | 195 NodeData<Node> d = new NodeData<Node>(m_node,m_node); |
17 | 196 boolean ret = d.addAll(c); |
197 if(ret){ | |
198 cloneAndTransmit(d); | |
199 } | |
200 | |
201 return ret; | |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
202 } |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
203 |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
204 @Override |
20 | 205 public synchronized MonotonicTreeNode remove(int _index) |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
206 { |
21 | 207 NodeData<Node> d = new NodeData<Node>(m_node,m_node); |
208 OnMemoryNode n = (OnMemoryNode) d.remove(_index); | |
17 | 209 if(n != null){ |
210 cloneAndTransmit(d); | |
211 return new OnMemoryMonotonicTreeNode((OnMemoryNode)n,null); | |
212 } | |
213 | |
214 return null; | |
15 | 215 } |
216 | |
217 @Override | |
20 | 218 public synchronized void clearChildren() |
15 | 219 { |
21 | 220 NodeData<Node> d = new NodeData<Node>(m_node,m_node); |
20 | 221 d.clearChildren(); |
17 | 222 |
223 cloneAndTransmit(d); | |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
224 } |
16 | 225 |
226 @Override | |
227 public Map<ByteBuffer, ByteBuffer> asMap() | |
228 { | |
229 return m_node.asMap(); | |
230 } | |
231 | |
232 @Override | |
233 public Set<ByteBuffer> getKeySet() | |
234 { | |
235 return m_node.getKeySet(); | |
236 } | |
237 | |
238 @Override | |
20 | 239 public synchronized MonotonicTreeNode get(int _index) |
16 | 240 { |
21 | 241 OnMemoryNode n = (OnMemoryNode) m_node.get(_index); |
20 | 242 return getCache(n); |
16 | 243 } |
244 | |
245 @Override | |
20 | 246 public synchronized MonotonicTreeNode replace(MonotonicTreeNode _newChild) |
16 | 247 { |
20 | 248 OnMemoryMonotonicTreeNode mono = (OnMemoryMonotonicTreeNode)_newChild; |
21 | 249 NodeData<Node> d = new NodeData<Node>(m_node,m_node); |
250 OnMemoryNode n = (OnMemoryNode) d.replace(mono.m_node); | |
20 | 251 |
17 | 252 if(n != null){ |
253 cloneAndTransmit(d); | |
20 | 254 return new OnMemoryMonotonicTreeNode(n,null); |
17 | 255 } |
256 | |
257 return null; | |
16 | 258 } |
259 | |
260 @Override | |
20 | 261 public boolean contains(NodeID _id) |
16 | 262 { |
263 return m_node.contains(_id); | |
264 } | |
265 | |
266 @Override | |
20 | 267 public boolean swap(String _fid1,String _fid2) |
268 { | |
269 return m_node.swap(_fid1,_fid2); | |
270 } | |
271 | |
272 @Override | |
273 public Set<String> getFamilyIDSet() | |
274 { | |
275 return m_node.getFamilyIDSet(); | |
276 } | |
277 | |
278 @Override | |
279 public synchronized MonotonicTreeNode get(String _fid) | |
16 | 280 { |
21 | 281 OnMemoryNode n = (OnMemoryNode) m_node.get(_fid); |
20 | 282 OnMemoryMonotonicTreeNode mono = getCache(n); |
283 | |
284 return mono; | |
285 } | |
286 | |
287 @Override | |
288 public synchronized MonotonicTreeNode remove(String _fid) | |
289 { | |
21 | 290 NodeData<Node> d = new NodeData<Node>(m_node,m_node); |
291 OnMemoryNode n = (OnMemoryNode) d.remove(_fid); | |
20 | 292 |
293 cloneAndTransmit(d); | |
294 | |
295 return new OnMemoryMonotonicTreeNode(n,null); | |
16 | 296 } |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
297 } |