package com.netflix.astyanax.serializers; import java.nio.ByteBuffer; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import java.util.UUID; import org.apache.cassandra.db.marshal.TimeUUIDType; import com.netflix.astyanax.util.TimeUUIDUtils; public class TimeUUIDSerializer extends UUIDSerializer { private static final TimeUUIDSerializer instance = new TimeUUIDSerializer(); public static TimeUUIDSerializer get() { return instance; } @Override public ComparatorType getComparatorType() { return ComparatorType.TIMEUUIDTYPE; } @Override public ByteBuffer fromString(String str) { return TimeUUIDType.instance.fromString(str); } @Override public String getString(ByteBuffer byteBuffer) { long micros = TimeUUIDUtils.getMicrosTimeFromUUID(this.fromByteBuffer(byteBuffer.duplicate())); return new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ").format(new Date(micros / 1000)); } @Override public ByteBuffer getNext(ByteBuffer byteBuffer) { UUID uuid = fromByteBuffer(byteBuffer.duplicate()); return toByteBuffer(new java.util.UUID(uuid.getMostSignificantBits(), uuid.getLeastSignificantBits() + 1)); } }