Package icu.congee.id.generator.xid
Class Xid
java.lang.Object
icu.congee.id.generator.xid.Xid
- All Implemented Interfaces:
Comparable<Xid>
A globally unique identifier for objects.
Consists of 12 bytes, divided as follows:
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| time | random value | inc | |||||||||
Instances of this class are immutable.
-
Constructor Summary
ConstructorsConstructorDescriptionXid()Create a new object id.Xid(byte[] bytes) Constructs a new instance from the given byte arrayXid(int timestamp, int counter) Creates an Xid using the given time, machine identifier, process identifier, and counter.Constructs a new instance from a 24-byte hexadecimal string representation.Xid(ByteBuffer buffer) Constructs a new instance from the given ByteBufferConstructs a new instance using the given date.Constructs a new instances using the given date and counter. -
Method Summary
Modifier and TypeMethodDescriptionstatic byte[]bytes()intbooleanstatic Xidget()Gets a new object id.getDate()Gets the timestamp as aDateinstance.static XidgetSmallestWithDate(Date date) Gets a new object id with the given date value and all other bits zeroed.intGets the timestamp (number of seconds since the Unix epoch).inthashCode()static voidstatic booleanChecks if a string could be anXid.voidputToByteBuffer(ByteBuffer buffer) Convert to bytes and put those bytes to the provided ByteBuffer.static Stringstring()byte[]Convert to a byte array.Converts this instance into a 20-byte hexadecimal string representation.toString()
-
Constructor Details
-
Xid
public Xid()Create a new object id. -
Xid
Constructs a new instance using the given date.- Parameters:
date- the date
-
Xid
Constructs a new instances using the given date and counter.- Parameters:
date- the datecounter- the counter- Throws:
IllegalArgumentException- if the high order byte of counter is not zero
-
Xid
public Xid(int timestamp, int counter) Creates an Xid using the given time, machine identifier, process identifier, and counter.- Parameters:
timestamp- the time in secondscounter- the counter- Throws:
IllegalArgumentException- if the high order byte of counter is not zero
-
Xid
Constructs a new instance from a 24-byte hexadecimal string representation.- Parameters:
hexString- the string to convert- Throws:
IllegalArgumentException- if the string is not a valid hex string representation of an Xid
-
Xid
public Xid(byte[] bytes) Constructs a new instance from the given byte array- Parameters:
bytes- the byte array- Throws:
IllegalArgumentException- if array is null or not of length 12
-
Xid
Constructs a new instance from the given ByteBuffer- Parameters:
buffer- the ByteBuffer- Throws:
IllegalArgumentException- if the buffer is null or does not have at least 12 bytes remaining
-
-
Method Details
-
get
Gets a new object id.- Returns:
- the new id
-
string
-
bytes
public static byte[] bytes() -
getSmallestWithDate
Gets a new object id with the given date value and all other bits zeroed.The returned object id will compare as less than or equal to any other object id within the same second as the given date, and less than any later date.
- Parameters:
date- the date- Returns:
- the Xid
-
toByteArray
public byte[] toByteArray()Convert to a byte array. Note that the numbers are stored in big-endian order.- Returns:
- the byte array
-
putToByteBuffer
Convert to bytes and put those bytes to the provided ByteBuffer. Note that the numbers are stored in big-endian order.- Parameters:
buffer- the ByteBuffer- Throws:
IllegalArgumentException- if the buffer is null or does not have at least 12 bytes remaining
-
getTimestamp
public int getTimestamp()Gets the timestamp (number of seconds since the Unix epoch).- Returns:
- the timestamp
-
getDate
Gets the timestamp as aDateinstance.- Returns:
- the Date
-
toHexString
Converts this instance into a 20-byte hexadecimal string representation.- Returns:
- a string representation of the Xid in hexadecimal format
-
equals
-
hashCode
public int hashCode() -
compareTo
- Specified by:
compareToin interfaceComparable<Xid>
-
toString
-
isValid
Checks if a string could be anXid.- Parameters:
hexString- a potential Xid as a String.- Returns:
- whether the string could be an object id
- Throws:
IllegalArgumentException- if hexString is null
-
isTrue
-