+ public void handleRegisterRequest(VESNotification vesNotification) {\r
+ try {\r
+ VesAgentUtils.validateVESNotification(vesNotification);\r
+ } catch (VesAgentException e) {\r
+ logger.error(\r
+ "Failed to create heartbeat timers for device on recieving bootstrap. ErrorMsg: {}",\r
+ e.getMessage());\r
+ return;\r
+ }\r
+\r
+ List<DeviceDataEntity> deviceDataEntityList = vesAgentServiceHelper.findByDeviceIdAndGroup(\r
+ vesNotification.getDevnotification().getDeviceDetails().getDeviceId(),\r
+ VesAgentConstants.HEART_BEAT);\r
+\r
+ if (Boolean.FALSE.equals(VesAgentUtils.isNullOrEmpty(deviceDataEntityList))) {\r
+ DeviceDataEntity deviceDataEntity = deviceDataEntityList.get(0);\r
+ String heartbeatPeriod =\r
+ deviceDataEntity.getAttributesMap().get(VesAgentConstants.HEART_BEAT_PERIOD);\r
+\r
+ if (!VesAgentUtils.isNullOrEmpty(heartbeatPeriod)\r
+ && !heartbeatPeriod.equalsIgnoreCase(VesAgentConstants.REMOVE_HEART_BEAT_TIMER_VAL)) {\r
+ return;\r
+ }\r
+ }\r
+\r
+ logger.info("Creating heartbeat records and timer using default heartbeatPeriod {} minutes.",\r
+ VesAgentConstants.HEART_BEAT_PERIOD_DEFAULT_VAL);\r
+\r
+ DeviceRPCRequest deviceRPCRequest = new DeviceRPCRequest();\r
+ deviceRPCRequest.setDeviceDetails(vesNotification.getDevnotification().getDeviceDetails());\r
+\r
+ OperationDetails opDetails = new OperationDetails();\r
+\r
+ ParameterDTO heartBeatPeriodParam = new ParameterDTO();\r
+ heartBeatPeriodParam.setParamName(VesAgentConstants.HEART_BEAT_PERIOD);\r
+ heartBeatPeriodParam.setParamValue(VesAgentConstants.HEART_BEAT_PERIOD_DEFAULT_VAL);\r
+\r
+ List<ParameterDTO> paramList = new ArrayList<>();\r
+ paramList.add(heartBeatPeriodParam);\r
+\r
+ opDetails.setParmeters(paramList);\r
+ deviceRPCRequest.setOpDetails(opDetails);\r
+\r
+ deviceRPCRequest.addContextParam(VesAgentConstants.ENODEB_NAME,\r
+ vesNotification.geteNodeBName());\r
+\r
+ handleSetConfigRequest(deviceRPCRequest);\r
+\r
+ }\r
+\r
+ public DeviceRPCResponse handleSetConfigRequest(DeviceRPCRequest deviceRPCRequest) {\r
+ try {\r
+ VesAgentUtils.validateDeviceRPCRequest(deviceRPCRequest);\r
+ } catch (VesAgentException e) {\r
+ return VesAgentUtils.getErrorResponse(deviceRPCRequest, e.getErrorCode(), e.getMessage());\r
+ }\r
+\r
+ OperationDetails operationDetails = deviceRPCRequest.getOpDetails();\r
+\r
+ String heartBeatPeriod = null;\r
+ String countDownTimer = null;\r
+\r
+ ParameterDTO countDownTimerDTO = null;\r
+\r
+ List<ParameterDTO> paramDTOList = operationDetails.getParmeters();\r
+ for (ParameterDTO paramDTO : paramDTOList) {\r
+ if (paramDTO.getParamName().equalsIgnoreCase(VesAgentConstants.HEART_BEAT_PERIOD)) {\r
+ heartBeatPeriod = paramDTO.getParamValue();\r
+ }\r
+\r
+ if (paramDTO.getParamName().equalsIgnoreCase(VesAgentConstants.COUNT_DOWN_TIMER)) {\r
+ countDownTimer = paramDTO.getParamValue();\r
+ countDownTimerDTO = paramDTO;\r
+ }\r
+ }\r
+\r
+ try {\r
+ vesAgentServiceHelper.processHeartBeatSetRequest(deviceRPCRequest, heartBeatPeriod,\r
+ countDownTimer);\r
+ } catch (VesAgentException e) {\r
+ return VesAgentUtils.getErrorResponse(deviceRPCRequest, e.getErrorCode(), e.getMessage());\r
+ }\r
+\r
+ copyHeartBeatPeriodToTimerForResponse(countDownTimerDTO, heartBeatPeriod);\r
+ return VesAgentUtils.getSuccessResponse(deviceRPCRequest);\r
+ }\r
+\r
+ private void copyHeartBeatPeriodToTimerForResponse(ParameterDTO countDownParam,\r
+ String heartBeatPeriod) {\r
+ if (null != countDownParam && !VesAgentUtils.isNullOrEmpty(heartBeatPeriod)) {\r
+ countDownParam.setParamValue(heartBeatPeriod);\r
+ }\r
+ }\r
+\r
+ public DeviceRPCResponse handleGetConfigRequest(DeviceRPCRequest deviceRPCRequest) {\r
+ try {\r
+ VesAgentUtils.validateDeviceRPCRequest(deviceRPCRequest);\r
+ } catch (VesAgentException e) {\r
+ return VesAgentUtils.getErrorResponse(deviceRPCRequest, e.getErrorCode(), e.getMessage());\r
+ }\r
+\r
+ vesAgentServiceHelper.processHeartBeatGetRequest(deviceRPCRequest);\r
+ return VesAgentUtils.getSuccessResponse(deviceRPCRequest);\r
+ }\r
+\r
+ public VESNotificationResponse handleDeleteConfigRequest(VESNotification vesNotification) {\r
+ try {\r
+ VesAgentUtils.validateDelVESNotification(vesNotification);\r
+ vesAgentServiceHelper.processHeartBeatDeleteRequest(vesNotification);\r
+ } catch (VesAgentException e) {\r
+ return new VESNotificationResponse(Integer.parseInt(e.getErrorCode()), e.getMessage());\r
+ } catch (Exception e) {\r
+ return new VESNotificationResponse(VesAgentConstants.RPC_FAILED, e.getMessage());\r
+ }\r
+\r
+ return new VESNotificationResponse(VesAgentConstants.RPC_SUCCESS, "success");\r
+ }\r
+\r
+ Event convertNotificationToVESEvent(DeviceDataEntity deviceDataEntity, int heartBeatPeriod) {\r