annotate src/treecms/memory/OnMemoryMonotonicTreeNode.java @ 21:f3150b37f9be

commit
author shoshi
date Mon, 06 Jun 2011 21:49:04 +0900
parents 084de6909451
children fa784faafc78
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
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
shoshi
parents: 17
diff changeset
9 import java.util.concurrent.ConcurrentHashMap;
shoshi
parents: 17
diff changeset
10 import java.util.concurrent.atomic.AtomicReferenceFieldUpdater;
shoshi
parents: 17
diff changeset
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
shoshi
parents: 20
diff changeset
14 import treecms.api.Node;
15
misaka
parents: 14
diff changeset
15 import treecms.api.NodeAttributes;
misaka
parents: 14
diff changeset
16 import treecms.api.NodeChildren;
12
fbbb7e414346 modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff changeset
17 import treecms.api.NodeID;
15
misaka
parents: 14
diff changeset
18 import treecms.tree.util.NodeChildrenImpl;
16
shoshi
parents: 15
diff changeset
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
shoshi
parents: 20
diff changeset
27 private Node m_node;
20
shoshi
parents: 17
diff changeset
28
shoshi
parents: 17
diff changeset
29 private static final AtomicReferenceFieldUpdater<OnMemoryMonotonicTreeNode,OnMemoryMonotonicTreeNode> m_parentUpdater
shoshi
parents: 17
diff changeset
30 = AtomicReferenceFieldUpdater.newUpdater(OnMemoryMonotonicTreeNode.class,OnMemoryMonotonicTreeNode.class,"m_parent");
shoshi
parents: 17
diff changeset
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
shoshi
parents: 20
diff changeset
34 private final Map<String,OnMemoryMonotonicTreeNode> m_cache;
20
shoshi
parents: 17
diff changeset
35
15
misaka
parents: 14
diff changeset
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
shoshi
parents: 20
diff changeset
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
misaka
parents: 14
diff changeset
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
shoshi
parents: 17
diff changeset
74 public synchronized void put(ByteBuffer _key, ByteBuffer _value)
12
fbbb7e414346 modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff changeset
75 {
21
shoshi
parents: 20
diff changeset
76 NodeData<Node> d = new NodeData<Node>(m_node,m_node);
17
shoshi
parents: 16
diff changeset
77 d.put(_key,_value);
shoshi
parents: 16
diff changeset
78
shoshi
parents: 16
diff changeset
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
shoshi
parents: 17
diff changeset
83 public synchronized void putAll(NodeAttributes _map)
12
fbbb7e414346 modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff changeset
84 {
21
shoshi
parents: 20
diff changeset
85 NodeData<Node> d = new NodeData<Node>(m_node,m_node);
17
shoshi
parents: 16
diff changeset
86 d.putAll(_map);
shoshi
parents: 16
diff changeset
87
shoshi
parents: 16
diff changeset
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
shoshi
parents: 17
diff changeset
92 public synchronized void remove(ByteBuffer _key)
12
fbbb7e414346 modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff changeset
93 {
21
shoshi
parents: 20
diff changeset
94 NodeData<Node> d = new NodeData<Node>(m_node,m_node);
17
shoshi
parents: 16
diff changeset
95 d.remove(_key);
shoshi
parents: 16
diff changeset
96
shoshi
parents: 16
diff changeset
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
shoshi
parents: 17
diff changeset
101 public synchronized void removeAll(Set<ByteBuffer> _keys)
12
fbbb7e414346 modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff changeset
102 {
21
shoshi
parents: 20
diff changeset
103 NodeData<Node> d = new NodeData<Node>(m_node,m_node);
16
shoshi
parents: 15
diff changeset
104 d.removeAll(_keys);
shoshi
parents: 15
diff changeset
105
shoshi
parents: 15
diff changeset
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
shoshi
parents: 17
diff changeset
110 public synchronized void clearAttributes()
12
fbbb7e414346 modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff changeset
111 {
21
shoshi
parents: 20
diff changeset
112 NodeData<Node> d = new NodeData<Node>(m_node,m_node);
16
shoshi
parents: 15
diff changeset
113 d.clearAttributes();
shoshi
parents: 15
diff changeset
114
shoshi
parents: 15
diff changeset
115 cloneAndTransmit(d);
shoshi
parents: 15
diff changeset
116 }
shoshi
parents: 15
diff changeset
117
21
shoshi
parents: 20
diff changeset
118 public synchronized void cloneAndTransmit(NodeData<Node> _d)
16
shoshi
parents: 15
diff changeset
119 {
shoshi
parents: 15
diff changeset
120 OnMemoryForest f = (OnMemoryForest)m_node.getForest();
21
shoshi
parents: 20
diff changeset
121 Node clone = f.createNode(m_node.getID().update(),_d);
16
shoshi
parents: 15
diff changeset
122 transmit(m_node,clone);
17
shoshi
parents: 16
diff changeset
123
shoshi
parents: 16
diff changeset
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
shoshi
parents: 20
diff changeset
127 public synchronized void transmit(Node _orig,Node _edit)
12
fbbb7e414346 modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff changeset
128 {
15
misaka
parents: 14
diff changeset
129 OnMemoryForest f = (OnMemoryForest)m_node.getForest();
16
shoshi
parents: 15
diff changeset
130 OnMemoryNode clone = f.createNode(m_node.getID().update(),null);
shoshi
parents: 15
diff changeset
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
shoshi
parents: 17
diff changeset
139 private synchronized OnMemoryMonotonicTreeNode getCache(OnMemoryNode _node)
shoshi
parents: 17
diff changeset
140 {
shoshi
parents: 17
diff changeset
141 NodeID id = _node.getID();
shoshi
parents: 17
diff changeset
142 OnMemoryMonotonicTreeNode mono;
shoshi
parents: 17
diff changeset
143 synchronized(m_cache){
shoshi
parents: 17
diff changeset
144 mono = m_cache.get(id);
shoshi
parents: 17
diff changeset
145 if(mono == null){
shoshi
parents: 17
diff changeset
146 //cache not found . create it
shoshi
parents: 17
diff changeset
147 mono = new OnMemoryMonotonicTreeNode(_node,this);
shoshi
parents: 17
diff changeset
148 }
shoshi
parents: 17
diff changeset
149 }
shoshi
parents: 17
diff changeset
150 return mono;
shoshi
parents: 17
diff changeset
151 }
shoshi
parents: 17
diff changeset
152
12
fbbb7e414346 modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff changeset
153 @Override
21
shoshi
parents: 20
diff changeset
154 public synchronized Node getNode()
shoshi
parents: 20
diff changeset
155 {
shoshi
parents: 20
diff changeset
156 return m_node;
shoshi
parents: 20
diff changeset
157 }
shoshi
parents: 20
diff changeset
158
shoshi
parents: 20
diff changeset
159 @Override
20
shoshi
parents: 17
diff changeset
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
misaka
parents: 14
diff changeset
163 NodeChildren<MonotonicTreeNode> res = new NodeChildrenImpl<MonotonicTreeNode>();
21
shoshi
parents: 20
diff changeset
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
shoshi
parents: 17
diff changeset
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
misaka
parents: 14
diff changeset
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
shoshi
parents: 17
diff changeset
173 public synchronized boolean add(MonotonicTreeNode _n)
12
fbbb7e414346 modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff changeset
174 {
20
shoshi
parents: 17
diff changeset
175 OnMemoryMonotonicTreeNode mono = (OnMemoryMonotonicTreeNode)_n;
21
shoshi
parents: 20
diff changeset
176 NodeData<Node> d = new NodeData<Node>(m_node,m_node);
20
shoshi
parents: 17
diff changeset
177 boolean ret = d.add(mono.m_node);
17
shoshi
parents: 16
diff changeset
178 if(ret){
shoshi
parents: 16
diff changeset
179 cloneAndTransmit(d);
shoshi
parents: 16
diff changeset
180 }
shoshi
parents: 16
diff changeset
181
shoshi
parents: 16
diff changeset
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
shoshi
parents: 17
diff changeset
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
shoshi
parents: 20
diff changeset
189 NodeChildren<Node> c = new NodeChildrenImpl<Node>();
15
misaka
parents: 14
diff changeset
190 for(Iterator<MonotonicTreeNode> it = _list.getList().iterator();it.hasNext();){
20
shoshi
parents: 17
diff changeset
191 OnMemoryMonotonicTreeNode mono = (OnMemoryMonotonicTreeNode)it.next();
shoshi
parents: 17
diff changeset
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
shoshi
parents: 20
diff changeset
195 NodeData<Node> d = new NodeData<Node>(m_node,m_node);
17
shoshi
parents: 16
diff changeset
196 boolean ret = d.addAll(c);
shoshi
parents: 16
diff changeset
197 if(ret){
shoshi
parents: 16
diff changeset
198 cloneAndTransmit(d);
shoshi
parents: 16
diff changeset
199 }
shoshi
parents: 16
diff changeset
200
shoshi
parents: 16
diff changeset
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
shoshi
parents: 17
diff changeset
205 public synchronized MonotonicTreeNode remove(int _index)
12
fbbb7e414346 modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff changeset
206 {
21
shoshi
parents: 20
diff changeset
207 NodeData<Node> d = new NodeData<Node>(m_node,m_node);
shoshi
parents: 20
diff changeset
208 OnMemoryNode n = (OnMemoryNode) d.remove(_index);
17
shoshi
parents: 16
diff changeset
209 if(n != null){
shoshi
parents: 16
diff changeset
210 cloneAndTransmit(d);
shoshi
parents: 16
diff changeset
211 return new OnMemoryMonotonicTreeNode((OnMemoryNode)n,null);
shoshi
parents: 16
diff changeset
212 }
shoshi
parents: 16
diff changeset
213
shoshi
parents: 16
diff changeset
214 return null;
15
misaka
parents: 14
diff changeset
215 }
misaka
parents: 14
diff changeset
216
misaka
parents: 14
diff changeset
217 @Override
20
shoshi
parents: 17
diff changeset
218 public synchronized void clearChildren()
15
misaka
parents: 14
diff changeset
219 {
21
shoshi
parents: 20
diff changeset
220 NodeData<Node> d = new NodeData<Node>(m_node,m_node);
20
shoshi
parents: 17
diff changeset
221 d.clearChildren();
17
shoshi
parents: 16
diff changeset
222
shoshi
parents: 16
diff changeset
223 cloneAndTransmit(d);
12
fbbb7e414346 modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff changeset
224 }
16
shoshi
parents: 15
diff changeset
225
shoshi
parents: 15
diff changeset
226 @Override
shoshi
parents: 15
diff changeset
227 public Map<ByteBuffer, ByteBuffer> asMap()
shoshi
parents: 15
diff changeset
228 {
shoshi
parents: 15
diff changeset
229 return m_node.asMap();
shoshi
parents: 15
diff changeset
230 }
shoshi
parents: 15
diff changeset
231
shoshi
parents: 15
diff changeset
232 @Override
shoshi
parents: 15
diff changeset
233 public Set<ByteBuffer> getKeySet()
shoshi
parents: 15
diff changeset
234 {
shoshi
parents: 15
diff changeset
235 return m_node.getKeySet();
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 synchronized MonotonicTreeNode get(int _index)
16
shoshi
parents: 15
diff changeset
240 {
21
shoshi
parents: 20
diff changeset
241 OnMemoryNode n = (OnMemoryNode) m_node.get(_index);
20
shoshi
parents: 17
diff changeset
242 return getCache(n);
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 synchronized MonotonicTreeNode replace(MonotonicTreeNode _newChild)
16
shoshi
parents: 15
diff changeset
247 {
20
shoshi
parents: 17
diff changeset
248 OnMemoryMonotonicTreeNode mono = (OnMemoryMonotonicTreeNode)_newChild;
21
shoshi
parents: 20
diff changeset
249 NodeData<Node> d = new NodeData<Node>(m_node,m_node);
shoshi
parents: 20
diff changeset
250 OnMemoryNode n = (OnMemoryNode) d.replace(mono.m_node);
20
shoshi
parents: 17
diff changeset
251
17
shoshi
parents: 16
diff changeset
252 if(n != null){
shoshi
parents: 16
diff changeset
253 cloneAndTransmit(d);
20
shoshi
parents: 17
diff changeset
254 return new OnMemoryMonotonicTreeNode(n,null);
17
shoshi
parents: 16
diff changeset
255 }
shoshi
parents: 16
diff changeset
256
shoshi
parents: 16
diff changeset
257 return null;
16
shoshi
parents: 15
diff changeset
258 }
shoshi
parents: 15
diff changeset
259
shoshi
parents: 15
diff changeset
260 @Override
20
shoshi
parents: 17
diff changeset
261 public boolean contains(NodeID _id)
16
shoshi
parents: 15
diff changeset
262 {
shoshi
parents: 15
diff changeset
263 return m_node.contains(_id);
shoshi
parents: 15
diff changeset
264 }
shoshi
parents: 15
diff changeset
265
shoshi
parents: 15
diff changeset
266 @Override
20
shoshi
parents: 17
diff changeset
267 public boolean swap(String _fid1,String _fid2)
shoshi
parents: 17
diff changeset
268 {
shoshi
parents: 17
diff changeset
269 return m_node.swap(_fid1,_fid2);
shoshi
parents: 17
diff changeset
270 }
shoshi
parents: 17
diff changeset
271
shoshi
parents: 17
diff changeset
272 @Override
shoshi
parents: 17
diff changeset
273 public Set<String> getFamilyIDSet()
shoshi
parents: 17
diff changeset
274 {
shoshi
parents: 17
diff changeset
275 return m_node.getFamilyIDSet();
shoshi
parents: 17
diff changeset
276 }
shoshi
parents: 17
diff changeset
277
shoshi
parents: 17
diff changeset
278 @Override
shoshi
parents: 17
diff changeset
279 public synchronized MonotonicTreeNode get(String _fid)
16
shoshi
parents: 15
diff changeset
280 {
21
shoshi
parents: 20
diff changeset
281 OnMemoryNode n = (OnMemoryNode) m_node.get(_fid);
20
shoshi
parents: 17
diff changeset
282 OnMemoryMonotonicTreeNode mono = getCache(n);
shoshi
parents: 17
diff changeset
283
shoshi
parents: 17
diff changeset
284 return mono;
shoshi
parents: 17
diff changeset
285 }
shoshi
parents: 17
diff changeset
286
shoshi
parents: 17
diff changeset
287 @Override
shoshi
parents: 17
diff changeset
288 public synchronized MonotonicTreeNode remove(String _fid)
shoshi
parents: 17
diff changeset
289 {
21
shoshi
parents: 20
diff changeset
290 NodeData<Node> d = new NodeData<Node>(m_node,m_node);
shoshi
parents: 20
diff changeset
291 OnMemoryNode n = (OnMemoryNode) d.remove(_fid);
20
shoshi
parents: 17
diff changeset
292
shoshi
parents: 17
diff changeset
293 cloneAndTransmit(d);
shoshi
parents: 17
diff changeset
294
shoshi
parents: 17
diff changeset
295 return new OnMemoryMonotonicTreeNode(n,null);
16
shoshi
parents: 15
diff changeset
296 }
12
fbbb7e414346 modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff changeset
297 }