annotate src/treecms/memory/OnMemoryMonotonicTreeNode.java @ 24:68021f7091e1

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