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 java.util.Comparator;
 8
 9import eu.siacs.conversations.services.AvatarService;
10import eu.siacs.conversations.utils.LanguageUtils;
11import eu.siacs.conversations.utils.UIHelper;
12import rocks.xmpp.addr.Jid;
13
14public class Room implements AvatarService.Avatarable, Comparable<Room> {
15
16    public String address;
17    public String name;
18    public String description;
19    public String language;
20    public int nusers;
21
22    public Room(String address, String name, String description, String language, int nusers) {
23        this.address = address;
24        this.name = name;
25        this.description = description;
26        this.language = language;
27        this.nusers = nusers;
28    }
29
30    public Room() {
31
32    }
33
34    public String getName() {
35        return name;
36    }
37
38    public String getDescription() {
39        return description;
40    }
41
42    public Jid getRoom() {
43        try {
44            return Jid.of(address);
45        } catch (IllegalArgumentException e) {
46            return null;
47        }
48    }
49
50    public String getLanguage() {
51        return LanguageUtils.convert(language);
52    }
53
54    @Override
55    public int getAvatarBackgroundColor() {
56        Jid room = getRoom();
57        return UIHelper.getColorForName(room != null ? room.asBareJid().toEscapedString() : 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
76    public boolean contains(String needle) {
77        return Strings.nullToEmpty(name).contains(needle)
78                || Strings.nullToEmpty(description).contains(needle)
79                || Strings.nullToEmpty(address).contains(needle);
80    }
81
82    @Override
83    public int compareTo(Room o) {
84        return ComparisonChain.start()
85                .compare(o.nusers, nusers)
86                .compare(Strings.nullToEmpty(name), Strings.nullToEmpty(o.name))
87                .compare(Strings.nullToEmpty(address), Strings.nullToEmpty(o.address))
88                .result();
89    }
90}