1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 package org.archive.uid;
24
25 import java.net.URI;
26 import java.net.URISyntaxException;
27 import java.util.Map;
28 import java.util.UUID;
29
30 /***
31 * Generates <a href="http://en.wikipedia.org/wiki/UUID">UUID</a>s, using
32 * {@link java.util.UUID java.util.UUID}, formatted as URNs from the UUID
33 * namespace [See <a href="http://www.ietf.org/rfc/rfc4122.txt">RFC4122</a>].
34 * Here is an examples of the type of ID it makes:
35 * <code>urn:uuid:0161811f-5da6-4c6e-9808-a2fab97114cf</code>. Always makes a
36 * new identifier even when passed qualifiers.
37 *
38 * @author stack
39 * @version $Revision: 4607 $ $Date: 2006-09-07 20:23:51 +0000 (Thu, 07 Sep 2006) $
40 * @see <a href="http://ietf.org/rfc/rfc4122.txt">RFC4122</a>
41 */
42 class UUIDGenerator implements Generator {
43 private static final String SCHEME = "urn:uuid";
44 private static final String SCHEME_COLON = SCHEME + ":";
45
46 UUIDGenerator() {
47 super();
48 }
49
50 public synchronized URI qualifyRecordID(URI recordId,
51 final Map<String, String> qualifiers)
52 throws URISyntaxException {
53 return getRecordID();
54 }
55
56 private String getUUID() {
57 return UUID.randomUUID().toString();
58 }
59
60 public URI getRecordID() throws URISyntaxException {
61 return new URI(SCHEME_COLON + getUUID());
62 }
63
64 public URI getQualifiedRecordID(
65 final String key, final String value)
66 throws URISyntaxException {
67 return getRecordID();
68 }
69
70 public URI getQualifiedRecordID(Map<String, String> qualifiers)
71 throws URISyntaxException {
72 return getRecordID();
73 }
74 }