package cn.com.basic.face.service.sync; import java.util.Date; import cn.com.basic.face.base.BaseApplication; import cn.com.basic.face.service.sync.down.AttendanceDownSync; import cn.com.basic.face.service.sync.down.CompanyDownSync; import cn.com.basic.face.service.sync.down.DepartmentDownSync; import cn.com.basic.face.service.sync.down.DeviceDownSync; import cn.com.basic.face.service.sync.down.DictionaryDownSync; import cn.com.basic.face.service.sync.down.EmployeeDownSync; import cn.com.basic.face.service.sync.down.PhoneCallDownSync; import cn.com.basic.face.service.sync.down.PostDownSync; import cn.com.basic.face.service.sync.down.RegisterDownSync; import cn.com.basic.face.service.sync.down.VisitDetailDownSync; import cn.com.basic.face.service.sync.down.VisitDownSync; import cn.com.basic.face.service.sync.up.AttenderRegisterUpSync; import cn.com.basic.face.service.sync.up.BaseSync; import cn.com.basic.face.service.sync.up.CheckInUpSync; import cn.com.basic.face.service.sync.up.CompanyUpSync; import cn.com.basic.face.service.sync.up.DeviceUpSync; import cn.com.basic.face.service.sync.up.DictionaryUpSync; import cn.com.basic.face.service.sync.up.OfflineSurveillanceUpSync; import cn.com.basic.face.service.sync.up.VisitorRegisterUpSync; public class SyncUpThread extends Thread { BaseSync firstUpSync; public void buildSyncChain() { //up firstUpSync = DictionaryUpSync.getInstance(); DeviceUpSync deviceUpSync = DeviceUpSync.getInstance(); CompanyUpSync companyUpSync = CompanyUpSync.getInstance(); VisitorRegisterUpSync visitorRegisterUpSync = VisitorRegisterUpSync.getInstance(); AttenderRegisterUpSync attenderRegisterUpSync = AttenderRegisterUpSync.getInstance(); OfflineSurveillanceUpSync offlineSurveillanceUpSync = OfflineSurveillanceUpSync.getInstance(); CheckInUpSync checkInUpSync = CheckInUpSync.getInstance(); firstUpSync.setNext(companyUpSync); companyUpSync.setNext(deviceUpSync); deviceUpSync.setNext(visitorRegisterUpSync); visitorRegisterUpSync.setNext(attenderRegisterUpSync); attenderRegisterUpSync.setNext(checkInUpSync); checkInUpSync.setNext(offlineSurveillanceUpSync); } Date lastTime = new Date(); @Override public void run() { buildSyncChain(); while (true) { try { Date now = new Date(); double minutes = (now.getTime() - lastTime.getTime())*1.0 / 1000 / 60; if (minutes >= 0.3) { if (BaseApplication.getInstance().networkAvailable()) { firstUpSync.setAllSyncComplete(false); firstUpSync.sync(); lastTime = now; } } else { Thread.sleep(10*1000); } } catch (Exception e) { try { Thread.sleep(10 * 1000); } catch (Exception e2) { e2.printStackTrace(); } e.printStackTrace(); } } } }