aboutsummaryrefslogtreecommitdiffstats
path: root/src/de/gultsch/chat/persistance/DatabaseBackend.java
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/de/gultsch/chat/persistance/DatabaseBackend.java64
1 files changed, 52 insertions, 12 deletions
diff --git a/src/de/gultsch/chat/persistance/DatabaseBackend.java b/src/de/gultsch/chat/persistance/DatabaseBackend.java
index 06b9af16..0689851f 100644
--- a/src/de/gultsch/chat/persistance/DatabaseBackend.java
+++ b/src/de/gultsch/chat/persistance/DatabaseBackend.java
@@ -3,6 +3,8 @@ package de.gultsch.chat.persistance;
import java.util.ArrayList;
import java.util.List;
+import de.gultsch.chat.entities.Account;
+import de.gultsch.chat.entities.Contact;
import de.gultsch.chat.entities.Conversation;
import de.gultsch.chat.entities.Message;
import android.content.Context;
@@ -24,12 +26,16 @@ public class DatabaseBackend extends SQLiteOpenHelper {
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table " + Conversation.TABLENAME + " ("
- + Conversation.UUID + " TEXT, " + Conversation.NAME + " TEXT, "
- + Conversation.PHOTO_URI + " TEXT, " + Conversation.ACCOUNT
- + " TEXT, " + Conversation.CONTACT + " TEXT, "
- + Conversation.CREATED + " NUMBER, " + Conversation.STATUS
+ + Conversation.UUID + " TEXT PRIMARY KEY, " + Conversation.NAME
+ + " TEXT, " + Conversation.PHOTO_URI + " TEXT, "
+ + Conversation.ACCOUNT + " TEXT, " + Conversation.CONTACT
+ + " TEXT, " + Conversation.CREATED + " NUMBER, "
+ + Conversation.STATUS + " NUMBER)");
+ db.execSQL("create table " + Message.TABLENAME + "( " + Message.UUID
+ + " TEXT PRIMARY KEY, " + Message.CONVERSATION + " TEXT, " + Message.TIME_SENT +" NUMBER, "
+ + Message.COUNTERPART + " TEXT, " + Message.BODY + " TEXT, "
+ + Message.ENCRYPTION + " NUMBER, " + Message.STATUS
+ " NUMBER)");
- db.execSQL("create table "+Message.TABLENAME+ "()");
}
@Override
@@ -45,15 +51,20 @@ public class DatabaseBackend extends SQLiteOpenHelper {
return instance;
}
- public void addConversation(Conversation conversation) {
+ public void createConversation(Conversation conversation) {
SQLiteDatabase db = this.getWritableDatabase();
- db.insert("conversations", null, conversation.getContentValues());
+ db.insert(Conversation.TABLENAME, null, conversation.getContentValues());
+ }
+
+ public void createMessage(Message message) {
+ SQLiteDatabase db = this.getWritableDatabase();
+ db.insert(Message.TABLENAME, null, message.getContentValues());
}
public int getConversationCount() {
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(
- "select count(uuid) as count from conversations", null);
+ "select count(uuid) as count from "+Conversation.TABLENAME+" where "+Conversation.STATUS+"="+Conversation.STATUS_AVAILABLE, null);
cursor.moveToFirst();
return cursor.getInt(0);
}
@@ -62,14 +73,43 @@ public class DatabaseBackend extends SQLiteOpenHelper {
List<Conversation> list = new ArrayList<Conversation>();
SQLiteDatabase db = this.getReadableDatabase();
String[] selectionArgs = { "" + status };
- Cursor cursor = db
- .rawQuery(
- "select * from conversations where status = ? order by created desc",
- selectionArgs);
+ Cursor cursor = db.rawQuery("select * from " + Conversation.TABLENAME
+ + " where " + Conversation.STATUS + " = ? order by "
+ + Conversation.CREATED + " desc", selectionArgs);
while (cursor.moveToNext()) {
list.add(Conversation.fromCursor(cursor));
}
return list;
}
+ public List<Message> getMessages(Conversation conversation, int limit) {
+ List<Message> list = new ArrayList<Message>();
+ SQLiteDatabase db = this.getReadableDatabase();
+ String[] selectionArgs = { conversation.getUuid() };
+ Cursor cursor = db.query(Message.TABLENAME, null,Message.CONVERSATION +"=?", selectionArgs, null, null,
+ Message.TIME_SENT+" DESC",String.valueOf(limit));
+ if (cursor.getCount() > 0 ) {
+ cursor.moveToLast();
+ do {
+ list.add(Message.fromCursor(cursor));
+ } while (cursor.moveToPrevious());
+ }
+ return list;
+ }
+
+ public Conversation findConversation(Account account, Contact contact) {
+ SQLiteDatabase db = this.getReadableDatabase();
+ String[] selectionArgs = { account.getUuid() , contact.getJid() };
+ Cursor cursor = db.query(Conversation.TABLENAME, null,Conversation.ACCOUNT+"=? AND "+Conversation.CONTACT+"=?", selectionArgs, null, null, null);
+ if (cursor.getCount() == 0) return null;
+ cursor.moveToFirst();
+ return Conversation.fromCursor(cursor);
+ }
+
+ public void updateConversation(Conversation conversation) {
+ SQLiteDatabase db = this.getReadableDatabase();
+ String[] args = {conversation.getUuid()};
+ db.update(Conversation.TABLENAME, conversation.getContentValues(),Conversation.UUID+"=?",args);
+ }
+
}