package com.yeetou.xinyongkaguanjia.http.service;
import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import android.os.Handler;
import android.util.Log;
import com.yeetou.xinyongkaguanjia.constants.AppConstant;
import com.yeetou.xinyongkaguanjia.db.base.DbAccount;
import com.yeetou.xinyongkaguanjia.db.base.DbBankCard;
import com.yeetou.xinyongkaguanjia.db.base.DbCardBills;
import com.yeetou.xinyongkaguanjia.db.base.DbCardToBills;
import com.yeetou.xinyongkaguanjia.db.base.DbEmail;
import com.yeetou.xinyongkaguanjia.db.service.DbAccountService;
import com.yeetou.xinyongkaguanjia.db.service.DbBankCardService;
import com.yeetou.xinyongkaguanjia.db.service.DbBillsService;
import com.yeetou.xinyongkaguanjia.db.service.DbCardToBillService;
import com.yeetou.xinyongkaguanjia.db.service.DbEmailService;
import com.yeetou.xinyongkaguanjia.db.service.DbStreamService;
import com.yeetou.xinyongkaguanjia.http.base.DataSynBase;
import com.yeetou.xinyongkaguanjia.http.base.FdSynAtBase;
import com.yeetou.xinyongkaguanjia.http.base.FeedbackBase;
import com.yeetou.xinyongkaguanjia.http.base.HttpResponseEntity;
import com.yeetou.xinyongkaguanjia.http.base.StreamBase;
import com.yeetou.xinyongkaguanjia.http.base.FdSynAtBase.Id_list;
import com.yeetou.xinyongkaguanjia.info.SyncDataInfo;
import com.yeetou.xinyongkaguanjia.util.CheckNetwork;
import com.yeetou.xinyongkaguanjia.util.JsonUtil;
import com.yeetou.xinyongkaguanjia.util.StringUtil;
public class SyncData implements Runnable {
private Context context;
private Handler mHandler;
private String url;
private String email;
private String secret;
private int flag;
private DbBankCardService dbBankCardService;
private DbBillsService dbBillsService;
private DbStreamService dbStreamService;
private DbCardToBillService dbCardToBillService;
private DbEmailService dbEmailService;
private DbAccountService dbAccountService;
public SyncData(Context context, Handler mHandler, String email, String secret, int flag) {
this.context = context;
this.mHandler = mHandler;
this.url = AppConstant.HTTPURL.sysc_web;
this.email = email;
this.secret = secret;
this.flag = flag;
}
public void run() {
if (!CheckNetwork.Isavilable(context)) {
mHandler.sendEmptyMessage(AppConstant.HANDLER_MESSAGE_NONETWORK);
return;
}
SyncDataInfo syncDataInfo = new SyncDataInfo();
syncDataInfo.setVer("1.0");
syncDataInfo.setEmail(email);
syncDataInfo.setSecret(secret);
syncDataInfo.setForce_flag(flag);
HttpResponseEntity hre = HTTP.postByHttpUrlConnection(url, syncDataInfo);
switch (hre.getHttpResponseCode()) {
case 200:
try {
String json = StringUtil.byte2String(hre.getB());
DataSynBase dsb = (DataSynBase) JsonUtil.Json2Object(json, DataSynBase.class);
secret = dsb.getSecret();
if (dsb.getBook_data() != null) {
List<DbEmail> card_emails = dsb.getBook_data().getCard_emails();
List<DbBankCard> card_bank_cards = dsb.getBook_data().getCard_bank_cards();
List<StreamBase> card_streams = dsb.getBook_data().getCard_streams();
List<DbCardToBills> card_card_bills = dsb.getBook_data().getCard_card_bills();
List<DbCardBills> card_bills = dsb.getBook_data().getCard_bills();
FdSynAtBase feed = new FdSynAtBase();
feed.setEmail(email);
feed.setSecret(secret);
feed.setVer("1.0");
Id_list list = feed.new Id_list();
List<Integer> l1 = new ArrayList<Integer>();
List<Integer> l2 = new ArrayList<Integer>();
List<Integer> l3 = new ArrayList<Integer>();
List<Integer> l4 = new ArrayList<Integer>();
List<Integer> l5 = new ArrayList<Integer>();
if (card_emails != null && card_emails.size() != 0) {
dbEmailService = new DbEmailService(context);
dbEmailService.synSave(card_emails);
for (DbEmail temp : card_emails) {
l1.add(temp.getId());
}
}
list.setCard_emails(l1);
if (card_bank_cards != null && card_bank_cards.size() != 0) {
dbBankCardService = new DbBankCardService(context);
dbBankCardService.synSave(card_bank_cards);
for (DbBankCard temp : card_bank_cards) {
l2.add(temp.getId());
}
}
list.setCard_bank_cards(l2);
if (card_card_bills != null && card_card_bills.size() != 0) {
dbCardToBillService = new DbCardToBillService(context);
dbCardToBillService.synSave(card_card_bills);
for (DbCardToBills temp : card_card_bills) {
l3.add(temp.getId());
}
}
list.setCard_card_bills(l3);
if (card_bills != null && card_bills.size() != 0) {
dbBillsService = new DbBillsService(context);
dbBillsService.synSave(card_bills);
for (DbCardBills temp : card_bills) {
l4.add(temp.getId());
}
}
list.setCard_bills(l4);
if (card_streams != null && card_streams.size() != 0) {
dbStreamService = new DbStreamService(context);
dbStreamService.synSaveStreamBase(card_streams);
for (StreamBase temp : card_streams) {
l5.add(temp.getId());
}
}
list.setCard_streams(l5);
feed.setId_list(list);
url = AppConstant.HTTPURL.sysc_at;
hre = HTTP.postByHttpUrlConnection(url, feed);
if(hre.getHttpResponseCode()==200){
json = StringUtil.byte2String(hre.getB());
FeedbackBase fbb = (FeedbackBase) JsonUtil.Json2Object(json, FeedbackBase.class);
secret = fbb.getSecret();
if(fbb.getCode()==101){
dbAccountService = new DbAccountService(context);
DbAccount account = dbAccountService.get();
account.setSecret(secret);
dbAccountService.saveOrUpdate(account);
mHandler.sendMessage(mHandler.obtainMessage(AppConstant.HANDLER_MESSAGE_NORMAL, secret));
}else{
dbAccountService = new DbAccountService(context);
DbAccount account = dbAccountService.get();
account.setSecret(secret);
dbAccountService.saveOrUpdate(account);
mHandler.sendEmptyMessage(AppConstant.HANDLER_HTTPSTATUS_ERROR);
Log.e("SynData feed", fbb.getMsg());
}
}else{
dbAccountService = new DbAccountService(context);
DbAccount account = dbAccountService.get();
account.setSecret(secret);
dbAccountService.saveOrUpdate(account);
mHandler.sendEmptyMessage(AppConstant.HANDLER_HTTPSTATUS_ERROR);
}
}else{
dbAccountService = new DbAccountService(context);
DbAccount account = dbAccountService.get();
account.setSecret(secret);
dbAccountService.saveOrUpdate(account);
mHandler.sendMessage(mHandler.obtainMessage(AppConstant.HANDLER_MESSAGE_NORMAL, secret));
}
} catch (Exception e) {
mHandler.sendEmptyMessage(AppConstant.HANDLER_HTTPSTATUS_ERROR);
Log.e("SynData", "200", e);
}
break;
default:
mHandler.sendEmptyMessage(AppConstant.HANDLER_HTTPSTATUS_ERROR);
Log.d("SynData", "" + hre.getHttpResponseCode());
break;
}
}
}