Initial source code
[oam/tr069-adapter.git] / acs / requestprocessor / src / main / java / org / commscope / tr069adapter / acs / requestprocessor / helper / TR069RequestProcessEngineUtility.java
diff --git a/acs/requestprocessor/src/main/java/org/commscope/tr069adapter/acs/requestprocessor/helper/TR069RequestProcessEngineUtility.java b/acs/requestprocessor/src/main/java/org/commscope/tr069adapter/acs/requestprocessor/helper/TR069RequestProcessEngineUtility.java
new file mode 100644 (file)
index 0000000..9cc7b54
--- /dev/null
@@ -0,0 +1,173 @@
+/*\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