comparison src/treecms/tree/util/NodeData.java @ 16:bb9760760744

commit
author shoshi
date Sat, 21 May 2011 04:46:00 +0900
parents src/treecms/api/NodeData.java@22cd920986c5
children 168deb591f21
comparison
equal deleted inserted replaced
15:22cd920986c5 16:bb9760760744
1 package treecms.tree.util;
2
3 import java.nio.ByteBuffer;
4 import java.util.List;
5 import java.util.Map;
6 import java.util.Set;
7
8 import treecms.api.Node;
9 import treecms.api.NodeAttributes;
10 import treecms.api.NodeChildren;
11
12 /**
13 * Node が保持するデータのスナップショットです.Node を大きく変更するときや新しく作成される場合に使用されます.
14 * 通常このクラスのインスタンスを Node から取得した場合,NodeData インスタンスに変更(set,add)を加えても元の Node に変更は反映されません.
15 * その様に実装してください.
16 *
17 * このクラスは Node が保持するデータのうち 子供ノードのリスト・属性のマップ のみ保持しています.つまり,ノードが持っているはずの ID は保持していません.
18 * getID,getForest を呼び出すと UnsupportedOperationException をスローします.
19 * @author shoshi
20 */
21 public class NodeData<T extends Node<T>> implements NodeAttributes , NodeChildren<T>
22 {
23 private NodeChildrenImpl<T> m_children;
24 private NodeAttributesImpl m_attrs;
25
26 public NodeData()
27 {
28 this(null,null);
29 }
30
31 public NodeData(NodeData<T> _newData)
32 {
33 this(_newData.m_children,_newData.m_attrs);
34 }
35
36 public NodeData(NodeChildren<T> _children,NodeAttributes _attrs)
37 {
38 m_children = new NodeChildrenImpl<T>(_children);
39 m_attrs = new NodeAttributesImpl();
40 }
41
42 @Override
43 public List<T> getList()
44 {
45 return m_children.getList();
46 }
47
48 @Override
49 public Set<String> getUUIDSet()
50 {
51 return m_children.getUUIDSet();
52 }
53
54 @Override
55 public boolean add(T _child)
56 {
57 return m_children.add(_child);
58 }
59
60 @Override
61 public boolean addAll(NodeChildren<T> _children)
62 {
63 return m_children.addAll(_children);
64 }
65
66 @Override
67 public T get(String _uuid)
68 {
69 return m_children.get(_uuid);
70 }
71
72 @Override
73 public T get(int _index)
74 {
75 return m_children.get(_index);
76 }
77
78 @Override
79 public T remove(String _uuid)
80 {
81 return m_children.remove(_uuid);
82 }
83
84 @Override
85 public T remove(int _index)
86 {
87 return m_children.remove(_index);
88 }
89
90 @Override
91 public T replace(T _newChild)
92 {
93 return m_children.replace(_newChild);
94 }
95
96 @Override
97 public boolean contains(String _id)
98 {
99 return m_children.contains(_id);
100 }
101
102 @Override
103 public boolean swap(String _uuid1, String _uuid2)
104 {
105 return m_children.swap(_uuid1, _uuid2);
106 }
107
108 @Override
109 public void clearChildren()
110 {
111 m_children.clearChildren();
112 }
113
114 @Override
115 public Map<ByteBuffer, ByteBuffer> asMap()
116 {
117 return m_attrs.asMap();
118 }
119
120 @Override
121 public Set<ByteBuffer> getKeySet()
122 {
123 return m_attrs.getKeySet();
124 }
125
126 @Override
127 public void put(ByteBuffer _name, ByteBuffer _value)
128 {
129 m_attrs.put(_name,_value);
130 }
131
132 @Override
133 public void putAll(NodeAttributes _attrs)
134 {
135 m_attrs.putAll(_attrs);
136 }
137
138 @Override
139 public ByteBuffer get(ByteBuffer _name)
140 {
141 return m_attrs.get(_name);
142 }
143
144 @Override
145 public NodeAttributes getAll()
146 {
147 return m_attrs.getAll();
148 }
149
150 @Override
151 public void remove(ByteBuffer _name)
152 {
153 m_attrs.remove(_name);
154 }
155
156 @Override
157 public void removeAll(Set<ByteBuffer> _keySet)
158 {
159 m_attrs.removeAll(_keySet);
160 }
161
162 @Override
163 public void clearAttributes()
164 {
165 m_attrs.clearAttributes();
166 }
167 }