-/*\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
-\r
-package org.commscope.tr069adapter.acs.requestprocessor.util;\r
-\r
-import static org.commscope.tr069adapter.acs.common.utils.AcsConstants.DEVICE_RPC_EXECUTION_TIMEOUT_SECONDS;\r
-\r
-import com.google.gson.Gson;\r
-import com.google.gson.reflect.TypeToken;\r
-\r
-import java.lang.reflect.Type;\r
-import java.util.ArrayList;\r
-import java.util.Date;\r
-import java.util.List;\r
-\r
-import org.commscope.tr069adapter.acs.common.DeviceRPCRequest;\r
-import org.commscope.tr069adapter.acs.common.OperationCode;\r
-import org.commscope.tr069adapter.acs.common.OperationDetails;\r
-import org.commscope.tr069adapter.acs.common.OperationOptions;\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.ParameterAttributeDTO;\r
-import org.commscope.tr069adapter.acs.common.dto.TR069DeviceDetails;\r
-import org.commscope.tr069adapter.acs.common.dto.TR069OperationCode;\r
-import org.commscope.tr069adapter.acs.common.dto.TR069OperationDetails;\r
-import org.commscope.tr069adapter.acs.common.exception.TR069EventProcessingException;\r
-import org.commscope.tr069adapter.acs.common.utils.ErrorCode;\r
-import org.commscope.tr069adapter.acs.requestprocessor.entity.TR069DeviceRPCRequestEntity;\r
-\r
-public class TR069RequestProcessorUtility {\r
-\r
- protected static final int BLOCK_SIZE = 3999;\r
- protected static final int MAX_SIZE = 11998;\r
- public static final int DEVICE_REACHABLE_STATUS_CODE = 100;\r
- public static final String ADMIN_STATE = "FAPControl.LTE.AdminState";\r
- public static final String ADMIN_STATUS = "FAPControl.LTE.AdminStatus";\r
-\r
-\r
- private TR069RequestProcessorUtility() {\r
- super();\r
- }\r
-\r
- /**\r
- * Converts entity object to DTO\r
- * \r
- * @param entityList\r
- * @return\r
- */\r
- public static DeviceRPCRequest convertToDTO(List<TR069DeviceRPCRequestEntity> entityList) {\r
- DeviceRPCRequest deviceRPCRequest = new DeviceRPCRequest();\r
- OperationDetails operationDetails = new TR069OperationDetails();\r
-\r
- boolean isCustomOperation = true;\r
- OperationCode opCode = null;\r
-\r
- TR069DeviceRPCRequestEntity entity = entityList.get(0);\r
- if (CustomOperationCode.getByOperationCode(entity.getOpCode()) != null) {\r
- opCode = CustomOperationCode.getByOperationCode(entity.getOpCode());\r
- } else {\r
- opCode = TR069OperationCode.getByOperationCode(entity.getOpCode());\r
- isCustomOperation = false;\r
- }\r
-\r
- operationDetails.setOpCode(opCode);\r
- dtoFromEntityJson(operationDetails, entityList, isCustomOperation);\r
- deviceRPCRequest.setOpDetails(operationDetails);\r
-\r
- OperationOptions opOptions = new OperationOptions();\r
- opOptions.setExecutionTimeout(entity.getRequestTimeOut());\r
- deviceRPCRequest.setOptions(opOptions);\r
-\r
- TR069DeviceDetails deviceDetails = new TR069DeviceDetails();\r
- deviceDetails.setDeviceId(entity.getDeviceId());\r
-\r
- deviceRPCRequest.setDeviceDetails(deviceDetails);\r
- deviceRPCRequest.setOperationId(entity.getOperationId());\r
- return deviceRPCRequest;\r
- }\r
-\r
- /**\r
- * Converts DTO to entity object\r
- * \r
- * @param deviceRPCRequest\r
- * @return\r
- * @throws TR069EventProcessingException\r
- */\r
- public static List<TR069DeviceRPCRequestEntity> convertToEntity(DeviceRPCRequest deviceRPCRequest)\r
- throws TR069EventProcessingException {\r
-\r
- if (deviceRPCRequest.getOpDetails() == null\r
- || deviceRPCRequest.getOpDetails().getOpCode() == null) {\r
- throw new TR069EventProcessingException(ErrorCode.MISSING_OPERATION_DETAILS);\r
- }\r
-\r
- Integer opCode = null;\r
- boolean isCustomOperation = true;\r
- OperationCode operationCode = deviceRPCRequest.getOpDetails().getOpCode();\r
- if (CustomOperationCode.getByOperationCode(operationCode.getOperationCode()) != null) {\r
- CustomOperationCode customOperationCode =\r
- CustomOperationCode.getByOperationCode(operationCode.getOperationCode());\r
- opCode = customOperationCode.getOperationCode();\r
- } else {\r
- TR069OperationCode tr069OperationCode =\r
- (TR069OperationCode) deviceRPCRequest.getOpDetails().getOpCode();\r
- opCode = tr069OperationCode.getOperationCode();\r
- isCustomOperation = false;\r
- }\r
-\r
- String paramListJSON = paramListToJson(deviceRPCRequest, isCustomOperation);\r
- List<TR069DeviceRPCRequestEntity> tr069DeviceRPCRequestEntities =\r
- getTR069DeviceRPCRequestEntities(paramListJSON);\r
-\r
- for (TR069DeviceRPCRequestEntity entity : tr069DeviceRPCRequestEntities) {\r
- entity.setOpCode(opCode);\r
- entity.setCreateTime(new Date());\r
- entity.setDeviceId(deviceRPCRequest.getDeviceDetails().getDeviceId());\r
- entity.setOperationId(deviceRPCRequest.getOperationId());\r
- entity.setIsProcessed(0);\r
- if (deviceRPCRequest.getOptions() != null\r
- && deviceRPCRequest.getOptions().getExecutionTimeout() != 0L) {\r
- entity.setRequestTimeOut(deviceRPCRequest.getOptions().getExecutionTimeout());\r
- } else {\r
- entity.setRequestTimeOut(DEVICE_RPC_EXECUTION_TIMEOUT_SECONDS);\r
- OperationOptions options = new OperationOptions();\r
- options.setExecutionTimeout(DEVICE_RPC_EXECUTION_TIMEOUT_SECONDS);\r
- deviceRPCRequest.setOptions(options);\r
- }\r
- }\r
-\r
- return tr069DeviceRPCRequestEntities;\r
- }\r
-\r
- /**\r
- * @param entity\r
- * @param dto\r
- * @param isCustomOperation\r
- */\r
- private static String paramListToJson(DeviceRPCRequest dto, boolean isCustomOperation) {\r
- String attrJsonString = null;\r
- if (isCustomOperation) {\r
- TR069OperationDetails operationDetails = (TR069OperationDetails) dto.getOpDetails();\r
- StringBuilder buffer = new StringBuilder();\r
-\r
- List<ParameterDTO> deletParamList = operationDetails.getDeleteParamList();\r
- List<ParameterDTO> modifyParamList = operationDetails.getModifyParamList();\r
- List<ParameterDTO> setParamList = operationDetails.getSetParamList();\r
-\r
- if (deletParamList != null && !deletParamList.isEmpty()) {\r
- convertBooleanValues(deletParamList);\r
- buffer.append(toJson(deletParamList));\r
- } else {\r
- buffer.append(toJson(new ArrayList<>()));\r
- }\r
-\r
- if (modifyParamList != null && !modifyParamList.isEmpty()) {\r
- convertBooleanValues(modifyParamList);\r
- buffer.append(toJson(modifyParamList));\r
- } else {\r
- buffer.append(toJson(new ArrayList<>()));\r
- }\r
-\r
- if (setParamList != null && !setParamList.isEmpty()) {\r
- convertBooleanValues(setParamList);\r
- buffer.append(toJson(setParamList));\r
- } else {\r
- buffer.append(toJson(new ArrayList<>()));\r
- }\r
-\r
- attrJsonString = buffer.toString();\r
- } else {\r
- List<ParameterDTO> parameterDTOs = dto.getOpDetails().getParmeters();\r
- attrJsonString = toJson(parameterDTOs);\r
- }\r
-\r
- return attrJsonString;\r
- }\r
-\r
- /**\r
- * @param paramListJSON\r
- * @return\r
- */\r
- private static List<TR069DeviceRPCRequestEntity> getTR069DeviceRPCRequestEntities(\r
- String paramListJSON) {\r
- List<TR069DeviceRPCRequestEntity> tr069DeviceRPCRequestEntities = new ArrayList<>();\r
-\r
- if (paramListJSON.length() < MAX_SIZE) {\r
- TR069DeviceRPCRequestEntity entity = new TR069DeviceRPCRequestEntity();\r
- entity.setAttributeJson1(getAttriuteJsonData(paramListJSON, 0));\r
- entity.setAttributeJson2(getAttriuteJsonData(paramListJSON, 1));\r
- entity.setAttributeJson3(getAttriuteJsonData(paramListJSON, 2));\r
-\r
- tr069DeviceRPCRequestEntities.add(entity);\r
- } else {\r
- int noOfEntities = 0;\r
- while (true) {\r
- int i = 3 * noOfEntities;\r
- TR069DeviceRPCRequestEntity entity = new TR069DeviceRPCRequestEntity();\r
- entity.setAttributeJson1(getAttriuteJsonData(paramListJSON, i));\r
- entity.setAttributeJson2(getAttriuteJsonData(paramListJSON, ++i));\r
- entity.setAttributeJson3(getAttriuteJsonData(paramListJSON, ++i));\r
-\r
- if (entity.getAttributeJson1() != null) {\r
- tr069DeviceRPCRequestEntities.add(entity);\r
- }\r
-\r
- if (entity.getAttributeJson1() == null || entity.getAttributeJson2() == null\r
- || entity.getAttributeJson3() == null) {\r
- break;\r
- }\r
-\r
- noOfEntities++;\r
- }\r
-\r
- }\r
- return tr069DeviceRPCRequestEntities;\r
- }\r
-\r
- /**\r
- * @param eventData\r
- * @param blockNum\r
- * @return\r
- */\r
- private static String getAttriuteJsonData(String eventData, int blockNum) {\r
- int eventDataSize = eventData.length();\r
- int startIndex = blockNum * BLOCK_SIZE;\r
- if (startIndex > eventDataSize) {\r
- return null;\r
- }\r
- int endIndex = startIndex + BLOCK_SIZE;\r
- endIndex = endIndex < eventDataSize ? endIndex : eventDataSize;\r
- return eventData.substring(startIndex, endIndex);\r
- }\r
-\r
- /**\r
- * @param opDetails\r
- * @param entity\r
- * @param isCustomOperation\r
- */\r
- private static void dtoFromEntityJson(OperationDetails opDetails,\r
- List<TR069DeviceRPCRequestEntity> entityList, boolean isCustomOperation) {\r
- StringBuilder sb = new StringBuilder();\r
- for (TR069DeviceRPCRequestEntity entity : entityList) {\r
- append(sb, entity.getAttributeJson1());\r
- append(sb, entity.getAttributeJson2());\r
- append(sb, entity.getAttributeJson3());\r
- }\r
-\r
- if (isCustomOperation) {\r
- String[] splitStringArray = sb.toString().split("]\\[");\r
- List<ParameterDTO> deleteParamList = new ArrayList<>();\r
- List<ParameterDTO> modifyParamList = new ArrayList<>();\r
- List<ParameterDTO> setParamList = new ArrayList<>();\r
- for (int i = 0; i < splitStringArray.length; i++) {\r
- String data = splitStringArray[i];\r
- if (i == 0) {\r
- data = data + "]";\r
- deleteParamList.addAll(fromJson(data));\r
- } else if ((i + 1) == splitStringArray.length) {\r
- data = "[" + data;\r
- setParamList.addAll(fromJson(data));\r
- } else {\r
- data = "[" + data + "]";\r
- modifyParamList.addAll(fromJson(data));\r
- }\r
- }\r
- TR069OperationDetails tr069OperationDetails = (TR069OperationDetails) opDetails;\r
- tr069OperationDetails.setDeleteParamList(deleteParamList);\r
- tr069OperationDetails.setModifyParamList(modifyParamList);\r
- tr069OperationDetails.setSetParamList(setParamList);\r
- } else {\r
- if (TR069OperationCode.SET_PARAMETER_ATTRIBUTES.equals(opDetails.getOpCode())) {\r
- List<ParameterDTO> list = fromJsonToParameterAttribute(sb.toString());\r
- opDetails.setParmeters(list);\r
- } else {\r
- List<ParameterDTO> list = fromJson(sb.toString());\r
- opDetails.setParmeters(list);\r
- }\r
- }\r
- }\r
-\r
- /**\r
- * @param sb\r
- * @param temp\r
- */\r
- private static void append(StringBuilder sb, String temp) {\r
- if (temp != null && !temp.isEmpty()) {\r
- sb.append(temp);\r
- }\r
- }\r
-\r
- /**\r
- * @param jsonString\r
- * @return\r
- */\r
- private static List<ParameterDTO> fromJson(String jsonString) {\r
- Gson gson = new Gson();\r
- Type collectionType = new TypeToken<List<ParameterDTO>>() {}.getType();\r
- return gson.fromJson(jsonString, collectionType);\r
- }\r
-\r
- /**\r
- * @param jsonString\r
- * @return\r
- */\r
- private static List<ParameterDTO> fromJsonToParameterAttribute(String jsonString) {\r
- Gson gson = new Gson();\r
- Type collectionType = new TypeToken<List<ParameterAttributeDTO>>() {}.getType();\r
- return gson.fromJson(jsonString, collectionType);\r
- }\r
-\r
- /**\r
- * @param entity\r
- * @return\r
- */\r
- private static <T> String toJson(T entity) {\r
- Gson gson = new Gson();\r
- return gson.toJson(entity);\r
- }\r
-\r
- /**\r
- * @param parameterDTOs\r
- */\r
- private static void convertBooleanValues(List<ParameterDTO> parameterDTOs) {\r
- for (ParameterDTO param : parameterDTOs) {\r
- if (param.getDataType() != null && param.getDataType().equalsIgnoreCase("boolean")) {\r
- if (param.getParamValue() != null && (param.getParamValue().equalsIgnoreCase("true")\r
- || param.getParamValue().equalsIgnoreCase("1"))) {\r
- param.setParamValue("1");\r
- } else {\r
- param.setParamValue("0");\r
- }\r
- }\r
- }\r
- }\r
-\r
-}\r
+/*
+ * ============LICENSE_START========================================================================
+ * ONAP : tr-069-adapter
+ * =================================================================================================
+ * Copyright (C) 2020 CommScope Inc Intellectual Property.
+ * =================================================================================================
+ * This tr-069-adapter software file is distributed by CommScope Inc under the Apache License,
+ * Version 2.0 (the "License"); you may not use this file except in compliance with the License. You
+ * may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
+ * either express or implied. See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ===============LICENSE_END=======================================================================
+ */
+
+
+package org.commscope.tr069adapter.acs.requestprocessor.util;
+
+import static org.commscope.tr069adapter.acs.common.utils.AcsConstants.DEVICE_RPC_EXECUTION_TIMEOUT_SECONDS;
+
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
+
+import java.lang.reflect.Type;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+import org.commscope.tr069adapter.acs.common.DeviceRPCRequest;
+import org.commscope.tr069adapter.acs.common.OperationCode;
+import org.commscope.tr069adapter.acs.common.OperationDetails;
+import org.commscope.tr069adapter.acs.common.OperationOptions;
+import org.commscope.tr069adapter.acs.common.ParameterDTO;
+import org.commscope.tr069adapter.acs.common.dto.CustomOperationCode;
+import org.commscope.tr069adapter.acs.common.dto.ParameterAttributeDTO;
+import org.commscope.tr069adapter.acs.common.dto.TR069DeviceDetails;
+import org.commscope.tr069adapter.acs.common.dto.TR069OperationCode;
+import org.commscope.tr069adapter.acs.common.dto.TR069OperationDetails;
+import org.commscope.tr069adapter.acs.common.exception.TR069EventProcessingException;
+import org.commscope.tr069adapter.acs.common.utils.ErrorCode;
+import org.commscope.tr069adapter.acs.requestprocessor.entity.TR069DeviceRPCRequestEntity;
+
+public class TR069RequestProcessorUtility {
+
+ protected static final int BLOCK_SIZE = 3999;
+ protected static final int MAX_SIZE = 11998;
+ public static final int DEVICE_REACHABLE_STATUS_CODE = 100;
+ public static final String ADMIN_STATE = "FAPControl.LTE.AdminState";
+ public static final String ADMIN_STATUS = "FAPControl.LTE.AdminStatus";
+
+
+ private TR069RequestProcessorUtility() {
+ super();
+ }
+
+ /**
+ * Converts entity object to DTO
+ *
+ * @param entityList
+ * @return
+ */
+ public static DeviceRPCRequest convertToDTO(List<TR069DeviceRPCRequestEntity> entityList) {
+ DeviceRPCRequest deviceRPCRequest = new DeviceRPCRequest();
+ OperationDetails operationDetails = new TR069OperationDetails();
+
+ boolean isCustomOperation = true;
+ OperationCode opCode = null;
+
+ TR069DeviceRPCRequestEntity entity = entityList.get(0);
+ if (CustomOperationCode.getByOperationCode(entity.getOpCode()) != null) {
+ opCode = CustomOperationCode.getByOperationCode(entity.getOpCode());
+ } else {
+ opCode = TR069OperationCode.getByOperationCode(entity.getOpCode());
+ isCustomOperation = false;
+ }
+
+ operationDetails.setOpCode(opCode);
+ dtoFromEntityJson(operationDetails, entityList, isCustomOperation);
+ deviceRPCRequest.setOpDetails(operationDetails);
+
+ OperationOptions opOptions = new OperationOptions();
+ opOptions.setExecutionTimeout(entity.getRequestTimeOut());
+ deviceRPCRequest.setOptions(opOptions);
+
+ TR069DeviceDetails deviceDetails = new TR069DeviceDetails();
+ deviceDetails.setDeviceId(entity.getDeviceId());
+
+ deviceRPCRequest.setDeviceDetails(deviceDetails);
+ deviceRPCRequest.setOperationId(entity.getOperationId());
+ return deviceRPCRequest;
+ }
+
+ /**
+ * Converts DTO to entity object
+ *
+ * @param deviceRPCRequest
+ * @return
+ * @throws TR069EventProcessingException
+ */
+ public static List<TR069DeviceRPCRequestEntity> convertToEntity(DeviceRPCRequest deviceRPCRequest)
+ throws TR069EventProcessingException {
+
+ if (deviceRPCRequest.getOpDetails() == null
+ || deviceRPCRequest.getOpDetails().getOpCode() == null) {
+ throw new TR069EventProcessingException(ErrorCode.MISSING_OPERATION_DETAILS);
+ }
+
+ Integer opCode = null;
+ boolean isCustomOperation = true;
+ OperationCode operationCode = deviceRPCRequest.getOpDetails().getOpCode();
+ if (CustomOperationCode.getByOperationCode(operationCode.getOperationCode()) != null) {
+ CustomOperationCode customOperationCode =
+ CustomOperationCode.getByOperationCode(operationCode.getOperationCode());
+ opCode = customOperationCode.getOperationCode();
+ } else {
+ TR069OperationCode tr069OperationCode =
+ (TR069OperationCode) deviceRPCRequest.getOpDetails().getOpCode();
+ opCode = tr069OperationCode.getOperationCode();
+ isCustomOperation = false;
+ }
+
+ String paramListJSON = paramListToJson(deviceRPCRequest, isCustomOperation);
+ List<TR069DeviceRPCRequestEntity> tr069DeviceRPCRequestEntities =
+ getTR069DeviceRPCRequestEntities(paramListJSON);
+
+ for (TR069DeviceRPCRequestEntity entity : tr069DeviceRPCRequestEntities) {
+ entity.setOpCode(opCode);
+ entity.setCreateTime(new Date());
+ entity.setDeviceId(deviceRPCRequest.getDeviceDetails().getDeviceId());
+ entity.setOperationId(deviceRPCRequest.getOperationId());
+ entity.setIsProcessed(0);
+ if (deviceRPCRequest.getOptions() != null
+ && deviceRPCRequest.getOptions().getExecutionTimeout() != 0L) {
+ entity.setRequestTimeOut(deviceRPCRequest.getOptions().getExecutionTimeout());
+ } else {
+ entity.setRequestTimeOut(DEVICE_RPC_EXECUTION_TIMEOUT_SECONDS);
+ OperationOptions options = new OperationOptions();
+ options.setExecutionTimeout(DEVICE_RPC_EXECUTION_TIMEOUT_SECONDS);
+ deviceRPCRequest.setOptions(options);
+ }
+ }
+
+ return tr069DeviceRPCRequestEntities;
+ }
+
+ /**
+ * @param entity
+ * @param dto
+ * @param isCustomOperation
+ */
+ private static String paramListToJson(DeviceRPCRequest dto, boolean isCustomOperation) {
+ String attrJsonString = null;
+ if (isCustomOperation) {
+ TR069OperationDetails operationDetails = (TR069OperationDetails) dto.getOpDetails();
+ StringBuilder buffer = new StringBuilder();
+
+ List<ParameterDTO> deletParamList = operationDetails.getDeleteParamList();
+ List<ParameterDTO> modifyParamList = operationDetails.getModifyParamList();
+ List<ParameterDTO> setParamList = operationDetails.getSetParamList();
+
+ if (deletParamList != null && !deletParamList.isEmpty()) {
+ convertBooleanValues(deletParamList);
+ buffer.append(toJson(deletParamList));
+ } else {
+ buffer.append(toJson(new ArrayList<>()));
+ }
+
+ if (modifyParamList != null && !modifyParamList.isEmpty()) {
+ convertBooleanValues(modifyParamList);
+ buffer.append(toJson(modifyParamList));
+ } else {
+ buffer.append(toJson(new ArrayList<>()));
+ }
+
+ if (setParamList != null && !setParamList.isEmpty()) {
+ convertBooleanValues(setParamList);
+ buffer.append(toJson(setParamList));
+ } else {
+ buffer.append(toJson(new ArrayList<>()));
+ }
+
+ attrJsonString = buffer.toString();
+ } else {
+ List<ParameterDTO> parameterDTOs = dto.getOpDetails().getParmeters();
+ attrJsonString = toJson(parameterDTOs);
+ }
+
+ return attrJsonString;
+ }
+
+ /**
+ * @param paramListJSON
+ * @return
+ */
+ private static List<TR069DeviceRPCRequestEntity> getTR069DeviceRPCRequestEntities(
+ String paramListJSON) {
+ List<TR069DeviceRPCRequestEntity> tr069DeviceRPCRequestEntities = new ArrayList<>();
+
+ if (paramListJSON.length() < MAX_SIZE) {
+ TR069DeviceRPCRequestEntity entity = new TR069DeviceRPCRequestEntity();
+ entity.setAttributeJson1(getAttriuteJsonData(paramListJSON, 0));
+ entity.setAttributeJson2(getAttriuteJsonData(paramListJSON, 1));
+ entity.setAttributeJson3(getAttriuteJsonData(paramListJSON, 2));
+
+ tr069DeviceRPCRequestEntities.add(entity);
+ } else {
+ int noOfEntities = 0;
+ while (true) {
+ int i = 3 * noOfEntities;
+ TR069DeviceRPCRequestEntity entity = new TR069DeviceRPCRequestEntity();
+ entity.setAttributeJson1(getAttriuteJsonData(paramListJSON, i));
+ entity.setAttributeJson2(getAttriuteJsonData(paramListJSON, ++i));
+ entity.setAttributeJson3(getAttriuteJsonData(paramListJSON, ++i));
+
+ if (entity.getAttributeJson1() != null) {
+ tr069DeviceRPCRequestEntities.add(entity);
+ }
+
+ if (entity.getAttributeJson1() == null || entity.getAttributeJson2() == null
+ || entity.getAttributeJson3() == null) {
+ break;
+ }
+
+ noOfEntities++;
+ }
+
+ }
+ return tr069DeviceRPCRequestEntities;
+ }
+
+ /**
+ * @param eventData
+ * @param blockNum
+ * @return
+ */
+ private static String getAttriuteJsonData(String eventData, int blockNum) {
+ int eventDataSize = eventData.length();
+ int startIndex = blockNum * BLOCK_SIZE;
+ if (startIndex > eventDataSize) {
+ return null;
+ }
+ int endIndex = startIndex + BLOCK_SIZE;
+ endIndex = endIndex < eventDataSize ? endIndex : eventDataSize;
+ return eventData.substring(startIndex, endIndex);
+ }
+
+ /**
+ * @param opDetails
+ * @param entity
+ * @param isCustomOperation
+ */
+ private static void dtoFromEntityJson(OperationDetails opDetails,
+ List<TR069DeviceRPCRequestEntity> entityList, boolean isCustomOperation) {
+ StringBuilder sb = new StringBuilder();
+ for (TR069DeviceRPCRequestEntity entity : entityList) {
+ append(sb, entity.getAttributeJson1());
+ append(sb, entity.getAttributeJson2());
+ append(sb, entity.getAttributeJson3());
+ }
+
+ if (isCustomOperation) {
+ String[] splitStringArray = sb.toString().split("]\\[");
+ List<ParameterDTO> deleteParamList = new ArrayList<>();
+ List<ParameterDTO> modifyParamList = new ArrayList<>();
+ List<ParameterDTO> setParamList = new ArrayList<>();
+ for (int i = 0; i < splitStringArray.length; i++) {
+ String data = splitStringArray[i];
+ if (i == 0) {
+ data = data + "]";
+ deleteParamList.addAll(fromJson(data));
+ } else if ((i + 1) == splitStringArray.length) {
+ data = "[" + data;
+ setParamList.addAll(fromJson(data));
+ } else {
+ data = "[" + data + "]";
+ modifyParamList.addAll(fromJson(data));
+ }
+ }
+ TR069OperationDetails tr069OperationDetails = (TR069OperationDetails) opDetails;
+ tr069OperationDetails.setDeleteParamList(deleteParamList);
+ tr069OperationDetails.setModifyParamList(modifyParamList);
+ tr069OperationDetails.setSetParamList(setParamList);
+ } else {
+ if (TR069OperationCode.SET_PARAMETER_ATTRIBUTES.equals(opDetails.getOpCode())) {
+ List<ParameterDTO> list = fromJsonToParameterAttribute(sb.toString());
+ opDetails.setParmeters(list);
+ } else {
+ List<ParameterDTO> list = fromJson(sb.toString());
+ opDetails.setParmeters(list);
+ }
+ }
+ }
+
+ /**
+ * @param sb
+ * @param temp
+ */
+ private static void append(StringBuilder sb, String temp) {
+ if (temp != null && !temp.isEmpty()) {
+ sb.append(temp);
+ }
+ }
+
+ /**
+ * @param jsonString
+ * @return
+ */
+ private static List<ParameterDTO> fromJson(String jsonString) {
+ Gson gson = new Gson();
+ Type collectionType = new TypeToken<List<ParameterDTO>>() {}.getType();
+ return gson.fromJson(jsonString, collectionType);
+ }
+
+ /**
+ * @param jsonString
+ * @return
+ */
+ private static List<ParameterDTO> fromJsonToParameterAttribute(String jsonString) {
+ Gson gson = new Gson();
+ Type collectionType = new TypeToken<List<ParameterAttributeDTO>>() {}.getType();
+ return gson.fromJson(jsonString, collectionType);
+ }
+
+ /**
+ * @param entity
+ * @return
+ */
+ private static <T> String toJson(T entity) {
+ Gson gson = new Gson();
+ return gson.toJson(entity);
+ }
+
+ /**
+ * @param parameterDTOs
+ */
+ private static void convertBooleanValues(List<ParameterDTO> parameterDTOs) {
+ for (ParameterDTO param : parameterDTOs) {
+ if (param.getDataType() != null && param.getDataType().equalsIgnoreCase("boolean")) {
+ if (param.getParamValue() != null && (param.getParamValue().equalsIgnoreCase("true")
+ || param.getParamValue().equalsIgnoreCase("1"))) {
+ param.setParamValue("1");
+ } else {
+ param.setParamValue("0");
+ }
+ }
+ }
+ }
+
+}