--- /dev/null
+/*\r
+ * ============LICENSE_START========================================================================\r
+ * ONAP : tr-069-adapter\r
+ * =================================================================================================\r
+ * Copyright (C) 2020 CommScope Inc Intellectual Property.\r
+ * =================================================================================================\r
+ * This tr-069-adapter software file is distributed by CommScope Inc under the Apache License,\r
+ * Version 2.0 (the "License"); you may not use this file except in compliance with the License. You\r
+ * may obtain a copy of the License at\r
+ *\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,\r
+ * either express or implied. See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ * ===============LICENSE_END=======================================================================\r
+ */\r
+\r
+package org.commscope.tr069adapter.acs.requestprocessor.helper;\r
+\r
+import static org.commscope.tr069adapter.acs.common.utils.AcsConstants.OPERATION_EXPIRATION_TIMEOUT;\r
+\r
+import java.util.ArrayList;\r
+\r
+import org.commscope.tr069adapter.acs.common.DeviceDetails;\r
+import org.commscope.tr069adapter.acs.common.DeviceRPCRequest;\r
+import org.commscope.tr069adapter.acs.common.DeviceRPCResponse;\r
+import org.commscope.tr069adapter.acs.common.OperationResponse;\r
+import org.commscope.tr069adapter.acs.common.ParameterDTO;\r
+import org.commscope.tr069adapter.acs.common.dto.CustomOperationCode;\r
+import org.commscope.tr069adapter.acs.common.dto.TR069OperationCode;\r
+import org.commscope.tr069adapter.acs.common.faults.AcsFaultCode;\r
+import org.commscope.tr069adapter.acs.common.response.AddObjectResponse;\r
+import org.commscope.tr069adapter.acs.common.response.DeleteObjectResponse;\r
+import org.commscope.tr069adapter.acs.common.response.DownloadResponse;\r
+import org.commscope.tr069adapter.acs.common.response.FactoryResetResponse;\r
+import org.commscope.tr069adapter.acs.common.response.GetParameterAttributeResponse;\r
+import org.commscope.tr069adapter.acs.common.response.GetParameterValueResponse;\r
+import org.commscope.tr069adapter.acs.common.response.RebootResponse;\r
+import org.commscope.tr069adapter.acs.common.response.SetParameterAttributeResponse;\r
+import org.commscope.tr069adapter.acs.common.response.SetParameterValueResponse;\r
+import org.slf4j.Logger;\r
+import org.slf4j.LoggerFactory;\r
+import org.springframework.stereotype.Component;\r
+\r
+@Component\r
+public class TR069RequestProcessEngineUtility {\r
+\r
+ private static final Logger logger =\r
+ LoggerFactory.getLogger(TR069RequestProcessEngineUtility.class);\r
+\r
+ /**\r
+ * Builds a operation aborted operation request\r
+ * \r
+ * @param deviceDetails\r
+ * @param nbiDeviceOperationrequest\r
+ * @param acsFaultCode\r
+ * @return\r
+ */\r
+ public DeviceRPCResponse buildAbortedOperationresult(DeviceDetails deviceDetails,\r
+ DeviceRPCRequest nbiDeviceOperationrequest, AcsFaultCode acsFaultCode) {\r
+ Long operationId = nbiDeviceOperationrequest.getOperationId();\r
+\r
+ TR069OperationCode operationCode = null;\r
+ if (nbiDeviceOperationrequest.getOpDetails().getOpCode() instanceof CustomOperationCode) {\r
+ operationCode = TR069OperationCode.GET_PARAMETER_VALUES;\r
+ } else {\r
+ operationCode = (TR069OperationCode) nbiDeviceOperationrequest.getOpDetails().getOpCode();\r
+ }\r
+\r
+ return buildOperationresult(deviceDetails, operationId, operationCode, acsFaultCode);\r
+\r
+ }\r
+\r
+ /**\r
+ * @param deviceDetails\r
+ * @param operationId\r
+ * @param operationCode\r
+ * @return\r
+ */\r
+ public DeviceRPCResponse buildTimedOutOperationResult(DeviceDetails deviceDetails,\r
+ DeviceRPCRequest deviceRPCRequest) {\r
+ Long operationId = deviceRPCRequest.getOperationId();\r
+\r
+ TR069OperationCode operationCode = null;\r
+ if (deviceRPCRequest.getOpDetails().getOpCode() instanceof CustomOperationCode) {\r
+ CustomOperationCode customOperationCode =\r
+ (CustomOperationCode) deviceRPCRequest.getOpDetails().getOpCode();\r
+ if (CustomOperationCode.CONFIGURE_MULTIPLE_OBJECTS.equals(customOperationCode)) {\r
+ operationCode = TR069OperationCode.GET_PARAMETER_VALUES;\r
+ } else if (CustomOperationCode.CONNECT.equals(customOperationCode)) {\r
+ operationCode = TR069OperationCode.INITIATE_CR;\r
+ }\r
+ } else {\r
+ operationCode = (TR069OperationCode) deviceRPCRequest.getOpDetails().getOpCode();\r
+ }\r
+ DeviceRPCResponse deviceRPCResponse = buildOperationresult(deviceDetails, operationId,\r
+ operationCode, AcsFaultCode.FAULT_CODE_8003);\r
+ OperationResponse operationResponse = deviceRPCResponse.getOperationResponse();\r
+ operationResponse.setStatus(OPERATION_EXPIRATION_TIMEOUT);\r
+ return deviceRPCResponse;\r
+ }\r
+\r
+ /**\r
+ * Builds a operation aborted operation request\r
+ * \r
+ * @param deviceDetails\r
+ * @param nbiDeviceOperationrequest\r
+ * @param acsFaultCode\r
+ * @return\r
+ */\r
+ private DeviceRPCResponse buildOperationresult(DeviceDetails deviceDetails, Long operationId,\r
+ TR069OperationCode operationCode, AcsFaultCode acsFaultCode) {\r
+ DeviceRPCResponse deviceRPCResponse = new DeviceRPCResponse();\r
+ deviceRPCResponse.setDeviceDetails(deviceDetails);\r
+ deviceRPCResponse.setOperationId(operationId);\r
+\r
+ deviceRPCResponse.setFaultKey(acsFaultCode.getFaultKey());\r
+ deviceRPCResponse.setFaultString(acsFaultCode.getFaultString());\r
+\r
+ OperationResponse opResponse = null;\r
+ switch (operationCode) {\r
+ case GET_RPC_METHODS:\r
+ case GET_PARAMETER_NAMES:\r
+ break;\r
+ case SET_PARAMETER_VALUES:\r
+ opResponse = new SetParameterValueResponse();\r
+ opResponse.setParameterDTOs(new ArrayList<ParameterDTO>());\r
+ break;\r
+ case GET_PARAMETER_VALUES:\r
+ case INITIATE_CR:\r
+ opResponse = new GetParameterValueResponse();\r
+ opResponse.setParameterDTOs(new ArrayList<ParameterDTO>());\r
+ break;\r
+ case SET_PARAMETER_ATTRIBUTES:\r
+ opResponse = new SetParameterAttributeResponse();\r
+ opResponse.setParameterDTOs(new ArrayList<ParameterDTO>());\r
+ break;\r
+ case GET_PARAMETER_ATTRIBUTES:\r
+ opResponse = new GetParameterAttributeResponse();\r
+ opResponse.setParameterDTOs(new ArrayList<ParameterDTO>());\r
+ break;\r
+ case ADD_OBJECT:\r
+ opResponse = new AddObjectResponse();\r
+ opResponse.setParameterDTOs(new ArrayList<ParameterDTO>());\r
+ break;\r
+ case DELETE_OBJECT:\r
+ opResponse = new DeleteObjectResponse();\r
+ opResponse.setParameterDTOs(new ArrayList<ParameterDTO>());\r
+ break;\r
+ case REBOOT:\r
+ opResponse = new RebootResponse();\r
+ break;\r
+ case DOWNLOAD:\r
+ opResponse = new DownloadResponse();\r
+ break;\r
+ case SCHEDULE_DOWNLOAD:\r
+ case UPLOAD:\r
+ case FACTORY_RESET:\r
+ opResponse = new FactoryResetResponse();\r
+ break;\r
+ default:\r
+ String operationCodeName = operationCode.name();\r
+ logger.debug("An unsupported operation: {}, hence returning without response object",\r
+ operationCodeName);\r
+ break;\r
+ }\r
+ deviceRPCResponse.setOperationResponse(opResponse);\r
+\r
+ return deviceRPCResponse;\r
+ }\r
+\r
+}\r