xuxiuxi
2017-07-25 8cdaa6689f3ff3c38afe2fd4f947df9814f69209
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
package cn.com.basic.face.util;
 
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;
    }
 
 
    @Override
    public void run() {
        firstSync = buildSyncChain();
        while (true) {
            try {
                firstSync.setAllSyncComplete(false);
                if (firstSync.lastUpSyncComplete()) {
                    firstSync.sync();
                    Thread.sleep(5 * 60 * 1000);
                } else {
                    Thread.sleep(10*1000);
                    return;
                }
            } catch (Exception e) {
                try {
                    Thread.sleep(30 * 1000);
                } catch (Exception e2) {
                    e2.printStackTrace();
                }
                e.printStackTrace();
            }
        }
 
    }
 
}