2 * ============LICENSE_START========================================================================
3 * ONAP : tr-069-adapter
4 * =================================================================================================
5 * Copyright (C) 2020 CommScope Inc Intellectual Property.
6 * =================================================================================================
7 * This tr-069-adapter software file is distributed by CommScope Inc under the Apache License,
8 * Version 2.0 (the "License"); you may not use this file except in compliance with the License. You
9 * may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
14 * either express or implied. See the License for the specific language governing permissions and
15 * limitations under the License.
16 * ===============LICENSE_END=======================================================================
19 package org.commscope.tr069adapter.acs.cpe.builder;
21 import java.util.ArrayList;
22 import java.util.List;
24 import org.commscope.tr069adapter.acs.common.DeviceRPCRequest;
25 import org.commscope.tr069adapter.acs.common.OperationCode;
26 import org.commscope.tr069adapter.acs.common.OperationDetails;
27 import org.commscope.tr069adapter.acs.common.ParameterDTO;
28 import org.commscope.tr069adapter.acs.common.dto.ParameterAttributeDTO;
29 import org.commscope.tr069adapter.acs.common.dto.TR069OperationCode;
30 import org.commscope.tr069adapter.acs.cpe.TR069RPC;
31 import org.commscope.tr069adapter.acs.cpe.rpc.AddObject;
32 import org.commscope.tr069adapter.acs.cpe.rpc.DeleteObject;
33 import org.commscope.tr069adapter.acs.cpe.rpc.Download;
34 import org.commscope.tr069adapter.acs.cpe.rpc.FactoryReset;
35 import org.commscope.tr069adapter.acs.cpe.rpc.GetParameterAttributes;
36 import org.commscope.tr069adapter.acs.cpe.rpc.GetParameterValues;
37 import org.commscope.tr069adapter.acs.cpe.rpc.Reboot;
38 import org.commscope.tr069adapter.acs.cpe.rpc.SetParameterAttributes;
39 import org.commscope.tr069adapter.acs.cpe.rpc.SetParameterValues;
40 import org.springframework.stereotype.Component;
43 public class DeviceRPCBuilder {
46 * @param deviceRPCRequest
51 public TR069RPC constructDeviceRPC(DeviceRPCRequest deviceRPCRequest) {
52 TR069RPC message = null;
54 OperationDetails opDetails = deviceRPCRequest.getOpDetails();
55 if (null == opDetails || null == opDetails.getOpCode()) {
59 OperationCode opCode = opDetails.getOpCode();
60 if (opCode.equals(TR069OperationCode.SET_PARAMETER_VALUES)) {
61 message = buildSetParameterValues(opDetails);
62 } else if (opCode.equals(TR069OperationCode.GET_PARAMETER_VALUES)) {
63 message = buildGetParameterValues(opDetails);
64 } else if (opCode.equals(TR069OperationCode.SET_PARAMETER_ATTRIBUTES)) {
65 message = buildSetParameterAttributes(opDetails);
66 } else if (opCode.equals(TR069OperationCode.GET_PARAMETER_ATTRIBUTES)) {
67 message = buildGetParameterAttributes(opDetails);
68 } else if (opCode.equals(TR069OperationCode.ADD_OBJECT)) {
69 List<ParameterDTO> poarameterDTOs = opDetails.getParmeters();
70 for (ParameterDTO param : poarameterDTOs) {
71 AddObject addObject = new AddObject(param.getParamName(), String.valueOf(hashCode()));
74 } else if (opCode.equals(TR069OperationCode.DELETE_OBJECT)) {
75 List<ParameterDTO> poarameterDTOs = opDetails.getParmeters();
76 for (ParameterDTO param : poarameterDTOs) {
77 DeleteObject deleteObject =
78 new DeleteObject(param.getParamName(), String.valueOf(hashCode()));
79 message = deleteObject;
81 } else if (opCode.equals(TR069OperationCode.DOWNLOAD)) {
82 String deviceId = deviceRPCRequest.getDeviceDetails().getDeviceId();
83 List<ParameterDTO> poarameterDTOs = opDetails.getParmeters();
84 message = populateDownloadParams(deviceId, poarameterDTOs);
85 } else if (opCode.equals(TR069OperationCode.FACTORY_RESET)) {
86 message = new FactoryReset();
87 } else if (opCode.equals(TR069OperationCode.REBOOT)) {
88 message = new Reboot();
95 * @param poarameterDTOs
98 private Download populateDownloadParams(String deviceId, List<ParameterDTO> poarameterDTOs) {
99 Download download = new Download();
100 for (ParameterDTO param : poarameterDTOs) {
101 if (param.getParamName().equals("FileType")) {
102 download.setFileType(param.getParamValue());
103 } else if (param.getParamName().equals("URL")) {
104 download.setUrl(param.getParamValue());
105 } else if (param.getParamName().equals("Username")) {
106 download.setUserName(param.getParamValue());
107 } else if (param.getParamName().equals("Password")) {
108 download.setPassword(param.getParamValue());
109 } else if (param.getParamName().equals("FileSize")) {
110 download.setFileSize(Long.parseLong(param.getParamValue()));
111 } else if (param.getParamName().equals("TargetFileName")) {
112 download.setTargetFileName(param.getParamValue());
113 } else if (param.getParamName().equals("DelaySeconds")) {
114 download.setDelaySeconds(Integer.parseInt(param.getParamValue()));
115 } else if (param.getParamName().equals("SuccessURL")) {
116 download.setSuccessUrl(param.getParamValue());
117 } else if (param.getParamName().equals("FailureURL")) {
118 download.setFailureUrl(param.getParamValue());
121 download.setCommandKey(String.valueOf(deviceId));
126 private SetParameterValues buildSetParameterValues(OperationDetails opDetails) {
127 SetParameterValues spv = new SetParameterValues();
128 List<ParameterDTO> parmeters = opDetails.getParmeters();
129 for (ParameterDTO param : parmeters) {
130 spv.addValue(param.getParamName(), param.getParamValue(), param.getDataType());
136 private GetParameterValues buildGetParameterValues(OperationDetails opDetails) {
137 GetParameterValues gpv = new GetParameterValues();
138 List<ParameterDTO> parmeters = opDetails.getParmeters();
139 List<String> paramNamelist = new ArrayList<>();
140 for (ParameterDTO param : parmeters) {
141 paramNamelist.add(param.getParamName());
143 String[] parameterNames = new String[paramNamelist.size()];
144 for (int i = 0; i < paramNamelist.size(); i++) {
145 parameterNames[i] = paramNamelist.get(i);
147 gpv.setParameterNames(parameterNames);
151 private SetParameterAttributes buildSetParameterAttributes(OperationDetails opDetails) {
152 SetParameterAttributes spa = new SetParameterAttributes();
153 List<ParameterDTO> parameterAttributes = opDetails.getParmeters();
154 for (ParameterDTO parameterDTO : parameterAttributes) {
155 ParameterAttributeDTO parameterAttributeDTO = (ParameterAttributeDTO) parameterDTO;
156 spa.addAttribute(parameterAttributeDTO.getParamName(),
157 parameterAttributeDTO.getNotificationChange(), parameterAttributeDTO.getNotification(),
158 parameterAttributeDTO.getAccesslistChange(), parameterAttributeDTO.getAccessList());
163 private GetParameterAttributes buildGetParameterAttributes(OperationDetails opDetails) {
164 GetParameterAttributes gpa = new GetParameterAttributes();
165 List<ParameterDTO> poarameterDTOs = opDetails.getParmeters();
166 List<String> paramNamelist = new ArrayList<>();
167 for (ParameterDTO param : poarameterDTOs) {
168 paramNamelist.add(param.getParamName());
170 String[] parameterNames = new String[paramNamelist.size()];
171 for (int i = 0; i < paramNamelist.size(); i++) {
172 parameterNames[i] = paramNamelist.get(i);
174 gpa.setParameterNames(parameterNames);