aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/eu/siacs/conversations/entities/Account.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/eu/siacs/conversations/entities/Account.java')
-rw-r--r--src/main/java/eu/siacs/conversations/entities/Account.java100
1 files changed, 52 insertions, 48 deletions
diff --git a/src/main/java/eu/siacs/conversations/entities/Account.java b/src/main/java/eu/siacs/conversations/entities/Account.java
index 80a9d62f..e367b41a 100644
--- a/src/main/java/eu/siacs/conversations/entities/Account.java
+++ b/src/main/java/eu/siacs/conversations/entities/Account.java
@@ -2,7 +2,6 @@ package eu.siacs.conversations.entities;
import java.security.interfaces.DSAPublicKey;
import java.util.List;
-import java.util.Locale;
import java.util.concurrent.CopyOnWriteArrayList;
import net.java.otr4j.crypto.OtrCryptoEngineImpl;
@@ -16,6 +15,9 @@ import eu.siacs.conversations.R;
import eu.siacs.conversations.crypto.OtrEngine;
import eu.siacs.conversations.services.XmppConnectionService;
import eu.siacs.conversations.xmpp.XmppConnection;
+import eu.siacs.conversations.xmpp.jid.InvalidJidException;
+import eu.siacs.conversations.xmpp.jid.Jid;
+
import android.content.ContentValues;
import android.database.Cursor;
import android.os.SystemClock;
@@ -50,12 +52,10 @@ public class Account extends AbstractEntity {
public static final int STATUS_REGISTRATION_SUCCESSFULL = 9;
public static final int STATUS_REGISTRATION_NOT_SUPPORTED = 10;
- protected String username;
- protected String server;
+ protected Jid jid;
protected String password;
protected int options = 0;
protected String rosterVersion;
- protected String resource = "mobile";
protected int status = -1;
protected JSONObject keys = new JSONObject();
protected String avatar;
@@ -69,31 +69,33 @@ public class Account extends AbstractEntity {
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>();
+ private List<Bookmark> bookmarks = new CopyOnWriteArrayList<>();
+ public List<Conversation> pendingConferenceJoins = new CopyOnWriteArrayList<>();
+ public List<Conversation> pendingConferenceLeaves = new CopyOnWriteArrayList<>();
public Account() {
this.uuid = "0";
}
- public Account(String username, String server, String password) {
- this(java.util.UUID.randomUUID().toString(), username, server,
+ public Account(final Jid jid, final String password) {
+ this(java.util.UUID.randomUUID().toString(), jid,
password, 0, null, "", null);
}
- public Account(String uuid, String username, String server,
- String password, int options, String rosterVersion, String keys,
- String avatar) {
+ public Account(final String uuid, final Jid jid,
+ final String password, final int options, final String rosterVersion, final String keys,
+ final String avatar) {
this.uuid = uuid;
- this.username = username;
- this.server = server;
+ this.jid = jid;
+ if (jid.getResourcepart().isEmpty()) {
+ this.setResource("mobile");
+ }
this.password = password;
this.options = options;
this.rosterVersion = rosterVersion;
try {
this.keys = new JSONObject(keys);
- } catch (JSONException e) {
+ } catch (final JSONException ignored) {
}
this.avatar = avatar;
@@ -112,30 +114,30 @@ public class Account extends AbstractEntity {
}
public String getUsername() {
- return username;
+ return jid.getLocalpart();
}
- public void setUsername(String username) {
- this.username = username;
- }
+ public void setUsername(final String username) throws InvalidJidException {
+ jid = Jid.fromParts(username, jid.getDomainpart(), jid.getResourcepart());
+ }
- public String getServer() {
- return server;
+ public Jid getServer() {
+ return jid.toDomainJid();
}
- public void setServer(String server) {
- this.server = server;
+ public void setServer(final String server) throws InvalidJidException {
+ jid = Jid.fromParts(jid.getLocalpart(), server, jid.getResourcepart());
}
public String getPassword() {
return password;
}
- public void setPassword(String password) {
+ public void setPassword(final String password) {
this.password = password;
}
- public void setStatus(int status) {
+ public void setStatus(final int status) {
this.status = status;
}
@@ -156,25 +158,22 @@ public class Account extends AbstractEntity {
}
public boolean hasErrorStatus() {
- if (getXmppConnection() == null) {
- return false;
- } else {
- return getStatus() > STATUS_NO_INTERNET
- && (getXmppConnection().getAttempt() >= 2);
- }
+ return getXmppConnection() != null && getStatus() > STATUS_NO_INTERNET && (getXmppConnection().getAttempt() >= 2);
}
- public void setResource(String resource) {
- this.resource = resource;
- }
+ public void setResource(final String resource){
+ try {
+ jid = Jid.fromParts(jid.getLocalpart(), jid.getDomainpart(), resource);
+ } catch (final InvalidJidException ignored) {
+ }
+ }
public String getResource() {
- return this.resource;
+ return jid.getResourcepart();
}
- public String getJid() {
- return username.toLowerCase(Locale.getDefault()) + "@"
- + server.toLowerCase(Locale.getDefault());
+ public Jid getJid() {
+ return jid.toBareJid();
}
public JSONObject getKeys() {
@@ -210,8 +209,8 @@ public class Account extends AbstractEntity {
public ContentValues getContentValues() {
ContentValues values = new ContentValues();
values.put(UUID, uuid);
- values.put(USERNAME, username);
- values.put(SERVER, server);
+ values.put(USERNAME, jid.getLocalpart());
+ values.put(SERVER, jid.getDomainpart());
values.put(PASSWORD, password);
values.put(OPTIONS, options);
values.put(KEYS, this.keys.toString());
@@ -221,9 +220,14 @@ public class Account extends AbstractEntity {
}
public static Account fromCursor(Cursor cursor) {
- return new Account(cursor.getString(cursor.getColumnIndex(UUID)),
- cursor.getString(cursor.getColumnIndex(USERNAME)),
- cursor.getString(cursor.getColumnIndex(SERVER)),
+ Jid jid = null;
+ try {
+ jid = Jid.fromParts(cursor.getString(cursor.getColumnIndex(USERNAME)),
+ cursor.getString(cursor.getColumnIndex(SERVER)), "mobile");
+ } catch (final InvalidJidException ignored) {
+ }
+ return new Account(cursor.getString(cursor.getColumnIndex(UUID)),
+ jid,
cursor.getString(cursor.getColumnIndex(PASSWORD)),
cursor.getInt(cursor.getColumnIndex(OPTIONS)),
cursor.getString(cursor.getColumnIndex(ROSTERVERSION)),
@@ -246,8 +250,8 @@ public class Account extends AbstractEntity {
this.xmppConnection = connection;
}
- public String getFullJid() {
- return this.getJid() + "/" + this.resource;
+ public Jid getFullJid() {
+ return this.getJid();
}
public String getOtrFingerprint() {
@@ -265,7 +269,7 @@ public class Account extends AbstractEntity {
builder.insert(26, " ");
builder.insert(35, " ");
this.otrFingerprint = builder.toString();
- } catch (OtrCryptoException e) {
+ } catch (final OtrCryptoException ignored) {
}
}
@@ -332,9 +336,9 @@ public class Account extends AbstractEntity {
return this.bookmarks;
}
- public boolean hasBookmarkFor(String conferenceJid) {
+ public boolean hasBookmarkFor(final Jid conferenceJid) {
for (Bookmark bmark : this.bookmarks) {
- if (bmark.getJid().equals(conferenceJid)) {
+ if (bmark.getJid().equals(conferenceJid.toBareJid())) {
return true;
}
}