1package eu.siacs.conversations.entities;
2
3import java.util.ArrayList;
4import java.util.Collections;
5import java.util.Hashtable;
6import java.util.Iterator;
7import java.util.List;
8
9import eu.siacs.conversations.xml.Element;
10
11public class Presences {
12 private final Hashtable<String, Presence> presences = new Hashtable<>();
13
14 public Hashtable<String, Presence> getPresences() {
15 return this.presences;
16 }
17
18 public void updatePresence(String resource, Presence presence) {
19 synchronized (this.presences) {
20 this.presences.put(resource, presence);
21 }
22 }
23
24 public void removePresence(String resource) {
25 synchronized (this.presences) {
26 this.presences.remove(resource);
27 }
28 }
29
30 public void clearPresences() {
31 synchronized (this.presences) {
32 this.presences.clear();
33 }
34 }
35
36 public Presence getMostAvailablePresence() {
37 synchronized (this.presences) {
38 if (presences.size() < 1) { return null; }
39 return Collections.min(presences.values());
40 }
41 }
42
43 public int size() {
44 synchronized (this.presences) {
45 return presences.size();
46 }
47 }
48
49 public String[] asStringArray() {
50 synchronized (this.presences) {
51 final String[] presencesArray = new String[presences.size()];
52 presences.keySet().toArray(presencesArray);
53 return presencesArray;
54 }
55 }
56
57 public boolean has(String presence) {
58 synchronized (this.presences) {
59 return presences.containsKey(presence);
60 }
61 }
62
63 public List<String> getStatusMessages() {
64 ArrayList<String> messages = new ArrayList<>();
65 synchronized (this.presences) {
66 for(Presence presence : this.presences.values()) {
67 if (presence.message != null && !presence.message.trim().isEmpty()) {
68 messages.add(presence.message.trim());
69 }
70 }
71 }
72 return messages;
73 }
74}