xuxiuxi
2017-07-25 c6bba5994bbc7e6fdb1841fbc97f90800f9dce0d
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/SyncUpAndDownThread.java
@@ -1,8 +1,24 @@
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;
@@ -14,26 +30,66 @@
    public BaseSync buildSyncChain() {
        VisitorRegisterUpSync visitorRegisterSync = VisitorRegisterUpSync.getInstance();
        AttenderRegisterUpSync attenderRegisterSync = AttenderRegisterUpSync.getInstance();
        visitorRegisterSync.setNext(attenderRegisterSync);
        CheckInUpSync checkInUpSync = CheckInUpSync.getInstance();
        attenderRegisterSync.setNext(checkInUpSync);
        //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);
        return visitorRegisterSync;
        // 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 {
                firstSync.setComplete(false);
                if (firstSync.lastUpSyncComplete()) {
                    Thread.sleep(5 * 60 * 1000);
                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;