package com.mcxiaoke.minicat.service;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
import android.util.Log;
import com.mcxiaoke.minicat.AppContext;
import com.mcxiaoke.minicat.api.Api;
import com.mcxiaoke.minicat.api.Paging;
import com.mcxiaoke.minicat.controller.DataController;
import com.mcxiaoke.minicat.dao.model.UserColumns;
import com.mcxiaoke.minicat.dao.model.UserModel;
import com.mcxiaoke.minicat.util.NetworkHelper;
import java.util.List;
/**
* @author mcxiaoke
* @version 2.9 2012.02.24
*/
public class AutoCompleteService extends BaseIntentService {
private static final String TAG = AutoCompleteService.class.getSimpleName();
private static final String KEY_LAST_AUTO_COMPLETE_TIME = "auto_complete_last_sync_time";
private static final long SYNC_INTERVAL = 1000 * 3600 * 3;
public AutoCompleteService() {
super("AutoCompleteService");
}
public static void check(Context context) {
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context);
long lastSync = sp.getLong(KEY_LAST_AUTO_COMPLETE_TIME, 0);
long now = System.currentTimeMillis();
if (now - lastSync > SYNC_INTERVAL) {
Intent intent = new Intent(context, AutoCompleteService.class);
context.startService(intent);
sp.edit().putLong(KEY_LAST_AUTO_COMPLETE_TIME, now);
}
}
public void log(String message) {
Log.d(TAG, message);
}
@Override
protected void onHandleIntent(Intent intent) {
doWakefulWork(intent);
}
protected void doWakefulWork(Intent intent) {
doFetchAutoComplete();
}
private void doFetchAutoComplete() {
if (NetworkHelper.isNotConnected(this) || !AppContext.isVerified()) {
return;
}
Api api = AppContext.getApi();
Paging p = new Paging();
p.count = SyncService.MAX_USERS_COUNT;
p.page = 1;
boolean more = true;
while (more) {
List<UserModel> result = null;
try {
result = api.getFriends(AppContext.getAccount(), p);
} catch (Exception e) {
if (AppContext.DEBUG) {
Log.e(TAG, e.toString());
}
}
if (result != null && result.size() > 0) {
int size = result.size();
int insertedNums = getContentResolver().bulkInsert(
UserColumns.CONTENT_URI,
DataController.toContentValues(result));
if (AppContext.DEBUG) {
log("doFetchAutoComplete page==" + p.page + " size=" + size
+ " insert rows=" + insertedNums);
}
if (size < SyncService.MAX_USERS_COUNT || p.page >= 20) {
more = false;
}
} else {
more = false;
}
p.page++;
}
}
}