Mercurial > hg > Members > shoshi > TreeCMSv2
view src/treecms/memory/OnMemoryForest.java @ 21:f3150b37f9be
commit
author | shoshi |
---|---|
date | Mon, 06 Jun 2011 21:49:04 +0900 |
parents | 084de6909451 |
children | fa784faafc78 |
line wrap: on
line source
package treecms.memory; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import treecms.api.Forest; import treecms.api.Node; import treecms.api.NodeID; import treecms.api.MonotonicTree; import treecms.tree.id.RandomNodeID; import treecms.tree.util.NodeData; public class OnMemoryForest implements Forest { private final Map<NodeID,OnMemoryNode> m_table; private final Map<String,OnMemoryNode> m_tipTable; private final OnMemoryMonotonicTree m_mainTree; public OnMemoryForest() { m_table = new ConcurrentHashMap<NodeID,OnMemoryNode>(); m_tipTable = new ConcurrentHashMap<String,OnMemoryNode>(); OnMemoryNode root = (OnMemoryNode)create(); m_mainTree = new OnMemoryMonotonicTree(root); } private NodeID createID(String _fid) { return new RandomNodeID(_fid); } @Override public MonotonicTree get(NodeID _id) { OnMemoryNode node = m_table.get(_id); return new OnMemoryMonotonicTree(node); } @Override public MonotonicTree create() { OnMemoryNode node = createNode(createID(null),null); OnMemoryMonotonicTree tree = new OnMemoryMonotonicTree(node); return tree; } @Override public MonotonicTree create(NodeData<Node> _data) { OnMemoryNode node = createNode(null,_data); return new OnMemoryMonotonicTree(node); } @Override public MonotonicTree getTip(String _fid) { OnMemoryNode node = m_tipTable.get(_fid); return new OnMemoryMonotonicTree(node); } @Override public MonotonicTree getMainTree() { return m_mainTree; } public OnMemoryNode createNode(NodeID _newID,NodeData<Node> _newData) { OnMemoryNode newNode = new OnMemoryNode(this,_newID,_newData); m_table.put(newNode.getID(),newNode); m_tipTable.put(newNode.getID().getFamilyID(),newNode); return newNode; } }