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() );
}
}
}
Related examples in the same category