package com.yeetou.xinyongkaguanjia.http.service;
import java.util.List;
import android.content.Context;
import android.os.Handler;
import android.os.Message;
import android.widget.Toast;
import com.yeetou.xinyongkaguanjia.constants.AppConstant;
import com.yeetou.xinyongkaguanjia.db.base.DbAccount;
import com.yeetou.xinyongkaguanjia.db.service.DbAccountService;
import com.yeetou.xinyongkaguanjia.http.base.EmailScanBase;
import com.yeetou.xinyongkaguanjia.http.base.MsgUploadBase;
import com.yeetou.xinyongkaguanjia.info.MsgInfo;
import com.yeetou.xinyongkaguanjia.util.CheckSMS;
public class AutoSyncData {
private Context context;
private DbAccountService dbAccountService;
private DbAccount dbaccout;
private String secret;
private long scanSmsTime;
private Handler mHandler;
public AutoSyncData(Context context, Handler mHandler) {
this.context = context;
this.mHandler = mHandler;
dbAccountService = new DbAccountService(context);
dbaccout = dbAccountService.get();
secret = dbaccout.getSecret();
scanSmsTime = dbaccout.getMsgscan_at();
new Thread(new CheckSMS(context, ScanSmsHandler, scanSmsTime)).start();
}
private Handler ScanSmsHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
switch (msg.what) {
case AppConstant.CHECK_MESSAGE_FINISH:
List<MsgInfo> msgInfos = (List<MsgInfo>) msg.obj;
if (msgInfos != null && msgInfos.size() != 0) {// 当查询的短信不为空的时候,保存并上传
// 上传短信
new Thread(new MsgUpload(context, UploadSmsHandler, msgInfos, secret, dbaccout.getEmail())).start();
} else {
new Thread(new EmailScanService(context, smailScanHandler, dbaccout.getEmail(), secret)).start();
}
break;
default:
new Thread(new EmailScanService(context, smailScanHandler, dbaccout.getEmail(), secret)).start();
break;
}
}
};
private Handler UploadSmsHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
MsgUploadBase msgUploadBase = (MsgUploadBase) msg.obj;
switch (msg.what) {
case AppConstant.HANDLER_MESSAGE_NORMAL:
secret = msgUploadBase.getSecret(); // 更新secret
dbaccout.setMsgscan_at(System.currentTimeMillis());
dbAccountService.saveOrUpdate(dbaccout);
new Thread(new EmailScanService(context, smailScanHandler, dbaccout.getEmail(), secret)).start();
break;
default:
new Thread(new EmailScanService(context, smailScanHandler, dbaccout.getEmail(), secret)).start();
break;
}
}
};
private Handler smailScanHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
EmailScanBase eScanBase = (EmailScanBase) msg.obj;
switch (msg.what) {
case AppConstant.HANDLER_MESSAGE_NORMAL:
secret = eScanBase.getSecret(); // 更新secret
dbAccountService.saveSecret(secret);
break;
default:
new Thread(new SyncData(context, SyncDatahandler, dbaccout.getEmail(), secret, 0)).start();
break;
}
new Thread(new SyncData(context, SyncDatahandler, dbaccout.getEmail(), secret, 0)).start();
}
};
private Handler SyncDatahandler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
mHandler.sendEmptyMessage(AppConstant.HANDLER_SYN_FINISH);
switch (msg.what) {
default:
mHandler.sendEmptyMessage(AppConstant.HANDLER_SYN_FINISH);
case AppConstant.HANDLER_MESSAGE_NORMAL:
Toast.makeText(context, "同步成功", Toast.LENGTH_SHORT).show();
break;
case AppConstant.HANDLER_MESSAGE_NONETWORK:
Toast.makeText(context, "同步失败。请稍候重试", Toast.LENGTH_SHORT).show();
break;
case AppConstant.HANDLER_MESSAGE_TIMEOUT:
Toast.makeText(context, "同步失败。请稍候重试", Toast.LENGTH_SHORT).show();
break;
case AppConstant.HANDLER_HTTPSTATUS_ERROR:
Toast.makeText(context, "同步失败。请稍候重试", Toast.LENGTH_SHORT).show();
break;
}
}
};
}