annotate src/treecms/memory/OnMemoryMonotonicTreeNode.java @ 22:fa784faafc78

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