annotate src/treecms/memory/OnMemoryMonotonicTreeNode.java @ 17:168deb591f21

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