Mercurial > hg > Members > shoshi > TreeCMSv2
view src/treecms/memory/OnMemoryForest.java @ 4:f5ed85be5640
finished treecms.cassandra.v1 implementation (not tested yet)
author | shoshi |
---|---|
date | Thu, 24 Feb 2011 21:30:18 +0900 |
parents | 5fa718b63cd5 |
children | 12604eb6b615 |
line wrap: on
line source
package treecms.memory; 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.RandomNodeID; public class OnMemoryForest implements Forest { ConcurrentHashMap<NodeID,OnMemoryNode> m_table; public OnMemoryForest() { m_table = new ConcurrentHashMap<NodeID,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); return newNode; } NodeID createID() { return new RandomNodeIDImpl(null); } @Override public Node get(NodeID _id) { return m_table.get(_id); } @Override public Node create() { return createNode(null,null); } class RandomNodeIDImpl extends RandomNodeID { String m_uuid; long m_version; public RandomNodeIDImpl(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 RandomNodeIDImpl(null); } @Override public NodeID update() { return new RandomNodeIDImpl(m_uuid); } @Override public String getUUID() { return m_uuid; } @Override public String getVersion() { return Long.toHexString(m_version); } } }