Mercurial > hg > Members > shoshi > TreeCMSv1
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; } }