Created
April 19, 2011 13:52
-
-
Save lvialle/927847 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| package com.levelup.foxyring; | |
| import android.content.Context; | |
| import android.content.SharedPreferences; | |
| import android.database.sqlite.SQLiteDatabase; | |
| import android.database.Cursor; | |
| import java.util.Map; | |
| import android.util.Log; | |
| public class FoxyDbPreferences implements SharedPreferences { | |
| static final String TAG = "FoxyRing"; | |
| private Context context; | |
| private final String DATABASE_NAME = "FoxyRingPrefs.sqlite"; | |
| private final String DATABASE_TABLE = "FoxyPrefs"; | |
| SQLiteDatabase foxyDB = null; | |
| FoxyDbPreferences(Context context) { | |
| // Default constructor | |
| this.context = context; | |
| foxyDB = context.openOrCreateDatabase(DATABASE_NAME, 0, null); | |
| final String CREATE_TABLE_FOXYPREFS = | |
| "CREATE TABLE IF NOT EXISTS FoxyPrefs " + | |
| "(PREF_NAME VARCHAR primary key, " + | |
| "PREF_VALUE VARCHAR not null);"; | |
| foxyDB.execSQL(CREATE_TABLE_FOXYPREFS); | |
| foxyDB.close(); | |
| } | |
| private void putPref(String name, String value) { | |
| foxyDB = context.openOrCreateDatabase(DATABASE_NAME, 0, null); | |
| Cursor c = foxyDB.rawQuery("SELECT PREF_VALUE FROM " + DATABASE_TABLE + " WHERE PREF_NAME='" + name + "'", null); | |
| //Log.i(TAG, "Put pref: "+ name); | |
| if (!c.moveToFirst()) { // not present | |
| //Log.i(TAG, "Create row"); | |
| String INSERT_ROW = | |
| "INSERT INTO " + DATABASE_TABLE + " " + | |
| "(PREF_NAME, PREF_VALUE) " + | |
| "VALUES ('" + name +"','"+ value +"');"; | |
| foxyDB.execSQL(INSERT_ROW); | |
| } else { | |
| //Log.i(TAG, "Update row"); | |
| String INSERT_ROW = | |
| "UPDATE " + DATABASE_TABLE + " set " + | |
| "PREF_VALUE='" + value + "' " + | |
| "WHERE PREF_NAME='"+ name + "';"; | |
| foxyDB.execSQL(INSERT_ROW); | |
| } | |
| c.close(); | |
| foxyDB.close(); | |
| } | |
| private String getPref(String name, String defaultValue) { | |
| foxyDB = context.openOrCreateDatabase(DATABASE_NAME, 0, null); | |
| String dbValue = defaultValue; | |
| Cursor c = foxyDB.rawQuery("SELECT PREF_VALUE FROM " + DATABASE_TABLE + " WHERE PREF_NAME='" + name + "'", null); | |
| if (c.moveToFirst()) { // present | |
| dbValue = c.getString(c.getColumnIndex("PREF_VALUE")); | |
| } | |
| c.close(); | |
| foxyDB.close(); | |
| return dbValue; | |
| } | |
| public void putBoolean(String name, boolean value) { | |
| String dbValue = String.valueOf(value); | |
| putPref(name, dbValue); | |
| } | |
| public boolean getBoolean(String name, boolean defaultValue) { | |
| String dbDefValue = String.valueOf(defaultValue); | |
| return Boolean.valueOf(getPref(name, dbDefValue)); | |
| } | |
| public void putLong(String name, long value) { | |
| String dbValue = String.valueOf(value); | |
| putPref(name, dbValue); | |
| } | |
| public long getLong(String name, long defaultValue) { | |
| String dbDefValue = String.valueOf(defaultValue); | |
| return Long.valueOf(getPref(name, dbDefValue)); | |
| } | |
| public void putInt(String name, int value) { | |
| String dbValue = String.valueOf(value); | |
| putPref(name, dbValue); | |
| } | |
| public int getInt(String name, int defaultValue) { | |
| String dbDefValue = String.valueOf(defaultValue); | |
| return Integer.valueOf(getPref(name, dbDefValue)); | |
| } | |
| public void putString(String name, String value) { | |
| putPref(name, value); | |
| } | |
| public String getString(String name, String defaultValue) { | |
| return getPref(name, defaultValue); | |
| } | |
| @Override | |
| public boolean contains(String key) { | |
| boolean returnValue = false; | |
| foxyDB = context.openOrCreateDatabase(DATABASE_NAME, 0, null); | |
| Cursor c = foxyDB.rawQuery("SELECT PREF_VALUE FROM " + DATABASE_TABLE + " WHERE PREF_NAME='" + key + "'", null); | |
| if (c.moveToFirst()) { | |
| returnValue = true; | |
| } | |
| c.close(); | |
| foxyDB.close(); | |
| return returnValue; | |
| } | |
| @Override | |
| public Editor edit() { | |
| return new Editor(); | |
| } | |
| @Override | |
| public Map<String, ?> getAll() { | |
| return null; | |
| } | |
| @Override | |
| public float getFloat(String key, float defValue) { | |
| return 0; | |
| } | |
| @Override | |
| public void registerOnSharedPreferenceChangeListener( | |
| OnSharedPreferenceChangeListener listener) { | |
| // TODO Auto-generated method stub | |
| } | |
| @Override | |
| public void unregisterOnSharedPreferenceChangeListener( | |
| OnSharedPreferenceChangeListener listener) { | |
| // TODO Auto-generated method stub | |
| } | |
| public class Editor implements SharedPreferences.Editor { | |
| public SharedPreferences.Editor clear() { | |
| return this; | |
| } | |
| public boolean commit() { | |
| // Nothing to do since our changes are realtime | |
| return true; | |
| // and update any listeners | |
| /*for(OnSharedPreferenceChangeListener listener : listeners) { | |
| listener.onSharedPreferenceChanged(this, null); | |
| }*/ | |
| } | |
| @Override | |
| public android.content.SharedPreferences.Editor putBoolean(String key, | |
| boolean value) { | |
| String dbValue = String.valueOf(value); | |
| putPref(key, dbValue); | |
| return this; | |
| } | |
| @Override | |
| public android.content.SharedPreferences.Editor putFloat(String key, | |
| float value) { | |
| putPref(key, String.valueOf(value)); | |
| return this; | |
| } | |
| @Override | |
| public android.content.SharedPreferences.Editor putInt(String key, | |
| int value) { | |
| String dbValue = String.valueOf(value); | |
| putPref(key, dbValue); | |
| return this; | |
| } | |
| @Override | |
| public android.content.SharedPreferences.Editor putLong(String key, | |
| long value) { | |
| String dbValue = String.valueOf(value); | |
| putPref(key, dbValue); | |
| return this; | |
| } | |
| @Override | |
| public android.content.SharedPreferences.Editor putString(String key, | |
| String value) { | |
| putPref(key, value); | |
| return this; | |
| } | |
| @Override | |
| public android.content.SharedPreferences.Editor remove(String key) { | |
| return this; | |
| } | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment