Mercurial > hg > Members > shoshi > TreeCMSv1
view src/treecms/proto/id/IncrementalNodeID.java @ 27:45881237e777
commit
author | ShoshiTAMAKI |
---|---|
date | Sun, 07 Nov 2010 14:07:03 +0900 |
parents | 9b91329e8a04 |
children | c0a0fa870e6e |
line wrap: on
line source
package treecms.proto.id; import treecms.proto.api.NodeID; import java.util.UUID; 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() { m_inheritedID = UUID.randomUUID().toString(); m_tip = new AtomicLong(); m_version = m_tip.getAndIncrement(); } private IncrementalNodeID(String _inheritedID,AtomicLong _version) { m_inheritedID = _inheritedID; m_version = _version.getAndIncrement(); m_tip = _version; } public NodeID update() { return new IncrementalNodeID(m_inheritedID,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; } }