package net.dev123.yibo.db; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Hashtable; import net.dev123.commons.util.StringUtil; import net.dev123.yibo.common.Constants; import net.dev123.yibome.entity.Passport; import net.dev123.yibome.entity.PointLevel; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; /** * SystemConfigDao 系统设置Dao * * @version * @author 马庆升 * @time 2010-8-24 下午01:52:37 */ public class ConfigSystemDao { private static final String TABLE = "Config_System"; private static final String DATE_FORMAT_PATTERN = "yyyy-MM-dd HH:mm:ss"; private DateFormat dateFormat; private DBHelper dbHelper; public ConfigSystemDao(Context context) { dbHelper = DBHelper.getInstance(context); dateFormat = new SimpleDateFormat(DATE_FORMAT_PATTERN); } public void savePassport(Passport passport) { if (passport == null) { return; } SQLiteDatabase sqLiteDatabase = dbHelper.getWritableDatabase(); sqLiteDatabase.beginTransaction(); try { put(sqLiteDatabase, Constants.PASSPORT_USERNAME, passport.getUsername(), "通行证用户名"); put(sqLiteDatabase, Constants.PASSPORT_TOKEN, passport.getAuthToken(), "通行证认证Token"); put(sqLiteDatabase, Constants.PASSPORT_SECRET, passport.getAuthSecret(), "通行证认证Secret"); put(sqLiteDatabase, Constants.PASSPORT_STATE, passport.getState(), "通行证状态"); put(sqLiteDatabase, Constants.PASSPORT_VIP, passport.isVip(), "通行证是否VIP"); PointLevel pointLevel = passport.getPointLevel(); if (pointLevel != null) { put(sqLiteDatabase, Constants.PASSPORT_POINTS, pointLevel.getPoints(), "通行证积分"); put(sqLiteDatabase, Constants.PASSPORT_TITLE, pointLevel.getTitle(), "通行证头衔"); } sqLiteDatabase.setTransactionSuccessful(); } finally { sqLiteDatabase.endTransaction(); } } public Passport getPassport() { Passport passport = new Passport(); passport.setUsername(getString(Constants.PASSPORT_USERNAME)); passport.setAuthToken(getString(Constants.PASSPORT_TOKEN)); passport.setAuthSecret(getString(Constants.PASSPORT_SECRET)); passport.setState(getInt(Constants.PASSPORT_STATE)); passport.setVip(getBoolean(Constants.PASSPORT_VIP)); PointLevel pointLevel = new PointLevel(); int points = getInt(Constants.PASSPORT_POINTS); pointLevel.setPoints(points); pointLevel.setTitle(getString(Constants.PASSPORT_TITLE)); passport.setPointLevel(pointLevel); return passport; } public void destroyPassport() { SQLiteDatabase sqLiteDatabase = dbHelper.getWritableDatabase(); sqLiteDatabase.beginTransaction(); try { put(sqLiteDatabase, Constants.PASSPORT_USERNAME, null, "通行证用户名"); put(sqLiteDatabase, Constants.PASSPORT_TOKEN, null, "通行证认证Token"); put(sqLiteDatabase, Constants.PASSPORT_SECRET, null, "通行证认证Secret"); put(sqLiteDatabase, Constants.PASSPORT_STATE, null, "通行证状态"); put(sqLiteDatabase, Constants.PASSPORT_VIP, null, "通行证是否VIP"); put(sqLiteDatabase, Constants.PASSPORT_POINTS, 0, "通行证积分"); put(sqLiteDatabase, Constants.PASSPORT_TITLE, null, "通行证头衔"); sqLiteDatabase.setTransactionSuccessful(); } finally { sqLiteDatabase.endTransaction(); } } /** * 保持设置 * * @param name * @param value */ public void put(String key, Object value, String desc) { checkNull(key); SQLiteDatabase sqLiteDatabase = dbHelper.getWritableDatabase(); put(sqLiteDatabase, key, value, desc); } /*package*/ void put(SQLiteDatabase sqLiteDatabase, String key, Object value, String desc){ ContentValues values = new ContentValues(); String savedValue = null; if (value != null) { savedValue = value.toString(); if (value instanceof Date) { savedValue = dateFormat.format((Date)value); } } values.put("Config_Key", key); values.put("Config_Value", savedValue); values.put("Config_Description", desc); sqLiteDatabase.replace(TABLE, null, values); } /** * 删除设置项 * * @param name * @param value */ public void delete(String key) { checkNull(key); SQLiteDatabase sqLiteDatabase = dbHelper.getWritableDatabase(); StringBuilder sql = new StringBuilder(); sql.append("DELETE FROM ").append(TABLE); sql.append(" WHERE Config_Key = '").append(key).append("'"); sqLiteDatabase.execSQL(sql.toString()); } /** * 获取指定的设置值 * * @param name * 设置名称 * @return 设置值 */ public String getString(String key) { SQLiteDatabase sqLiteDatabase = dbHelper.getWritableDatabase(); return get(sqLiteDatabase, key); } public int getInt(String key) { String value = getString(key); if (StringUtil.isNotEmpty(value)) { return Integer.valueOf(value); } return Integer.MIN_VALUE; } public double getDouble(String key) { String value = getString(key); if (StringUtil.isNotEmpty(value)) { return Double.valueOf(value); } return Double.MIN_VALUE; } public float getFloat(String key) { String value = getString(key); if (StringUtil.isNotEmpty(value)) { return Float.valueOf(value); } return Float.MIN_VALUE; } public Date getDate(String key) throws ParseException { String value = getString(key); if (StringUtil.isNotEmpty(value)) { return dateFormat.parse(value); } return null; } public boolean getBoolean(String key) { String value = getString(key); if (StringUtil.isNotEmpty(value)) { return Boolean.valueOf(value); } return Boolean.FALSE; } /*package*/ String get(SQLiteDatabase sqLiteDatabase,String name) { checkNull(name); StringBuilder sql = new StringBuilder(); sql.append("SELECT Config_Value FROM ").append(TABLE); sql.append(" WHERE Config_Key = '").append(name).append("'"); Cursor cursor = sqLiteDatabase.rawQuery(sql.toString(), null); String value = null; if (null != cursor ) { if(cursor.moveToFirst()){ value = cursor.getString(cursor.getColumnIndex("Config_Value")); } cursor.deactivate(); cursor.close(); } return value; } /** * 获取所有设置 * * @return Hashtable 保存设置信息键值对的Hashtable */ public Hashtable<String, String> getConfigKeyValueMap() { Hashtable<String, String> settings = new Hashtable<String, String>(); StringBuilder sql = new StringBuilder(); sql.append("SELECT Config_Key, Config_Value From ").append(TABLE); SQLiteDatabase sqLiteDatabase = dbHelper.getWritableDatabase(); Cursor cursor = sqLiteDatabase.rawQuery(sql.toString(), null); if (null != cursor) { if(cursor.moveToFirst()){ do { settings.put(cursor.getString(cursor.getColumnIndex("Config_Key")), cursor.getString(cursor .getColumnIndex("Config_Value"))); } while (cursor.isAfterLast()); } cursor.deactivate(); cursor.close(); } return settings; } /** * 检查参数是否为空 * * @param account */ private void checkNull(Object... object) { for (Object o : object) { if (null == o) { throw new NullPointerException("Parameter is null"); } } } }