package net.dev123.yibo.service.task;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.dev123.exception.LibException;
import net.dev123.yibo.common.Constants;
import net.dev123.yibo.common.YiBoMeUtil;
import net.dev123.yibo.db.ConfigAppDao;
import net.dev123.yibome.YiBoMe;
import net.dev123.yibome.entity.ConfigApp;
import android.app.Activity;
import android.os.AsyncTask;
import android.util.Log;
public class ConfigAppSyncTask extends AsyncTask<Void, Void, Boolean> {
private static final String TAG = ConfigAppSyncTask.class.getSimpleName();
private Activity context;
public ConfigAppSyncTask(Activity context) {
this.context = context;
}
@Override
protected void onPreExecute() {
}
@Override
protected Boolean doInBackground(Void... arg) {
boolean isSuccess = false;
ConfigAppDao configAppDao = new ConfigAppDao(context);
List<ConfigApp> localApps = configAppDao.findAll();
Map<String, ConfigApp> appMap = new HashMap<String, ConfigApp>();
if (localApps != null) {
for (ConfigApp app : localApps) {
appMap.put(app.getAppKey() + app.getServiceProviderNo(), app);
}
}
YiBoMe yiboMe = YiBoMeUtil.getYiBoMeOAuth(context);
if (yiboMe == null) {
return isSuccess;
}
try {
List<ConfigApp> remoteApps = yiboMe.getMyConfigApps();
ConfigApp tempApp = null;
String mapKey = null;
// 更新和新增AppKey
for (ConfigApp app : remoteApps) {
mapKey = app.getAppKey() + app.getServiceProviderNo();
tempApp = appMap.get(mapKey);
if (tempApp != null) {
tempApp.setAppName(app.getAppName());
tempApp.setAppSecret(app.getAppSecret());
tempApp.setAuthFlow(app.getAuthFlow());
tempApp.setAuthVersion(app.getAuthVersion());
configAppDao.update(tempApp);
appMap.remove(mapKey);
} else {
configAppDao.save(app);
}
}
// 删除剩余的AppKey
for (Map.Entry<String, ConfigApp> entry : appMap.entrySet()) {
configAppDao.delete(entry.getValue());
}
} catch (LibException e) {
if (Constants.DEBUG) {
Log.d(TAG, e.getMessage());
}
}
return isSuccess;
}
protected void onPostExecute(Boolean result) {
}
}