DatabaseBackend.java

 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;
11
12public class DatabaseBackend extends SQLiteOpenHelper {
13	
14	private static DatabaseBackend instance = null;
15	
16	private static final String DATABASE_NAME = "history";
17	private static final int DATABASE_VERSION = 1;
18
19	public DatabaseBackend(Context context) {
20		super(context, DATABASE_NAME, null, DATABASE_VERSION);
21	}
22
23	@Override
24	public void onCreate(SQLiteDatabase db) {
25		db.execSQL("create table conversations (uuid TEXT, name TEXT, profilePhotoUri TEXT, accountUuid TEXT, contactJid TEXT, created NUMBER, status NUMBER)");
26	}
27
28	@Override
29	public void onUpgrade(SQLiteDatabase db, int arg1, int arg2) {
30		// TODO Auto-generated method stub
31
32	}
33	
34	public static synchronized DatabaseBackend getInstance(Context context) {
35		if (instance == null) {
36			instance = new DatabaseBackend(context);
37		}
38		return instance;
39	}
40	
41	public void addConversation(Conversation conversation) {
42		SQLiteDatabase db = this.getWritableDatabase();
43		db.insert("conversations", null, conversation.getContentValues());
44	}
45	
46	
47	public int getConversationCount() {
48		SQLiteDatabase db = this.getReadableDatabase();
49		Cursor cursor = db.rawQuery("select count(uuid) as count from conversations",null);
50		cursor.moveToFirst();
51		return cursor.getInt(0);
52	}
53
54	public List<Conversation> getConversations(int status) {
55		List<Conversation> list = new ArrayList<Conversation>();
56		SQLiteDatabase db = this.getReadableDatabase();
57		String[] selectionArgs = {""+status};
58		Cursor cursor = db.rawQuery("select * from conversations where status = ? order by created desc", selectionArgs);
59		while(cursor.moveToNext()) {
60			list.add(Conversation.fromCursor(cursor));
61		}
62		return list;
63	}
64
65}