DatabaseBackend.java

 1package de.gultsch.chat.persistance;
 2
 3import java.util.ArrayList;
 4import java.util.List;
 5
 6import de.gultsch.chat.entities.Conversation;
 7import de.gultsch.chat.entities.Message;
 8import android.content.Context;
 9import android.database.Cursor;
10import android.database.sqlite.SQLiteDatabase;
11import android.database.sqlite.SQLiteOpenHelper;
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 " + Conversation.TABLENAME + " ("
27				+ Conversation.UUID + " TEXT, " + Conversation.NAME + " TEXT, "
28				+ Conversation.PHOTO_URI + " TEXT, " + Conversation.ACCOUNT
29				+ " TEXT, " + Conversation.CONTACT + " TEXT, "
30				+ Conversation.CREATED + " NUMBER, " + Conversation.STATUS
31				+ " NUMBER)");
32		db.execSQL("create table "+Message.TABLENAME+ "()");
33	}
34
35	@Override
36	public void onUpgrade(SQLiteDatabase db, int arg1, int arg2) {
37		// TODO Auto-generated method stub
38
39	}
40
41	public static synchronized DatabaseBackend getInstance(Context context) {
42		if (instance == null) {
43			instance = new DatabaseBackend(context);
44		}
45		return instance;
46	}
47
48	public void addConversation(Conversation conversation) {
49		SQLiteDatabase db = this.getWritableDatabase();
50		db.insert("conversations", null, conversation.getContentValues());
51	}
52
53	public int getConversationCount() {
54		SQLiteDatabase db = this.getReadableDatabase();
55		Cursor cursor = db.rawQuery(
56				"select count(uuid) as count from conversations", null);
57		cursor.moveToFirst();
58		return cursor.getInt(0);
59	}
60
61	public List<Conversation> getConversations(int status) {
62		List<Conversation> list = new ArrayList<Conversation>();
63		SQLiteDatabase db = this.getReadableDatabase();
64		String[] selectionArgs = { "" + status };
65		Cursor cursor = db
66				.rawQuery(
67						"select * from conversations where status = ? order by created desc",
68						selectionArgs);
69		while (cursor.moveToNext()) {
70			list.add(Conversation.fromCursor(cursor));
71		}
72		return list;
73	}
74
75}