Room.java

 1package eu.siacs.conversations.entities;
 2
 3import com.google.common.base.Objects;
 4import com.google.common.base.Strings;
 5import com.google.common.collect.ComparisonChain;
 6import eu.siacs.conversations.services.AvatarService;
 7import eu.siacs.conversations.utils.LanguageUtils;
 8import eu.siacs.conversations.utils.UIHelper;
 9import eu.siacs.conversations.xmpp.Jid;
10
11public class Room implements AvatarService.Avatarable, Comparable<Room> {
12
13    public String address;
14    public String name;
15    public String description;
16    public String language;
17    public int nusers;
18
19    public Room(String address, String name, String description, String language, int nusers) {
20        this.address = address;
21        this.name = name;
22        this.description = description;
23        this.language = language;
24        this.nusers = nusers;
25    }
26
27    public Room() {}
28
29    public String getName() {
30        return name;
31    }
32
33    public String getDescription() {
34        return description;
35    }
36
37    public Jid getRoom() {
38        try {
39            return Jid.of(address);
40        } catch (IllegalArgumentException e) {
41            return null;
42        }
43    }
44
45    public String getLanguage() {
46        return LanguageUtils.convert(language);
47    }
48
49    @Override
50    public int getAvatarBackgroundColor() {
51        Jid room = getRoom();
52        return UIHelper.getColorForName(room != null ? room.asBareJid().toString() : name);
53    }
54
55    @Override
56    public String getAvatarName() {
57        return name;
58    }
59
60    @Override
61    public boolean equals(Object o) {
62        if (this == o) return true;
63        if (o == null || getClass() != o.getClass()) return false;
64        Room room = (Room) o;
65        return Objects.equal(address, room.address)
66                && Objects.equal(name, room.name)
67                && Objects.equal(description, room.description);
68    }
69
70    @Override
71    public int hashCode() {
72        return Objects.hashCode(address, name, description);
73    }
74
75    public boolean contains(String needle) {
76        return Strings.nullToEmpty(name).contains(needle)
77                || Strings.nullToEmpty(description).contains(needle)
78                || Strings.nullToEmpty(address).contains(needle);
79    }
80
81    @Override
82    public int compareTo(Room o) {
83        return ComparisonChain.start()
84                .compare(o.nusers, nusers)
85                .compare(Strings.nullToEmpty(name), Strings.nullToEmpty(o.name))
86                .compare(Strings.nullToEmpty(address), Strings.nullToEmpty(o.address))
87                .result();
88    }
89}