1 package cz.cuni.amis.pogamut.unreal.communication.messages;
2
3 import java.io.Serializable;
4 import java.util.HashMap;
5 import java.util.Map;
6
7 import cz.cuni.amis.pogamut.base.communication.worldview.object.WorldObjectId;
8 import cz.cuni.amis.utils.token.Token;
9 import cz.cuni.amis.utils.token.Tokens;
10
11
12
13
14
15
16
17
18
19 public class UnrealId extends WorldObjectId implements Serializable {
20
21
22
23
24 protected UnrealId() {
25 super("wrapper");
26 }
27
28 private UnrealId(String unrealStringId) {
29 super(unrealStringId);
30 }
31
32 private UnrealId(Token id) {
33 super(id);
34 }
35
36 private UnrealId(UnrealId id) {
37 super(id.token);
38 }
39
40 private static Map<String, UnrealId> map = new HashMap<String, UnrealId>();
41
42 public static final UnrealId NONE = UnrealId.get(Tokens.NONE_TOKEN.getToken());
43
44
45
46
47
48
49
50
51
52
53
54
55
56 public static UnrealId get(String unrealStringId) {
57 UnrealId id = null;
58 id = map.get(unrealStringId);
59 if (id != null) return id;
60 synchronized(map) {
61 id = map.get(unrealStringId);
62 if (id != null) return id;
63 id = new UnrealId(unrealStringId);
64 map.put(unrealStringId, id);
65 return id;
66 }
67 }
68
69
70 }