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
11 * http://www.apache.org/licenses/LICENSE-2.0
\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
19 package org.commscope.tr069adapter.acs.cpe.builder;
\r
21 import java.util.ArrayList;
\r
22 import java.util.List;
\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
43 public class DeviceRPCBuilder {
\r
46 * @param deviceRPCRequest
\r
49 public TR069RPC constructDeviceRPC(DeviceRPCRequest deviceRPCRequest) {
\r
50 TR069RPC message = null;
\r
52 OperationDetails opDetails = deviceRPCRequest.getOpDetails();
\r
53 if (null == opDetails || null == opDetails.getOpCode()) {
\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
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
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
93 * @param poarameterDTOs
\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
119 download.setCommandKey(String.valueOf(deviceId));
\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
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
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
145 gpv.setParameterNames(parameterNames);
\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
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
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
172 gpa.setParameterNames(parameterNames);
\r