org.opencms.util
Class CmsUUID

java.lang.Object
  extended byorg.opencms.util.CmsUUID
All Implemented Interfaces:
Cloneable, Comparable, Serializable

public final class CmsUUID
extends Object
implements Serializable, Cloneable, Comparable

Generates a UUID using spatial and temporal uniqueness.

Spatial uniqueness is derived from ethernet address (MAC, 802.1); temporal from system clock.

For more information about the algorith used, please see draft-leach-uuids-guids-01.txt.

Because Java is unable to read the MAC address of the machine (without using JNI), the MAC address has to be provided first by using the static init(String) method.

This class is just a facade wrapper for the "real" UUID implementation.

Since:
6.0.0
Version:
$Revision: 1.17 $
Author:
Alexander Kandzior
See Also:
Serialized Form

Constructor Summary
CmsUUID()
          Creates a new UUID.
CmsUUID(byte[] data)
          Create a UUID based on a binary data array.
CmsUUID(String uuid)
          Create a UUID based on a String.
 
Method Summary
static void checkId(CmsUUID id, boolean canBeNull)
          Check that the given id is not the null id.
 Object clone()
          Creates a clone of this CmsUUID.
 int compareTo(Object obj)
           
 boolean equals(Object obj)
           
static CmsUUID getConstantUUID(String name)
          Returns a constant (name based) UUID, based on the given name in the OpenCms name space.
static String getDummyEthernetAddress()
          Returns a String representing a dummy (random based) ethernet address.
static CmsUUID getNullUUID()
          Returns a null UUID, use this null UUID to check if a UUID has been initilized or not.
static CmsUUID getOpenCmsUUID()
          Returns a constant (name based) UUID for OpenCms, based on "www.opencms.org" in the dns name space.
 int hashCode()
          Optimized hashCode implementation for UUID's.
static void init(String ethernetAddress)
          Initialize the UUID generator with the ethernet address of the server machine.
 boolean isNullUUID()
          Returns true if this UUID is equal to the null UUID.
 byte[] toByteArray()
          Returns the UUID as a 16-byte byte array.
 String toString()
           
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

CmsUUID

public CmsUUID()
Creates a new UUID.

Please note that the static init() method has to be called first to initialize the enternet address of the machine.


CmsUUID

public CmsUUID(byte[] data)
Create a UUID based on a binary data array.

Parameters:
data - a binary data array representing a UUID

CmsUUID

public CmsUUID(String uuid)
        throws NumberFormatException
Create a UUID based on a String.

Parameters:
uuid - a String representing a UUID
Throws:
NumberFormatException - in case uuid is not a valid UUID
Method Detail

checkId

public static void checkId(CmsUUID id,
                           boolean canBeNull)
Check that the given id is not the null id.

Parameters:
id - the id to check
canBeNull - only if flag is set, null is accepted
See Also:
isNullUUID()

getConstantUUID

public static CmsUUID getConstantUUID(String name)
Returns a constant (name based) UUID, based on the given name in the OpenCms name space.

Parameters:
name - the name to derive the uuid from
Returns:
name based UUID of the given name

getDummyEthernetAddress

public static String getDummyEthernetAddress()
Returns a String representing a dummy (random based) ethernet address.

Returns:
a String representing a dummy (random based) ethernet address

getNullUUID

public static CmsUUID getNullUUID()
Returns a null UUID, use this null UUID to check if a UUID has been initilized or not.

Returns:
a null UUID

getOpenCmsUUID

public static CmsUUID getOpenCmsUUID()
Returns a constant (name based) UUID for OpenCms, based on "www.opencms.org" in the dns name space.

Returns:
name based UUID of OpenCms

init

public static void init(String ethernetAddress)
                 throws CmsInitException
Initialize the UUID generator with the ethernet address of the server machine.

The ethernetAddress parameter must represent a 'standard' ethernet MAC address string (e.g. '00:C0:F0:3D:5B:7C').

Parameters:
ethernetAddress - the ethernet address of the server machine
Throws:
CmsInitException - in case the ethernetAddress String is not a valid ethernet address

clone

public Object clone()
Creates a clone of this CmsUUID.

Returns:
a clone of this CmsUUID

compareTo

public int compareTo(Object obj)
Specified by:
compareTo in interface Comparable
See Also:
Comparable.compareTo(java.lang.Object)

equals

public boolean equals(Object obj)
See Also:
Object.equals(java.lang.Object)

hashCode

public int hashCode()
Optimized hashCode implementation for UUID's.

See Also:
Object.hashCode()

isNullUUID

public boolean isNullUUID()
Returns true if this UUID is equal to the null UUID.

Returns:
true if this UUID is equal to the null UUID

toByteArray

public byte[] toByteArray()
Returns the UUID as a 16-byte byte array.

Returns:
16-byte byte array that contains the UUID's bytes in the network byte order

toString

public String toString()
See Also:
Object.toString()