package net.dev123.yibo.service.task;
import java.util.Calendar;
import net.dev123.yibo.R;
import net.dev123.yibo.YiBoApplication;
import net.dev123.yibo.common.Constants;
import net.dev123.yibo.common.StatusCatalog;
import net.dev123.yibo.db.DBHelper;
import android.content.Context;
import android.content.res.Resources;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.os.AsyncTask;
import android.util.Log;
public class StatusesCleanTask extends AsyncTask<Void, Void, Boolean> {
private static final String TAG = StatusesCleanTask.class.getSimpleName();
private Context context;
private YiBoApplication yibo;
public StatusesCleanTask(Context context){
this.context = context;
yibo = (YiBoApplication)context.getApplicationContext();
}
@Override
protected Boolean doInBackground(Void... arg0) {
int value = yibo.getCacheStrategy();
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_YEAR, - value + 1);
calendar.set(Calendar.HOUR, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
long time = calendar.getTimeInMillis();
Resources res = context.getResources();
String[] cleanSql = res.getStringArray(R.array.db_clean_status_sql);
String sql = String.format(cleanSql[0],
time, StatusCatalog.Home.getCatalogId(),
StatusCatalog.Others.getCatalogId(), time);
if (Constants.DEBUG) Log.d(TAG, sql);
SQLiteDatabase sqLiteDatabase = DBHelper.getInstance(context).getWritableDatabase();
boolean success = false;
try {
long startTime = System.currentTimeMillis();
sqLiteDatabase.execSQL(sql);
if (Constants.DEBUG) {
Log.v(TAG, "Statused Clean use time:" + (System.currentTimeMillis() - startTime));
}
success = true;
} catch (SQLException e) {
if (Constants.DEBUG) {
Log.d(TAG, e.getMessage(), e);
}
}
return success;
}
}