VES Heartbeat and Software Management Feature
[oam/tr069-adapter.git] / mapper / src / main / java / org / commscope / tr069adapter / mapper / netconf / impl / NetConfRequestHandlerImpl.java
1 /*\r
2  * ============LICENSE_START========================================================================\r
3  * ONAP : tr-069-adapter\r
4  * =================================================================================================\r
5  * Copyright (C) 2020 CommScope Inc Intellectual Property.\r
6  * =================================================================================================\r
7  * This tr-069-adapter software file is distributed by CommScope Inc under the Apache License,\r
8  * Version 2.0 (the "License"); you may not use this file except in compliance with the License. You\r
9  * may obtain a copy of the License at\r
10  *\r
11  * http://www.apache.org/licenses/LICENSE-2.0\r
12  *\r
13  * This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,\r
14  * either express or implied. See the License for the specific language governing permissions and\r
15  * limitations under the License.\r
16  * ===============LICENSE_END=======================================================================\r
17  */\r
18 \r
19 package org.commscope.tr069adapter.mapper.netconf.impl;\r
20 \r
21 import java.util.ArrayList;\r
22 import java.util.List;\r
23 import java.util.Map;\r
24 \r
25 import org.commscope.tr069adapter.acs.common.DeviceRPCRequest;\r
26 import org.commscope.tr069adapter.acs.common.DeviceRPCResponse;\r
27 import org.commscope.tr069adapter.acs.common.OperationOptions;\r
28 import org.commscope.tr069adapter.acs.common.ParameterDTO;\r
29 import org.commscope.tr069adapter.acs.common.dto.TR069DeviceDetails;\r
30 import org.commscope.tr069adapter.acs.common.dto.TR069OperationCode;\r
31 import org.commscope.tr069adapter.acs.common.dto.TR069OperationDetails;\r
32 import org.commscope.tr069adapter.mapper.MOMetaData;\r
33 import org.commscope.tr069adapter.mapper.dao.DeviceOperationsDAO;\r
34 import org.commscope.tr069adapter.mapper.entity.DeviceOperationDetails;\r
35 import org.commscope.tr069adapter.mapper.model.ErrorCodeDetails;\r
36 import org.commscope.tr069adapter.mapper.model.NetConfRequest;\r
37 import org.commscope.tr069adapter.mapper.model.NetConfResponse;\r
38 import org.commscope.tr069adapter.mapper.model.NetConfServerDetails;\r
39 import org.commscope.tr069adapter.mapper.netconf.NetConfRequestHandler;\r
40 import org.commscope.tr069adapter.mapper.sync.SynchronizedRequestHandler;\r
41 import org.commscope.tr069adapter.mapper.util.ErrorCodeUtil;\r
42 import org.commscope.tr069adapter.mapper.util.FirwareUpgradeStatus;\r
43 import org.commscope.tr069adapter.mapper.util.MOMetaDataUtil;\r
44 import org.commscope.tr069adapter.mapper.util.MapperConstants;\r
45 import org.commscope.tr069adapter.mapper.util.MapperValidator;\r
46 import org.commscope.tr069adapter.mapper.util.NetconfToTr069MapperUtil;\r
47 import org.commscope.tr069adapter.mapper.ves.VESNotificationSender;\r
48 import org.slf4j.Logger;\r
49 import org.slf4j.LoggerFactory;\r
50 import org.springframework.beans.factory.annotation.Autowired;\r
51 import org.springframework.stereotype.Component;\r
52 import org.springframework.util.StringUtils;\r
53 import org.w3c.dom.Document;\r
54 import org.w3c.dom.Element;\r
55 \r
56 @Component\r
57 public class NetConfRequestHandlerImpl implements NetConfRequestHandler {\r
58 \r
59   private static final Logger LOG = LoggerFactory.getLogger(NetConfRequestHandlerImpl.class);\r
60   private static final String BOOLEAN_TRUE_VALUE = "1";\r
61   private static final String BOOLEAN_FALSE_VALUE = "0";\r
62   private static final String BOOLEAN_DATA_TYPE = "boolean";\r
63 \r
64   @Autowired\r
65   SynchronizedRequestHandler syncHandler;\r
66 \r
67   @Autowired\r
68   NetconfToTr069MapperUtil mapperUtil;\r
69 \r
70   @Autowired\r
71   MOMetaDataUtil metaDataUtil;\r
72 \r
73   @Autowired\r
74   private ErrorCodeUtil errorCodeUtil;\r
75 \r
76   @Autowired\r
77   VESNotificationSender vesnotiSender;\r
78 \r
79   @Autowired\r
80   DeviceOperationsDAO deviceOperDAO;\r
81 \r
82   @Override\r
83   public NetConfResponse handleSetConfigRequest(NetConfRequest netConfRequest) {\r
84     Element el = NetconfToTr069MapperUtil.convertStringToDocument(netConfRequest.getRequestXml());\r
85     NetConfResponse response = null;\r
86     DeviceRPCRequest deviceRPCRequest = NetconfToTr069MapperUtil.prepareTR069Request(\r
87         netConfRequest.getDeviceId(), el, "config", TR069OperationCode.SET_PARAMETER_VALUES);\r
88 \r
89     if (deviceRPCRequest == null) {\r
90       LOG.debug("There are no supported device parameters found for edit-config.");\r
91       return getEmptyResponse();\r
92     }\r
93     List<ParameterDTO> requestParams = deviceRPCRequest.getOpDetails().getParmeters();\r
94     List<ParameterDTO> filteredParams = new ArrayList<>();\r
95     List<ParameterDTO> vesRequestParams = new ArrayList<>();\r
96 \r
97     if (null != requestParams) {\r
98       for (ParameterDTO param : requestParams) {\r
99         if (null == param.getParamValue() || StringUtils.isEmpty(param.getParamValue())) {\r
100           continue;\r
101         }\r
102         if (isVesNotificationRequest(param)) {\r
103           vesRequestParams.add(param);\r
104         }\r
105         filteredParams.add(param);\r
106       }\r
107       deviceRPCRequest.getOpDetails().setParmeters(filteredParams);\r
108     }\r
109 \r
110     if (deviceRPCRequest.getOpDetails() == null\r
111         || deviceRPCRequest.getOpDetails().getParmeters().isEmpty()) {\r
112       LOG.debug("There are no device parameters found for edit-config.");\r
113       return getEmptyResponse();\r
114     } else if (deviceRPCRequest.getOpDetails() != null) {\r
115       deviceRPCRequest.getOpDetails()\r
116           .setParmeters(filteredSetParameters(deviceRPCRequest.getOpDetails().getParmeters()));\r
117       if (deviceRPCRequest.getOpDetails().getParmeters().isEmpty()) {\r
118         LOG.debug("There are no supported device parameters found for edit-config.");\r
119         return getEmptyResponse();\r
120       }\r
121     }\r
122 \r
123     handleBooleanParametersReverse(deviceRPCRequest.getOpDetails().getParmeters());\r
124     LOG.debug("Prepared NBI request for edit-config {}", deviceRPCRequest);\r
125 \r
126     DeviceRPCResponse deviceRPCResponseVes = null;\r
127     List<ParameterDTO> allParamList = deviceRPCRequest.getOpDetails().getParmeters();\r
128 \r
129     if (!vesRequestParams.isEmpty()) {\r
130       if (!MapperValidator.isCountDownTimerValid(vesRequestParams)) {\r
131         return getErrorResponse(MapperConstants.INVALID_PARAM_VAL_ERROR_CODE,\r
132             MapperConstants.INVALID_COUNT_DOWN_TIMER_MSG);\r
133       }\r
134 \r
135       deviceRPCRequest.getOpDetails().setParmeters(vesRequestParams);\r
136       deviceRPCResponseVes = vesnotiSender.sendEditConfigNotification(deviceRPCRequest);\r
137 \r
138       if (null == deviceRPCResponseVes) {\r
139         return getTimeOutResponse();\r
140       }\r
141     }\r
142 \r
143     allParamList.removeAll(vesRequestParams);\r
144 \r
145     DeviceRPCResponse deviceRPCResponseDevice = null;\r
146     if (null != allParamList && !allParamList.isEmpty()) {\r
147       deviceRPCRequest.getOpDetails().setParmeters(allParamList);\r
148       deviceRPCResponseDevice = syncHandler.performDeviceOperation(deviceRPCRequest);\r
149 \r
150       if (null == deviceRPCResponseDevice) {\r
151         return getTimeOutResponse();\r
152       }\r
153     }\r
154 \r
155     DeviceRPCResponse deviceRPCResponse =\r
156         mergeSetConfigDeviceRPCResponse(deviceRPCResponseVes, deviceRPCResponseDevice);\r
157     if (null == deviceRPCResponse) {\r
158       return getTimeOutResponse();\r
159     }\r
160     response = mapperUtil.getNetconfResponse(deviceRPCResponse, false);\r
161     return response;\r
162   }\r
163 \r
164   @Override\r
165   public NetConfResponse handleDelConfigRequest(NetConfRequest netConfRequest) {\r
166     Element el = NetconfToTr069MapperUtil.convertStringToDocument(netConfRequest.getRequestXml());\r
167     NetConfResponse response = null;\r
168     DeviceRPCRequest request = NetconfToTr069MapperUtil.prepareTR069Request(\r
169         netConfRequest.getDeviceId(), el, "config", TR069OperationCode.DELETE_OBJECT);\r
170 \r
171     if (request == null) {\r
172       LOG.debug("There are no supported device parameters found for delete-config.");\r
173       return getEmptyResponse();\r
174     }\r
175 \r
176     List<ParameterDTO> requestParams = request.getOpDetails().getParmeters();\r
177     List<ParameterDTO> filteredParams = new ArrayList<>();\r
178     if (null != requestParams) {\r
179       for (ParameterDTO param : requestParams) {\r
180         filteredParams.add(param);\r
181       }\r
182       request.getOpDetails().setParmeters(filteredParams);\r
183     }\r
184 \r
185     if (request.getOpDetails() == null || request.getOpDetails().getParmeters().isEmpty()) {\r
186       LOG.debug("There are no device parameters found for delete-config.");\r
187       return getEmptyResponse();\r
188     } else if (request.getOpDetails() != null) {\r
189       request.getOpDetails()\r
190           .setParmeters(filteredSetParameters(request.getOpDetails().getParmeters()));\r
191       if (request.getOpDetails().getParmeters().isEmpty()) {\r
192         LOG.debug("There are no supported device parameters found for delete-config.");\r
193         return getEmptyResponse();\r
194       }\r
195     }\r
196     LOG.debug("Prepared NBI request for delete-config {}", request);\r
197 \r
198     DeviceRPCResponse opResult;\r
199     opResult = syncHandler.performDeviceOperation(request);\r
200     if (null == opResult) {\r
201       return getTimeOutResponse();\r
202     }\r
203     response = mapperUtil.getNetconfResponse(opResult, false);\r
204     return response;\r
205   }\r
206 \r
207   @Override\r
208   public NetConfResponse handleGetRequest(NetConfRequest netConfRequest) {\r
209     Element el = NetconfToTr069MapperUtil.convertStringToDocument(netConfRequest.getRequestXml());\r
210     NetConfResponse response = null;\r
211     DeviceRPCRequest request = NetconfToTr069MapperUtil.prepareTR069Request(\r
212         netConfRequest.getDeviceId(), el, "filter", TR069OperationCode.GET_PARAMETER_VALUES);\r
213 \r
214     if (request == null || request.getOpDetails() == null\r
215         || request.getOpDetails().getParmeters().isEmpty()) {\r
216       LOG.debug("There are no device parameters found for get.");\r
217       return getEmptyResponse();\r
218     } else if (request.getOpDetails() != null) {\r
219 \r
220       request.getOpDetails()\r
221           .setParmeters(filteredGetParameters(request.getOpDetails().getParmeters()));\r
222 \r
223       if (request.getOpDetails().getParmeters().isEmpty()) {\r
224         LOG.debug("There are no supported device parameters found for get.");\r
225         return getEmptyResponse();\r
226       }\r
227     }\r
228     LOG.debug("Prepared NBI request for get {}", request);\r
229 \r
230     DeviceRPCResponse opResult;\r
231     opResult = syncHandler.performDeviceOperation(request);\r
232     if (null == opResult) {\r
233       return getTimeOutResponse();\r
234     }\r
235     response = mapperUtil.getNetconfResponse(opResult, false);\r
236     return response;\r
237   }\r
238 \r
239   @Override\r
240   public NetConfResponse handleGetConfigRequest(NetConfRequest netConfRequest) {\r
241     Element el = NetconfToTr069MapperUtil.convertStringToDocument(netConfRequest.getRequestXml());\r
242     NetConfResponse response = null;\r
243     List<ParameterDTO> vesRequestParams = new ArrayList<>();\r
244 \r
245     boolean isSoftwareInventory = false;\r
246     if (netConfRequest.getRequestXml().contains("software-inventory")) {\r
247       LOG.info("XML Contains software-inventory");\r
248       isSoftwareInventory = true;\r
249     }\r
250 \r
251     DeviceRPCRequest request = NetconfToTr069MapperUtil.prepareTR069Request(\r
252         netConfRequest.getDeviceId(), el, "filter", TR069OperationCode.GET_PARAMETER_VALUES);\r
253 \r
254     if (request == null || request.getOpDetails() == null\r
255         || request.getOpDetails().getParmeters().isEmpty()) {\r
256       LOG.debug("There are no device parameters found for get-config.");\r
257       return getEmptyResponse();\r
258     } else if (request.getOpDetails() != null) {\r
259       request.getOpDetails()\r
260           .setParmeters(filteredGetParameters(request.getOpDetails().getParmeters()));\r
261 \r
262       if (request.getOpDetails().getParmeters().isEmpty()) {\r
263         LOG.debug("There are no supported device parameters found for get-config.");\r
264         return getEmptyResponse();\r
265       }\r
266       for (ParameterDTO param : request.getOpDetails().getParmeters()) {\r
267         if (isVesNotificationRequest(param)) {\r
268           vesRequestParams.add(param);\r
269         }\r
270       }\r
271     }\r
272     LOG.debug("Prepared NBI request for get-config {}", request);\r
273 \r
274     DeviceRPCResponse opResultVes = null;\r
275     List<ParameterDTO> allParamList = request.getOpDetails().getParmeters();\r
276 \r
277     if (!vesRequestParams.isEmpty()) {\r
278       request.getOpDetails().setParmeters(vesRequestParams);\r
279       opResultVes = vesnotiSender.sendGetConfigNotification(request);\r
280 \r
281       if (null == opResultVes) {\r
282         return getTimeOutResponse();\r
283       }\r
284     }\r
285 \r
286 \r
287     allParamList.removeAll(vesRequestParams);\r
288 \r
289     DeviceRPCResponse opResultDevice = null;\r
290     if (!allParamList.isEmpty()) {\r
291       request.getOpDetails().setParmeters(allParamList);\r
292       opResultDevice = syncHandler.performDeviceOperation(request);\r
293 \r
294       if (null == opResultDevice) {\r
295         return getTimeOutResponse();\r
296       }\r
297     }\r
298 \r
299     DeviceRPCResponse opResult = mergeGetConfigDeviceRPCResponse(opResultVes, opResultDevice);\r
300 \r
301     if (null == opResult) {\r
302       return getTimeOutResponse();\r
303     }\r
304     LOG.debug("Received GPV response : FaultKey = " + opResult.getFaultKey() + ", FaultString = "\r
305         + opResult.getFaultString() + ", Parameters :"\r
306         + opResult.getOperationResponse().getParameterDTOs());\r
307     if (null != opResult.getOperationResponse().getParameterDTOs())\r
308       handleBooleanParameters(opResult.getOperationResponse().getParameterDTOs());\r
309 \r
310     if (isSoftwareInventory) {\r
311       response = mapperUtil.getNetconfResponseForSoftwareInventory(opResult);\r
312     } else {\r
313       response = mapperUtil.getNetconfResponse(opResult, false);\r
314     }\r
315 \r
316     if (opResult.getFaultKey() != null && opResult.getFaultKey().equalsIgnoreCase("9005")) {\r
317       // check for tabular\r
318       LOG.debug("Tabualr Entry not exist in the device; we need to add it now");\r
319       MOMetaData data = metaDataUtil\r
320           .getMetaDataByTR69Name(request.getOpDetails().getParmeters().get(0).getParamName());\r
321       if (data.isTabluarObj()) {\r
322         return getEmptyResponse();\r
323       }\r
324     }\r
325 \r
326     return response;\r
327   }\r
328 \r
329   @Override\r
330   public NetConfResponse handleSWDownloadRequest(NetConfRequest request) {\r
331     LOG.debug("request received fro sw-download");\r
332     Document d1 = NetconfToTr069MapperUtil.convertStringToDocumentXml(request.getRequestXml());\r
333     NetConfResponse response = null;\r
334     Map<String, String> map =\r
335         NetconfToTr069MapperUtil.extractRequestParamters(d1, "rpc", "software-download");\r
336     if (map == null || map.size() <= 0) {\r
337       LOG.debug("There are no device parameters found for get.");\r
338       return getEmptyResponse();\r
339     }\r
340 \r
341     TR069OperationDetails opDetails = new TR069OperationDetails();\r
342     DeviceRPCRequest deviceRPCRequest = new DeviceRPCRequest();\r
343     TR069DeviceDetails tr069DeviceDetails = new TR069DeviceDetails();\r
344     tr069DeviceDetails.setDeviceId(request.getDeviceId());\r
345     deviceRPCRequest.setOpDetails(opDetails);\r
346     deviceRPCRequest.setDeviceDetails(tr069DeviceDetails);\r
347     OperationOptions options = new OperationOptions();\r
348     options.setExecutionTimeout(60l);\r
349     deviceRPCRequest.setOptions(options);\r
350     String fileName = map.get("rpc.software-download.remote-file-path");\r
351     String password = map.get("rpc.software-download.password.password");\r
352 \r
353     if (fileName == null || password == null || getDownloadFileURI(fileName) == null\r
354         || getDownloadUserName(fileName) == null) {\r
355       LOG.error(\r
356           "remote-file-path value is not as per yang model reference. Allowed pattern sftp://<username>@<host>[:<port>]/path");\r
357       return getOperationAbortedResponse(\r
358           "remote-file-path value is not as per yang model reference. Allowed pattern sftp://<username>@<host>[:<port>]/path");\r
359     }\r
360 \r
361     List<ParameterDTO> paramDTOList = new ArrayList<>();\r
362     paramDTOList.add(new ParameterDTO("FileType", "1 Firmware Upgrade Image"));\r
363     paramDTOList.add(new ParameterDTO("URL", getDownloadFileURI(fileName)));\r
364     paramDTOList.add(new ParameterDTO("Username", getDownloadUserName(fileName)));\r
365     paramDTOList.add(new ParameterDTO("Password", password));\r
366     paramDTOList.add(new ParameterDTO("FileSize", "0"));\r
367     paramDTOList.add(new ParameterDTO("TargetFileName", ""));\r
368     paramDTOList.add(new ParameterDTO("DelaySeconds", "1"));\r
369     paramDTOList.add(new ParameterDTO("SuccessURL", ""));\r
370     paramDTOList.add(new ParameterDTO("FailureURL", ""));\r
371 \r
372     deviceRPCRequest.getOpDetails().setParmeters(paramDTOList);\r
373     deviceRPCRequest.getOpDetails().setOpCode(TR069OperationCode.DOWNLOAD);\r
374 \r
375     LOG.debug("Prepared NBI request for download " + deviceRPCRequest);\r
376 \r
377     DeviceOperationDetails fwDetails = deviceOperDAO.findByDeviceId(request.getDeviceId());\r
378     if (fwDetails == null) {\r
379       String errorMsg = "TR069 device request has been aborted,due to device not identified";\r
380       return getOperationAbortedResponse(errorMsg);\r
381     }\r
382 \r
383     if (fwDetails.getDownLoadStatus() != FirwareUpgradeStatus.DOWNLOAD_INTIATED.getStatus()\r
384         && fwDetails.getDownLoadStatus() != FirwareUpgradeStatus.DOWNLOAD_COMPLETED.getStatus()) {\r
385 \r
386       LOG.debug("persisting the fw details " + fwDetails.toString());\r
387 \r
388       DeviceRPCResponse opResult;\r
389       opResult = syncHandler.performDeviceOperation(deviceRPCRequest);\r
390       if (null == opResult) {\r
391         return getTimeOutResponse();\r
392       }\r
393       fwDetails.setFileName(fileName);\r
394       fwDetails.setDownLoadStatus(FirwareUpgradeStatus.DOWNLOAD_INTIATED.getStatus());\r
395       deviceOperDAO.save(fwDetails);\r
396       ArrayList<ParameterDTO> responseParamDTOList = new ArrayList<>();\r
397 \r
398       if (opResult.getOperationResponse().getStatus() == 1) {\r
399         responseParamDTOList.add(new ParameterDTO("rpc-reply.ns1:status", "STARTED"));\r
400       } else {\r
401         responseParamDTOList.add(new ParameterDTO("rpc-reply.ns1:status", "FAILED"));\r
402         responseParamDTOList\r
403             .add(new ParameterDTO("rpc-reply.ns1:error-message", opResult.getFaultString()));\r
404       }\r
405       responseParamDTOList.add(new ParameterDTO("rpc-reply.ns1:notification-timeout", "1200"));\r
406 \r
407       opResult.getOperationResponse().setParameterDTOs(responseParamDTOList);\r
408       response = mapperUtil.getNetconfResponse(opResult, true);\r
409 \r
410       LOG.debug("update the status for fw details " + fwDetails.toString());\r
411     } else {\r
412       LOG.debug("FirmWare Upgrade is in progress");\r
413       String errorMsg = "TR069 device request has been aborted as Firmware Upgrade is inProgress";\r
414       return getOperationAbortedResponse(errorMsg);\r
415     }\r
416 \r
417     return response;\r
418   }\r
419 \r
420   private DeviceRPCResponse mergeGetConfigDeviceRPCResponse(DeviceRPCResponse opResultVes,\r
421       DeviceRPCResponse opResultDevice) {\r
422     if (null == opResultVes) {\r
423       return opResultDevice;\r
424     }\r
425 \r
426     if (null == opResultDevice) {\r
427       return opResultVes;\r
428     }\r
429 \r
430     if (null != opResultVes.getFaultKey()\r
431         && !opResultVes.getFaultKey().equals(MapperConstants.RPC_SUCCESS)) {\r
432       return opResultVes;\r
433     } else if (null != opResultDevice.getFaultKey()\r
434         && !opResultDevice.getFaultKey().equals(MapperConstants.RPC_SUCCESS)) {\r
435       return opResultDevice;\r
436     }\r
437 \r
438     opResultDevice.getOperationResponse().getParameterDTOs()\r
439         .addAll(opResultVes.getOperationResponse().getParameterDTOs());\r
440     return opResultDevice;\r
441   }\r
442 \r
443   private DeviceRPCResponse mergeSetConfigDeviceRPCResponse(DeviceRPCResponse opResultVes,\r
444       DeviceRPCResponse opResultDevice) {\r
445     if (null == opResultVes) {\r
446       return opResultDevice;\r
447     }\r
448 \r
449     if (null == opResultDevice) {\r
450       return opResultVes;\r
451     }\r
452 \r
453     return opResultDevice;\r
454   }\r
455 \r
456   private boolean isVesNotificationRequest(ParameterDTO param) {\r
457     if (null == param.getParamName() || param.getParamName().isEmpty()) {\r
458       return false;\r
459     }\r
460 \r
461     if (param.getParamName().toLowerCase().contains(MapperConstants.HEART_BEAT_PERIOD.toLowerCase())\r
462         || param.getParamName().toLowerCase()\r
463             .contains(MapperConstants.COUNT_DOWN_TIMER.toLowerCase())\r
464         || param.getParamName().toLowerCase().contains(MapperConstants.HEART_BEAT.toLowerCase())) {\r
465       return true;\r
466     }\r
467 \r
468     return false;\r
469   }\r
470 \r
471   private void handleBooleanParameters(List<ParameterDTO> parameterDTOs) {\r
472 \r
473     for (ParameterDTO param : parameterDTOs) {\r
474       MOMetaData metaData = metaDataUtil.getMetaDataByTR69Name(param.getParamName());\r
475       if (null != metaData && BOOLEAN_DATA_TYPE.equalsIgnoreCase(metaData.getDataType())) {\r
476         if (BOOLEAN_TRUE_VALUE.equalsIgnoreCase(param.getParamValue().trim())) {\r
477           param.setParamValue(Boolean.TRUE.toString());\r
478         } else if (BOOLEAN_FALSE_VALUE.equalsIgnoreCase(param.getParamValue().trim())) {\r
479           param.setParamValue(Boolean.FALSE.toString());\r
480         }\r
481       }\r
482     }\r
483   }\r
484 \r
485   private void handleBooleanParametersReverse(List<ParameterDTO> parameterDTOs) {\r
486 \r
487     for (ParameterDTO param : parameterDTOs) {\r
488       MOMetaData metaData = metaDataUtil.getMetaDataByTR69Name(param.getParamName());\r
489       if (null != metaData && BOOLEAN_DATA_TYPE.equalsIgnoreCase(metaData.getDataType())) {\r
490         if (Boolean.TRUE.toString().equalsIgnoreCase(param.getParamValue().trim())) {\r
491           param.setParamValue(BOOLEAN_TRUE_VALUE);\r
492         } else if (Boolean.FALSE.toString().equalsIgnoreCase(param.getParamValue().trim())) {\r
493           param.setParamValue(BOOLEAN_FALSE_VALUE);\r
494         }\r
495       }\r
496     }\r
497   }\r
498 \r
499   private NetConfResponse getEmptyResponse() {\r
500     NetConfResponse response = new NetConfResponse();\r
501     ErrorCodeDetails errorCodeMetaData = errorCodeUtil.getErrorCodeMetaData("0");\r
502     ErrorCodeDetails errorCode = new ErrorCodeDetails();\r
503     errorCode.setFaultCode("0");\r
504     errorCode.setErrorMessage(errorCodeMetaData.getErrorMessage());\r
505     errorCode.setErrorType(errorCodeMetaData.getErrorType());\r
506     errorCode.setErrorTag(errorCodeMetaData.getErrorTag());\r
507     errorCode.setErrorSeverity(errorCodeMetaData.getErrorSeverity());\r
508     response.setErrorCode(errorCode);\r
509     return response;\r
510   }\r
511 \r
512   private NetConfResponse getTimeOutResponse() {\r
513     // prepare timeout error response\r
514     NetConfResponse timeOutErrorResponse = new NetConfResponse();\r
515     ErrorCodeDetails errorCode = new ErrorCodeDetails();\r
516     ErrorCodeDetails errorCodeMetaData = errorCodeUtil.getErrorCodeMetaData("8006");\r
517 \r
518     errorCode.setFaultCode("8006");\r
519     errorCode.setErrorMessage(errorCodeMetaData.getErrorMessage());\r
520     errorCode.setErrorType(errorCodeMetaData.getErrorType());\r
521     errorCode.setErrorTag(errorCodeMetaData.getErrorTag());\r
522     errorCode.setErrorSeverity(errorCodeMetaData.getErrorSeverity());\r
523     timeOutErrorResponse.setErrorCode(errorCode);\r
524     timeOutErrorResponse.setErrorMessage("TR069 device request has been timed out.");\r
525     return timeOutErrorResponse;\r
526   }\r
527 \r
528   private NetConfResponse getErrorResponse(String errCode, String errorMsg) {\r
529     NetConfResponse errorResponse = new NetConfResponse();\r
530     ErrorCodeDetails errorCode = new ErrorCodeDetails();\r
531     ErrorCodeDetails errorCodeMetaData = errorCodeUtil.getErrorCodeMetaData("8006");\r
532     if (errorCodeMetaData != null) {\r
533       errorCode.setFaultCode(errCode);\r
534       errorCode.setErrorMessage(errorCodeMetaData.getErrorMessage());\r
535       errorCode.setErrorType(errorCodeMetaData.getErrorType());\r
536       errorCode.setErrorTag(errorCodeMetaData.getErrorTag());\r
537       errorCode.setErrorSeverity(errorCodeMetaData.getErrorSeverity());\r
538     }\r
539     errorResponse.setErrorCode(errorCode);\r
540     errorResponse.setErrorMessage(errorMsg);\r
541     return errorResponse;\r
542   }\r
543 \r
544   private NetConfResponse getOperationAbortedResponse(String errorMessage) {\r
545     // prepare timeout error response\r
546     NetConfResponse timeOutErrorResponse = new NetConfResponse();\r
547     ErrorCodeDetails errorCode = new ErrorCodeDetails();\r
548     ErrorCodeDetails errorCodeMetaData = errorCodeUtil.getErrorCodeMetaData("8006");\r
549     if (errorCode != null) {\r
550       errorCode.setFaultCode("8002");\r
551       errorCode.setErrorMessage(errorCodeMetaData.getErrorMessage());\r
552       errorCode.setErrorType(errorCodeMetaData.getErrorType());\r
553       errorCode.setErrorTag(errorCodeMetaData.getErrorTag());\r
554       errorCode.setErrorSeverity(errorCodeMetaData.getErrorSeverity());\r
555     }\r
556     timeOutErrorResponse.setErrorCode(errorCode);\r
557     timeOutErrorResponse.setErrorMessage(errorMessage);\r
558     return timeOutErrorResponse;\r
559   }\r
560 \r
561   public List<ParameterDTO> filteredSetParameters(List<ParameterDTO> parameters) {\r
562     List<ParameterDTO> result = new ArrayList<>();\r
563     for (ParameterDTO param : parameters) {\r
564       MOMetaData metaData = metaDataUtil.getMetaDataByNetConfName(param.getParamName());\r
565       if (null != metaData && !metaData.isReadOnly()) {\r
566         String tr069MoName =\r
567             MOMetaDataUtil.getTR69MOByReplacingIndexes(param.getParamName(), metaData.getMoName());\r
568         param.setDataType(metaData.getDataType());\r
569         param.setParamName(tr069MoName);\r
570         result.add(param);\r
571       }\r
572     }\r
573     return result;\r
574   }\r
575 \r
576   private List<ParameterDTO> filteredGetParameters(List<ParameterDTO> parameters) {\r
577 \r
578     return metaDataUtil.getSupportedChildParameters(parameters);\r
579   }\r
580 \r
581   @Override\r
582   public boolean handelRegisterEvent(NetConfServerDetails request) {\r
583     LOG.debug("processing the handelRegisterEvent started");\r
584     boolean result = false;\r
585     try {\r
586       vesnotiSender.sendNotification(null, request);\r
587     } catch (Exception e) {\r
588       LOG.error("processing the handelRegisterEvent exception occurred");\r
589       result = false;\r
590     }\r
591     LOG.debug("processing the handelRegisterEvent completed");\r
592     return result;\r
593   }\r
594 \r
595   private static String getDownloadFileURI(String filepath) {\r
596 \r
597     if (filepath.contains("@") && filepath.contains("//")) {\r
598       String[] str = filepath.split("@");\r
599       String[] strForUserName = str[0].split("//");\r
600       if (str.length > 1) {\r
601         String Url = strForUserName[0] + "//" + str[1];\r
602         return Url;\r
603       }\r
604     }\r
605     return null;\r
606   }\r
607 \r
608   private static String getDownloadUserName(String filepath) {\r
609 \r
610     if (filepath.contains("@") && filepath.contains("//")) {\r
611       String[] str = filepath.split("@");\r
612       String[] strForUserName = str[0].split("//");\r
613       if (strForUserName.length > 1)\r
614         return strForUserName[1];\r
615     }\r
616     return null;\r
617   }\r
618 }\r