package de.gultsch.chat.persistance; import java.util.ArrayList; import java.util.List; import de.gultsch.chat.entities.Conversation; import de.gultsch.chat.entities.Message; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class DatabaseBackend extends SQLiteOpenHelper { private static DatabaseBackend instance = null; private static final String DATABASE_NAME = "history"; private static final int DATABASE_VERSION = 1; public DatabaseBackend(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @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 + " NUMBER)"); db.execSQL("create table "+Message.TABLENAME+ "()"); } @Override public void onUpgrade(SQLiteDatabase db, int arg1, int arg2) { // TODO Auto-generated method stub } public static synchronized DatabaseBackend getInstance(Context context) { if (instance == null) { instance = new DatabaseBackend(context); } return instance; } public void addConversation(Conversation conversation) { SQLiteDatabase db = this.getWritableDatabase(); db.insert("conversations", null, conversation.getContentValues()); } public int getConversationCount() { SQLiteDatabase db = this.getReadableDatabase(); Cursor cursor = db.rawQuery( "select count(uuid) as count from conversations", null); cursor.moveToFirst(); return cursor.getInt(0); } public List getConversations(int status) { List list = new ArrayList(); SQLiteDatabase db = this.getReadableDatabase(); String[] selectionArgs = { "" + status }; Cursor cursor = db .rawQuery( "select * from conversations where status = ? order by created desc", selectionArgs); while (cursor.moveToNext()) { list.add(Conversation.fromCursor(cursor)); } return list; } }