1 /*
2 * Copyright (c) 2003-2008, by Henrik Arro and Contributors
3 *
4 * This file is part of JSeq, a tool to automatically create
5 * sequence diagrams by tracing program execution.
6 *
7 * See <http://jseq.sourceforge.net> for more information.
8 *
9 * JSeq is free software: you can redistribute it and/or modify
10 * it under the terms of the GNU Lesser General Public License as
11 * published by the Free Software Foundation, either version 3 of
12 * the License, or (at your option) any later version.
13 *
14 * JSeq is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU Lesser General Public License for more details.
18 *
19 * You should have received a copy of the GNU Lesser General Public License
20 * along with JSeq. If not, see <http://www.gnu.org/licenses/>.
21 */
22
23 package th.co.edge.jseq.argouml;
24
25 import java.net.InetAddress;
26 import java.net.UnknownHostException;
27 import java.rmi.server.UID;
28
29 /**
30 * A <code>UUID</code> is a utility class that is used to generate "globally"
31 * unique identifiers.
32 *
33 * <p>
34 * The algorithm uses the IP address of the machine running the code as part of
35 * the identifier, so an external address needs to be available to make the
36 * numbers really unique.
37 */
38 public class UUID {
39 private static String address = "";
40
41 /**
42 * Since this is a utility class containing only static methods, we hide the
43 * only constructor.
44 */
45 private UUID() {
46 }
47
48 static {
49 try {
50 InetAddress inetAddress = InetAddress.getLocalHost();
51 byte[] bytes = inetAddress.getAddress();
52 StringBuffer sb = new StringBuffer();
53 for (int i = 0; i < bytes.length; i++) {
54 Byte b = new Byte(bytes[i]);
55 sb.append(b.longValue() + "-");
56 }
57 address = sb.toString();
58 } catch (UnknownHostException e) {
59 System.err.println(e);
60 }
61 }
62
63 /**
64 * Returns a globally unique identifier.
65 *
66 * @return a globally unique identifier
67 */
68 public static String getID() {
69 UID uid = new UID();
70 return address + uid;
71 }
72 }