package games.strategy.engine.vault; import java.io.Serializable; import games.strategy.net.INode; public class VaultID implements Serializable { private static final long serialVersionUID = 8863728184933393296L; private static long s_currentID; private static synchronized long getNextID() { return s_currentID++; } private final INode m_generatedOn; // this is a unique and monotone increasing id // unique in this vm private final long m_uniqueID = getNextID(); VaultID(final INode generatedOn) { m_generatedOn = generatedOn; } /** * @return Returns the generatedOn. */ INode getGeneratedOn() { return m_generatedOn; } /** * @return Returns the id. */ long getUniqueID() { return m_uniqueID; } @Override public boolean equals(final Object o) { if (o == null || !(o instanceof VaultID)) { return false; } final VaultID other = (VaultID) o; return other.m_generatedOn.equals(this.m_generatedOn) && other.m_uniqueID == this.m_uniqueID; } @Override public int hashCode() { return ((int) m_uniqueID) ^ m_generatedOn.getName().hashCode(); } @Override public String toString() { return "VaultID generated on:" + m_generatedOn + " id:" + m_uniqueID; } }