\r
import static org.commscope.tr069adapter.acs.common.utils.AcsConstants.NUMBER_REGEX;\r
import static org.commscope.tr069adapter.acs.common.utils.AcsConstants.SUCCESS;\r
-\r
import java.util.ArrayList;\r
import java.util.List;\r
import java.util.regex.Matcher;\r
import java.util.regex.Pattern;\r
-\r
import org.commscope.tr069adapter.acs.common.DeviceRPCRequest;\r
import org.commscope.tr069adapter.acs.common.DeviceRPCResponse;\r
import org.commscope.tr069adapter.acs.common.OperationDetails;\r
import org.commscope.tr069adapter.acs.common.response.DeleteObjectResponse;\r
import org.commscope.tr069adapter.acs.common.response.GetParameterValueResponse;\r
import org.commscope.tr069adapter.acs.common.response.SetParameterValueResponse;\r
-import org.commscope.tr069adapter.acs.common.utils.ErrorCode;\r
import org.commscope.tr069adapter.acs.requestprocessor.dao.DeviceRPCRequestRepositoryHelper;\r
import org.commscope.tr069adapter.acs.requestprocessor.dto.CustomOperationData;\r
import org.commscope.tr069adapter.acs.requestprocessor.entity.TR069DeviceRPCRequestEntity;\r
} else if (opResponse instanceof SetParameterValueResponse) {\r
logger.debug("Received Set parameter value response");\r
isPendingOperationExists = false;\r
+ for (ParameterDTO setParam : tr069modifyParamList) {\r
+ if (Boolean.TRUE.equals(setParam.isInitiated())\r
+ && Boolean.FALSE.equals(setParam.isProcessed())) {\r
+ setParam.setInitiated(Boolean.FALSE);\r
+ setParam.setProcessed(Boolean.TRUE);\r
+ } else if (Boolean.FALSE.equals(setParam.isInitiated())\r
+ && Boolean.FALSE.equals(setParam.isProcessed())) {\r
+ isPendingOperationExists = true;\r
+ nextOperation = OperationOrder.SET_PARAMETER_VALUE;\r
+ }\r
+ }\r
+\r
+ updateParamChangedFlagInDb(deviceDetails.getDeviceId(), nbiDeviceOperationRequest);\r
+ logger.debug("Next operation to be executed is : {}", nextOperation);\r
}\r
}\r
\r
clonedOpRequest.setOpDetails(null);\r
OperationDetails opDetails = new OperationDetails();\r
opDetails.setOpCode(TR069OperationCode.SET_PARAMETER_VALUES);\r
- opDetails.setParmeters(tr069modifyParamList);\r
+ List<ParameterDTO> unprocessedParamList = new ArrayList<>();\r
+ ParameterDTO adminStateParam = null;\r
+ for (ParameterDTO paramDTO : tr069modifyParamList) {\r
+ if (!paramDTO.isProcessed()) {\r
+ if (isAdminStateExists(paramDTO)) {\r
+ adminStateParam = paramDTO;\r
+ } else {\r
+ unprocessedParamList.add(paramDTO);\r
+ }\r
+ }\r
+ }\r
+\r
+ if (null != adminStateParam && isAdminStateFalse(adminStateParam.getParamValue())) {\r
+ List<ParameterDTO> adminStateParamList = new ArrayList<>();\r
+ adminStateParam.setInitiated(Boolean.TRUE);\r
+ adminStateParamList.add(adminStateParam);\r
+ opDetails.setParmeters(adminStateParamList);\r
+ updateParamChangedFlagInDb(deviceDetails.getDeviceId(), nbiDeviceOperationRequest);\r
+ } else if (!unprocessedParamList.isEmpty()) {\r
+ setInititedFlagTrue(unprocessedParamList);\r
+ opDetails.setParmeters(unprocessedParamList);\r
+ updateParamChangedFlagInDb(deviceDetails.getDeviceId(), nbiDeviceOperationRequest);\r
+ } else if (null != adminStateParam\r
+ && isAdminStateTrue(adminStateParam.getParamValue())) {\r
+ List<ParameterDTO> paramList = new ArrayList<>();\r
+ adminStateParam.setInitiated(Boolean.TRUE);\r
+ paramList.add(adminStateParam);\r
+ opDetails.setParmeters(paramList);\r
+ updateParamChangedFlagInDb(deviceDetails.getDeviceId(), nbiDeviceOperationRequest);\r
+ } else {\r
+ isPendingOperationExists = false;\r
+ }\r
+\r
clonedOpRequest.setOpDetails(opDetails);\r
operRequest = clonedOpRequest;\r
} else {\r
return customOperationData;\r
}\r
\r
+\r
enum OperationOrder {\r
\r
SET_PARAMETER_VALUE(null), ADD_OBJECT(SET_PARAMETER_VALUE), DELETE_OBJECT(ADD_OBJECT);\r
\r
}\r
\r
- private DeviceRPCRequest cloneNBIRequest(DeviceRPCRequest nbiDeviceOperationRequest)\r
- throws TR069EventProcessingException {\r
- DeviceRPCRequest clonedOpRequest = null;\r
- try {\r
- clonedOpRequest = (DeviceRPCRequest) nbiDeviceOperationRequest.clone();\r
- } catch (CloneNotSupportedException e) {\r
- throw new TR069EventProcessingException(ErrorCode.UNKNOWN_ERROR, e.getMessage());\r
- }\r
-\r
- return clonedOpRequest;\r
+ private DeviceRPCRequest cloneNBIRequest(DeviceRPCRequest nbiDeviceOperationRequest) {\r
+ return new DeviceRPCRequest(nbiDeviceOperationRequest);\r
}\r
\r
private ParameterDTO prepareParamDTO(String name, String value, ParameterDTO paramDTO) {\r
return parameterDTO;\r
}\r
\r
+ private boolean isAdminStateExists(ParameterDTO paramDTO) {\r
+ return (paramDTO.getParamName().contains(TR069RequestProcessorUtility.ADMIN_STATE)\r
+ || paramDTO.getParamName().contains(TR069RequestProcessorUtility.ADMIN_STATUS));\r
+ }\r
+\r
+ private void updateParamChangedFlagInDb(String deviceId,\r
+ DeviceRPCRequest nbiDeviceOperationRequest) throws TR069EventProcessingException {\r
+ List<TR069DeviceRPCRequestEntity> entityList = deviceRPCRequestRepositoryHelper\r
+ .findByDeviceIdAndOperationId(deviceId, nbiDeviceOperationRequest.getOperationId());\r
+ List<TR069DeviceRPCRequestEntity> tr069DeviceRPCRequestEntityList =\r
+ TR069RequestProcessorUtility.convertToEntity(nbiDeviceOperationRequest);\r
+ for (int i = 0; i < entityList.size(); i++) {\r
+ tr069DeviceRPCRequestEntityList.get(i).setId(entityList.get(i).getId());\r
+ }\r
+ deviceRPCRequestRepositoryHelper.saveAll(tr069DeviceRPCRequestEntityList);\r
+ }\r
+\r
+ private void setInititedFlagTrue(List<ParameterDTO> unprocessedParamList) {\r
+ for (ParameterDTO paramDTO : unprocessedParamList) {\r
+ paramDTO.setInitiated(Boolean.TRUE);\r
+ }\r
+ }\r
+\r
+ private boolean isAdminStateFalse(String adminState) {\r
+ return (null != adminState && (adminState.equalsIgnoreCase(Boolean.FALSE.toString())\r
+ || adminState.equalsIgnoreCase("0")));\r
+ }\r
+\r
+ private boolean isAdminStateTrue(String adminState) {\r
+ return (null != adminState && (adminState.equalsIgnoreCase(Boolean.TRUE.toString())\r
+ || adminState.equalsIgnoreCase("1")));\r
+ }\r
+\r
}\r