01: /* $Id: UUIDGenerator.java 4607 2006-09-07 20:23:51Z stack-sf $
02: *
03: * Created on July 27th, 2006
04: *
05: * Copyright (C) 2006 Internet Archive.
06: *
07: * This file is part of the Heritrix web crawler (crawler.archive.org).
08: *
09: * Heritrix is free software; you can redistribute it and/or modify
10: * it under the terms of the GNU Lesser Public License as published by
11: * the Free Software Foundation; either version 2.1 of the License, or
12: * any later version.
13: *
14: * Heritrix 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 Public License for more details.
18: *
19: * You should have received a copy of the GNU Lesser Public License
20: * along with Heritrix; if not, write to the Free Software
21: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
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(final String key, final String value)
65: throws URISyntaxException {
66: return getRecordID();
67: }
68:
69: public URI getQualifiedRecordID(Map<String, String> qualifiers)
70: throws URISyntaxException {
71: return getRecordID();
72: }
73: }
|