view src/treecms/proto/id/IncrementalNodeID.java @ 26:9b91329e8a04

commit for zemi , doent move
author ShoshiTAMAKI
date Tue, 02 Nov 2010 18:44:21 +0900
parents src/treecms/proto/id/NodeIDImpl.java@99346c04a3cf
children 45881237e777
line wrap: on
line source

package treecms.proto.id;

import treecms.proto.api.NodeID;
import java.util.concurrent.atomic.AtomicLong;

public class IncrementalNodeID implements NodeID
{
	private String m_inheritedID;
	private final long m_version;
	
	private AtomicLong m_tip;
	
	public IncrementalNodeID(String _inheritedID,AtomicLong _version)
	{
		m_inheritedID = _inheritedID;
		m_version = _version.getAndIncrement();
		m_tip = _version;
	}
	
	String getInheritedID()
	{
		return m_inheritedID;
	}
	
	long getVersion()
	{
		return m_version;
	}
	
	AtomicLong getTip()
	{
		return m_tip;
	}
	
	@Override
	public int compare(NodeID _target)
	{
		// TODO Auto-generated method stub
		if(!(_target instanceof IncrementalNodeID)){
			throw new IllegalArgumentException("_target is not instance of NodeIDImpl");
		}
		
		IncrementalNodeID target = (IncrementalNodeID)_target;
		if(m_inheritedID.equals(target.m_inheritedID)){
			long diff = m_version - target.m_version;
			if(diff == 0){
				return 0;
			}else if(diff < 0){
				return -1;
			}else{
				return 1;
			}
		}
		return -2;
	}
	
	@Override
	public String toString()
	{
		return m_inheritedID + "@" + m_version;
	}
}