Mercurial > hg > Members > shoshi > TreeCMSv2
view src/treecms/tree/id/IncrementalID.java @ 25:c1e7ec6b3d44
commit
author | Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 12 Jul 2011 14:39:35 +0900 |
parents | |
children |
line wrap: on
line source
package treecms.tree.id; import java.util.UUID; import java.util.concurrent.atomic.AtomicLong; import treecms.api.NodeID; public class IncrementalID implements NodeID { private final AtomicLong m_counter; private final String m_fid; private final long m_version; public IncrementalID(String _fid) { this(_fid,new AtomicLong(0)); } private IncrementalID(String _fid,AtomicLong _counter) { m_fid = _fid; m_counter = _counter; m_version = _counter.getAndIncrement(); } @Override public NodeID create() { String fid = UUID.randomUUID().toString(); IncrementalID newID = new IncrementalID(fid); return newID; } @Override public NodeID update() { IncrementalID newID = new IncrementalID(m_fid,m_counter); return newID; } @Override public String getFamilyID() { return m_fid; } @Override public String getVersion() { return Long.toHexString(m_counter.get()); } @Override public boolean equals(Object _obj) { if(this == _obj){ return true; } if(_obj instanceof IncrementalID){ IncrementalID id = (IncrementalID)_obj; if(id.m_version == m_version && id.m_fid.equals(m_fid)){ return true; } } return false; } @Override public String toString() { return m_fid + "@" + Long.toHexString(m_version); } @Override public boolean isFamily(NodeID _id) { return m_fid.equals(_id.getFamilyID()); } }