view src/treecms/proto/simple/SimpleDecNodeID.java @ 47:5b36891db5ca

finished implementing cassandra monotonic tree
author suika6039
date Sat, 29 Jan 2011 03:05:20 +0900
parents 347feeca4728
children
line wrap: on
line source

package treecms.proto.simple;

import java.util.UUID;
import java.util.concurrent.atomic.AtomicLong;

import treecms.proto.api.NodeID;
import treecms.proto.id.DecrementalNodeID;

public class SimpleDecNodeID extends DecrementalNodeID
{
	private String m_uuid;
	private AtomicLong m_tip;
	private long m_version;
	
	public SimpleDecNodeID()
	{
		m_uuid = UUID.randomUUID().toString();
		m_tip = new AtomicLong();
		m_tip.set(START_VALUE);
		
		m_version = START_VALUE;
	}
	
	private SimpleDecNodeID(String _uuid,AtomicLong _tip,boolean _doUpdate)
	{
		m_uuid = _uuid;
		m_tip = _tip;
		
		if(_doUpdate){
			m_version = m_tip.decrementAndGet();
			return;
		}
		
		m_version = m_tip.get();
	}
	
	@Override
	public NodeID create()
	{
		return new SimpleDecNodeID();
	}

	@Override
	public NodeID getTip()
	{
		return new SimpleDecNodeID(m_uuid,m_tip,false);
	}

	@Override
	public String getUUID()
	{
		return m_uuid;
	}

	@Override
	public String getVersion()
	{
		return Long.toString(m_version);
	}

	@Override
	public NodeID update()
	{
		return new SimpleDecNodeID(m_uuid,m_tip,true);
	}
}