blob: f516ac9103a67f03b78dc64fe1da73ac4445e6a9 (
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
|
/*
@ITMillApache2LicenseForJavaFiles@
*/
package com.itmill.toolkit.terminal;
import java.util.Hashtable;
/**
* <code>KeyMapper</code> is the simple two-way map for generating textual
* keys for objects and retrieving the objects later with the key.
*
* @author IT Mill Ltd.
* @version
* @VERSION@
* @since 3.0
*/
public class KeyMapper {
private int lastKey = 0;
private final Hashtable objectKeyMap = new Hashtable();
private final Hashtable keyObjectMap = new Hashtable();
/**
* Gets key for an object.
*
* @param o
* the object.
*/
public String key(Object o) {
if (o == null) {
return "null";
}
// If the object is already mapped, use existing key
String key = (String) objectKeyMap.get(o);
if (key != null) {
return key;
}
// If the object is not yet mapped, map it
key = String.valueOf(++lastKey);
objectKeyMap.put(o, key);
keyObjectMap.put(key, o);
return key;
}
/**
* Retrieves object with the key.
*
* @param key
* the name with the desired value.
* @return the object with the key.
*/
public Object get(String key) {
return keyObjectMap.get(key);
}
/**
* Removes object from the mapper.
*
* @param removeobj
* the object to be removed.
*/
public void remove(Object removeobj) {
final String key = (String) objectKeyMap.get(removeobj);
if (key != null) {
objectKeyMap.remove(key);
keyObjectMap.remove(removeobj);
}
}
/**
* Removes all objects from the mapper.
*/
public void removeAll() {
objectKeyMap.clear();
keyObjectMap.clear();
}
}
|