2014-01-24 22:58:51 +00:00
|
|
|
package de.gultsch.chat.entities;
|
2014-01-24 01:04:05 +00:00
|
|
|
|
|
|
|
import java.io.Serializable;
|
2014-02-08 23:47:11 +00:00
|
|
|
import java.util.Hashtable;
|
2014-01-24 01:04:05 +00:00
|
|
|
|
2014-02-02 15:05:15 +00:00
|
|
|
import android.content.ContentValues;
|
|
|
|
import android.database.Cursor;
|
2014-01-24 01:04:05 +00:00
|
|
|
|
2014-02-02 15:05:15 +00:00
|
|
|
public class Contact extends AbstractEntity implements Serializable {
|
2014-01-24 01:04:05 +00:00
|
|
|
private static final long serialVersionUID = -4570817093119419962L;
|
2014-02-07 15:50:29 +00:00
|
|
|
|
2014-02-02 15:05:15 +00:00
|
|
|
public static final String TABLENAME = "contacts";
|
2014-02-07 15:50:29 +00:00
|
|
|
|
2014-02-02 15:05:15 +00:00
|
|
|
public static final String DISPLAYNAME = "name";
|
|
|
|
public static final String JID = "jid";
|
|
|
|
public static final String SUBSCRIPTION = "subscription";
|
|
|
|
public static final String SYSTEMACCOUNT = "systemaccount";
|
|
|
|
public static final String PHOTOURI = "photouri";
|
|
|
|
public static final String OPENPGPKEY = "pgpkey";
|
2014-02-08 23:47:11 +00:00
|
|
|
public static final String PRESENCES = "presences";
|
2014-02-02 15:05:15 +00:00
|
|
|
public static final String ACCOUNT = "accountUuid";
|
2014-02-07 15:50:29 +00:00
|
|
|
|
2014-02-02 15:05:15 +00:00
|
|
|
protected String accountUuid;
|
|
|
|
protected String displayName;
|
2014-01-24 01:04:05 +00:00
|
|
|
protected String jid;
|
2014-02-02 15:05:15 +00:00
|
|
|
protected String subscription;
|
2014-02-10 02:34:00 +00:00
|
|
|
protected String systemAccount;
|
2014-02-02 15:05:15 +00:00
|
|
|
protected String photoUri;
|
|
|
|
protected String openPGPKey;
|
2014-02-08 23:47:11 +00:00
|
|
|
protected Presences presences = new Presences();
|
2014-02-05 21:33:39 +00:00
|
|
|
|
|
|
|
protected Account account;
|
2014-02-07 15:50:29 +00:00
|
|
|
|
|
|
|
public Contact(Account account, String displayName, String jid,
|
|
|
|
String photoUri) {
|
2014-02-02 15:05:15 +00:00
|
|
|
if (account == null) {
|
|
|
|
this.accountUuid = null;
|
|
|
|
} else {
|
|
|
|
this.accountUuid = account.getUuid();
|
|
|
|
}
|
|
|
|
this.displayName = displayName;
|
|
|
|
this.jid = jid;
|
|
|
|
this.photoUri = photoUri;
|
|
|
|
}
|
2014-02-07 15:50:29 +00:00
|
|
|
|
|
|
|
public Contact(String uuid, String account, String displayName, String jid,
|
2014-02-10 02:34:00 +00:00
|
|
|
String subscription, String photoUri, String systemAccount,
|
2014-02-08 23:47:11 +00:00
|
|
|
String pgpKey,String presences) {
|
2014-02-02 15:05:15 +00:00
|
|
|
this.uuid = uuid;
|
|
|
|
this.accountUuid = account;
|
|
|
|
this.displayName = displayName;
|
2014-01-24 01:04:05 +00:00
|
|
|
this.jid = jid;
|
2014-02-02 15:05:15 +00:00
|
|
|
this.subscription = subscription;
|
|
|
|
this.photoUri = photoUri;
|
|
|
|
this.systemAccount = systemAccount;
|
|
|
|
this.openPGPKey = pgpKey;
|
2014-02-08 23:47:11 +00:00
|
|
|
this.presences = Presences.fromJsonString(presences);
|
2014-01-24 01:04:05 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
public String getDisplayName() {
|
2014-02-02 15:05:15 +00:00
|
|
|
return this.displayName;
|
2014-01-24 01:04:05 +00:00
|
|
|
}
|
|
|
|
|
2014-02-01 00:25:56 +00:00
|
|
|
public String getProfilePhoto() {
|
2014-02-02 15:05:15 +00:00
|
|
|
return this.photoUri;
|
2014-01-24 01:04:05 +00:00
|
|
|
}
|
2014-02-07 15:50:29 +00:00
|
|
|
|
2014-01-24 01:04:05 +00:00
|
|
|
public String getJid() {
|
|
|
|
return this.jid;
|
|
|
|
}
|
2014-02-07 15:50:29 +00:00
|
|
|
|
2014-01-24 01:04:05 +00:00
|
|
|
public boolean match(String needle) {
|
2014-02-07 15:50:29 +00:00
|
|
|
return (jid.toLowerCase().contains(needle.toLowerCase()) || (displayName
|
|
|
|
.toLowerCase().contains(needle.toLowerCase())));
|
2014-02-02 15:05:15 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public ContentValues getContentValues() {
|
|
|
|
ContentValues values = new ContentValues();
|
2014-02-07 15:50:29 +00:00
|
|
|
values.put(UUID, uuid);
|
|
|
|
values.put(ACCOUNT, accountUuid);
|
2014-02-02 15:05:15 +00:00
|
|
|
values.put(DISPLAYNAME, displayName);
|
|
|
|
values.put(JID, jid);
|
2014-02-07 15:50:29 +00:00
|
|
|
values.put(SUBSCRIPTION, subscription);
|
2014-02-02 15:05:15 +00:00
|
|
|
values.put(SYSTEMACCOUNT, systemAccount);
|
2014-02-07 15:50:29 +00:00
|
|
|
values.put(PHOTOURI, photoUri);
|
|
|
|
values.put(OPENPGPKEY, openPGPKey);
|
2014-02-08 23:47:11 +00:00
|
|
|
values.put(PRESENCES, presences.toJsonString());
|
2014-02-02 15:05:15 +00:00
|
|
|
return values;
|
|
|
|
}
|
2014-02-07 15:50:29 +00:00
|
|
|
|
2014-02-02 15:05:15 +00:00
|
|
|
public static Contact fromCursor(Cursor cursor) {
|
|
|
|
return new Contact(cursor.getString(cursor.getColumnIndex(UUID)),
|
|
|
|
cursor.getString(cursor.getColumnIndex(ACCOUNT)),
|
|
|
|
cursor.getString(cursor.getColumnIndex(DISPLAYNAME)),
|
|
|
|
cursor.getString(cursor.getColumnIndex(JID)),
|
|
|
|
cursor.getString(cursor.getColumnIndex(SUBSCRIPTION)),
|
|
|
|
cursor.getString(cursor.getColumnIndex(PHOTOURI)),
|
2014-02-10 02:34:00 +00:00
|
|
|
cursor.getString(cursor.getColumnIndex(SYSTEMACCOUNT)),
|
2014-02-02 15:05:15 +00:00
|
|
|
cursor.getString(cursor.getColumnIndex(OPENPGPKEY)),
|
2014-02-08 23:47:11 +00:00
|
|
|
cursor.getString(cursor.getColumnIndex(PRESENCES)));
|
2014-01-24 01:04:05 +00:00
|
|
|
}
|
2014-02-05 21:33:39 +00:00
|
|
|
|
|
|
|
public void setSubscription(String subscription) {
|
|
|
|
this.subscription = subscription;
|
|
|
|
}
|
2014-02-08 23:47:11 +00:00
|
|
|
|
|
|
|
public String getSubscription() {
|
|
|
|
return this.subscription;
|
|
|
|
}
|
2014-02-05 21:33:39 +00:00
|
|
|
|
2014-02-10 02:34:00 +00:00
|
|
|
public void setSystemAccount(String account) {
|
2014-02-05 21:33:39 +00:00
|
|
|
this.systemAccount = account;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setAccount(Account account) {
|
|
|
|
this.account = account;
|
|
|
|
this.accountUuid = account.getUuid();
|
|
|
|
}
|
|
|
|
|
|
|
|
public Account getAccount() {
|
|
|
|
return this.account;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setUuid(String uuid) {
|
|
|
|
this.uuid = uuid;
|
|
|
|
}
|
2014-02-07 15:50:29 +00:00
|
|
|
|
|
|
|
public boolean couldBeMuc() {
|
|
|
|
String[] split = this.getJid().split("@");
|
|
|
|
if (split.length != 2) {
|
|
|
|
return false;
|
|
|
|
} else {
|
|
|
|
String[] domainParts = split[1].split("\\.");
|
|
|
|
if (domainParts.length < 3) {
|
|
|
|
return false;
|
|
|
|
} else {
|
|
|
|
return (domainParts[0].equals("conf")
|
|
|
|
|| domainParts[0].equals("conference") || domainParts[0]
|
|
|
|
.equals("muc"));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2014-02-08 23:47:11 +00:00
|
|
|
|
|
|
|
public Hashtable<String, Integer> getPresences() {
|
|
|
|
return this.presences.getPresences();
|
|
|
|
}
|
|
|
|
|
|
|
|
public void updatePresence(String resource, int status) {
|
|
|
|
this.presences.updatePresence(resource, status);
|
|
|
|
}
|
|
|
|
|
|
|
|
public void removePresence(String resource) {
|
|
|
|
this.presences.removePresence(resource);
|
|
|
|
}
|
|
|
|
|
|
|
|
public int getMostAvailableStatus() {
|
|
|
|
return this.presences.getMostAvailableStatus();
|
|
|
|
}
|
2014-02-09 13:10:52 +00:00
|
|
|
|
|
|
|
public void setPresences(Presences pres) {
|
|
|
|
this.presences = pres;
|
|
|
|
}
|
2014-02-10 02:34:00 +00:00
|
|
|
|
|
|
|
public void setPhotoUri(String uri) {
|
|
|
|
this.photoUri = uri;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setDisplayName(String name) {
|
|
|
|
this.displayName = name;
|
|
|
|
}
|
|
|
|
|
|
|
|
public String getSystemAccount() {
|
|
|
|
return systemAccount;
|
|
|
|
}
|
2014-01-24 01:04:05 +00:00
|
|
|
}
|