Mega Code Archive

 
Categories / Java / Development Class
 

UUID generation

//Revised from act.soap.util; import java.util.*; import java.security.SecureRandom; public class UUID {     private int    d1;     private short  d2;     private short  d3;     private byte[] d4;     public static final UUID nil = new UUID(0, (short) 0, (short) 0, new byte[] {  0, 0, 0, 0, 0, 0, 0, 0 } );     static Random random = new Random();     public static UUID generate() {         int d1 = random.nextInt() % 65536;         d1 += random.nextInt() % 65535 * 65535;         int d2 = random.nextInt();         int d3 = random.nextInt();         byte[] d4 = new byte[8];         for (int i = 0; i < 4; i++) {             int t = random.nextInt();             d4[i * 2] = (byte) (t % 256);             d4[i * 2 + 1] = (byte) (t / 256 % 256);         }         return new UUID(d1, (short) (d2 % 65536), (short) (d3 % 65536), d4);     }     public UUID() {         d1 = 0;         d2 = 0;         d3 = 0;         d4 = new byte[] { 0, 0, 0, 0, 0, 0, 0, 0 };     }     public UUID(int d1, short d2, short d3, byte[] d4) {         this.d1 = d1;         this.d2 = d2;         this.d3 = d3;         this.d4 = new byte[8];         for (int i = 0; i < 8; i++)             this.d4[i] = d4[i];     }     public String toString() {         String temp1, temp2, temp3, temp4, temp;         temp1 = Integer.toHexString(d1);         while (temp1.length() < 8)             temp1 = new String("0") + temp1;         if (d2 < 0)             temp2 = Integer.toHexString(d2 + 65536);         else             temp2 = Integer.toHexString(d2);         while (temp2.length() < 4)             temp2 = new String("0") + temp2;         if (d3 < 0)             temp3 = Integer.toHexString(d3 + 65536);         else             temp3 = Integer.toHexString(d3);         while (temp3.length() < 4)             temp3 = new String("0") + temp3;         temp = temp1 + "-" + temp2 + "-" + temp3 + "-";         for (int i = 0; i < d4.length; i++) {             if (d4[i] < 0)                 temp4 = Integer.toHexString(d4[i] + 256);             else                 temp4 = Integer.toHexString(d4[i]);             while (temp4.length() < 2)                 temp4 = new String("0") + temp4;             temp += temp4;         }         return temp;     }         public static void main( String[] args ) {         for( int i = 0 ; i< 100 ; i++ ) {             System.out.println( UUID.generate().toString() );         }     } }