Code Search for Developers
 
 
  

GUID.java from PeerWriter at Krugle


Show GUID.java syntax highlighted

package fr.loria.ecoo.util;

import java.net.InetAddress;

public class GUID {
	private static String hexServerIP = null;

	private static final java.security.SecureRandom seeder = new java.security.SecureRandom();

	public static void main(String[] args) {
		System.out.println(GUID.generateGUID(new String("tagada")));
	}

	/**
	 * A 32 byte GUID generator (Globally Unique ID).
	 */
	public static final String generateGUID(Object o) {
		StringBuffer tmpBuffer = new StringBuffer(16);
		if (hexServerIP == null) {
			InetAddress localInetAddress = null;
			byte serverIP[] = new byte[] { 127, 0, 0, 1 };
			try {
				// get the inet address
				localInetAddress = InetAddress.getLocalHost();
				serverIP = localInetAddress.getAddress();
			} catch (java.net.UnknownHostException uhe) {
				// 
			}
			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();
	}

}



See more files for this project here

PeerWriter

PeerWriter is a collaborative text editor. Multiple peers can edit the same document while they see overall changes in real-time. PeerWriter is based on a decentralized infrastructure, using a non-locking concurrency protocol ensuring global consistency.

Project homepage: http://sourceforge.net/projects/peerwriter
Programming language(s): Java,XML
License: gpl2

  log/
    Logger.java
    PrintLogger.java
  FileUtil.java
  GUID.java
  NetUtil.java
  ObjectCloner.java