package com.infonuascape.osrshelper.db; import java.util.ArrayList; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.util.Log; public class OSRSHelperDataSource { // Database fields private final String TAG = "OSRSHelperDataSource"; private SQLiteDatabase database; private final DBController dbHelper; private final String[] allColumnsUsernames = { DBController.COLUMN_USERNAME_OSRSHELPER }; private final String[] allColumnsCredentials = { DBController.COLUMN_USERNAME_OSRSHELPER, DBController.COLUMN_PASSWORD_OSRSHELPER }; public OSRSHelperDataSource(final Context context) { dbHelper = new DBController(context); } public void open() throws SQLException { database = dbHelper.getWritableDatabase(); } public void close() { dbHelper.close(); } public void addUsername(final String username) { final ContentValues values = new ContentValues(); values.put(DBController.COLUMN_USERNAME_OSRSHELPER, username); values.put(DBController.COLUMN_TIME_USED_OSRSHELPER, (int) System.currentTimeMillis()); database.insert(DBController.TABLE_USERNAMES_OSRSHELPER, null, values); } public void setUsernameForWidget(final int appWidgetId, final String username) { final ContentValues values = new ContentValues(); values.put(DBController.COLUMN_USERNAME_OSRSHELPER, username); if(getUsernameForWidget(appWidgetId) == null) { Log.i(TAG, "setUsernameForWidget: insert: appWidgetId=" + appWidgetId + " username=" + username); values.put(DBController.COLUMN_WIDGET_ID_OSRSHELPER, String.valueOf(appWidgetId)); database.insert(DBController.TABLE_WIDGET_OSRSHELPER, null, values); } else { Log.i(TAG, "setUsernameForWidget: update: appWidgetId=" + appWidgetId + " username=" + username); database.update(DBController.TABLE_WIDGET_OSRSHELPER, values, DBController.COLUMN_WIDGET_ID_OSRSHELPER + "=?", new String[]{String.valueOf(appWidgetId)}); } } public String getUsernameForWidget(final int appWidgetId) { String username = null; final Cursor cursor = database.query(DBController.TABLE_WIDGET_OSRSHELPER, new String[]{DBController.COLUMN_USERNAME_OSRSHELPER}, DBController.COLUMN_WIDGET_ID_OSRSHELPER + "=?", new String[]{String.valueOf(appWidgetId)}, null, null, null); cursor.moveToFirst(); while (!cursor.isAfterLast()) { username = cursor.getString(0); break; } cursor.close(); Log.i(TAG, "getUsernameForWidget: username=" + username + " appWidgetId=" + appWidgetId); return username; } public ArrayList<String> getAllUsernames() { final ArrayList<String> usernames = new ArrayList<String>(); final Cursor cursor = database.query(DBController.TABLE_USERNAMES_OSRSHELPER, allColumnsUsernames, null, null, DBController.COLUMN_USERNAME_OSRSHELPER, null, DBController.COLUMN_TIME_USED_OSRSHELPER + " DESC"); cursor.moveToFirst(); while (!cursor.isAfterLast()) { final String username = cursor.getString(0); usernames.add(username); cursor.moveToNext(); } // make sure to close the cursor cursor.close(); return usernames; } public void deleteUsername(final String username) { database.delete(DBController.TABLE_USERNAMES_OSRSHELPER, DBController.COLUMN_USERNAME_OSRSHELPER + "=?", new String[]{username}); } public void deleteAllUsernames() { database.delete(DBController.TABLE_USERNAMES_OSRSHELPER, null, null); } public void createCredentials(final String username, final String password) { final ContentValues values = new ContentValues(); values.put(DBController.COLUMN_USERNAME_OSRSHELPER, username); values.put(DBController.COLUMN_PASSWORD_OSRSHELPER, password); database.insert(DBController.TABLE_CREDENTIALS_OSRSHELPER, null, values); } public Credential getCredentials() { Credential credential = null; final Cursor cursor = database.query(DBController.TABLE_CREDENTIALS_OSRSHELPER, allColumnsCredentials, null, null, null, null, null); cursor.moveToFirst(); while (!cursor.isAfterLast()) { final String username = cursor.getString(0); final String password = cursor.getString(1); credential = new Credential(username, password); cursor.moveToNext(); } // make sure to close the cursor cursor.close(); return credential; } public void updateCredentials(final String username, final String password) { final ContentValues values = new ContentValues(); values.put(DBController.COLUMN_USERNAME_OSRSHELPER, username); values.put(DBController.COLUMN_PASSWORD_OSRSHELPER, password); database.update(DBController.TABLE_CREDENTIALS_OSRSHELPER, values, DBController.COLUMN_ID + "=", new String[] { "1" }); } }