001: /*
002: * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
003: *
004: * Redistribution and use in source and binary forms, with or without
005: * modification, are permitted provided that the following conditions
006: * are met:
007: *
008: * - Redistributions of source code must retain the above copyright
009: * notice, this list of conditions and the following disclaimer.getc
010: *
011: * - Redistribution in binary form must reproduce the above copyright
012: * notice, this list of conditions and the following disclaimer in
013: * the documentation and/or other materials provided with the
014: * distribution.
015: *
016: * Neither the name of Sun Microsystems, Inc. or the names of
017: * contributors may be used to endorse or promote products derived
018: * from this software without specific prior written permission.
019: *
020: * This software is provided "AS IS," without a warranty of any
021: * kind. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND
022: * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY,
023: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY
024: * EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES
025: * SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
026: * DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN
027: * OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR
028: * FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR
029: * PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF
030: * LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE SOFTWARE,
031: * EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
032: *
033: * You acknowledge that Software is not designed, licensed or intended
034: * any nuclear facility.
035: */
036:
037: package com.sun.portal.community;
038:
039: import java.util.StringTokenizer;
040:
041: /**
042: * Unqiuely identifies a community.
043: */
044: public class CommunityId {
045: // TODO: use same constant as in CMC?
046: private static final String SEPARATOR = "__"; // double underscore
047:
048: private String type;
049: private String name;
050:
051: public CommunityId(String idString) {
052: if (idString == null) {
053: throw new NullPointerException(
054: "null ID string is not allowed");
055: }
056:
057: StringTokenizer st = new StringTokenizer(idString, SEPARATOR);
058: if (!st.hasMoreTokens()) {
059: throw new IllegalArgumentException(
060: "ID string is not valid format: " + idString);
061: }
062: type = st.nextToken();
063:
064: if (!st.hasMoreTokens()) {
065: throw new IllegalArgumentException(
066: "ID string is not valid format: " + idString);
067: }
068: name = st.nextToken();
069: }
070:
071: public CommunityId(String type, String name) {
072: if (type == null) {
073: throw new NullPointerException("null type is not allowed");
074: }
075: if (name == null) {
076: throw new NullPointerException("null name is not allowed");
077: }
078:
079: this .type = type;
080: this .name = name;
081: }
082:
083: public String getType() {
084: return type;
085: }
086:
087: public String getName() {
088: return name;
089: }
090:
091: public int hashCode() {
092: return toString().hashCode();
093: }
094:
095: public boolean equals(Object o) {
096: if (o == null) {
097: return false;
098: }
099: if (!(o instanceof CommunityId)) {
100: return false;
101: }
102:
103: CommunityId other = (CommunityId) o;
104:
105: if (getName().equals(other.getName())
106: && getType().equals(other.getType())) {
107: return true;
108: }
109:
110: return false;
111: }
112:
113: public String toString() {
114: return getType() + SEPARATOR + getName();
115: }
116: }
|