Mercurial > hg > Members > shoshi > TreeCMSv2
view src/treecms/memory/OnMemoryNode.java @ 8:f96193babac0
changed byte[] to ByteBuffer
added TreeEditor.updateTree(Node,NodeData,Node[]) for node path is known.
added GUIEditor
author | shoshi |
---|---|
date | Thu, 31 Mar 2011 02:08:44 +0900 |
parents | fc19e38b669b |
children | fbbb7e414346 |
line wrap: on
line source
package treecms.memory; import java.nio.ByteBuffer; import java.util.List; import java.util.Map; import treecms.api.Forest; import treecms.api.Node; import treecms.api.NodeData; import treecms.api.NodeID; /** * オンメモリ上でのNodeの実装です。 * @author shoshi */ class OnMemoryNode implements Node { private OnMemoryForest m_forest; private NodeID m_id; private NodeData m_data; /** * コンストラクタです. * @param _forest このNodeが属するForestです. * @param _id このNodeのNodeIDです. * @param _newData このNodeに割り当てるNodeDataです.防御的にコピーします. */ public OnMemoryNode(OnMemoryForest _forest,NodeID _id,NodeData _newData) { m_id = _id; m_forest = _forest; m_data = (_newData != null) ? _newData.deepCopy() : new NodeData(); } /** * Nodeが属するForestを取得します. * @return Nodeが属するForest */ @Override public Forest getForest() { return m_forest; } /** * Nodeに対応するNodeIDを取得します. * @return Nodeに対応するNodeID */ @Override public NodeID getID() { return m_id; } /** * Nodeが保持するデータを取得します.クライアントはこのメソッドを用いて取得されるNodeDataを用いてNodeの内容を<b>変更できません</b>。 * @return Nodeが保持するNodeData */ @Override public NodeData getData() { return m_data.deepCopy(); } /** * 指定されたNodeを子供Nodeとして追加します. * @param _child */ @Override public void add(Node _child) { m_data.add(_child); } /** * 子供Nodeを削除します。 * @param _child */ @Override public void remove(Node _child) { m_data.remove(_child); } /** * 指定されたリストに含まれるNodeを,すべて子供Nodeとして追加します. * @param _children 追加される子供Nodeを保持するリスト */ @Override public void addAll(List<Node> _children) { m_data.addAll(_children); } /** * 子供Nodeのリストを取得します.. * @return 子供Nodeのリスト */ @Override public List<Node> children() { return m_data.children(); } /** * このNodeが保持する値の中で指定されたキーと対応する値を取得します. * @param _key データに対応するキー * @return キーと対応する値,見つからない場合はnull */ @Override public ByteBuffer get(ByteBuffer _key) { return m_data.get(_key); } /** * このNodeが保持するデータをマップとしてすべて取得します. * @return Nodeが保持するすべてのデータのマップ */ @Override public Map<ByteBuffer,ByteBuffer> getAll() { return m_data.getAll(); } /** * キーとそれに対応する値を保存します.キーが重複した場合は上書きされます. * @param _key キー * @param _value 値 */ @Override public void put(ByteBuffer _key, ByteBuffer _value) { m_data.put(_key,_value); } /** * キーとそれに対応する値を複数保持するマップを引数としてとり,マップが保持する値をすべて追加します. * @param _map 追加される値のマップ */ @Override public void putAll(Map<ByteBuffer, ByteBuffer> _map) { m_data.putAll(_map); } /** * キーとそれに対応する値を削除します。 * @param _key キー */ @Override public void remove(ByteBuffer _key) { m_data.remove(_key); } @Override public String toString() { return getID().toString(); } }