blob: 100800f857075623d4791ba87ffd415c0963d54e (
plain)
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
125
126
127
128
129
130
131
|
/*
Wotonomy: OpenStep design patterns for pure Java applications.
Copyright (C) 2000 Michael Powers
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, see http://www.gnu.org
*/
package net.wotonomy.datastore;
import java.io.Serializable;
import net.wotonomy.foundation.internal.ValueConverter;
/**
* Represents an abstract key for a piece of data
*
*/
public class DataKey implements Comparable<Object>, Serializable, Cloneable {
static final long serialVersionUID = 8421127539579065705L;
Long key;
public DataKey() {
key = 0L;
}
/**
* Converts string representation to new object.
*/
public DataKey(String aString) {
this();
setKeyString(aString);
}
@Override
public int hashCode() {
return key.intValue();
}
public void increment() {
key = Long.valueOf(key.longValue() + 1);
}
@Override
public Object clone() {
return new DataKey(this.toString());
}
@Override
public String toString() {
return key.toString();
}
public String getKeyString() {
return key.toString();
}
public void setKeyString(String aString) {
Long parsed = ValueConverter.getLong(aString);
if (parsed != null)
key = parsed;
}
@Override
public boolean equals(Object anObject) {
if (anObject instanceof String) {
if (toString().equals(anObject)) {
return true;
}
}
if (!(anObject instanceof DataKey))
return false;
return key.equals(((DataKey) anObject).key);
}
@Override
public int compareTo(Object anObject) {
if (anObject instanceof String) {
if (toString().equals(anObject)) {
return 0;
}
}
if (!(anObject instanceof DataKey)) {
Long converted = (Long) ValueConverter.getLong(anObject);
if (converted != null) {
return (int) (key.longValue() - converted.longValue());
}
return 0;
}
;
return (int) (key.longValue() - ((DataKey) anObject).key.longValue());
}
}
/*
* $Log$ Revision 1.2 2006/02/19 16:26:19 cgruber Move non-unit-test code to
* tests project Fix up code to work with proper imports Fix maven dependencies.
*
* Revision 1.1 2006/02/16 13:18:56 cgruber Check in all sources in
* eclipse-friendly maven-enabled packages.
*
* Revision 1.4 2003/08/14 19:29:38 chochos minor cleanup (imports, static
* method calls, etc)
*
* Revision 1.3 2001/02/23 23:44:44 mpowers Fixes for hashcode to ensure proper
* key comparison.
*
* Revision 1.2 2001/02/15 21:12:41 mpowers Added accessors for key throughout
* the api. This breaks compatibility. insertObject now returns the permanent
* key for the newly created object. The old way returned a copy of the object
* which was an additional read that was often ignored. Now you can read it only
* if you need it. Furthermore, there was not other way of getting the permanent
* key.
*
* Revision 1.1.1.1 2000/12/21 15:47:04 mpowers Contributing wotonomy.
*
* Revision 1.2 2000/12/20 16:25:36 michael Added log to all files.
*
*
*/
|