Statistics
| Branch: | Tag: | Revision:

root / src / gr / grnet / pithos / web / client / catalog / UserCatalogs.java @ dc8cc18a

History | View | Annotate | Download (1.9 kB)

1 cc0120ab Christos KK Loverdos
package gr.grnet.pithos.web.client.catalog;
2 cc0120ab Christos KK Loverdos
3 cc0120ab Christos KK Loverdos
import gr.grnet.pithos.web.client.Helpers;
4 cc0120ab Christos KK Loverdos
5 cc0120ab Christos KK Loverdos
import java.util.HashMap;
6 cc0120ab Christos KK Loverdos
import java.util.Iterator;
7 cc0120ab Christos KK Loverdos
import java.util.Map;
8 cc0120ab Christos KK Loverdos
9 cc0120ab Christos KK Loverdos
/**
10 cc0120ab Christos KK Loverdos
 * Holds one-to-one mappings from user IDs to respective user display names.
11 cc0120ab Christos KK Loverdos
 *
12 cc0120ab Christos KK Loverdos
 * The iterator returns map entries with id as the key and name as the value.
13 cc0120ab Christos KK Loverdos
 */
14 cc0120ab Christos KK Loverdos
public class UserCatalogs implements Iterable<Map.Entry<String, String>>{
15 cc0120ab Christos KK Loverdos
    private HashMap<String, String> id2name = new HashMap<String, String>();
16 cc0120ab Christos KK Loverdos
    private HashMap<String, String> name2id = new HashMap<String, String>();
17 cc0120ab Christos KK Loverdos
18 cc0120ab Christos KK Loverdos
    public UserCatalogs() {
19 cc0120ab Christos KK Loverdos
        this(new HashMap<String, String>(), new HashMap<String, String>());
20 cc0120ab Christos KK Loverdos
    }
21 cc0120ab Christos KK Loverdos
22 cc0120ab Christos KK Loverdos
    private UserCatalogs(HashMap<String, String> id2name, HashMap<String, String> name2id) {
23 cc0120ab Christos KK Loverdos
        this.id2name = id2name;
24 cc0120ab Christos KK Loverdos
        this.name2id = name2id;
25 cc0120ab Christos KK Loverdos
    }
26 cc0120ab Christos KK Loverdos
27 cc0120ab Christos KK Loverdos
    public UserCatalogs updateWithIDAndName(String id, String name) {
28 cc0120ab Christos KK Loverdos
        this.id2name.put(id, name);
29 cc0120ab Christos KK Loverdos
        this.name2id.put(name, id);
30 cc0120ab Christos KK Loverdos
31 cc0120ab Christos KK Loverdos
        return this;
32 cc0120ab Christos KK Loverdos
    }
33 cc0120ab Christos KK Loverdos
34 cc0120ab Christos KK Loverdos
    public UserCatalogs updateFrom(UserCatalogs other) {
35 cc0120ab Christos KK Loverdos
        for(Map.Entry<String, String> otherIDAndName : other) {
36 cc0120ab Christos KK Loverdos
            this.updateWithIDAndName(otherIDAndName.getKey(), otherIDAndName.getValue());
37 cc0120ab Christos KK Loverdos
        }
38 cc0120ab Christos KK Loverdos
        return this;
39 cc0120ab Christos KK Loverdos
    }
40 cc0120ab Christos KK Loverdos
41 cc0120ab Christos KK Loverdos
    public UserCatalogs copy() {
42 cc0120ab Christos KK Loverdos
        return new UserCatalogs(
43 cc0120ab Christos KK Loverdos
            Helpers.copyHashMap(id2name),
44 cc0120ab Christos KK Loverdos
            Helpers.copyHashMap(name2id)
45 cc0120ab Christos KK Loverdos
        );
46 cc0120ab Christos KK Loverdos
    }
47 cc0120ab Christos KK Loverdos
48 dc8cc18a Christos KK Loverdos
    public boolean hasID(String id) {
49 cc0120ab Christos KK Loverdos
        return id2name.containsKey(id);
50 cc0120ab Christos KK Loverdos
    }
51 cc0120ab Christos KK Loverdos
52 dc8cc18a Christos KK Loverdos
    public boolean hasName(String name) {
53 dc8cc18a Christos KK Loverdos
        return name2id.containsKey(name);
54 cc0120ab Christos KK Loverdos
    }
55 cc0120ab Christos KK Loverdos
56 dc8cc18a Christos KK Loverdos
    public String getDisplayName(String id) {
57 dc8cc18a Christos KK Loverdos
        return id2name.get(id);
58 1bb330dc Christos KK Loverdos
    }
59 1bb330dc Christos KK Loverdos
60 dc8cc18a Christos KK Loverdos
    public String getUserID(String name) {
61 dc8cc18a Christos KK Loverdos
        return name2id.get(name);
62 b9a1049a Christos KK Loverdos
    }
63 b9a1049a Christos KK Loverdos
64 cc0120ab Christos KK Loverdos
    @Override
65 cc0120ab Christos KK Loverdos
    public Iterator<Map.Entry<String, String>> iterator() {
66 cc0120ab Christos KK Loverdos
        return id2name.entrySet().iterator();
67 cc0120ab Christos KK Loverdos
    }
68 cc0120ab Christos KK Loverdos
}