the real moins moins | Reprise du message précédent :
Code :
- /**
- * <p>A 32 byte GUID generator (Globally Unique ID).
- * These artificial keys SHOULD <strong>NOT </strong> be seen by the user,
- * not even touched by the DBA but with very rare exceptions,
- * just manipulated by the database and the programs.</p>
- *
- * <p>Usage: pass an object reference to the generate method,
- * somehow relative to the object to which you want to generator a guid for.
- * This is to ensure more "randomness". (as long as you pass a different
- * object for each call it should have a correct behaviour)</p>
- *
- * <p><strong>This was copied from *Util class generated by XDoclet.</strong></p>
- *
- */
- public class Guid {
- /** Cached per JVM server IP. */
- private static String hexServerIP = null;
- // initialise the secure random instance
- private static final SecureRandom seeder = new SecureRandom();
- /**
- * Generates a GUID.
- *
- * @throws IllegalStateException if it can not get the local ip address of the machine.
- */
- public static final String generate(Object o) throws IllegalStateException {
- StringBuffer tmpBuffer = new StringBuffer(16);
- if (hexServerIP == null) {
- InetAddress localInetAddress = null;
- try {
- // get the inet address
- localInetAddress = InetAddress.getLocalHost();
- } catch (UnknownHostException uhe) {
- throw new IllegalStateException("Guid: Could not get the local IP address using InetAddress.getLocalHost()!" );
- }
- byte serverIP[] = localInetAddress.getAddress();
- hexServerIP = hexFormat(getInt(serverIP), 8);
- }
- String hashcode = hexFormat(System.identityHashCode(o), 8);
- tmpBuffer.append(hexServerIP);
- tmpBuffer.append(hashcode);
- long timeNow = System.currentTimeMillis();
- int timeLow = (int) timeNow & 0xFFFFFFFF;
- int node = seeder.nextInt();
- StringBuffer guid = new StringBuffer(32);
- guid.append(hexFormat(timeLow, 8));
- guid.append(tmpBuffer.toString());
- guid.append(hexFormat(node, 8));
- return guid.toString();
- }
- private static int getInt(byte bytes[]) {
- int i = 0;
- int j = 24;
- for (int k = 0; j >= 0; k++) {
- int l = bytes[k] & 0xff;
- i += l << j;
- j -= 8;
- }
- return i;
- }
- private static String hexFormat(int i, int j) {
- String s = Integer.toHexString(i);
- return padHex(s, j) + s;
- }
- private static String padHex(String s, int i) {
- StringBuffer tmpBuffer = new StringBuffer();
- if (s.length() < i) {
- for (int j = 0; j < i - s.length(); j++) {
- tmpBuffer.append('0');
- }
- }
- return tmpBuffer.toString();
- }
- }
|
---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
|