package xxl.core.indexStructures.descriptors; import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; import xxl.core.indexStructures.MVBTree; import xxl.core.indexStructures.MVBTree.Version; import xxl.core.indexStructures.mvbts.SimpleLoadMVBTree; import xxl.core.io.converters.Converter; import xxl.core.io.converters.LongConverter; import xxl.core.io.converters.MeasuredConverter; /** * This class is implements interface @see {@link Version} and is used in the test class @see {@link SimpleLoadMVBTree}. * Assumption: time stamps are of type long. */ public class LongVersion implements MVBTree.Version{ /** * */ public long version; /** * */ public static final Converter<LongVersion> VERSION_CONVERTER = new Converter<LongVersion>(){ @Override public LongVersion read(DataInput dataInput, LongVersion object) throws IOException { long version = LongConverter.DEFAULT_INSTANCE.readLong(dataInput); return new LongVersion(version); } @Override public void write(DataOutput dataOutput, LongVersion object) throws IOException { LongConverter.DEFAULT_INSTANCE.writeLong(dataOutput, ((LongVersion)object).version); } }; /** * */ public static final MeasuredConverter<LongVersion> VERSION_MEASURED_CONVERTER = new MeasuredConverter<LongVersion>() { @Override public int getMaxObjectSize() { return LongConverter.SIZE; } @Override public LongVersion read(DataInput dataInput, LongVersion object) throws IOException { return VERSION_CONVERTER.read(dataInput) ; } @Override public void write(DataOutput dataOutput, LongVersion object) throws IOException { VERSION_CONVERTER.write(dataOutput, object); } }; /** * * @param version */ public LongVersion(long version){ this.version = version; } /** * * @return */ public Long getTimeStamp(){ return this.version; } /* * (non-Javadoc) * @see java.lang.Comparable#compareTo(java.lang.Object) */ @Override public int compareTo(Object o) { LongVersion v = (LongVersion)o; return (this.version == v.version) ? 0 : ( (this.version > v.version ) ? 1: -1) ; } /* * (non-Javadoc) * @see java.lang.Object#clone() */ public Object clone(){ return new LongVersion(this.version); } /* * (non-Javadoc) * @see java.lang.Object#hashCode() */ public int hashCode() { return ((int)version * 157) & 0x7fffffff; } /** * */ public String toString(){ return "Version: " + this.version; } }