package net.basilwang.core; import net.basilwang.CheckCodeDialog; import net.basilwang.dao.CurriculumService; import net.basilwang.entity.Curriculum; import net.basilwang.enums.TAHelperDownloadPhrase; import android.app.Activity; import android.content.Context; import android.os.AsyncTask; import android.preference.PreferenceManager; import android.util.Log; import android.widget.Toast; public class CurriculumPreferenceTask extends AsyncTask<Integer, Integer, String> { static final String TAG = "CurriculumPreferenceTask"; private Context mContext; private CurriculumService curriculumService; String title; private int accountId; private String semesterIndex; private String semesterYear; private String semesterValue; int lastMileStone = 15; private int mileStoneInterval = 0; public CurriculumPreferenceTask(Context context) { curriculumService = new CurriculumService(context); mContext = context; semesterValue = PreferenceManager.getDefaultSharedPreferences(mContext) .getString("curriculum_semester_name", ""); } @Override protected void onPreExecute() { // ((Activity)mContext).setProgressBarVisibility(true); title = ((Activity) mContext).getTitle().toString(); super.onPreExecute(); } @Override protected String doInBackground(Integer... params) { accountId = params[0]; return HttpClient(params); } private String HttpClient(Integer... params) { OnDownloadProgressListener listener = new OnDownloadProgressListener() { @Override public void onDownloadProgress(int percent, int downloadedData, int total, TAHelperDownloadPhrase phrase) { publishProgress(percent, downloadedData, total, phrase.getValue()); } }; String[] cemesterSettings = semesterValue.split("\\|"); semesterYear = cemesterSettings[0]; semesterIndex = cemesterSettings[1]; return TAHelper.Instance().getCurriculumBySemesterIndex(semesterYear, semesterIndex, listener); } protected void onProgressUpdate(Integer... progress) { Log.i(TAG, "lastMileStone is " + String.valueOf(lastMileStone)); if (progress[3] > lastMileStone) { mileStoneInterval = progress[3] - lastMileStone; Log.i(TAG, String.valueOf(mileStoneInterval)); } int progressInterval = (int) (progress[0] * mileStoneInterval / 100); ((CheckCodeDialog) mContext).getProgressBar().setProgress( lastMileStone + progressInterval); if (progress[0] == 100) { lastMileStone = progress[3]; Log.i(TAG, "percent is 100 and lastMileStone is " + String.valueOf(lastMileStone)); } } protected void onPostExecute(String curriculumString) { Curriculum[] s = TAHelper.Instance().getCurriculums(curriculumString); if (s.length == 1) { Toast.makeText( mContext, "由以下原因可能造成无法查询课表\n" + "1.教务系统无法访问\n" + "2.该学期课程表为空\n" + "3.没有进行教务评价", Toast.LENGTH_LONG).show(); ((Activity) mContext).finish(); return; } curriculumService.delete(accountId, semesterValue); for (int i = 1; i < s.length; i++) { s[i].setMyid(accountId); s[i].setSemestername(semesterValue); curriculumService.save(s[i]); } ((CheckCodeDialog) mContext).finish(); ((CheckCodeDialog) mContext).getProgressBar().dismiss(); } }