Mercurial > hg > Members > shoshi > TreeCMSv2
view src/treecms/memory/OnMemoryNode.java @ 7:fc19e38b669b
added concurrent access client for cassandr
author | shoshi |
---|---|
date | Thu, 17 Mar 2011 23:24:08 +0900 |
parents | f5ed85be5640 |
children | f96193babac0 |
line wrap: on
line source
package treecms.memory; 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を,すべて子供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 byte[] get(byte[] _key) { return m_data.get(_key); } /** * このNodeが保持するデータをマップとしてすべて取得します. * @return Nodeが保持するすべてのデータのマップ */ @Override public Map<byte[],byte[]> getAll() { return m_data.getAll(); } /** * キーとそれに対応する値を保存します.キーが重複した場合は上書きされます. * @param _key キー * @param _value 値 */ @Override public void put(byte[] _key, byte[] _value) { m_data.put(_key,_value); } /** * キーとそれに対応する値を複数保持するマップを引数としてとり,マップが保持する値をすべて追加します. * @param _map 追加される値のマップ */ @Override public void putAll(Map<byte[], byte[]> _map) { m_data.putAll(_map); } }