Mercurial > hg > Members > shoshi > TreeCMSv2
view src/treecms/memory/OnMemoryTreeNode.java @ 15:22cd920986c5
commit
author | misaka |
---|---|
date | Tue, 17 May 2011 21:25:17 +0900 |
parents | 8bf59f161b23 |
children |
line wrap: on
line source
package treecms.memory; import java.nio.ByteBuffer; import java.util.Collections; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; import treecms.api.Forest; import treecms.api.NodeAttributes; import treecms.api.NodeChildren; import treecms.api.NodeID; import treecms.api.SingleNode; import treecms.api.TreeNode; import treecms.tree.util.NodeChildrenImpl; /** * DoubleLinkedなNodeであるTreeNodeのOnMemory実装です. * @author shoshi */ public class OnMemoryTreeNode implements TreeNode { public OnMemoryTreeNode m_parent; public OnMemoryNode m_node; /** * コンストラクタです. * @param _node 対象となるSingleLinkedなNode * @param _parent 親のOnMemoryTreeNode */ public OnMemoryTreeNode(OnMemoryNode _node,OnMemoryTreeNode _parent) { //とりあえず、チェック if(_node == null){ throw new NullPointerException(); } m_node = _node; //このノードがルートの場合、親はnullで構わない. m_parent = _parent; } /* * 親関連のメソッド */ @Override public NodeID getID() { return m_node.getID(); } @Override public SingleNode getNode() { return m_node; } @Override public TreeNode getParent() { return m_parent; } @Override public Forest getForest() { return m_node.getForest(); } /* * 子供関連のメソッド */ @Override public List<TreeNode> getList() { /* * m_node(対象ノード)のリストにはNodeが格納されており、TreeNodeのリストを取得するためにはTreeNodeで要素を構成する必要がある. */ LinkedList<TreeNode> ret = new LinkedList<TreeNode>(); for(Iterator<SingleNode> it = m_node.getList().iterator();it.hasNext();){ OnMemoryNode n = (OnMemoryNode)it.next(); ret.add(new OnMemoryTreeNode(n,this)); } return Collections.unmodifiableList(ret); } @Override public boolean add(TreeNode _child) { return m_node.add(_child.getNode()); } @Override public boolean addAll(NodeChildren<TreeNode> _children) { /* * TreeNodeのリストからNodeのリストへ変換する */ NodeChildren<SingleNode> res = new NodeChildrenImpl<SingleNode>(); for(Iterator<TreeNode> it = _children.getList().iterator();it.hasNext();){ TreeNode tn = it.next(); res.add(tn.getNode()); } return m_node.addAll(res); } @Override public TreeNode remove(String _uuid) { SingleNode n = m_node.remove(_uuid); return new OnMemoryTreeNode((OnMemoryNode)n,this); } @Override public TreeNode remove(int _index) { SingleNode n = m_node.remove(_index); return new OnMemoryTreeNode((OnMemoryNode)n,this); } @Override public void clearChildren() { m_node.clearChildren(); } @Override public ByteBuffer get(ByteBuffer _key) { return m_node.get(_key); } @Override public NodeAttributes getAll() { return m_node.getAll(); } @Override public void put(ByteBuffer _key,ByteBuffer _value) { m_node.put(_key,_value); } @Override public void putAll(NodeAttributes _map) { m_node.putAll(_map); } @Override public void remove(ByteBuffer _key) { m_node.remove(_key); } @Override public void removeAll(Set<ByteBuffer> _keySet) { m_node.removeAll(_keySet); } @Override public void clearAttributes() { m_node.clearAttributes(); } @Override public Map<ByteBuffer, ByteBuffer> asMap() { return m_node.asMap(); } @Override public Set<ByteBuffer> getKeySet() { return m_node.getKeySet(); } @Override public Set<String> getUUIDSet() { return m_node.getUUIDSet(); } @Override public TreeNode get(String _uuid) { SingleNode n = m_node.get(_uuid); return new OnMemoryTreeNode((OnMemoryNode)n,this); } @Override public TreeNode get(int _index) { SingleNode n = m_node.get(_index); return new OnMemoryTreeNode((OnMemoryNode)n,this); } @Override public TreeNode replace(TreeNode _newChild) { SingleNode n = m_node.replace(_newChild.getNode()); return new OnMemoryTreeNode((OnMemoryNode)n,this); } @Override public boolean contains(String _id) { return m_node.contains(_id); } @Override public boolean swap(String _uuid1, String _uuid2) { return m_node.swap(_uuid1,_uuid2); } }