package cn.com.basic.face.util; import java.util.Date; 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 SyncUpAndDownThread extends Thread { public boolean isThisTimeSyncComplete = false; BaseSync firstSync; public BaseSync buildSyncChain() { //up firstSync = 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(); firstSync.setNext(companyUpSync); companyUpSync.setNext(deviceUpSync); deviceUpSync.setNext(visitorRegisterUpSync); visitorRegisterUpSync.setNext(attenderRegisterUpSync); attenderRegisterUpSync.setNext(checkInUpSync); checkInUpSync.setNext(offlineSurveillanceUpSync); // down AttendanceDownSync attendanceDownSync = AttendanceDownSync.getInstance(); CompanyDownSync companyDownSync = CompanyDownSync.getInstance(); DepartmentDownSync departmentDownSync = DepartmentDownSync.getInstance(); DeviceDownSync deviceDownSync = DeviceDownSync.getInstance(); DictionaryDownSync dictionaryDownSync = DictionaryDownSync.getInstance(); EmployeeDownSync employeeDownSync = EmployeeDownSync.getInstance(); PhoneCallDownSync phoneCallDownSync = PhoneCallDownSync.getInstance(); PostDownSync postDownSync = PostDownSync.getInstance(); RegisterDownSync registerDownSync = RegisterDownSync.getInstance(); VisitDetailDownSync visitDetailDownSync = VisitDetailDownSync.getInstance(); VisitDownSync visitDownSync = VisitDownSync.getInstance(); offlineSurveillanceUpSync.setNext(attendanceDownSync); attendanceDownSync.setNext(companyDownSync); companyDownSync.setNext(departmentDownSync); departmentDownSync.setNext(deviceDownSync); deviceDownSync.setNext(dictionaryDownSync); dictionaryDownSync.setNext(employeeDownSync); employeeDownSync.setNext(phoneCallDownSync); phoneCallDownSync.setNext(postDownSync); postDownSync.setNext(registerDownSync); registerDownSync.setNext(visitDetailDownSync); visitDetailDownSync.setNext(visitDownSync); return firstSync; } Date lastTime = new Date(); @Override public void run() { firstSync = buildSyncChain(); firstSync.setAllSyncComplete(false); firstSync.sync(); while (true) { try { Date now = new Date(); double minutes = (now.getTime() - lastTime.getTime())*1.0 / 1000 / 60; if (minutes >= 5) { firstSync.setAllSyncComplete(false); firstSync.sync(); lastTime = now; } else { Thread.sleep(10*1000); return; } } catch (Exception e) { try { Thread.sleep(30 * 1000); } catch (Exception e2) { e2.printStackTrace(); } e.printStackTrace(); } } } }