package org.qii.weiciyuan.support.database;
import com.google.gson.Gson;
import com.google.gson.JsonSyntaxException;
import com.google.gson.reflect.TypeToken;
import org.qii.weiciyuan.bean.EmotionBean;
import org.qii.weiciyuan.support.database.table.EmotionsTable;
import org.qii.weiciyuan.support.debug.AppLogger;
import org.qii.weiciyuan.ui.login.OAuthActivity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* User: qii
* Date: 12-7-30
*/
public class DatabaseManager {
private static DatabaseManager singleton = null;
private SQLiteDatabase wsd = null;
private SQLiteDatabase rsd = null;
private DatabaseHelper databaseHelper = null;
private DatabaseManager() {
}
public synchronized static DatabaseManager getInstance() {
if (singleton == null) {
DatabaseHelper databaseHelper = DatabaseHelper.getInstance();
SQLiteDatabase wsd = databaseHelper.getWritableDatabase();
SQLiteDatabase rsd = databaseHelper.getReadableDatabase();
singleton = new DatabaseManager();
singleton.wsd = wsd;
singleton.rsd = rsd;
singleton.databaseHelper = databaseHelper;
}
return singleton;
}
public static void close() {
if (singleton != null) {
singleton.databaseHelper.close();
}
}
public OAuthActivity.DBResult addEmotions(List<EmotionBean> word) {
ContentValues cv = new ContentValues();
cv.put(EmotionsTable.JSONDATA, new Gson().toJson(word));
wsd.execSQL("DROP TABLE IF EXISTS " + EmotionsTable.TABLE_NAME);
wsd.execSQL(DatabaseHelper.CREATE_EMOTIONS_TABLE_SQL);
wsd.insert(EmotionsTable.TABLE_NAME,
EmotionsTable.ID, cv);
return OAuthActivity.DBResult.add_successfuly;
}
public Map<String, String> getEmotionsMap() {
Gson gson = new Gson();
Map<String, String> map = new HashMap<String, String>();
String sql = "select * from " + EmotionsTable.TABLE_NAME + " order by " + EmotionsTable.ID
+ " limit 1 ";
Cursor c = rsd.rawQuery(sql, null);
if (c.moveToNext()) {
String json = c.getString(c.getColumnIndex(EmotionsTable.JSONDATA));
try {
List<EmotionBean> value = gson
.fromJson(json, new TypeToken<ArrayList<EmotionBean>>() {
}.getType());
for (EmotionBean bean : value) {
map.put(bean.getPhrase(), bean.getUrl());
}
} catch (JsonSyntaxException e) {
AppLogger.e(e.getMessage());
}
}
c.close();
return map;
}
}