package cn.com.basic.face.service.sync;
|
|
import java.util.Date;
|
|
import cn.com.basic.face.service.InternetAccessThread.InternetAccess;
|
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() {
|
buildSyncChain();
|
while (true) {
|
try {
|
Date now = new Date();
|
double minutes = (now.getTime() - lastTime.getTime())*1.0 / 1000 / 60;
|
if (minutes >= 0.3) {
|
if (InternetAccess.getNetWorkInfo()) {
|
firstSync.setAllSyncComplete(false);
|
firstSync.sync();
|
lastTime = now;
|
}
|
} else {
|
Thread.sleep(10*1000);
|
}
|
} catch (Exception e) {
|
try {
|
Thread.sleep(10 * 1000);
|
} catch (Exception e2) {
|
e2.printStackTrace();
|
}
|
e.printStackTrace();
|
}
|
}
|
|
}
|
|
}
|