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