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}