1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
|
/*******************************************************************************
* Copyright (c) 2004 Composent, Inc. and others. All rights reserved. This
* program and the accompanying materials are made available under the terms of
* the Eclipse Public License v1.0 which accompanies this distribution, and is
* available at http://www.eclipse.org/legal/epl-v10.html
*
* Contributors: Composent, Inc. - initial API and implementation
******************************************************************************/
package org.eclipse.ecf.core.identity;
import java.net.URI;
import java.net.URISyntaxException;
/**
* A string-based identity
*
* @author Scott B. Lewis, slewis@composent.com
*/
public class StringID extends BaseID {
private static final long serialVersionUID = 3256437019155446068L;
public static class StringIDNamespace extends Namespace {
private static final long serialVersionUID = 7924280015192029963L;
public StringIDNamespace(String name, String desc) {
super(name, desc);
}
public StringIDNamespace() {
super(StringID.class.getName(), "String Namespace");
}
public ID makeInstance(Class[] argTypes, Object[] args)
throws IDInstantiationException {
return new StringID(this, (String) args[0]);
}
public String getScheme() {
return StringID.class.getName();
}
}
protected String value;
/**
* Protected constructor for factory-based construction
*
* @param n
* the Namespace this identity will belong to
* @param s
* the String defining this StringID
*/
protected StringID(Namespace n, String s) {
super(n);
value = s;
setEmptyNamespace();
}
public int compareTo(Object o) {
setEmptyNamespace();
return super.compareTo(o);
}
public boolean equals(Object o) {
setEmptyNamespace();
return super.equals(o);
}
public String getName() {
setEmptyNamespace();
return super.getName();
}
public int hashCode() {
setEmptyNamespace();
return super.hashCode();
}
public Namespace getNamespace() {
setEmptyNamespace();
return namespace;
}
public String toString() {
setEmptyNamespace();
int strlen = value.length();
StringBuffer sb = new StringBuffer(strlen + 10);
sb.insert(0, "StringID[").insert(9, value).insert(strlen + 9, ']');
return sb.toString();
}
public URI toURI() throws URISyntaxException {
setEmptyNamespace();
return super.toURI();
}
protected int namespaceCompareTo(BaseID obj) {
return getName().compareTo(obj.getName());
}
protected boolean namespaceEquals(BaseID obj) {
if (!(obj instanceof StringID))
return false;
StringID o = (StringID) obj;
return value.equals(o.getName());
}
protected String namespaceGetName() {
return value;
}
protected int namespaceHashCode() {
return value.hashCode() ^ getClass().hashCode();
}
protected URI namespaceToURI() throws URISyntaxException {
return new URI(getName());
}
protected synchronized void setEmptyNamespace() {
if (namespace == null) {
namespace = IDFactory.getDefault().getNamespaceByName(
StringID.class.getName());
}
}
}
|