5b36b88a214fbcb6772712b9ef710fe0f9e59ab1
[oam/tr069-adapter.git] / acs / requestprocessor / src / main / java / org / commscope / tr069adapter / acs / requestprocessor / custom / ConfigureMultipleObject.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.acs.requestprocessor.custom;\r
20 \r
21 import static org.commscope.tr069adapter.acs.common.utils.AcsConstants.NUMBER_REGEX;\r
22 import static org.commscope.tr069adapter.acs.common.utils.AcsConstants.SUCCESS;\r
23 import java.util.ArrayList;\r
24 import java.util.List;\r
25 import java.util.regex.Matcher;\r
26 import java.util.regex.Pattern;\r
27 import org.commscope.tr069adapter.acs.common.DeviceRPCRequest;\r
28 import org.commscope.tr069adapter.acs.common.DeviceRPCResponse;\r
29 import org.commscope.tr069adapter.acs.common.OperationDetails;\r
30 import org.commscope.tr069adapter.acs.common.OperationResponse;\r
31 import org.commscope.tr069adapter.acs.common.ParameterDTO;\r
32 import org.commscope.tr069adapter.acs.common.dto.TR069DeviceDetails;\r
33 import org.commscope.tr069adapter.acs.common.dto.TR069OperationCode;\r
34 import org.commscope.tr069adapter.acs.common.dto.TR069OperationDetails;\r
35 import org.commscope.tr069adapter.acs.common.exception.TR069EventProcessingException;\r
36 import org.commscope.tr069adapter.acs.common.response.AddObjectResponse;\r
37 import org.commscope.tr069adapter.acs.common.response.DeleteObjectResponse;\r
38 import org.commscope.tr069adapter.acs.common.response.GetParameterValueResponse;\r
39 import org.commscope.tr069adapter.acs.common.response.SetParameterValueResponse;\r
40 import org.commscope.tr069adapter.acs.requestprocessor.dao.DeviceRPCRequestRepositoryHelper;\r
41 import org.commscope.tr069adapter.acs.requestprocessor.dto.CustomOperationData;\r
42 import org.commscope.tr069adapter.acs.requestprocessor.entity.TR069DeviceRPCRequestEntity;\r
43 import org.commscope.tr069adapter.acs.requestprocessor.impl.TR069RequestProcessEngine;\r
44 import org.commscope.tr069adapter.acs.requestprocessor.util.TR069RequestProcessorUtility;\r
45 import org.slf4j.Logger;\r
46 import org.slf4j.LoggerFactory;\r
47 import org.springframework.beans.factory.annotation.Autowired;\r
48 import org.springframework.stereotype.Component;\r
49 \r
50 @Component("ConfigureMultipleObject")\r
51 public class ConfigureMultipleObject implements CustomOperation {\r
52 \r
53   private static final Logger logger = LoggerFactory.getLogger(ConfigureMultipleObject.class);\r
54 \r
55   @Autowired\r
56   TR069RequestProcessEngine tr069ProcessEngine;\r
57 \r
58   @Autowired\r
59   protected DeviceRPCRequestRepositoryHelper deviceRPCRequestRepositoryHelper;\r
60 \r
61   public CustomOperationData executeCustomLogic(CustomOperationData customOperationData)\r
62       throws TR069EventProcessingException {\r
63 \r
64     TR069DeviceDetails deviceDetails = customOperationData.getDeviceDetails();\r
65     DeviceRPCResponse deviceRPCResponse = customOperationData.getDeviceRPCResponse();\r
66     DeviceRPCRequest nbiDeviceOperationRequest = customOperationData.getDeviceRPCRequest();\r
67 \r
68     logger.debug("Started processing Configure multiple object");\r
69     DeviceRPCRequest operRequest = null;\r
70     Long responseOperationId = null;\r
71     if (deviceRPCResponse != null && deviceRPCResponse.getOperationId() != null) {\r
72       responseOperationId = deviceRPCResponse.getOperationId();\r
73       if (deviceRPCResponse.getFaultKey() != null && responseOperationId != null\r
74           && responseOperationId.equals(nbiDeviceOperationRequest.getOperationId())) {\r
75         logger.error("The Configure Multiple Object operation has failed, Reason: {}",\r
76             deviceRPCResponse.getFaultString());\r
77 \r
78         logger.debug(\r
79             "Deleting the NBI operation request for custom operation configureMultipleObjects with operation ID: {}",\r
80             responseOperationId);\r
81         List<TR069DeviceRPCRequestEntity> tr069DeviceRPCRequestEntityList =\r
82             deviceRPCRequestRepositoryHelper\r
83                 .findByDeviceIdAndOperationId(deviceDetails.getDeviceId(), responseOperationId);\r
84         for (TR069DeviceRPCRequestEntity tr069DeviceRPCRequestEntity : tr069DeviceRPCRequestEntityList) {\r
85           tr069DeviceRPCRequestEntity.setIsProcessed(Integer.valueOf(1));\r
86         }\r
87         deviceRPCRequestRepositoryHelper.saveAll(tr069DeviceRPCRequestEntityList);\r
88 \r
89         OperationResponse operationResponse = new GetParameterValueResponse();\r
90         operationResponse.setParameterDTOs(new ArrayList<ParameterDTO>());\r
91         operationResponse.setStatus(1);\r
92         deviceRPCResponse.setOperationResponse(operationResponse);\r
93 \r
94         customOperationData.setDeviceRPCResponse(deviceRPCResponse);\r
95         customOperationData.setDeviceRPCRequest(null);\r
96         logger.debug("Finished processing Configure multiple object");\r
97         return customOperationData;\r
98       }\r
99     }\r
100 \r
101     TR069OperationDetails tr069OperationDetails =\r
102         (TR069OperationDetails) nbiDeviceOperationRequest.getOpDetails();\r
103     List<ParameterDTO> tr069deleteParamList = tr069OperationDetails.getDeleteParamList();\r
104     List<ParameterDTO> tr069modifyParamList = tr069OperationDetails.getModifyParamList();\r
105     List<ParameterDTO> tr069setParamList = tr069OperationDetails.getSetParamList();\r
106 \r
107     OperationOrder nextOperation = null;\r
108     boolean isPendingOperationExists = true;\r
109     final String NXT_OPERATION = "Next operation to be executed is : ";\r
110 \r
111     if ((responseOperationId == null) || (responseOperationId != null\r
112         && !responseOperationId.equals(nbiDeviceOperationRequest.getOperationId()))) {\r
113       // Must be called from Empty HTTP request, First operation to be called\r
114 \r
115       // Must be called from a different user operation, First operation to be called\r
116       // if response operation id is different from current\r
117       // nbiDevOperRequest operation id then first step is deleteObject\r
118 \r
119       nextOperation = OperationOrder.DELETE_OBJECT;\r
120       logger.debug(NXT_OPERATION, nextOperation);\r
121     } else {\r
122       // Since the responseOperation is not null and equivalent, find the\r
123       // response type and the take next action\r
124       OperationResponse opResponse = deviceRPCResponse.getOperationResponse();\r
125       if (opResponse instanceof DeleteObjectResponse) {\r
126         logger.debug("Received delete object response");\r
127         if (null != tr069deleteParamList && !tr069deleteParamList.isEmpty()) {\r
128           int i = 0;\r
129           for (ParameterDTO deleteParam : tr069deleteParamList) {\r
130             i++;\r
131             if (!deleteParam.isProcessed()) {\r
132               deleteParam.setProcessed(true);\r
133             } else {\r
134               continue;\r
135             }\r
136             logger.debug("Persisting the NBI request for deleteObject");\r
137             // Update the existing NBI request\r
138             List<TR069DeviceRPCRequestEntity> entityList =\r
139                 deviceRPCRequestRepositoryHelper.findByDeviceIdAndOperationId(\r
140                     deviceDetails.getDeviceId(), nbiDeviceOperationRequest.getOperationId());\r
141             List<TR069DeviceRPCRequestEntity> tr069DeviceRPCRequestEntityList =\r
142                 TR069RequestProcessorUtility.convertToEntity(nbiDeviceOperationRequest);\r
143             for (int j = 0; j < entityList.size(); j++) {\r
144               tr069DeviceRPCRequestEntityList.get(j).setId(entityList.get(j).getId());\r
145             }\r
146             deviceRPCRequestRepositoryHelper.saveAll(tr069DeviceRPCRequestEntityList);\r
147 \r
148             if (tr069deleteParamList.size() > i) {\r
149               nextOperation = OperationOrder.DELETE_OBJECT;\r
150               logger.debug(NXT_OPERATION, nextOperation);\r
151               break;\r
152             } else {\r
153               nextOperation = OperationOrder.ADD_OBJECT;\r
154               logger.debug(NXT_OPERATION, nextOperation);\r
155             }\r
156           }\r
157         } else {\r
158           nextOperation = OperationOrder.ADD_OBJECT;\r
159           logger.debug(NXT_OPERATION, nextOperation);\r
160         }\r
161       } else if (opResponse instanceof AddObjectResponse) {\r
162         logger.debug("Received Add object response");\r
163         if (null != tr069setParamList && !tr069setParamList.isEmpty()) {\r
164           long instanceNumber;\r
165           boolean addParamExist = false;\r
166           AddObjectResponse addObjResponse =\r
167               (AddObjectResponse) deviceRPCResponse.getOperationResponse();\r
168           List<ParameterDTO> modifyParamList = new ArrayList<>();\r
169           List<ParameterDTO> removeParamList = new ArrayList<>();\r
170           ParameterDTO addParam = null;\r
171 \r
172           if (null != addObjResponse) {\r
173             instanceNumber = addObjResponse.getInstanceNumber();\r
174             String replaceIndex = null;\r
175             String replaceParam = null;\r
176 \r
177             for (ParameterDTO setParam : tr069setParamList) {\r
178               if (!setParam.isProcessed()) {\r
179                 String paramName = setParam.getParamName();\r
180                 final Matcher matcher = Pattern.compile(NUMBER_REGEX).matcher(paramName);\r
181                 String index = null;\r
182                 String modifyParamName = null;\r
183                 String subString = null;\r
184                 while (matcher.find()) {\r
185                   index = matcher.group().substring(1, matcher.group().length() - 1);\r
186                   StringBuilder sb = new StringBuilder(paramName);\r
187                   int lastIndex = paramName.lastIndexOf(matcher.group());\r
188                   modifyParamName = (sb.replace(lastIndex, lastIndex + matcher.group().length(),\r
189                       "." + instanceNumber + ".")).toString();\r
190                   subString = paramName.substring(0, matcher.start()) + ".";\r
191                 }\r
192                 if (null == replaceIndex)\r
193                   replaceIndex = index;\r
194                 if (null == replaceParam)\r
195                   replaceParam = subString;\r
196                 if (null != replaceIndex && null != index && replaceIndex.equals(index)\r
197                     && replaceParam.equalsIgnoreCase(subString)) {\r
198                   setParam.setProcessed(true);\r
199                   modifyParamList.add(prepareParamDTO(modifyParamName, null, setParam));\r
200                   removeParamList.add(prepareParamDTO(null, null, setParam));\r
201                 } else {\r
202                   addParamExist = true;\r
203                 }\r
204                 if (null == addParam) {\r
205                   logger.debug(\r
206                       "The device index chosen is {} for adding the NBI tab parameter with index {}",\r
207                       instanceNumber, replaceIndex);\r
208                   addParam = prepareParamDTO(subString + replaceIndex,\r
209                       String.valueOf(instanceNumber), setParam);\r
210                 }\r
211               }\r
212             }\r
213           }\r
214           // Replace index with instance number and add in modify param list\r
215           if (!modifyParamList.isEmpty()) {\r
216             tr069modifyParamList.addAll(modifyParamList);\r
217           }\r
218           // Prepare add object param and add in set param list\r
219           if (null != addParam) {\r
220             addParam.setDataType("1");\r
221             tr069setParamList.add(addParam);\r
222           }\r
223           // Remove all processed set params from set param list\r
224           if (!removeParamList.isEmpty()) {\r
225             tr069setParamList.removeAll(removeParamList);\r
226           }\r
227 \r
228           logger.debug("Persisting the NBI request for addObject");\r
229           List<TR069DeviceRPCRequestEntity> entityList =\r
230               deviceRPCRequestRepositoryHelper.findByDeviceIdAndOperationId(\r
231                   deviceDetails.getDeviceId(), nbiDeviceOperationRequest.getOperationId());\r
232           List<TR069DeviceRPCRequestEntity> tr069DeviceRPCRequestEntityList =\r
233               TR069RequestProcessorUtility.convertToEntity(nbiDeviceOperationRequest);\r
234           for (int i = 0; i < entityList.size(); i++) {\r
235             tr069DeviceRPCRequestEntityList.get(i).setId(entityList.get(i).getId());\r
236           }\r
237           deviceRPCRequestRepositoryHelper.saveAll(tr069DeviceRPCRequestEntityList);\r
238 \r
239           if (addParamExist) {\r
240             nextOperation = OperationOrder.ADD_OBJECT;\r
241             logger.debug(NXT_OPERATION, nextOperation);\r
242           } else {\r
243             nextOperation = OperationOrder.SET_PARAMETER_VALUE;\r
244             logger.debug(NXT_OPERATION, nextOperation);\r
245           }\r
246         } else {\r
247           nextOperation = OperationOrder.SET_PARAMETER_VALUE;\r
248           logger.debug(NXT_OPERATION, nextOperation);\r
249         }\r
250       } else if (opResponse instanceof SetParameterValueResponse) {\r
251         logger.debug("Received Set parameter value response");\r
252         isPendingOperationExists = false;\r
253         for (ParameterDTO setParam : tr069modifyParamList) {\r
254           if (Boolean.TRUE.equals(setParam.isInitiated())\r
255               && Boolean.FALSE.equals(setParam.isProcessed())) {\r
256             setParam.setInitiated(Boolean.FALSE);\r
257             setParam.setProcessed(Boolean.TRUE);\r
258           } else if (Boolean.FALSE.equals(setParam.isInitiated())\r
259               && Boolean.FALSE.equals(setParam.isProcessed())) {\r
260             isPendingOperationExists = true;\r
261             nextOperation = OperationOrder.SET_PARAMETER_VALUE;\r
262           }\r
263         }\r
264 \r
265         updateParamChangedFlagInDb(deviceDetails.getDeviceId(), nbiDeviceOperationRequest);\r
266         logger.debug("Next operation to be executed is : {}", nextOperation);\r
267       }\r
268     }\r
269 \r
270     if (isPendingOperationExists) {\r
271       boolean checkForNextoperation = true;\r
272       while (checkForNextoperation) {\r
273         switch (nextOperation) {\r
274           case DELETE_OBJECT:\r
275             if (null != tr069deleteParamList && !tr069deleteParamList.isEmpty()) {\r
276               logger.debug("Started executing delete object request");\r
277               checkForNextoperation = false;\r
278               DeviceRPCRequest clonedOpRequest = cloneNBIRequest(nbiDeviceOperationRequest);\r
279               List<ParameterDTO> deleteParamList = new ArrayList<>();\r
280               // Just take the first not processed delete object from the list\r
281               for (ParameterDTO deleteParam : tr069deleteParamList) {\r
282                 if (!deleteParam.isProcessed()) {\r
283                   deleteParamList.add(deleteParam);\r
284                   break;\r
285                 }\r
286               }\r
287               clonedOpRequest.setOpDetails(null);\r
288               OperationDetails opDetails = new OperationDetails();\r
289               opDetails.setOpCode(TR069OperationCode.DELETE_OBJECT);\r
290               opDetails.setParmeters(deleteParamList);\r
291               clonedOpRequest.setOpDetails(opDetails);\r
292               operRequest = clonedOpRequest;\r
293             } else {\r
294               nextOperation = OperationOrder.ADD_OBJECT;\r
295               logger.debug(NXT_OPERATION, nextOperation);\r
296             }\r
297             break;\r
298           case ADD_OBJECT:\r
299             if (null != tr069setParamList && !tr069setParamList.isEmpty()) {\r
300               logger.debug("Started executing Add object request");\r
301               checkForNextoperation = false;\r
302               DeviceRPCRequest clonedOpRequest = cloneNBIRequest(nbiDeviceOperationRequest);\r
303               List<ParameterDTO> addParamList = new ArrayList<>();\r
304               // Just take the first not processed delete object from the list\r
305               for (ParameterDTO addParam : tr069setParamList) {\r
306                 if (!addParam.isProcessed()) {\r
307                   String addParamMO = null;\r
308                   final Matcher matcher =\r
309                       Pattern.compile(NUMBER_REGEX).matcher(addParam.getParamName());\r
310                   while (matcher.find()) {\r
311                     addParamMO = addParam.getParamName().substring(0, matcher.start()) + ".";\r
312                   }\r
313                   if (null != addParamMO) {\r
314                     addParamList.add(prepareParamDTO(addParamMO, null, addParam));\r
315                   }\r
316                   break;\r
317                 }\r
318               }\r
319               clonedOpRequest.setOpDetails(null);\r
320               OperationDetails opDetails = new OperationDetails();\r
321               opDetails.setOpCode(TR069OperationCode.ADD_OBJECT);\r
322               opDetails.setParmeters(addParamList);\r
323               clonedOpRequest.setOpDetails(opDetails);\r
324               operRequest = clonedOpRequest;\r
325             } else {\r
326               nextOperation = OperationOrder.SET_PARAMETER_VALUE;\r
327               logger.debug(NXT_OPERATION, nextOperation);\r
328             }\r
329             break;\r
330           case SET_PARAMETER_VALUE:\r
331             checkForNextoperation = false;\r
332             if (null != tr069modifyParamList && !tr069modifyParamList.isEmpty()) {\r
333               logger.debug("Started executing SPV request");\r
334               DeviceRPCRequest clonedOpRequest = cloneNBIRequest(nbiDeviceOperationRequest);\r
335               clonedOpRequest.setOpDetails(null);\r
336               OperationDetails opDetails = new OperationDetails();\r
337               opDetails.setOpCode(TR069OperationCode.SET_PARAMETER_VALUES);\r
338               List<ParameterDTO> unprocessedParamList = new ArrayList<>();\r
339               ParameterDTO adminStateParam = null;\r
340               for (ParameterDTO paramDTO : tr069modifyParamList) {\r
341                 if (!paramDTO.isProcessed()) {\r
342                   if (isAdminStateExists(paramDTO)) {\r
343                     adminStateParam = paramDTO;\r
344                   } else {\r
345                     unprocessedParamList.add(paramDTO);\r
346                   }\r
347                 }\r
348               }\r
349 \r
350               if (null != adminStateParam && isAdminStateFalse(adminStateParam.getParamValue())) {\r
351                 List<ParameterDTO> adminStateParamList = new ArrayList<>();\r
352                 adminStateParam.setInitiated(Boolean.TRUE);\r
353                 adminStateParamList.add(adminStateParam);\r
354                 opDetails.setParmeters(adminStateParamList);\r
355                 updateParamChangedFlagInDb(deviceDetails.getDeviceId(), nbiDeviceOperationRequest);\r
356               } else if (!unprocessedParamList.isEmpty()) {\r
357                 setInititedFlagTrue(unprocessedParamList);\r
358                 opDetails.setParmeters(unprocessedParamList);\r
359                 updateParamChangedFlagInDb(deviceDetails.getDeviceId(), nbiDeviceOperationRequest);\r
360               } else if (null != adminStateParam\r
361                   && isAdminStateTrue(adminStateParam.getParamValue())) {\r
362                 List<ParameterDTO> paramList = new ArrayList<>();\r
363                 adminStateParam.setInitiated(Boolean.TRUE);\r
364                 paramList.add(adminStateParam);\r
365                 opDetails.setParmeters(paramList);\r
366                 updateParamChangedFlagInDb(deviceDetails.getDeviceId(), nbiDeviceOperationRequest);\r
367               } else {\r
368                 isPendingOperationExists = false;\r
369               }\r
370 \r
371               clonedOpRequest.setOpDetails(opDetails);\r
372               operRequest = clonedOpRequest;\r
373             } else {\r
374               isPendingOperationExists = false;\r
375               operRequest = null;\r
376             }\r
377             break;\r
378           default:\r
379             isPendingOperationExists = false;\r
380             operRequest = null;\r
381         }\r
382       }\r
383     }\r
384 \r
385     if (!isPendingOperationExists) {\r
386       logger.debug(\r
387           "No pending operation exists, hence marking the operation as processed with id {} "\r
388               + "and sending GetParameterValueResponse for ConfigureMultipleObjects",\r
389           responseOperationId);\r
390       List<ParameterDTO> responseParamList = new ArrayList<>();\r
391 \r
392       if (tr069deleteParamList != null) {\r
393         for (ParameterDTO delete : tr069deleteParamList) {\r
394           delete.setParamValue(SUCCESS);\r
395           delete.setDataType("2");\r
396           responseParamList.add(delete);\r
397         }\r
398       }\r
399 \r
400       if (tr069modifyParamList != null) {\r
401         for (ParameterDTO modify : tr069modifyParamList) {\r
402           modify.setParamValue(SUCCESS);\r
403           modify.setDataType("4");\r
404           responseParamList.add(modify);\r
405         }\r
406       }\r
407 \r
408       responseParamList.addAll(tr069setParamList);\r
409 \r
410       OperationResponse operationResponse = new GetParameterValueResponse();\r
411       operationResponse.setParameterDTOs(responseParamList);\r
412       if (deviceRPCResponse != null) {\r
413         deviceRPCResponse.setDeviceDetails(deviceDetails);\r
414         deviceRPCResponse.setOperationResponse(operationResponse);\r
415         deviceRPCResponse.setOperationId(responseOperationId);\r
416       }\r
417 \r
418       logger.debug(\r
419           "Prepared operation result for custom operation Configure Multiple Objects, hence marking as processed the corresponding NBI Operation request record");\r
420       deviceRPCRequestRepositoryHelper.markDeviceRPCRequestAsProcessed(deviceDetails.getDeviceId(),\r
421           responseOperationId);\r
422     }\r
423 \r
424     customOperationData.setDeviceRPCResponse(deviceRPCResponse);\r
425     customOperationData.setDeviceRPCRequest(operRequest);\r
426     logger.debug("Finished processing Configure multiple object");\r
427     return customOperationData;\r
428   }\r
429 \r
430 \r
431   enum OperationOrder {\r
432 \r
433     SET_PARAMETER_VALUE(null), ADD_OBJECT(SET_PARAMETER_VALUE), DELETE_OBJECT(ADD_OBJECT);\r
434 \r
435     OperationOrder nextOperation;\r
436 \r
437     OperationOrder(OperationOrder nextOperation) {\r
438       this.nextOperation = nextOperation;\r
439     }\r
440 \r
441     public OperationOrder getNextOperation() {\r
442       return nextOperation;\r
443     }\r
444 \r
445   }\r
446 \r
447   private DeviceRPCRequest cloneNBIRequest(DeviceRPCRequest nbiDeviceOperationRequest) {\r
448     return new DeviceRPCRequest(nbiDeviceOperationRequest);\r
449   }\r
450 \r
451   private ParameterDTO prepareParamDTO(String name, String value, ParameterDTO paramDTO) {\r
452     ParameterDTO parameterDTO = new ParameterDTO();\r
453     if (null != name) {\r
454       parameterDTO.setParamName(name);\r
455     } else {\r
456       parameterDTO.setParamName(paramDTO.getParamName());\r
457     }\r
458     if (null != value) {\r
459       parameterDTO.setParamValue(value);\r
460     } else {\r
461       parameterDTO.setParamValue(paramDTO.getParamValue());\r
462     }\r
463     parameterDTO.setDataType(paramDTO.getDataType());\r
464     parameterDTO.setProcessed(paramDTO.isProcessed());\r
465 \r
466     return parameterDTO;\r
467   }\r
468 \r
469   private boolean isAdminStateExists(ParameterDTO paramDTO) {\r
470     return (paramDTO.getParamName().contains(TR069RequestProcessorUtility.ADMIN_STATE)\r
471         || paramDTO.getParamName().contains(TR069RequestProcessorUtility.ADMIN_STATUS));\r
472   }\r
473 \r
474   private void updateParamChangedFlagInDb(String deviceId,\r
475       DeviceRPCRequest nbiDeviceOperationRequest) throws TR069EventProcessingException {\r
476     List<TR069DeviceRPCRequestEntity> entityList = deviceRPCRequestRepositoryHelper\r
477         .findByDeviceIdAndOperationId(deviceId, nbiDeviceOperationRequest.getOperationId());\r
478     List<TR069DeviceRPCRequestEntity> tr069DeviceRPCRequestEntityList =\r
479         TR069RequestProcessorUtility.convertToEntity(nbiDeviceOperationRequest);\r
480     for (int i = 0; i < entityList.size(); i++) {\r
481       tr069DeviceRPCRequestEntityList.get(i).setId(entityList.get(i).getId());\r
482     }\r
483     deviceRPCRequestRepositoryHelper.saveAll(tr069DeviceRPCRequestEntityList);\r
484   }\r
485 \r
486   private void setInititedFlagTrue(List<ParameterDTO> unprocessedParamList) {\r
487     for (ParameterDTO paramDTO : unprocessedParamList) {\r
488       paramDTO.setInitiated(Boolean.TRUE);\r
489     }\r
490   }\r
491 \r
492   private boolean isAdminStateFalse(String adminState) {\r
493     return (null != adminState && (adminState.equalsIgnoreCase(Boolean.FALSE.toString())\r
494         || adminState.equalsIgnoreCase("0")));\r
495   }\r
496 \r
497   private boolean isAdminStateTrue(String adminState) {\r
498     return (null != adminState && (adminState.equalsIgnoreCase(Boolean.TRUE.toString())\r
499         || adminState.equalsIgnoreCase("1")));\r
500   }\r
501 \r
502 }\r