package org.hypergraphdb.handle; import org.hypergraphdb.HGPersistentHandle; import org.hypergraphdb.storage.BAUtils; public class LongPersistentHandle implements HGPersistentHandle { private static final long serialVersionUID = -2455447560268299073L; byte [] data = new byte[8]; private long value() { return BAUtils.readLong(data, 0); } public LongPersistentHandle(long v) { BAUtils.writeLong(v, data, 0); } public byte[] toByteArray() { return data; } public int compareTo(HGPersistentHandle other) { long c = value() - ((LongPersistentHandle)other).value(); return c < 0 ? -1 : (c > 0 ? 1 : 0); } public int hashCode() { long v = value(); return (int) (v ^ (v >>> 32)); } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (obj instanceof HGLiveHandle) obj = ((HGLiveHandle)obj).getPersistent(); if (getClass() != obj.getClass()) return false; LongPersistentHandle other = (LongPersistentHandle) obj; return value() == other.value(); } public HGPersistentHandle getPersistent() { return this; } public String toString() { return "longHandle(" + Long.toString(value()) + ")"; } public String toStringValue() { return Long.toString(value()); } }