Mercurial > hg > Members > shoshi > TreeCMSv2
view src/treecms/memory/OnMemoryForest.java @ 6:12604eb6b615
added javadoc
author | shoshi |
---|---|
date | Mon, 14 Mar 2011 23:24:38 +0900 |
parents | f5ed85be5640 |
children | fc19e38b669b |
line wrap: on
line source
package treecms.memory; import java.util.Map; import java.util.Random; import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; import treecms.api.Forest; import treecms.api.Node; import treecms.api.NodeData; import treecms.api.NodeID; import treecms.tree.id.AbstractRandomNodeID; public class OnMemoryForest implements Forest { Map<NodeID,OnMemoryNode> m_table; Map<String,OnMemoryNode> m_tipTable; public OnMemoryForest() { m_table = new ConcurrentHashMap<NodeID,OnMemoryNode>(); m_tipTable = new ConcurrentHashMap<String,OnMemoryNode>(); } public OnMemoryNode createNode(NodeID _id,NodeData _newData) { NodeID newID = (_id != null) ? _id : createID(); NodeData newData = (_newData != null) ? _newData : new NodeData(); OnMemoryNode newNode = new OnMemoryNode(this,newID,newData); m_table.put(newID,newNode); m_tipTable.put(newID.getUUID(),newNode); return newNode; } NodeID createID() { return new RandomNodeID(null); } @Override public Node get(NodeID _id) { return m_table.get(_id); } @Override public Node create() { return createNode(null,null); } class RandomNodeID extends AbstractRandomNodeID { String m_uuid; long m_version; public RandomNodeID(String _uuid) { if(_uuid != null){ m_uuid = _uuid; }else{ m_uuid = UUID.randomUUID().toString(); } m_version = (new Random()).nextLong(); } @Override public NodeID create() { return new RandomNodeID(null); } @Override public NodeID update() { return new RandomNodeID(m_uuid); } @Override public String getUUID() { return m_uuid; } @Override public String getVersion() { return Long.toHexString(m_version); } } }