package org.doomdark.uuid; import java.util.Calendar; /* JUG Java Uuid Generator * * Copyright (c) 2002 Tatu Saloranta, tatu.saloranta@iki.fi * * You can redistribute this work and/or modify it under the terms of * LGPL (Lesser General Public License), as published by * Free Software Foundation (http://www.fsf.org). No warranty is * implied. See LICENSE for details about licensing. */ /** * A class that allows creation of tagURI instances. * * TagURIs are specified in IETF draft <draft-kindberg-tag-uri-01.txt>; * available for example at: * * http://sunsite.cnlab-switch.ch/ftp/mirror/internet-drafts/draft-kindberg-tag-uri-01.txt */ public class TagURI { private final String mDesc; /** * Constructor for creating tagURI instances. * * Typical string representations of tagURIs may look like: * <ul> * <li>tag:hp1.hp.com,2001:tst.1234567890 * <li>tag:fred@flintstone.biz,2001-07-02:rock.123 * </ul> * (see tagURI draft for more examples and full explanation of the * basic concepts) * * @param authority Authority that created tag URI; usually either a * fully-qualified domain name ("www.w3c.org") or an email address * ("tatu.saloranta@iki.fi"). * @param identifier A locally unique identifier; often file path or * URL path component (like, "tst.1234567890", "/home/tatu/index.html") * @param date Date to add as part of the tag URI, if any; null is used * used to indicate that no datestamp should be added. * */ public TagURI(String authority, String identifier, Calendar date) { StringBuffer b = new StringBuffer(); b.append("tag:"); b.append(authority); if (date != null) { b.append(','); b.append(date.get(Calendar.YEAR)); // Month is optional if it's "january" and day is "1st": int month = date.get(Calendar.MONTH) - Calendar.JANUARY + 1; int day = date.get(Calendar.DAY_OF_MONTH); if (month != 1 || day != 1) { b.append('-'); b.append(month); } if (day != 1) { b.append('-'); b.append(day); } } b.append(':'); b.append(identifier); mDesc = b.toString(); } public String toString() { return mDesc; } public boolean equals(Object o) { if (o instanceof TagURI) { return mDesc.equals(((TagURI) o).toString()); } return false; } /** * A simple test harness is added to make (automated) testing of the * class easier. */ public static void main(String[] args) { System.out.println("TagURI.main()"); System.out.println("--------------------"); System.out.println(); String[] auths = { "www.w3c.org", "www.google.com", "www.fi", "tatu.saloranta@iki.fi" }; String[] ids = { "1234", "/home/billg/public_html/index.html", "6ba7b810-9dad-11d1-80b4-00c04fd430c8", "foobar" }; Calendar c = null; String auth = null; for (int i = 0; i < 4; ++i) { // Let's just change the date & URL a bit: switch (i) { case 2: c.add(Calendar.MONTH, 1); break; case 3: c.add(Calendar.DAY_OF_MONTH, -7); break; } for (int j = 0; j < 4; ++j) { TagURI t = new TagURI(auths[i], ids[j], c); System.out.println("tagURI: "+t); } if (c == null) { c = Calendar.getInstance(); } } } }