Mercurial > hg > Members > shoshi > TreeCMSv2
view src/treecms/cassandra/CassandraRandomNodeID.java @ 19:019ca5abb1f0
commit
author | shoshi |
---|---|
date | Tue, 31 May 2011 15:55:28 +0900 |
parents | |
children |
line wrap: on
line source
package treecms.cassandra; import java.util.Random; import java.util.StringTokenizer; import java.util.UUID; import treecms.api.NodeID; import treecms.tree.id.AbstractRandomNodeID; public class CassandraRandomNodeID extends AbstractRandomNodeID { private final long m_version; private final String m_uuid; private CassandraRandomNodeID(String _uuid,String _version) { this(_uuid,Long.parseLong(_version,16)); } private CassandraRandomNodeID(String _uuid,long _version) { m_uuid = _uuid; m_version = _version; } @Override public NodeID create() { return newInstance(); } @Override public String getUUID() { return m_uuid; } @Override public String getVersion() { return Long.toString(m_version); } @Override public NodeID update() { Random rnd = new Random(); CassandraRandomNodeID id = new CassandraRandomNodeID(m_uuid,rnd.nextLong()); return id; } public static CassandraRandomNodeID newInstance() { Random rnd = new Random(); CassandraRandomNodeID id = new CassandraRandomNodeID(UUID.randomUUID().toString(),rnd.nextLong()); return id; } public static CassandraRandomNodeID decode(String _id) { // UUID@Version StringTokenizer tokens = new StringTokenizer(_id,"@"); try{ String uuid = tokens.nextToken(); String version = tokens.nextToken(); CassandraRandomNodeID id = new CassandraRandomNodeID(uuid,version); return id; }catch(Exception _e){ throw new IllegalArgumentException(_e); } } }