aa32275507f8c948a1569cdd87614e1dc39d8426
[oam/tr069-adapter.git] / ves-agent / src / main / java / org / commscope / tr069adapter / vesagent / timer / HeartBeatTimeoutTask.java
1 package org.commscope.tr069adapter.vesagent.timer;\r
2 \r
3 import java.util.List;\r
4 import java.util.concurrent.TimeUnit;\r
5 \r
6 import org.commscope.tr069adapter.vesagent.VesConfiguration;\r
7 import org.commscope.tr069adapter.vesagent.async.AsyncRequestHandler;\r
8 import org.commscope.tr069adapter.vesagent.controller.HeartBeatMessageHandler;\r
9 import org.commscope.tr069adapter.vesagent.entity.DeviceDataEntity;\r
10 import org.commscope.tr069adapter.vesagent.repository.VesDataRepository;\r
11 import org.commscope.tr069adapter.vesagent.util.VesAgentConstants;\r
12 import org.commscope.tr069adapter.vesagent.util.VesAgentUtils;\r
13 import org.slf4j.Logger;\r
14 import org.slf4j.LoggerFactory;\r
15 import org.springframework.beans.factory.annotation.Autowired;\r
16 \r
17 public class HeartBeatTimeoutTask implements Runnable {\r
18   private static final Logger logger = LoggerFactory.getLogger(HeartBeatTimeoutTask.class);\r
19 \r
20   @Autowired\r
21   VesDataRepository vesDataRepository;\r
22 \r
23   @Autowired\r
24   ScheduleTaskService timerService;\r
25 \r
26   @Autowired\r
27   AsyncRequestHandler asyncHandler;\r
28 \r
29   @Autowired\r
30   HeartBeatMessageHandler heartBeatMessageHandler;\r
31 \r
32   @Autowired\r
33   VesConfiguration config;\r
34 \r
35   private String deviceId;\r
36 \r
37   @Override\r
38   public void run() {\r
39     logger.debug("Timer task: checking device {} connectivity.", deviceId);\r
40     List<DeviceDataEntity> deviceDataEntityList =\r
41         vesDataRepository.findByDeviceIdAndAttrGroup(deviceId, VesAgentConstants.HEART_BEAT);\r
42 \r
43     if (VesAgentUtils.isNullOrEmpty(deviceDataEntityList)\r
44         || VesAgentUtils.isNullOrEmpty(deviceDataEntityList.get(0).getAttributesMap())) {\r
45       timerService.cancelSchedule(deviceId);\r
46       return;\r
47     }\r
48 \r
49     DeviceDataEntity deviceDataEntity = deviceDataEntityList.get(0);\r
50     String heartBeatPeriod =\r
51         deviceDataEntity.getAttributesMap().get(VesAgentConstants.HEART_BEAT_PERIOD);\r
52 \r
53     if (VesAgentUtils.isNullOrEmpty(heartBeatPeriod)\r
54         || heartBeatPeriod.equals(VesAgentConstants.REMOVE_HEART_BEAT_TIMER_VAL)) {\r
55       timerService.cancelSchedule(deviceId);\r
56       return;\r
57     }\r
58 \r
59     ScheduleInfo scheduleInfo = new ScheduleInfo();\r
60     scheduleInfo.setInterval(Integer.parseInt(heartBeatPeriod));\r
61     scheduleInfo.setTimeUnit(TimeUnit.MINUTES);\r
62 \r
63     timerService.schedule(deviceId, scheduleInfo, this);\r
64 \r
65     asyncHandler.initiateDeviceReachabilityCheck(deviceDataEntity);\r
66   }\r
67 \r
68   public HeartBeatTimeoutTask(String deviceId) {\r
69     super();\r
70     this.deviceId = deviceId;\r
71   }\r
72 \r
73   public String getDeviceId() {\r
74     return deviceId;\r
75   }\r
76 \r
77   public void setDeviceId(String deviceId) {\r
78     this.deviceId = deviceId;\r
79   }\r
80 }\r