Mercurial > hg > Members > shoshi > TreeCMSv2
view src/treecms/memory/OnMemoryNode.java @ 12:fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
author | shoshi |
---|---|
date | Wed, 11 May 2011 03:34:01 +0900 |
parents | f96193babac0 |
children | c8601b0fa8a3 |
line wrap: on
line source
package treecms.memory; import java.nio.ByteBuffer; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; 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の情報関連 */ @Override public Forest getForest() { return m_forest; } @Override public NodeID getID() { return m_id; } @Override public NodeData getData() { return m_data.deepCopy(); } /* * 子供関連のメソッド */ @Override public Iterator<Node> getChildren() { //Iteratorが変更不可なので、そのまま渡しても構わない return m_data.getChildren(); } @Override public void addChild(Node _child) { m_data.addChild(_child); } @Override public void addChildren(List<Node> _child) { m_data.addChildren(_child); } @Override public void removeChild(Node _child) { m_data.removeChild(_child); } @Override public void removeChildren(List<Node> _children) { m_data.removeChildren(_children); } @Override public void clearChildren() { m_data.clearChildren(); } /* * 要素関連のメソッド */ @Override public ByteBuffer get(ByteBuffer _key) { return m_data.get(_key); } @Override public Map<ByteBuffer,ByteBuffer> getAll() { return m_data.getAll(); } @Override public void put(ByteBuffer _key, ByteBuffer _value) { m_data.put(_key,_value); } @Override public void putAll(Map<ByteBuffer, ByteBuffer> _map) { m_data.putAll(_map); } @Override public void remove(ByteBuffer _key) { m_data.remove(_key); } @Override public void removeAll(Set<ByteBuffer> _keySet) { m_data.removeAll(_keySet); } @Override public void clear() { m_data.clear(); } @Override public int hashCode() { return m_id.hashCode(); } @Override public String toString() { return getID().toString(); } }