view src/treecms/proto/simple/SimpleDecNodeID.java @ 43:7392f7ed45d2

added SimpleIncNodeID SimpleIncNodeIDTest
author shoshi
date Fri, 21 Jan 2011 16:33:41 +0900
parents ba136d01f304
children 347feeca4728
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(10000);
		
		m_version = m_tip.getAndDecrement();
	}
	
	private SimpleDecNodeID(String _uuid,AtomicLong _tip,boolean _doUpdate)
	{
		m_uuid = _uuid;
		m_tip = _tip;
		
		if(_doUpdate){
			m_version = m_tip.getAndDecrement();
			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,false);
	}

}