1package de.gultsch.chat.persistance;
2
3import java.util.ArrayList;
4import java.util.List;
5
6import de.gultsch.chat.entities.Conversation;
7import android.content.Context;
8import android.database.Cursor;
9import android.database.sqlite.SQLiteDatabase;
10import android.database.sqlite.SQLiteOpenHelper;
11import android.util.Log;
12
13public class DatabaseBackend extends SQLiteOpenHelper {
14
15 private static DatabaseBackend instance = null;
16
17 private static final String DATABASE_NAME = "history";
18 private static final int DATABASE_VERSION = 1;
19
20 public DatabaseBackend(Context context) {
21 super(context, DATABASE_NAME, null, DATABASE_VERSION);
22 }
23
24 @Override
25 public void onCreate(SQLiteDatabase db) {
26 db.execSQL("create table conversations (uuid TEXT, name TEXT, profilePhotoUri TEXT, accountUuid TEXT, contactJid TEXT)");
27 }
28
29 @Override
30 public void onUpgrade(SQLiteDatabase db, int arg1, int arg2) {
31 // TODO Auto-generated method stub
32
33 }
34
35 public static synchronized DatabaseBackend getInstance(Context context) {
36 if (instance == null) {
37 instance = new DatabaseBackend(context.getApplicationContext());
38 }
39 return instance;
40 }
41
42 public void addConversation(Conversation conversation) {
43 SQLiteDatabase db = this.getWritableDatabase();
44 db.insert("conversations", null, conversation.getContentValues());
45 }
46
47
48 public int getConversationCount() {
49 SQLiteDatabase db = this.getReadableDatabase();
50 Cursor cursor = db.rawQuery("select count(uuid) as count from conversations",null);
51 cursor.moveToFirst();
52 return cursor.getInt(0);
53 }
54
55 public List<Conversation> getConversations(int status) {
56 List<Conversation> list = new ArrayList<Conversation>();
57 SQLiteDatabase db = this.getReadableDatabase();
58 String[] selectionArgs = {""+status};
59 Cursor cursor = db.rawQuery("select * from conversations where status = ?", selectionArgs);
60 Log.d("gultsch","getConversations has found "+cursor.getCount()+" rows");
61 while(cursor.moveToNext()) {
62 Log.d("gultsch","converting row #"+cursor.getPosition());
63 list.add(Conversation.fromCursor(cursor));
64 }
65 return list;
66 }
67
68}