aboutsummaryrefslogtreecommitdiffstats
path: root/src/eu/siacs/conversations/entities/Account.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/eu/siacs/conversations/entities/Account.java')
-rw-r--r--src/eu/siacs/conversations/entities/Account.java156
1 files changed, 96 insertions, 60 deletions
diff --git a/src/eu/siacs/conversations/entities/Account.java b/src/eu/siacs/conversations/entities/Account.java
index 5de2c532..19da1faf 100644
--- a/src/eu/siacs/conversations/entities/Account.java
+++ b/src/eu/siacs/conversations/entities/Account.java
@@ -11,6 +11,7 @@ import net.java.otr4j.crypto.OtrCryptoException;
import org.json.JSONException;
import org.json.JSONObject;
+import eu.siacs.conversations.R;
import eu.siacs.conversations.crypto.OtrEngine;
import eu.siacs.conversations.persistance.FileBackend;
import eu.siacs.conversations.utils.UIHelper;
@@ -19,24 +20,23 @@ import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-public class Account extends AbstractEntity{
-
+public class Account extends AbstractEntity {
+
public static final String TABLENAME = "accounts";
-
+
public static final String USERNAME = "username";
public static final String SERVER = "server";
public static final String PASSWORD = "password";
public static final String OPTIONS = "options";
public static final String ROSTERVERSION = "rosterversion";
public static final String KEYS = "keys";
-
+
public static final int OPTION_USETLS = 0;
public static final int OPTION_DISABLED = 1;
public static final int OPTION_REGISTER = 2;
public static final int OPTION_USECOMPRESSION = 3;
-
+
public static final int STATUS_CONNECTING = 0;
public static final int STATUS_DISABLED = -2;
public static final int STATUS_OFFLINE = -1;
@@ -49,7 +49,7 @@ public class Account extends AbstractEntity{
public static final int STATUS_REGISTRATION_CONFLICT = 8;
public static final int STATUS_REGISTRATION_SUCCESSFULL = 9;
public static final int STATUS_REGISTRATION_NOT_SUPPORTED = 10;
-
+
protected String username;
protected String server;
protected String password;
@@ -59,30 +59,33 @@ public class Account extends AbstractEntity{
protected int status = -1;
protected JSONObject keys = new JSONObject();
protected String avatar;
-
+
protected boolean online = false;
-
+
transient OtrEngine otrEngine = null;
transient XmppConnection xmppConnection = null;
transient protected Presences presences = new Presences();
private String otrFingerprint;
-
+
private Roster roster = null;
private List<Bookmark> bookmarks = new CopyOnWriteArrayList<Bookmark>();
-
+
public List<Conversation> pendingConferenceJoins = new CopyOnWriteArrayList<Conversation>();
public List<Conversation> pendingConferenceLeaves = new CopyOnWriteArrayList<Conversation>();
-
+
public Account() {
this.uuid = "0";
}
-
+
public Account(String username, String server, String password) {
- this(java.util.UUID.randomUUID().toString(),username,server,password,0,null,"");
+ this(java.util.UUID.randomUUID().toString(), username, server,
+ password, 0, null, "");
}
- public Account(String uuid, String username, String server,String password, int options, String rosterVersion, String keys) {
+
+ public Account(String uuid, String username, String server,
+ String password, int options, String rosterVersion, String keys) {
this.uuid = uuid;
this.username = username;
this.server = server;
@@ -92,14 +95,14 @@ public class Account extends AbstractEntity{
try {
this.keys = new JSONObject(keys);
} catch (JSONException e) {
-
+
}
}
-
+
public boolean isOptionSet(int option) {
return ((options & (1 << option)) != 0);
}
-
+
public void setOption(int option, boolean value) {
if (value) {
this.options |= 1 << option;
@@ -107,7 +110,7 @@ public class Account extends AbstractEntity{
this.options &= ~(1 << option);
}
}
-
+
public String getUsername() {
return username;
}
@@ -131,11 +134,11 @@ public class Account extends AbstractEntity{
public void setPassword(String password) {
this.password = password;
}
-
+
public void setStatus(int status) {
this.status = status;
}
-
+
public int getStatus() {
if (isOptionSet(OPTION_DISABLED)) {
return STATUS_DISABLED;
@@ -143,32 +146,34 @@ public class Account extends AbstractEntity{
return this.status;
}
}
-
+
public boolean errorStatus() {
int s = getStatus();
- return (s == STATUS_OFFLINE || s == STATUS_SERVER_NOT_FOUND || s == STATUS_UNAUTHORIZED);
+ return (s == STATUS_REGISTRATION_FAILED || s == STATUS_REGISTRATION_CONFLICT || s == STATUS_REGISTRATION_NOT_SUPPORTED || s == STATUS_SERVER_NOT_FOUND || s == STATUS_UNAUTHORIZED);
}
-
+
public boolean hasErrorStatus() {
- return getStatus() > STATUS_NO_INTERNET && (getXmppConnection().getAttempt() >= 2);
+ return getStatus() > STATUS_NO_INTERNET
+ && (getXmppConnection().getAttempt() >= 2);
}
-
+
public void setResource(String resource) {
this.resource = resource;
}
-
+
public String getResource() {
return this.resource;
}
-
+
public String getJid() {
- return username.toLowerCase(Locale.getDefault())+"@"+server.toLowerCase(Locale.getDefault());
+ return username.toLowerCase(Locale.getDefault()) + "@"
+ + server.toLowerCase(Locale.getDefault());
}
-
+
public JSONObject getKeys() {
return keys;
}
-
+
public String getSSLFingerprint() {
if (keys.has("ssl_cert")) {
try {
@@ -180,11 +185,11 @@ public class Account extends AbstractEntity{
return null;
}
}
-
+
public void setSSLCertFingerprint(String fingerprint) {
this.setKey("ssl_cert", fingerprint);
}
-
+
public boolean setKey(String keyName, String keyValue) {
try {
this.keys.put(keyName, keyValue);
@@ -197,16 +202,16 @@ public class Account extends AbstractEntity{
@Override
public ContentValues getContentValues() {
ContentValues values = new ContentValues();
- values.put(UUID,uuid);
+ values.put(UUID, uuid);
values.put(USERNAME, username);
values.put(SERVER, server);
values.put(PASSWORD, password);
- values.put(OPTIONS,options);
- values.put(KEYS,this.keys.toString());
- values.put(ROSTERVERSION,rosterVersion);
+ values.put(OPTIONS, options);
+ values.put(KEYS, this.keys.toString());
+ values.put(ROSTERVERSION, rosterVersion);
return values;
}
-
+
public static Account fromCursor(Cursor cursor) {
return new Account(cursor.getString(cursor.getColumnIndex(UUID)),
cursor.getString(cursor.getColumnIndex(USERNAME)),
@@ -214,14 +219,12 @@ public class Account extends AbstractEntity{
cursor.getString(cursor.getColumnIndex(PASSWORD)),
cursor.getInt(cursor.getColumnIndex(OPTIONS)),
cursor.getString(cursor.getColumnIndex(ROSTERVERSION)),
- cursor.getString(cursor.getColumnIndex(KEYS))
- );
+ cursor.getString(cursor.getColumnIndex(KEYS)));
}
-
public OtrEngine getOtrEngine(Context context) {
- if (otrEngine==null) {
- otrEngine = new OtrEngine(context,this);
+ if (otrEngine == null) {
+ otrEngine = new OtrEngine(context, this);
}
return this.otrEngine;
}
@@ -235,37 +238,39 @@ public class Account extends AbstractEntity{
}
public String getFullJid() {
- return this.getJid()+"/"+this.resource;
+ return this.getJid() + "/" + this.resource;
}
-
+
public String getOtrFingerprint() {
if (this.otrFingerprint == null) {
try {
- DSAPublicKey pubkey = (DSAPublicKey) this.otrEngine.getPublicKey();
+ DSAPublicKey pubkey = (DSAPublicKey) this.otrEngine
+ .getPublicKey();
if (pubkey == null) {
return null;
}
- StringBuilder builder = new StringBuilder(new OtrCryptoEngineImpl().getFingerprint(pubkey));
+ StringBuilder builder = new StringBuilder(
+ new OtrCryptoEngineImpl().getFingerprint(pubkey));
builder.insert(8, " ");
builder.insert(17, " ");
builder.insert(26, " ");
builder.insert(35, " ");
this.otrFingerprint = builder.toString();
} catch (OtrCryptoException e) {
-
+
}
}
return this.otrFingerprint;
}
public String getRosterVersion() {
- if (this.rosterVersion==null) {
+ if (this.rosterVersion == null) {
return "";
} else {
return this.rosterVersion;
}
}
-
+
public void setRosterVersion(String version) {
this.rosterVersion = version;
}
@@ -274,7 +279,7 @@ public class Account extends AbstractEntity{
this.getOtrEngine(applicationContext);
return this.getOtrFingerprint();
}
-
+
public void updatePresence(String resource, int status) {
this.presences.updatePresence(resource, status);
}
@@ -282,7 +287,7 @@ public class Account extends AbstractEntity{
public void removePresence(String resource) {
this.presences.removePresence(resource);
}
-
+
public void clearPresences() {
this.presences = new Presences();
}
@@ -302,9 +307,9 @@ public class Account extends AbstractEntity{
return null;
}
}
-
+
public Roster getRoster() {
- if (this.roster==null) {
+ if (this.roster == null) {
this.roster = new Roster(this);
}
return this.roster;
@@ -313,13 +318,13 @@ public class Account extends AbstractEntity{
public void setBookmarks(List<Bookmark> bookmarks) {
this.bookmarks = bookmarks;
}
-
+
public List<Bookmark> getBookmarks() {
return this.bookmarks;
}
public boolean hasBookmarkFor(String conferenceJid) {
- for(Bookmark bmark : this.bookmarks) {
+ for (Bookmark bmark : this.bookmarks) {
if (bmark.getJid().equals(conferenceJid)) {
return true;
}
@@ -328,10 +333,11 @@ public class Account extends AbstractEntity{
}
public Bitmap getImage(Context context, int size) {
- if (this.avatar!=null) {
+ if (this.avatar != null) {
Bitmap bm = FileBackend.getAvatar(this.avatar, size, context);
- if (bm==null) {
- return UIHelper.getContactPicture(getJid(), size, context, false);
+ if (bm == null) {
+ return UIHelper.getContactPicture(getJid(), size, context,
+ false);
} else {
return bm;
}
@@ -343,8 +349,38 @@ public class Account extends AbstractEntity{
public void setAvatar(String filename) {
this.avatar = filename;
}
-
+
public String getAvatar() {
return this.avatar;
}
+
+ public int getReadableStatusId() {
+ switch (getStatus()) {
+
+ case Account.STATUS_DISABLED:
+ return R.string.account_status_disabled;
+ case Account.STATUS_ONLINE:
+ return R.string.account_status_online;
+ case Account.STATUS_CONNECTING:
+ return R.string.account_status_connecting;
+ case Account.STATUS_OFFLINE:
+ return R.string.account_status_offline;
+ case Account.STATUS_UNAUTHORIZED:
+ return R.string.account_status_unauthorized;
+ case Account.STATUS_SERVER_NOT_FOUND:
+ return R.string.account_status_not_found;
+ case Account.STATUS_NO_INTERNET:
+ return R.string.account_status_no_internet;
+ case Account.STATUS_REGISTRATION_FAILED:
+ return R.string.account_status_regis_fail;
+ case Account.STATUS_REGISTRATION_CONFLICT:
+ return R.string.account_status_regis_conflict;
+ case Account.STATUS_REGISTRATION_SUCCESSFULL:
+ return R.string.account_status_regis_success;
+ case Account.STATUS_REGISTRATION_NOT_SUPPORTED:
+ return R.string.account_status_regis_not_sup;
+ default:
+ return R.string.account_status_unknown;
+ }
+ }
}