9cc7b54cbd9e4830aa9b21253a37814ef4b8da58
[oam/tr069-adapter.git] / acs / requestprocessor / src / main / java / org / commscope / tr069adapter / acs / requestprocessor / helper / TR069RequestProcessEngineUtility.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.helper;\r
20 \r
21 import static org.commscope.tr069adapter.acs.common.utils.AcsConstants.OPERATION_EXPIRATION_TIMEOUT;\r
22 \r
23 import java.util.ArrayList;\r
24 \r
25 import org.commscope.tr069adapter.acs.common.DeviceDetails;\r
26 import org.commscope.tr069adapter.acs.common.DeviceRPCRequest;\r
27 import org.commscope.tr069adapter.acs.common.DeviceRPCResponse;\r
28 import org.commscope.tr069adapter.acs.common.OperationResponse;\r
29 import org.commscope.tr069adapter.acs.common.ParameterDTO;\r
30 import org.commscope.tr069adapter.acs.common.dto.CustomOperationCode;\r
31 import org.commscope.tr069adapter.acs.common.dto.TR069OperationCode;\r
32 import org.commscope.tr069adapter.acs.common.faults.AcsFaultCode;\r
33 import org.commscope.tr069adapter.acs.common.response.AddObjectResponse;\r
34 import org.commscope.tr069adapter.acs.common.response.DeleteObjectResponse;\r
35 import org.commscope.tr069adapter.acs.common.response.DownloadResponse;\r
36 import org.commscope.tr069adapter.acs.common.response.FactoryResetResponse;\r
37 import org.commscope.tr069adapter.acs.common.response.GetParameterAttributeResponse;\r
38 import org.commscope.tr069adapter.acs.common.response.GetParameterValueResponse;\r
39 import org.commscope.tr069adapter.acs.common.response.RebootResponse;\r
40 import org.commscope.tr069adapter.acs.common.response.SetParameterAttributeResponse;\r
41 import org.commscope.tr069adapter.acs.common.response.SetParameterValueResponse;\r
42 import org.slf4j.Logger;\r
43 import org.slf4j.LoggerFactory;\r
44 import org.springframework.stereotype.Component;\r
45 \r
46 @Component\r
47 public class TR069RequestProcessEngineUtility {\r
48 \r
49   private static final Logger logger =\r
50       LoggerFactory.getLogger(TR069RequestProcessEngineUtility.class);\r
51 \r
52   /**\r
53    * Builds a operation aborted operation request\r
54    * \r
55    * @param deviceDetails\r
56    * @param nbiDeviceOperationrequest\r
57    * @param acsFaultCode\r
58    * @return\r
59    */\r
60   public DeviceRPCResponse buildAbortedOperationresult(DeviceDetails deviceDetails,\r
61       DeviceRPCRequest nbiDeviceOperationrequest, AcsFaultCode acsFaultCode) {\r
62     Long operationId = nbiDeviceOperationrequest.getOperationId();\r
63 \r
64     TR069OperationCode operationCode = null;\r
65     if (nbiDeviceOperationrequest.getOpDetails().getOpCode() instanceof CustomOperationCode) {\r
66       operationCode = TR069OperationCode.GET_PARAMETER_VALUES;\r
67     } else {\r
68       operationCode = (TR069OperationCode) nbiDeviceOperationrequest.getOpDetails().getOpCode();\r
69     }\r
70 \r
71     return buildOperationresult(deviceDetails, operationId, operationCode, acsFaultCode);\r
72 \r
73   }\r
74 \r
75   /**\r
76    * @param deviceDetails\r
77    * @param operationId\r
78    * @param operationCode\r
79    * @return\r
80    */\r
81   public DeviceRPCResponse buildTimedOutOperationResult(DeviceDetails deviceDetails,\r
82       DeviceRPCRequest deviceRPCRequest) {\r
83     Long operationId = deviceRPCRequest.getOperationId();\r
84 \r
85     TR069OperationCode operationCode = null;\r
86     if (deviceRPCRequest.getOpDetails().getOpCode() instanceof CustomOperationCode) {\r
87       CustomOperationCode customOperationCode =\r
88           (CustomOperationCode) deviceRPCRequest.getOpDetails().getOpCode();\r
89       if (CustomOperationCode.CONFIGURE_MULTIPLE_OBJECTS.equals(customOperationCode)) {\r
90         operationCode = TR069OperationCode.GET_PARAMETER_VALUES;\r
91       } else if (CustomOperationCode.CONNECT.equals(customOperationCode)) {\r
92         operationCode = TR069OperationCode.INITIATE_CR;\r
93       }\r
94     } else {\r
95       operationCode = (TR069OperationCode) deviceRPCRequest.getOpDetails().getOpCode();\r
96     }\r
97     DeviceRPCResponse deviceRPCResponse = buildOperationresult(deviceDetails, operationId,\r
98         operationCode, AcsFaultCode.FAULT_CODE_8003);\r
99     OperationResponse operationResponse = deviceRPCResponse.getOperationResponse();\r
100     operationResponse.setStatus(OPERATION_EXPIRATION_TIMEOUT);\r
101     return deviceRPCResponse;\r
102   }\r
103 \r
104   /**\r
105    * Builds a operation aborted operation request\r
106    * \r
107    * @param deviceDetails\r
108    * @param nbiDeviceOperationrequest\r
109    * @param acsFaultCode\r
110    * @return\r
111    */\r
112   private DeviceRPCResponse buildOperationresult(DeviceDetails deviceDetails, Long operationId,\r
113       TR069OperationCode operationCode, AcsFaultCode acsFaultCode) {\r
114     DeviceRPCResponse deviceRPCResponse = new DeviceRPCResponse();\r
115     deviceRPCResponse.setDeviceDetails(deviceDetails);\r
116     deviceRPCResponse.setOperationId(operationId);\r
117 \r
118     deviceRPCResponse.setFaultKey(acsFaultCode.getFaultKey());\r
119     deviceRPCResponse.setFaultString(acsFaultCode.getFaultString());\r
120 \r
121     OperationResponse opResponse = null;\r
122     switch (operationCode) {\r
123       case GET_RPC_METHODS:\r
124       case GET_PARAMETER_NAMES:\r
125         break;\r
126       case SET_PARAMETER_VALUES:\r
127         opResponse = new SetParameterValueResponse();\r
128         opResponse.setParameterDTOs(new ArrayList<ParameterDTO>());\r
129         break;\r
130       case GET_PARAMETER_VALUES:\r
131       case INITIATE_CR:\r
132         opResponse = new GetParameterValueResponse();\r
133         opResponse.setParameterDTOs(new ArrayList<ParameterDTO>());\r
134         break;\r
135       case SET_PARAMETER_ATTRIBUTES:\r
136         opResponse = new SetParameterAttributeResponse();\r
137         opResponse.setParameterDTOs(new ArrayList<ParameterDTO>());\r
138         break;\r
139       case GET_PARAMETER_ATTRIBUTES:\r
140         opResponse = new GetParameterAttributeResponse();\r
141         opResponse.setParameterDTOs(new ArrayList<ParameterDTO>());\r
142         break;\r
143       case ADD_OBJECT:\r
144         opResponse = new AddObjectResponse();\r
145         opResponse.setParameterDTOs(new ArrayList<ParameterDTO>());\r
146         break;\r
147       case DELETE_OBJECT:\r
148         opResponse = new DeleteObjectResponse();\r
149         opResponse.setParameterDTOs(new ArrayList<ParameterDTO>());\r
150         break;\r
151       case REBOOT:\r
152         opResponse = new RebootResponse();\r
153         break;\r
154       case DOWNLOAD:\r
155         opResponse = new DownloadResponse();\r
156         break;\r
157       case SCHEDULE_DOWNLOAD:\r
158       case UPLOAD:\r
159       case FACTORY_RESET:\r
160         opResponse = new FactoryResetResponse();\r
161         break;\r
162       default:\r
163         String operationCodeName = operationCode.name();\r
164         logger.debug("An unsupported operation: {}, hence returning without response object",\r
165             operationCodeName);\r
166         break;\r
167     }\r
168     deviceRPCResponse.setOperationResponse(opResponse);\r
169 \r
170     return deviceRPCResponse;\r
171   }\r
172 \r
173 }\r