package com.example.wordbook.task; import java.util.List; import java.util.Map; import android.app.Activity; import android.content.ContentResolver; import android.database.sqlite.SQLiteDatabase; import android.net.Uri; import android.util.Log; import android.util.TimingLogger; import com.example.wordbook.common.Common; import com.example.wordbook.common.Message; import com.example.wordbook.provider.WBData; import com.example.wordbook.provider.WBHelper; import com.example.wordbook.provider.WBProvider; /** * 単語帳DB問題集削除タスク */ public class AsyncTaskDelete extends AsyncTaskBase { /** TAG */ private static final String TAG = AsyncTaskDelete.class.getSimpleName(); /** * コンストラクタ * * @param activity * アクティビティ * @param horizontal * 水平進捗バー表示設定 */ public AsyncTaskDelete(Activity activity, boolean horizontal) { super(activity, horizontal); } /* * (非 Javadoc) * * @see android.os.AsyncTask#onPreExecute() */ @Override protected void onPreExecute() { super.onPreExecute(); Log.d(TAG, "onPreExecute()"); } /* * (非 Javadoc) * * @see android.os.AsyncTask#onPostExecute(java.lang.Object) */ @Override protected void onPostExecute(Integer result) { // 処理成功 if (result > 0) { // 表示更新 if (mActivity instanceof OnAsyncTaskFinished) { ((OnAsyncTaskFinished) mActivity).onAsyncTaskFinished(); } // 成功通知 Message.show(mActivity, Message.ID.DELETE_COMPLETE); } else { // 失敗通知 Message.show(mActivity, Message.ID.DELETE_FAILED); } Log.d(TAG, "onPostExecute()=" + result); super.onPostExecute(result); } /* * (非 Javadoc) * * @see android.os.AsyncTask#doInBackground(Params[]) */ @Override protected Integer doInBackground(String... params) { Log.d(TAG, "doInBackground()"); int result = 0; // パラメータ取得 String data = ""; if (params == null || params.length == 0) { return result; } data = params[0]; // インデックス取得 List> list = Common.getWordbookPrefList(mActivity .getApplicationContext()); int index = 0; for (Map item : list) { if (item.get(Common.WORDBOOK_TITLE).equals(data)) { index = (Integer) item.get(Common.WORDBOOK_INDEX); break; } } if (index == 0) { return result; } // Indexの問題集削除 final int DB_MODE = 1; TimingLogger logger = new TimingLogger("dbg", "Delete()"); // 対象設定 String selection = WBData.InfoColumns.INFO_FILE + "=?"; String[] selectionArgs = { Integer.toString(index) }; switch (DB_MODE) { case 0: // by ContentProvider ContentResolver cr = mActivity.getContentResolver(); Uri uri = WBProvider.INFO_CONTENT_URI; result = cr.delete(uri, selection, selectionArgs); logger.addSplit("ContentProvider"); break; default: // by SQLiteOpenHelper WBHelper helper = WBHelper.getInstance(mActivity); SQLiteDatabase db = helper.getWritableDatabase(); result = db .delete(WBData.TABLE_NAME_INFO, selection, selectionArgs); db.close(); helper.close(); logger.addSplit("SQLiteOpenHelper"); break; } if (result > 0) { // 設定ファイル更新 Common.delWordbookPref(mActivity.getApplicationContext(), index); } // 処理時間計測 logger.dumpToLog(); return result; } }