Roster.java

 1package eu.siacs.conversations.entities;
 2
 3import java.util.ArrayList;
 4import java.util.List;
 5import java.util.Locale;
 6import java.util.concurrent.ConcurrentHashMap;
 7
 8public class Roster {
 9	Account account;
10	ConcurrentHashMap<String, Contact> contacts = new ConcurrentHashMap<String, Contact>();
11	private String version = null;
12
13	public Roster(Account account) {
14		this.account = account;
15	}
16
17	public Contact getContactFromRoster(String jid) {
18		String cleanJid = jid.split("/", 2)[0];
19		Contact contact = contacts.get(cleanJid);
20		if (contact != null && contact.showInRoster()) {
21			return contact;
22		} else {
23			return null;
24		}
25	}
26
27	public Contact getContact(String jid) {
28		String cleanJid = jid.split("/", 2)[0].toLowerCase(Locale.getDefault());
29		if (contacts.containsKey(cleanJid)) {
30			return contacts.get(cleanJid);
31		} else {
32			Contact contact = new Contact(cleanJid);
33			contact.setAccount(account);
34			contacts.put(cleanJid, contact);
35			return contact;
36		}
37	}
38
39	public void clearPresences() {
40		for (Contact contact : getContacts()) {
41			contact.clearPresences();
42		}
43	}
44
45	public void markAllAsNotInRoster() {
46		for (Contact contact : getContacts()) {
47			contact.resetOption(Contact.Options.IN_ROSTER);
48		}
49	}
50
51	public void clearSystemAccounts() {
52		for (Contact contact : getContacts()) {
53			contact.setPhotoUri(null);
54			contact.setSystemName(null);
55			contact.setSystemAccount(null);
56		}
57	}
58
59	public List<Contact> getContacts() {
60		return new ArrayList<Contact>(this.contacts.values());
61	}
62
63	public void initContact(Contact contact) {
64		contact.setAccount(account);
65		contact.setOption(Contact.Options.IN_ROSTER);
66		contacts.put(contact.getJid(), contact);
67	}
68
69	public void setVersion(String version) {
70		this.version = version;
71	}
72
73	public String getVersion() {
74		return this.version;
75	}
76
77	public Account getAccount() {
78		return this.account;
79	}
80}