Device Software version management
[oam/tr069-adapter.git] / mapper / src / main / java / org / commscope / tr069adapter / mapper / netconf / impl / NetConfRequestHandlerImpl.java
index 5d6f183..9ae1196 100644 (file)
@@ -38,6 +38,7 @@ import org.commscope.tr069adapter.mapper.model.ErrorCodeDetails;
 import org.commscope.tr069adapter.mapper.model.NetConfRequest;\r
 import org.commscope.tr069adapter.mapper.model.NetConfResponse;\r
 import org.commscope.tr069adapter.mapper.model.NetConfServerDetails;\r
+import org.commscope.tr069adapter.mapper.model.VESNotificationResponse;\r
 import org.commscope.tr069adapter.mapper.netconf.NetConfRequestHandler;\r
 import org.commscope.tr069adapter.mapper.sync.SynchronizedRequestHandler;\r
 import org.commscope.tr069adapter.mapper.util.ErrorCodeUtil;\r
@@ -50,6 +51,7 @@ import org.commscope.tr069adapter.mapper.ves.VESNotificationSender;
 import org.slf4j.Logger;\r
 import org.slf4j.LoggerFactory;\r
 import org.springframework.beans.factory.annotation.Autowired;\r
+import org.springframework.http.HttpStatus;\r
 import org.springframework.stereotype.Component;\r
 import org.springframework.util.StringUtils;\r
 import org.w3c.dom.Document;\r
@@ -115,14 +117,16 @@ public class NetConfRequestHandlerImpl implements NetConfRequestHandler {
       return getEmptyResponse();\r
     } else if (deviceRPCRequest.getOpDetails() != null) {\r
       deviceRPCRequest.getOpDetails()\r
-          .setParmeters(filteredSetParameters(deviceRPCRequest.getOpDetails().getParmeters()));\r
+          .setParmeters(filteredSetParameters(deviceRPCRequest.getOpDetails().getParmeters(),\r
+              netConfRequest.getSwVersion(), netConfRequest.getHwVersion()));\r
       if (deviceRPCRequest.getOpDetails().getParmeters().isEmpty()) {\r
         LOG.debug("There are no supported device parameters found for edit-config.");\r
         return getEmptyResponse();\r
       }\r
     }\r
 \r
-    handleBooleanParametersReverse(deviceRPCRequest.getOpDetails().getParmeters());\r
+    handleBooleanParametersReverse(deviceRPCRequest.getOpDetails().getParmeters(),\r
+        netConfRequest.getSwVersion(), netConfRequest.getHwVersion());\r
     LOG.debug("Prepared NBI request for edit-config {}", deviceRPCRequest);\r
 \r
     DeviceRPCResponse deviceRPCResponseVes = null;\r
@@ -170,7 +174,8 @@ public class NetConfRequestHandlerImpl implements NetConfRequestHandler {
     if (null == deviceRPCResponse) {\r
       return getTimeOutResponse();\r
     }\r
-    response = mapperUtil.getNetconfResponse(deviceRPCResponse, false);\r
+    response = mapperUtil.getNetconfResponse(deviceRPCResponse, netConfRequest.getSwVersion(),\r
+        netConfRequest.getHwVersion(), false);\r
     return response;\r
   }\r
 \r
@@ -200,7 +205,8 @@ public class NetConfRequestHandlerImpl implements NetConfRequestHandler {
       return getEmptyResponse();\r
     } else if (request.getOpDetails() != null) {\r
       request.getOpDetails()\r
-          .setParmeters(filteredSetParameters(request.getOpDetails().getParmeters()));\r
+          .setParmeters(filteredSetParameters(request.getOpDetails().getParmeters(),\r
+              netConfRequest.getSwVersion(), netConfRequest.getHwVersion()));\r
       if (request.getOpDetails().getParmeters().isEmpty()) {\r
         LOG.debug("There are no supported device parameters found for delete-config.");\r
         return getEmptyResponse();\r
@@ -213,7 +219,8 @@ public class NetConfRequestHandlerImpl implements NetConfRequestHandler {
     if (null == opResult) {\r
       return getTimeOutResponse();\r
     }\r
-    response = mapperUtil.getNetconfResponse(opResult, false);\r
+    response = mapperUtil.getNetconfResponse(opResult, netConfRequest.getSwVersion(),\r
+        netConfRequest.getHwVersion(), false);\r
     return response;\r
   }\r
 \r
@@ -231,7 +238,8 @@ public class NetConfRequestHandlerImpl implements NetConfRequestHandler {
     } else if (request.getOpDetails() != null) {\r
 \r
       request.getOpDetails()\r
-          .setParmeters(filteredGetParameters(request.getOpDetails().getParmeters()));\r
+          .setParmeters(filteredGetParameters(request.getOpDetails().getParmeters(),\r
+              netConfRequest.getSwVersion(), netConfRequest.getHwVersion()));\r
 \r
       if (request.getOpDetails().getParmeters().isEmpty()) {\r
         LOG.debug("There are no supported device parameters found for get.");\r
@@ -245,7 +253,8 @@ public class NetConfRequestHandlerImpl implements NetConfRequestHandler {
     if (null == opResult) {\r
       return getTimeOutResponse();\r
     }\r
-    response = mapperUtil.getNetconfResponse(opResult, false);\r
+    response = mapperUtil.getNetconfResponse(opResult, netConfRequest.getSwVersion(),\r
+        netConfRequest.getHwVersion(), false);\r
     return response;\r
   }\r
 \r
@@ -270,7 +279,8 @@ public class NetConfRequestHandlerImpl implements NetConfRequestHandler {
       return getEmptyResponse();\r
     } else if (request.getOpDetails() != null) {\r
       request.getOpDetails()\r
-          .setParmeters(filteredGetParameters(request.getOpDetails().getParmeters()));\r
+          .setParmeters(filteredGetParameters(request.getOpDetails().getParmeters(),\r
+              netConfRequest.getSwVersion(), netConfRequest.getHwVersion()));\r
 \r
       if (request.getOpDetails().getParmeters().isEmpty()) {\r
         LOG.debug("There are no supported device parameters found for get-config.");\r
@@ -318,19 +328,23 @@ public class NetConfRequestHandlerImpl implements NetConfRequestHandler {
         + opResult.getFaultString() + ", Parameters :"\r
         + opResult.getOperationResponse().getParameterDTOs());\r
     if (null != opResult.getOperationResponse().getParameterDTOs())\r
-      handleBooleanParameters(opResult.getOperationResponse().getParameterDTOs());\r
+      handleBooleanParameters(opResult.getOperationResponse().getParameterDTOs(),\r
+          netConfRequest.getSwVersion(), netConfRequest.getHwVersion());\r
 \r
     if (isSoftwareInventory) {\r
-      response = mapperUtil.getNetconfResponseForSoftwareInventory(opResult);\r
+      response = mapperUtil.getNetconfResponseForSoftwareInventory(opResult,\r
+          netConfRequest.getSwVersion(), netConfRequest.getHwVersion());\r
     } else {\r
-      response = mapperUtil.getNetconfResponse(opResult, false);\r
+      response = mapperUtil.getNetconfResponse(opResult, netConfRequest.getSwVersion(),\r
+          netConfRequest.getHwVersion(), false);\r
     }\r
 \r
     if (opResult.getFaultKey() != null && opResult.getFaultKey().equalsIgnoreCase("9005")) {\r
       // check for tabular\r
       LOG.debug("Tabualr Entry not exist in the device; we need to add it now");\r
-      MOMetaData data = metaDataUtil\r
-          .getMetaDataByTR69Name(request.getOpDetails().getParmeters().get(0).getParamName());\r
+      MOMetaData data = metaDataUtil.getMetaDataByTR69Name(\r
+          request.getOpDetails().getParmeters().get(0).getParamName(),\r
+          netConfRequest.getSwVersion(), netConfRequest.getHwVersion());\r
       if (data.isTabluarObj()) {\r
         return getEmptyResponse();\r
       }\r
@@ -418,7 +432,8 @@ public class NetConfRequestHandlerImpl implements NetConfRequestHandler {
       responseParamDTOList.add(new ParameterDTO("rpc-reply.ns1:notification-timeout", "1200"));\r
 \r
       opResult.getOperationResponse().setParameterDTOs(responseParamDTOList);\r
-      response = mapperUtil.getNetconfResponse(opResult, true);\r
+      response = mapperUtil.getNetconfResponse(opResult, request.getSwVersion(),\r
+          request.getHwVersion(), true);\r
 \r
       LOG.debug("update the status for fw details " + fwDetails.toString());\r
     } else {\r
@@ -481,10 +496,12 @@ public class NetConfRequestHandlerImpl implements NetConfRequestHandler {
     return false;\r
   }\r
 \r
-  protected void handleBooleanParameters(List<ParameterDTO> parameterDTOs) {\r
+  protected void handleBooleanParameters(List<ParameterDTO> parameterDTOs, String swVersion,\r
+      String hwVersion) {\r
 \r
     for (ParameterDTO param : parameterDTOs) {\r
-      MOMetaData metaData = metaDataUtil.getMetaDataByTR69Name(param.getParamName());\r
+      MOMetaData metaData =\r
+          metaDataUtil.getMetaDataByTR69Name(param.getParamName(), swVersion, hwVersion);\r
       if (null != metaData && BOOLEAN_DATA_TYPE.equalsIgnoreCase(metaData.getDataType())) {\r
         if (BOOLEAN_TRUE_VALUE.equalsIgnoreCase(param.getParamValue().trim())) {\r
           param.setParamValue(Boolean.TRUE.toString());\r
@@ -495,10 +512,12 @@ public class NetConfRequestHandlerImpl implements NetConfRequestHandler {
     }\r
   }\r
 \r
-  protected void handleBooleanParametersReverse(List<ParameterDTO> parameterDTOs) {\r
+  protected void handleBooleanParametersReverse(List<ParameterDTO> parameterDTOs, String swVersion,\r
+      String hwVersion) {\r
 \r
     for (ParameterDTO param : parameterDTOs) {\r
-      MOMetaData metaData = metaDataUtil.getMetaDataByTR69Name(param.getParamName());\r
+      MOMetaData metaData =\r
+          metaDataUtil.getMetaDataByTR69Name(param.getParamName(), swVersion, hwVersion);\r
       if (null != metaData && BOOLEAN_DATA_TYPE.equalsIgnoreCase(metaData.getDataType())) {\r
         if (Boolean.TRUE.toString().equalsIgnoreCase(param.getParamValue().trim())) {\r
           param.setParamValue(BOOLEAN_TRUE_VALUE);\r
@@ -571,10 +590,12 @@ public class NetConfRequestHandlerImpl implements NetConfRequestHandler {
     return timeOutErrorResponse;\r
   }\r
 \r
-  public List<ParameterDTO> filteredSetParameters(List<ParameterDTO> parameters) {\r
+  public List<ParameterDTO> filteredSetParameters(List<ParameterDTO> parameters, String swVersion,\r
+      String hwVersion) {\r
     List<ParameterDTO> result = new ArrayList<>();\r
     for (ParameterDTO param : parameters) {\r
-      MOMetaData metaData = metaDataUtil.getMetaDataByNetConfName(param.getParamName());\r
+      MOMetaData metaData =\r
+          metaDataUtil.getMetaDataByNetConfName(param.getParamName(), swVersion, hwVersion);\r
       if (null != metaData && !metaData.isReadOnly()) {\r
         String tr069MoName =\r
             MOMetaDataUtil.getTR69MOByReplacingIndexes(param.getParamName(), metaData.getMoName());\r
@@ -586,23 +607,28 @@ public class NetConfRequestHandlerImpl implements NetConfRequestHandler {
     return result;\r
   }\r
 \r
-  protected List<ParameterDTO> filteredGetParameters(List<ParameterDTO> parameters) {\r
-\r
-    return metaDataUtil.getSupportedChildParameters(parameters);\r
+  protected List<ParameterDTO> filteredGetParameters(List<ParameterDTO> parameters,\r
+      String swVersion, String hwVersion) {\r
+    return metaDataUtil.getSupportedChildParameters(parameters, swVersion, hwVersion);\r
   }\r
 \r
   @Override\r
   public boolean handelRegisterEvent(NetConfServerDetails request) {\r
     LOG.debug("processing the handelRegisterEvent started");\r
-    boolean result = false;\r
     try {\r
-      vesnotiSender.sendNotification(null, request);\r
+      VESNotificationResponse vesRsponse = vesnotiSender.sendNotification(null, request);\r
+      if (HttpStatus.valueOf(vesRsponse.getStatusCode()).is2xxSuccessful()) {\r
+        LOG.debug("processing the handelRegisterEvent completed");\r
+        return true;\r
+      } else {\r
+        LOG.error("processing the handelRegisterEvent error code recevived: {}",\r
+            vesRsponse.getStatusCode());\r
+        return false;\r
+      }\r
     } catch (Exception e) {\r
       LOG.error("processing the handelRegisterEvent exception occurred");\r
-      result = false;\r
+      return false;\r
     }\r
-    LOG.debug("processing the handelRegisterEvent completed");\r
-    return result;\r
   }\r
 \r
   protected static String getDownloadFileURI(String filepath) {\r