b64b5e9f11e7d440332f0e17f02000b4acbbc913
[oam/tr069-adapter.git] / acs / cpe / src / main / java / org / commscope / tr069adapter / acs / cpe / builder / DeviceRPCBuilder.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.cpe.builder;\r
20 \r
21 import java.util.ArrayList;\r
22 import java.util.List;\r
23 \r
24 import org.commscope.tr069adapter.acs.common.DeviceRPCRequest;\r
25 import org.commscope.tr069adapter.acs.common.OperationCode;\r
26 import org.commscope.tr069adapter.acs.common.OperationDetails;\r
27 import org.commscope.tr069adapter.acs.common.ParameterDTO;\r
28 import org.commscope.tr069adapter.acs.common.dto.ParameterAttributeDTO;\r
29 import org.commscope.tr069adapter.acs.common.dto.TR069OperationCode;\r
30 import org.commscope.tr069adapter.acs.cpe.TR069RPC;\r
31 import org.commscope.tr069adapter.acs.cpe.rpc.AddObject;\r
32 import org.commscope.tr069adapter.acs.cpe.rpc.DeleteObject;\r
33 import org.commscope.tr069adapter.acs.cpe.rpc.Download;\r
34 import org.commscope.tr069adapter.acs.cpe.rpc.FactoryReset;\r
35 import org.commscope.tr069adapter.acs.cpe.rpc.GetParameterAttributes;\r
36 import org.commscope.tr069adapter.acs.cpe.rpc.GetParameterValues;\r
37 import org.commscope.tr069adapter.acs.cpe.rpc.Reboot;\r
38 import org.commscope.tr069adapter.acs.cpe.rpc.SetParameterAttributes;\r
39 import org.commscope.tr069adapter.acs.cpe.rpc.SetParameterValues;\r
40 import org.springframework.stereotype.Component;\r
41 \r
42 @Component\r
43 public class DeviceRPCBuilder {\r
44 \r
45   /**\r
46    * @param deviceRPCRequest\r
47    * @return\r
48    */\r
49   public TR069RPC constructDeviceRPC(DeviceRPCRequest deviceRPCRequest) {\r
50     TR069RPC message = null;\r
51 \r
52     OperationDetails opDetails = deviceRPCRequest.getOpDetails();\r
53     if (null == opDetails || null == opDetails.getOpCode()) {\r
54       return null;\r
55     }\r
56 \r
57     OperationCode opCode = opDetails.getOpCode();\r
58     if (opCode.equals(TR069OperationCode.SET_PARAMETER_VALUES)) {\r
59       message = buildSetParameterValues(opDetails);\r
60     } else if (opCode.equals(TR069OperationCode.GET_PARAMETER_VALUES)) {\r
61       message = buildGetParameterValues(opDetails);\r
62     } else if (opCode.equals(TR069OperationCode.SET_PARAMETER_ATTRIBUTES)) {\r
63       message = buildSetParameterAttributes(opDetails);\r
64     } else if (opCode.equals(TR069OperationCode.GET_PARAMETER_ATTRIBUTES)) {\r
65       message = buildGetParameterAttributes(opDetails);\r
66     } else if (opCode.equals(TR069OperationCode.ADD_OBJECT)) {\r
67       List<ParameterDTO> poarameterDTOs = opDetails.getParmeters();\r
68       for (ParameterDTO param : poarameterDTOs) {\r
69         AddObject addObject = new AddObject(param.getParamName(), String.valueOf(hashCode()));\r
70         message = addObject;\r
71       }\r
72     } else if (opCode.equals(TR069OperationCode.DELETE_OBJECT)) {\r
73       List<ParameterDTO> poarameterDTOs = opDetails.getParmeters();\r
74       for (ParameterDTO param : poarameterDTOs) {\r
75         DeleteObject deleteObject =\r
76             new DeleteObject(param.getParamName(), String.valueOf(hashCode()));\r
77         message = deleteObject;\r
78       }\r
79     } else if (opCode.equals(TR069OperationCode.DOWNLOAD)) {\r
80       String deviceId = deviceRPCRequest.getDeviceDetails().getDeviceId();\r
81       List<ParameterDTO> poarameterDTOs = opDetails.getParmeters();\r
82       message = populateDownloadParams(deviceId, poarameterDTOs);\r
83     } else if (opCode.equals(TR069OperationCode.FACTORY_RESET)) {\r
84       message = new FactoryReset();\r
85     } else if (opCode.equals(TR069OperationCode.REBOOT)) {\r
86       message = new Reboot();\r
87     }\r
88 \r
89     return message;\r
90   }\r
91 \r
92   /**\r
93    * @param poarameterDTOs\r
94    * @return\r
95    */\r
96   private Download populateDownloadParams(String deviceId, List<ParameterDTO> poarameterDTOs) {\r
97     Download download = new Download();\r
98     for (ParameterDTO param : poarameterDTOs) {\r
99       if (param.getParamName().equals("FileType")) {\r
100         download.setFileType(param.getParamValue());\r
101       } else if (param.getParamName().equals("URL")) {\r
102         download.setUrl(param.getParamValue());\r
103       } else if (param.getParamName().equals("Username")) {\r
104         download.setUserName(param.getParamValue());\r
105       } else if (param.getParamName().equals("Password")) {\r
106         download.setPassword(param.getParamValue());\r
107       } else if (param.getParamName().equals("FileSize")) {\r
108         download.setFileSize(Long.parseLong(param.getParamValue()));\r
109       } else if (param.getParamName().equals("TargetFileName")) {\r
110         download.setTargetFileName(param.getParamValue());\r
111       } else if (param.getParamName().equals("DelaySeconds")) {\r
112         download.setDelaySeconds(Integer.parseInt(param.getParamValue()));\r
113       } else if (param.getParamName().equals("SuccessURL")) {\r
114         download.setSuccessUrl(param.getParamValue());\r
115       } else if (param.getParamName().equals("FailureURL")) {\r
116         download.setFailureUrl(param.getParamValue());\r
117       }\r
118     }\r
119     download.setCommandKey(String.valueOf(deviceId));\r
120 \r
121     return download;\r
122   }\r
123 \r
124   private SetParameterValues buildSetParameterValues(OperationDetails opDetails) {\r
125     SetParameterValues spv = new SetParameterValues();\r
126     List<ParameterDTO> parmeters = opDetails.getParmeters();\r
127     for (ParameterDTO param : parmeters) {\r
128       spv.addValue(param.getParamName(), param.getParamValue(), param.getDataType());\r
129     }\r
130 \r
131     return spv;\r
132   }\r
133 \r
134   private GetParameterValues buildGetParameterValues(OperationDetails opDetails) {\r
135     GetParameterValues gpv = new GetParameterValues();\r
136     List<ParameterDTO> parmeters = opDetails.getParmeters();\r
137     List<String> paramNamelist = new ArrayList<>();\r
138     for (ParameterDTO param : parmeters) {\r
139       paramNamelist.add(param.getParamName());\r
140     }\r
141     String[] parameterNames = new String[paramNamelist.size()];\r
142     for (int i = 0; i < paramNamelist.size(); i++) {\r
143       parameterNames[i] = paramNamelist.get(i);\r
144     }\r
145     gpv.setParameterNames(parameterNames);\r
146     return gpv;\r
147   }\r
148 \r
149   private SetParameterAttributes buildSetParameterAttributes(OperationDetails opDetails) {\r
150     SetParameterAttributes spa = new SetParameterAttributes();\r
151     List<ParameterDTO> parameterAttributes = opDetails.getParmeters();\r
152     for (ParameterDTO parameterDTO : parameterAttributes) {\r
153       ParameterAttributeDTO parameterAttributeDTO = (ParameterAttributeDTO) parameterDTO;\r
154       spa.addAttribute(parameterAttributeDTO.getParamName(),\r
155           parameterAttributeDTO.getNotificationChange(), parameterAttributeDTO.getNotification(),\r
156           parameterAttributeDTO.getAccesslistChange(), parameterAttributeDTO.getAccessList());\r
157     }\r
158     return spa;\r
159   }\r
160 \r
161   private GetParameterAttributes buildGetParameterAttributes(OperationDetails opDetails) {\r
162     GetParameterAttributes gpa = new GetParameterAttributes();\r
163     List<ParameterDTO> poarameterDTOs = opDetails.getParmeters();\r
164     List<String> paramNamelist = new ArrayList<>();\r
165     for (ParameterDTO param : poarameterDTOs) {\r
166       paramNamelist.add(param.getParamName());\r
167     }\r
168     String[] parameterNames = new String[paramNamelist.size()];\r
169     for (int i = 0; i < paramNamelist.size(); i++) {\r
170       parameterNames[i] = paramNamelist.get(i);\r
171     }\r
172     gpa.setParameterNames(parameterNames);\r
173 \r
174     return gpa;\r
175   }\r
176 }\r