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 String getAvatarName() {
60        return name;
61    }
62
63    @Override
64    public boolean equals(Object o) {
65        if (this == o) return true;
66        if (o == null || getClass() != o.getClass()) return false;
67        Room room = (Room) o;
68        return Objects.equal(address, room.address) &&
69                Objects.equal(name, room.name) &&
70                Objects.equal(description, room.description);
71    }
72
73    @Override
74    public int hashCode() {
75        return Objects.hashCode(address, name, description);
76    }
77
78
79    public boolean contains(String needle) {
80        return Strings.nullToEmpty(name).contains(needle)
81                || Strings.nullToEmpty(description).contains(needle)
82                || Strings.nullToEmpty(address).contains(needle);
83    }
84
85    @Override
86    public int compareTo(Room o) {
87        return ComparisonChain.start()
88                .compare(o.nusers, nusers)
89                .compare(Strings.nullToEmpty(name), Strings.nullToEmpty(o.name))
90                .compare(Strings.nullToEmpty(address), Strings.nullToEmpty(o.address))
91                .result();
92    }
93}