Presences.java

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