Your own UUID 2 : UUID GUID « Development Class « Java

Home
Java
1.2D Graphics GUI
2.3D
3.Advanced Graphics
4.Ant
5.Apache Common
6.Chart
7.Class
8.Collections Data Structure
9.Data Type
10.Database SQL JDBC
11.Design Pattern
12.Development Class
13.EJB3
14.Email
15.Event
16.File Input Output
17.Game
18.Generics
19.GWT
20.Hibernate
21.I18N
22.J2EE
23.J2ME
24.JavaFX
25.JDK 6
26.JDK 7
27.JNDI LDAP
28.JPA
29.JSP
30.JSTL
31.Language Basics
32.Network Protocol
33.PDF RTF
34.Reflection
35.Regular Expressions
36.Scripting
37.Security
38.Servlets
39.Spring
40.Swing Components
41.Swing JFC
42.SWT JFace Eclipse
43.Threads
44.Tiny Application
45.Velocity
46.Web Services SOA
47.XML
Java » Development Class » UUID GUID 




Your own UUID 2
     

//package jatools.util;

import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.Serializable;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;


/**
 * DOCUMENT ME!
 *
 @author $author$
 @version $Revision: 1.1 $
  */
public final class UUID implements Serializable, Comparable {
    private static final long serialVersionUID = 0xbc9903f7986d852fL;
    private static volatile SecureRandom numberGenerator = null;
    private final long mostSigBits;
    private final long leastSigBits;
    private transient int version;
    private transient int variant;
    private volatile transient long timestamp;
    private transient int sequence;
    private transient long node;
    private transient int hashCode;

    private UUID(byte[] abyte0) {
        version = -1;
        variant = -1;
        timestamp = -1L;
        sequence = -1;
        node = -1L;
        hashCode = -1;

        long l = 0L;
        long l1 = 0L;

        for (int i = 0; i < 8; i++)
            l = (l << 8(long) (abyte0[i0xff);

        for (int j = 8; j < 16; j++)
            l1 = (l1 << 8(long) (abyte0[j0xff);

        mostSigBits = l;
        leastSigBits = l1;
    }

    /**
     * Creates a new UUID object.
     *
     @param l DOCUMENT ME!
     @param l1 DOCUMENT ME!
     */
    public UUID(long l, long l1) {
        version = -1;
        variant = -1;
        timestamp = -1L;
        sequence = -1;
        node = -1L;
        hashCode = -1;
        mostSigBits = l;
        leastSigBits = l1;
    }

    /**
     * DOCUMENT ME!
     *
     @return DOCUMENT ME!
     */
    public static UUID randomUUID() {
        SecureRandom securerandom = numberGenerator;

        if (securerandom == null) {
            numberGenerator = securerandom = new SecureRandom();
        }

        byte[] abyte0 = new byte[16];
        securerandom.nextBytes(abyte0);
        abyte0[6&= 0xf;
        abyte0[6|= 0x40;
        abyte0[8&= 0x3f;
        abyte0[8|= 0x80;

        UUID uuid = new UUID(abyte0);

        return new UUID(abyte0);
    }
    
    public static String newInstance()
    {
      return randomUUID().toString() ;
    }

    /**
     * DOCUMENT ME!
     *
     @param abyte0 DOCUMENT ME!
     *
     @return DOCUMENT ME!
     */
    public static UUID nameUUIDFromBytes(byte[] abyte0) {
        MessageDigest messagedigest;

        try {
            messagedigest = MessageDigest.getInstance("MD5");
        catch (NoSuchAlgorithmException nosuchalgorithmexception) {
            throw new InternalError("MD5 not supported");
        }

        byte[] abyte1 = messagedigest.digest(abyte0);
        abyte1[6&= 0xf;
        abyte1[6|= 0x30;
        abyte1[8&= 0x3f;
        abyte1[8|= 0x80;

        return new UUID(abyte1);
    }

    /**
     * DOCUMENT ME!
     *
     @param s DOCUMENT ME!
     *
     @return DOCUMENT ME!
     */
    public static UUID fromString(String s) {
        String[] as = s.split("-");

        if (as.length != 5) {
            throw new IllegalArgumentException((new StringBuffer()).append("Invalid UUID string: ")
                                                .append(s).toString());
        }

        for (int i = 0; i < 5; i++)
            as[i(new StringBuffer()).append("0x").append(as[i]).toString();

        long l = Long.decode(as[0]).longValue();
        l <<= 16;
        l |= Long.decode(as[1]).longValue();
        l <<= 16;
        l |= Long.decode(as[2]).longValue();

        long l1 = Long.decode(as[3]).longValue();
        l1 <<= 48;
        l1 |= Long.decode(as[4]).longValue();

        return new UUID(l, l1);
    }

    /**
     * DOCUMENT ME!
     *
     @return DOCUMENT ME!
     */
    public long getLeastSignificantBits() {
        return leastSigBits;
    }

    /**
     * DOCUMENT ME!
     *
     @return DOCUMENT ME!
     */
    public long getMostSignificantBits() {
        return mostSigBits;
    }

    /**
     * DOCUMENT ME!
     *
     @return DOCUMENT ME!
     */
    public int version() {
        if (version < 0) {
            version = (int) ((mostSigBits >> 1215L);
        }

        return version;
    }

    /**
     * DOCUMENT ME!
     *
     @return DOCUMENT ME!
     */
    public int variant() {
        if (variant < 0) {
            if (leastSigBits >>> 63 == 0L) {
                variant = 0;
            else if (leastSigBits >>> 62 == 2L) {
                variant = 2;
            else {
                variant = (int) (leastSigBits >>> 61);
            }
        }

        return variant;
    }

    /**
     * DOCUMENT ME!
     *
     @return DOCUMENT ME!
     */
    public long timestamp() {
        if (version() != 1) {
            throw new UnsupportedOperationException("Not a time-based UUID");
        }

        long l = timestamp;

        if (l < 0L) {
            l = (mostSigBits & 4095L<< 48;
            l |= (((mostSigBits >> 1665535L<< 32);
            l |= mostSigBits >>> 32;
            timestamp = l;
        }

        return l;
    }

    /**
     * DOCUMENT ME!
     *
     @return DOCUMENT ME!
     */
    public int clockSequence() {
        if (version() != 1) {
            throw new UnsupportedOperationException("Not a time-based UUID");
        }

        if (sequence < 0) {
            sequence = (int) ((leastSigBits & 0x3fff000000000000L>>> 48);
        }

        return sequence;
    }

    /**
     * DOCUMENT ME!
     *
     @return DOCUMENT ME!
     */
    public long node() {
        if (version() != 1) {
            throw new UnsupportedOperationException("Not a time-based UUID");
        }

        if (node < 0L) {
            node = leastSigBits & 0xffffffffffffL;
        }

        return node;
    }

    /**
     * DOCUMENT ME!
     *
     @return DOCUMENT ME!
     */
    public String toString() {
        return (new StringBuffer()).append(digits(mostSigBits >> 328)).append("-")
                .append(digits(mostSigBits >> 164)).append("-").append(digits(mostSigBits, 4))
                .append("-").append(digits(leastSigBits >> 484)).append("-")
                .append(digits(leastSigBits, 12)).toString();
    }

    private static String digits(long l, int i) {
        long l1 = 1L << (i * 4);

        return Long.toHexString(l1 | (l & (l1 - 1L))).substring(1);
    }

    /**
     * DOCUMENT ME!
     *
     @return DOCUMENT ME!
     */
    public int hashCode() {
        if (hashCode == -1) {
            hashCode = (int) ((mostSigBits >> 32^ mostSigBits ^ (leastSigBits >> 32^
                leastSigBits);
        }

        return hashCode;
    }

    /**
     * DOCUMENT ME!
     *
     @param obj DOCUMENT ME!
     *
     @return DOCUMENT ME!
     */
    public boolean equals(Object obj) {
        if (!(obj instanceof UUID)) {
            return false;
        }

        if (((UUIDobj).variant() != variant()) {
            return false;
        else {
            UUID uuid = (UUIDobj;

            return (mostSigBits == uuid.mostSigBits&& (leastSigBits == uuid.leastSigBits);
        }
    }

    /**
     * DOCUMENT ME!
     *
     @param uuid DOCUMENT ME!
     *
     @return DOCUMENT ME!
     */
    public int compareTo(UUID uuid) {
        return (mostSigBits >= uuid.mostSigBits)
        ((mostSigBits <= uuid.mostSigBits)
        ((leastSigBits >= uuid.leastSigBits)
        ((byte) (((byte) ((leastSigBits <= uuid.leastSigBits1)))) (-1)) 1(-1);
    }

    private void readObject(ObjectInputStream objectinputstream)
        throws IOException, ClassNotFoundException {
        objectinputstream.defaultReadObject();
        version = -1;
        variant = -1;
        timestamp = -1L;
        sequence = -1;
        node = -1L;
        hashCode = -1;
    }

    /**
     * DOCUMENT ME!
     *
     @param obj DOCUMENT ME!
     *
     @return DOCUMENT ME!
     */
    public int compareTo(Object obj) {
        return compareTo((UUIDobj);
    }

    /**
     * DOCUMENT ME!
     *
     @param args DOCUMENT ME!
     */
    public static void main(String[] args) {
        System.out.println(randomUUID());
    }
}

   
    
    
    
    
  














Related examples in the same category
1.Random GUID
2.Algorithm for generating Random GUID
3.Get a unique identifier Using java.rmi.dgc.VMID
4.Using java.util.UUID
5.Create your own basic UUID
6.Session ID generator
7.UUID generator from Sun Microsystems
8.UUID generator from http://www1.ics.uci.edu
9.Using java.util.concurrent.AtomicLong: A numerical id, start at zero and increment by one.
10.A 32 byte GUID generator
11.A unique identifier
12.Generate pseudo-GUID sequences
13.Generates a UUID
14.Generates random UUIDs
15.Generator for Globally unique Strings
16.ID generator
17.Simple Id Generator
18.UUID generation
19.UUID generator of 32 bytes long values
20.Simple Long Id Generator
21.Long Sequence Generator
22.UUID generator
23.Thread-safe version of the Axiom UUIDGenerator
24.Convert an array of bytes into a List of Strings using UTF-8.
25.Your own UUID
26.Create GUIDs according to the principles at http://www.opengroup.org/dce/info/draft-leach-uuids-guids-01.txt.
27.Get Unique Id
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.