aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSam Whited <sam@samwhited.com>2014-11-04 16:09:27 -0500
committerSam Whited <sam@samwhited.com>2014-11-04 16:41:35 -0500
commit96563aca5257d206d8e7e068b30a1b088a4b66c6 (patch)
tree2dca3522e357931773d0eed2a8f9e80829a1edd2
parentff10b094a0a210bb1c7745bd0e0f92e9a7e3ec2d (diff)
Add last seen info to the database
Fixes #612
-rw-r--r--src/main/java/eu/siacs/conversations/entities/Contact.java49
-rw-r--r--src/main/java/eu/siacs/conversations/persistance/DatabaseBackend.java9
2 files changed, 44 insertions, 14 deletions
diff --git a/src/main/java/eu/siacs/conversations/entities/Contact.java b/src/main/java/eu/siacs/conversations/entities/Contact.java
index 60c31a42..af5172d3 100644
--- a/src/main/java/eu/siacs/conversations/entities/Contact.java
+++ b/src/main/java/eu/siacs/conversations/entities/Contact.java
@@ -24,6 +24,8 @@ public class Contact implements ListItem {
public static final String KEYS = "pgpkey";
public static final String ACCOUNT = "accountUuid";
public static final String AVATAR = "avatar";
+ public static final String LAST_PRESENCE = "last_presence";
+ public static final String LAST_TIME = "last_time";
protected String accountUuid;
protected String systemName;
@@ -43,9 +45,18 @@ public class Contact implements ListItem {
public Lastseen lastseen = new Lastseen();
- public Contact(String account, String systemName, String serverName,
- String jid, int subscription, String photoUri,
- String systemAccount, String keys, String avatar) {
+ public Contact(final String account, final String systemName, final String serverName,
+ final String jid, final int subscription, final String photoUri,
+ final String systemAccount, final String keys, final String avatar,
+ final Lastseen lastseen) {
+ this(account, systemName, serverName, jid, subscription, photoUri, systemAccount, keys,
+ avatar);
+ this.lastseen = lastseen;
+ }
+
+ public Contact(final String account, final String systemName, final String serverName,
+ final String jid, final int subscription, final String photoUri,
+ final String systemAccount, final String keys, final String avatar) {
this.accountUuid = account;
this.systemName = systemName;
this.serverName = serverName;
@@ -53,18 +64,15 @@ public class Contact implements ListItem {
this.subscription = subscription;
this.photoUri = photoUri;
this.systemAccount = systemAccount;
- if (keys == null) {
- keys = "";
- }
try {
- this.keys = new JSONObject(keys);
+ this.keys = (keys == null ? new JSONObject("") : new JSONObject(keys));
} catch (JSONException e) {
this.keys = new JSONObject();
}
this.avatar = avatar;
}
- public Contact(String jid) {
+ public Contact(final String jid) {
this.jid = jid;
}
@@ -106,10 +114,15 @@ public class Contact implements ListItem {
values.put(PHOTOURI, photoUri);
values.put(KEYS, keys.toString());
values.put(AVATAR, avatar);
+ values.put(LAST_PRESENCE, lastseen.presence);
+ values.put(LAST_TIME, lastseen.time);
return values;
}
- public static Contact fromCursor(Cursor cursor) {
+ public static Contact fromCursor(final Cursor cursor) {
+ final Lastseen lastseen = new Lastseen(
+ cursor.getString(cursor.getColumnIndex(LAST_PRESENCE)),
+ cursor.getLong(cursor.getColumnIndex(LAST_TIME)));
return new Contact(cursor.getString(cursor.getColumnIndex(ACCOUNT)),
cursor.getString(cursor.getColumnIndex(SYSTEMNAME)),
cursor.getString(cursor.getColumnIndex(SERVERNAME)),
@@ -118,7 +131,8 @@ public class Contact implements ListItem {
cursor.getString(cursor.getColumnIndex(PHOTOURI)),
cursor.getString(cursor.getColumnIndex(SYSTEMACCOUNT)),
cursor.getString(cursor.getColumnIndex(KEYS)),
- cursor.getString(cursor.getColumnIndex(AVATAR)));
+ cursor.getString(cursor.getColumnIndex(AVATAR)),
+ lastseen);
}
public int getSubscription() {
@@ -306,9 +320,18 @@ public class Contact implements ListItem {
public static final int DIRTY_DELETE = 7;
}
- public class Lastseen {
- public long time = 0;
- public String presence = null;
+ public static class Lastseen {
+ public long time;
+ public String presence;
+
+ public Lastseen() {
+ time = 0;
+ presence = null;
+ }
+ public Lastseen(final String presence, final long time) {
+ this.time = time;
+ this.presence = presence;
+ }
}
@Override
diff --git a/src/main/java/eu/siacs/conversations/persistance/DatabaseBackend.java b/src/main/java/eu/siacs/conversations/persistance/DatabaseBackend.java
index 12e5e251..ef045546 100644
--- a/src/main/java/eu/siacs/conversations/persistance/DatabaseBackend.java
+++ b/src/main/java/eu/siacs/conversations/persistance/DatabaseBackend.java
@@ -20,7 +20,7 @@ public class DatabaseBackend extends SQLiteOpenHelper {
private static DatabaseBackend instance = null;
private static final String DATABASE_NAME = "history";
- private static final int DATABASE_VERSION = 8;
+ private static final int DATABASE_VERSION = 9;
private static String CREATE_CONTATCS_STATEMENT = "create table "
+ Contact.TABLENAME + "(" + Contact.ACCOUNT + " TEXT, "
@@ -28,6 +28,7 @@ public class DatabaseBackend extends SQLiteOpenHelper {
+ Contact.JID + " TEXT," + Contact.KEYS + " TEXT,"
+ Contact.PHOTOURI + " TEXT," + Contact.OPTIONS + " NUMBER,"
+ Contact.SYSTEMACCOUNT + " NUMBER, " + Contact.AVATAR + " TEXT, "
+ + Contact.LAST_PRESENCE + " TEXT, " + Contact.LAST_TIME + " NUMBER, "
+ "FOREIGN KEY(" + Contact.ACCOUNT + ") REFERENCES "
+ Account.TABLENAME + "(" + Account.UUID
+ ") ON DELETE CASCADE, UNIQUE(" + Contact.ACCOUNT + ", "
@@ -101,6 +102,12 @@ public class DatabaseBackend extends SQLiteOpenHelper {
db.execSQL("ALTER TABLE " + Conversation.TABLENAME + " ADD COLUMN "
+ Conversation.ATTRIBUTES + " TEXT");
}
+ if (oldVersion < 9 && newVersion >= 9) {
+ db.execSQL("ALTER TABLE " + Contact.TABLENAME + " ADD COLUMN "
+ + Contact.LAST_TIME + " NUMBER");
+ db.execSQL("ALTER TABLE " + Contact.TABLENAME + " ADD COLUMN "
+ + Contact.LAST_PRESENCE + " TEXT");
+ }
}
public static synchronized DatabaseBackend getInstance(Context context) {