Merge from ECOMP's repository
[vid.git] / vid-app-common / src / main / java / org / onap / vid / controller / AaiController.java
  * ============LICENSE_END=========================================================
  */
 
-package org.onap.vid.controllers;
+package org.onap.vid.controller;
 
+import com.fasterxml.jackson.databind.ObjectMapper;
 import org.apache.commons.lang3.tuple.ImmutablePair;
 import org.apache.commons.lang3.tuple.Pair;
-import org.codehaus.jackson.map.ObjectMapper;
+import org.onap.portalsdk.core.controller.RestrictedBaseController;
+import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
+import org.onap.portalsdk.core.util.SystemProperties;
+import org.onap.vid.aai.AaiGetVnfResponse;
 import org.onap.vid.aai.AaiResponse;
 import org.onap.vid.aai.AaiResponseTranslator.PortMirroringConfigData;
 import org.onap.vid.aai.ServiceInstancesSearchResults;
-import org.onap.vid.aai.SubscriberData;
 import org.onap.vid.aai.SubscriberFilteredResults;
 import org.onap.vid.aai.model.AaiGetInstanceGroupsByCloudRegion;
 import org.onap.vid.aai.model.AaiGetOperationalEnvironments.OperationalEnvironmentList;
@@ -38,9 +41,7 @@ import org.onap.vid.roles.Role;
 import org.onap.vid.roles.RoleProvider;
 import org.onap.vid.roles.RoleValidator;
 import org.onap.vid.services.AaiService;
-import org.onap.portalsdk.core.controller.RestrictedBaseController;
-import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
-import org.onap.portalsdk.core.util.SystemProperties;
+import org.onap.vid.utils.Unchecked;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.MediaType;
@@ -56,9 +57,10 @@ import javax.ws.rs.QueryParam;
 import javax.ws.rs.WebApplicationException;
 import javax.ws.rs.core.Response;
 import java.io.IOException;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.*;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
 import java.util.stream.Collectors;
 
 import static org.onap.vid.utils.Logging.getMethodName;
@@ -69,14 +71,11 @@ import static org.onap.vid.utils.Logging.getMethodName;
 
 @RestController
 public class AaiController extends RestrictedBaseController {
-    /**
-     * The Constant dateFormat.
-     */
-    final static DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss:SSSS");
+
     /**
      * The from app id.
      */
-    protected String fromAppId = "VidAaiController";
+    private String fromAppId = "VidAaiController";
     /**
      * The logger.
      */
@@ -84,7 +83,7 @@ public class AaiController extends RestrictedBaseController {
     /**
      * The model.
      */
-    private Map<String, Object> model = new HashMap<String, Object>();
+    private Map<String, Object> model = new HashMap<>();
     /**
      * The servlet context.
      */
@@ -109,20 +108,20 @@ public class AaiController extends RestrictedBaseController {
      */
     @RequestMapping(value = {"/subscriberSearch"}, method = RequestMethod.GET)
     public ModelAndView welcome(HttpServletRequest request) {
-        LOGGER.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== AaiController welcome start");
+        LOGGER.debug(EELFLoggerDelegate.debugLogger, "<== AaiController welcome start");
         return new ModelAndView(getViewName());
     }
 
     @RequestMapping(value = {"/aai_get_aic_zones"}, method = RequestMethod.GET)
     public ResponseEntity<String> getAicZones(HttpServletRequest request) throws IOException {
-        LOGGER.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== getAicZones controller start");
+        LOGGER.debug(EELFLoggerDelegate.debugLogger, "<== getAicZones controller start");
         AaiResponse response = aaiService.getAaiZones();
         return aaiResponseToResponseEntity(response);
     }
 
     @RequestMapping(value = {"/aai_get_aic_zone_for_pnf/{globalCustomerId}/{serviceType}/{serviceId}"}, method = RequestMethod.GET)
     public ResponseEntity<String> getAicZoneForPnf(@PathVariable("globalCustomerId") String globalCustomerId ,@PathVariable("serviceType") String serviceType , @PathVariable("serviceId") String serviceId ,HttpServletRequest request) throws IOException {
-        LOGGER.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== getAicZoneForPnf controller start");
+        LOGGER.debug(EELFLoggerDelegate.debugLogger, "<== getAicZoneForPnf controller start");
         AaiResponse response = aaiService.getAicZoneForPnf(globalCustomerId , serviceType , serviceId);
         return aaiResponseToResponseEntity(response);
     }
@@ -143,7 +142,7 @@ public class AaiController extends RestrictedBaseController {
 
         String userId = ControllersUtils.extractUserId(request);
 
-        return new ResponseEntity<String>(userId, HttpStatus.OK);
+        return new ResponseEntity<>(userId, HttpStatus.OK);
     }
 
     /**
@@ -157,20 +156,15 @@ public class AaiController extends RestrictedBaseController {
         RoleValidator roleValidator = new RoleValidator(roleProvider.getUserRoles(request));
 
         AaiResponse subscriberList = aaiService.getServices(roleValidator);
-        ResponseEntity<String> responseEntity = aaiResponseToResponseEntity(subscriberList);
-
-        return responseEntity;
+        return aaiResponseToResponseEntity(subscriberList);
     }
 
 
     @RequestMapping(value = {"/aai_get_version_by_invariant_id"}, method = RequestMethod.POST)
     public ResponseEntity<String> getVersionByInvariantId(HttpServletRequest request, @RequestBody VersionByInvariantIdsRequest versions) {
-        ResponseEntity<String> responseEntity;
-        ObjectMapper objectMapper = new ObjectMapper();
-
         Response result = aaiService.getVersionByInvariantId(versions.versions);
 
-        return new ResponseEntity<String>(result.readEntity(String.class), HttpStatus.OK);
+        return new ResponseEntity<>(result.readEntity(String.class), HttpStatus.OK);
     }
 
 
@@ -179,9 +173,9 @@ public class AaiController extends RestrictedBaseController {
         ResponseEntity<String> responseEntity;
         ObjectMapper objectMapper = new ObjectMapper();
         if (aaiResponseData.getHttpCode() == 200) {
-            responseEntity = new ResponseEntity<String>(objectMapper.writeValueAsString(aaiResponseData.getT()), HttpStatus.OK);
+            responseEntity = new ResponseEntity<>(objectMapper.writeValueAsString(aaiResponseData.getT()), HttpStatus.OK);
         } else {
-            responseEntity = new ResponseEntity<String>(aaiResponseData.getErrorMessage(), HttpStatus.valueOf(aaiResponseData.getHttpCode()));
+            responseEntity = new ResponseEntity<>(aaiResponseData.getErrorMessage(), HttpStatus.valueOf(aaiResponseData.getHttpCode()));
         }
         return responseEntity;
     }
@@ -209,7 +203,7 @@ public class AaiController extends RestrictedBaseController {
         return convertResponseToResponseEntity(resp);
     }
 
-    /**
+      /**
      * Get services from a&ai.
      *
      * @param globalCustomerId      the global customer id
@@ -246,7 +240,7 @@ public class AaiController extends RestrictedBaseController {
     @RequestMapping(value = "/get_system_prop_vnf_prov_status", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
     public ResponseEntity<String> getTargetProvStatus() {
         String p = SystemProperties.getProperty("aai.vnf.provstatus");
-        return new ResponseEntity<String>(p, HttpStatus.OK);
+        return new ResponseEntity<>(p, HttpStatus.OK);
     }
 
 
@@ -264,7 +258,7 @@ public class AaiController extends RestrictedBaseController {
         if (response.getHttpCode() != 200) {
             String errorMessage = getAaiErrorMessage(response.getErrorMessage());
             if(errorMessage != null) {
-                response = new AaiResponse<OperationalEnvironmentList>(response.getT(), errorMessage, response.getHttpCode());
+                response = new AaiResponse<>(response.getT(), errorMessage, response.getHttpCode());
             }
         }
 
@@ -286,9 +280,9 @@ public class AaiController extends RestrictedBaseController {
         RoleValidator roleValidator = new RoleValidator(roleProvider.getUserRoles(request));
         SubscriberFilteredResults subscriberList = aaiService.getFullSubscriberList(roleValidator);
         if (subscriberList.getHttpCode() == 200) {
-            responseEntity = new ResponseEntity<String>(objectMapper.writeValueAsString(subscriberList.getSubscriberList()), HttpStatus.OK);
+            responseEntity = new ResponseEntity<>(objectMapper.writeValueAsString(subscriberList.getSubscriberList()), HttpStatus.OK);
         } else {
-            responseEntity = new ResponseEntity<String>(subscriberList.getErrorMessage(), HttpStatus.valueOf(subscriberList.getHttpCode()));
+            responseEntity = new ResponseEntity<>(subscriberList.getErrorMessage(), HttpStatus.valueOf(subscriberList.getHttpCode()));
         }
 
 
@@ -301,10 +295,10 @@ public class AaiController extends RestrictedBaseController {
             produces = MediaType.APPLICATION_JSON_VALUE)
     public ResponseEntity<String> getVnfDataByGlobalIdAndServiceType(HttpServletRequest request,
                                                                      @PathVariable("globalCustomerId") String globalCustomerId,
-                                                                     @PathVariable("serviceType") String serviceType) {
+                                                                     @PathVariable("serviceType") String serviceType) throws IOException {
 
-        Response resp = aaiService.getVNFData(globalCustomerId, serviceType);
-        return convertResponseToResponseEntity(resp);
+        AaiResponse<AaiGetVnfResponse> resp = aaiService.getVNFData(globalCustomerId, serviceType);
+        return aaiResponseToResponseEntity(resp);
     }
 
 
@@ -316,8 +310,7 @@ public class AaiController extends RestrictedBaseController {
      */
     @RequestMapping(value = "/aai_refresh_subscribers", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
     public ResponseEntity<String> doRefreshSubscriberList() {
-        Response resp = getSubscribers(false);
-        return convertResponseToResponseEntity(resp);
+        return refreshSubscriberList();
     }
 
     /**
@@ -328,7 +321,11 @@ public class AaiController extends RestrictedBaseController {
      */
     @RequestMapping(value = "/aai_refresh_full_subscribers", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
     public ResponseEntity<String> doRefreshFullSubscriberList() {
-        Response resp = getSubscribers(false);
+        return refreshSubscriberList();
+    }
+
+    protected ResponseEntity<String> refreshSubscriberList() {
+        Response resp = getSubscribers();
         return convertResponseToResponseEntity(resp);
     }
 
@@ -344,7 +341,7 @@ public class AaiController extends RestrictedBaseController {
         ResponseEntity responseEntity;
         List<Role> roles = roleProvider.getUserRoles(request);
         RoleValidator roleValidator = new RoleValidator(roles);
-        AaiResponse<SubscriberData> subscriberData = aaiService.getSubscriberData(subscriberId, roleValidator);
+        AaiResponse subscriberData = aaiService.getSubscriberData(subscriberId, roleValidator);
         String httpMessage = subscriberData.getT() != null ?
                 objectMapper.writeValueAsString(subscriberData.getT()) :
                 subscriberData.getErrorMessage();
@@ -381,7 +378,7 @@ public class AaiController extends RestrictedBaseController {
                 searchResult.getErrorMessage();
 
 
-        if(searchResult.getT().serviceInstances.size() == 0){
+        if(searchResult.getT().serviceInstances.isEmpty()){
             responseEntity = new ResponseEntity<String>(httpMessage, HttpStatus.NOT_FOUND);
 
         } else {
@@ -415,17 +412,6 @@ public class AaiController extends RestrictedBaseController {
         return convertResponseToResponseEntity(resp);
     }
 
-    @RequestMapping(value = "/aai_get_vnf_data/{globalCustomerId}/{serviceType}/{serviceInstanceId}", method = RequestMethod.GET)
-    public AaiResponse<String> getVnfData(
-            @PathVariable("globalCustomerId") String globalCustomerId,
-            @PathVariable("serviceType") String serviceType,
-            @PathVariable("serviceInstanceId") String serviceInstanceId) {
-
-        return aaiService.getVNFData(globalCustomerId, serviceType, serviceInstanceId);
-
-    }
-
-
     /**
      * Issue a named query to a&ai.
      *
@@ -455,7 +441,7 @@ public class AaiController extends RestrictedBaseController {
             @PathVariable("cloudRegion") String cloudRegion) {
 
         AaiResponse<String> resp = aaiService.getNodeTemplateInstances(globalCustomerId, serviceType, modelVersionId, modelInvariantId, cloudRegion);
-        return new ResponseEntity<String>(resp.getT(), HttpStatus.valueOf(resp.getHttpCode()));
+        return new ResponseEntity<>(resp.getT(), HttpStatus.valueOf(resp.getHttpCode()));
     }
 
     @RequestMapping(value = "/aai_get_network_collection_details/{serviceInstanceId}", method = RequestMethod.GET)
@@ -466,7 +452,7 @@ public class AaiController extends RestrictedBaseController {
         String httpMessage = resp.getT() != null ?
                 objectMapper.writeValueAsString(resp.getT()) :
                 resp.getErrorMessage();
-        return new ResponseEntity<String>(httpMessage, HttpStatus.valueOf(resp.getHttpCode()));
+        return new ResponseEntity<>(httpMessage, HttpStatus.valueOf(resp.getHttpCode()));
     }
 
     @RequestMapping(value = "/aai_get_instance_groups_by_cloudregion/{cloudOwner}/{cloudRegionId}/{networkFunction}", method = RequestMethod.GET)
@@ -479,7 +465,7 @@ public class AaiController extends RestrictedBaseController {
         String httpMessage = resp.getT() != null ?
                 objectMapper.writeValueAsString(resp.getT()) :
                 resp.getErrorMessage();
-        return new ResponseEntity<String>(httpMessage, HttpStatus.valueOf(resp.getHttpCode()));
+        return new ResponseEntity<>(httpMessage, HttpStatus.valueOf(resp.getHttpCode()));
     }
 
     @RequestMapping(value = "/aai_get_by_uri/**", method = RequestMethod.GET)
@@ -518,16 +504,14 @@ public class AaiController extends RestrictedBaseController {
      */
     @RequestMapping(value = "/aai_get_pnfs/pnf/{pnf_id}", method = RequestMethod.GET)
     public ResponseEntity getSpecificPnf(@PathVariable("pnf_id") String pnfId) {
-        //logger.trace(EELFLoggerDelegate.debugLogger, "start {}({})", getMethodName(), pnfId);
         AaiResponse<Pnf> resp;
         ResponseEntity<Pnf> re;
         try {
             resp = aaiService.getSpecificPnf(pnfId);
-            re = new ResponseEntity<Pnf>(resp.getT(), HttpStatus.valueOf(resp.getHttpCode()));
+            re = new ResponseEntity<>(resp.getT(), HttpStatus.valueOf(resp.getHttpCode()));
         } catch (Exception e){
             return new ResponseEntity<String>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
         }
-        //logger.trace(EELFLoggerDelegate.debugLogger, "end {}() => {}", getMethodName(), resp.getHttpCode());
         return re;
     }
 
@@ -571,7 +555,7 @@ public class AaiController extends RestrictedBaseController {
             @PathVariable("equipModel") String equipModel) {
 
         AaiResponse<String> resp = aaiService.getPNFData(globalCustomerId, serviceType, modelVersionId, modelInvariantId, cloudRegion, equipVendor, equipModel);
-        return new ResponseEntity<String>(resp.getT(), HttpStatus.valueOf(resp.getHttpCode()));
+        return new ResponseEntity<>(resp.getT(), HttpStatus.valueOf(resp.getHttpCode()));
     }
 
     @RequestMapping(value = "/aai_getPortMirroringConfigsData", method = RequestMethod.GET)
@@ -594,11 +578,10 @@ public class AaiController extends RestrictedBaseController {
 
     private ResponseEntity<String> convertResponseToResponseEntity(Response resp) {
         ResponseEntity<String> respEnt;
-        ObjectMapper objectMapper = new ObjectMapper();
         if (resp == null) {
-            respEnt = new ResponseEntity<String>("Failed to fetch data from A&AI, check server logs for details.", HttpStatus.INTERNAL_SERVER_ERROR);
+            respEnt = new ResponseEntity<>("Failed to fetch data from A&AI, check server logs for details.", HttpStatus.INTERNAL_SERVER_ERROR);
         } else {
-            respEnt = new ResponseEntity<String>(resp.readEntity(String.class), HttpStatus.valueOf(resp.getStatus()));
+            respEnt = new ResponseEntity<>(resp.readEntity(String.class), HttpStatus.valueOf(resp.getStatus()));
         }
         return respEnt;
     }
@@ -606,33 +589,19 @@ public class AaiController extends RestrictedBaseController {
     /**
      * Gets the subscribers.
      *
-     * @param isFullSet the is full set
      * @return the subscribers
      */
-    private Response getSubscribers(boolean isFullSet) {
+    private Response getSubscribers() {
 
         String depth = "0";
 
         Response resp = doAaiGet("business/customers?subscriber-type=INFRA&depth=" + depth, false);
         if (resp != null) {
-            LOGGER.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + "getSubscribers() resp=" + resp.getStatusInfo().toString());
+            LOGGER.debug(EELFLoggerDelegate.debugLogger, "<== getSubscribers() resp=" + resp.getStatusInfo().toString());
         }
         return resp;
     }
 
-    /**
-     * Gets the subscriber details.
-     *
-     * @param subscriberId the subscriber id
-     * @return the subscriber details
-     */
-    private Response getSubscriberDetails(String subscriberId) {
-        Response resp = doAaiGet("business/customers/customer/" + subscriberId + "?depth=2", false);
-        //String resp = doAaiGet(certiPath.getAbsolutePath(), "business/customers/customer/" + subscriberId, false);
-        LOGGER.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + "getSubscriberDetails() resp=" + resp.getStatusInfo().toString());
-        return resp;
-    }
-
     /**
      * Send a GET request to a&ai.
      *
@@ -643,21 +612,21 @@ public class AaiController extends RestrictedBaseController {
     protected Response doAaiGet(String uri, boolean xml) {
         String methodName = "getSubscriberList";
         String transId = UUID.randomUUID().toString();
-        LOGGER.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
+        LOGGER.debug(EELFLoggerDelegate.debugLogger, "<== " + methodName + " start");
 
         Response resp = null;
         try {
 
 
-            resp = aaiRestInterface.RestGet(fromAppId, transId, uri, xml).getResponse();
+            resp = aaiRestInterface.RestGet(fromAppId, transId, Unchecked.toURI(uri), xml).getResponse();
 
         } catch (WebApplicationException e) {
             final String message = e.getResponse().readEntity(String.class);
-            LOGGER.info(EELFLoggerDelegate.errorLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + message);
-            LOGGER.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + message);
+            LOGGER.info(EELFLoggerDelegate.errorLogger, "<== " + "." + methodName + message);
+            LOGGER.debug(EELFLoggerDelegate.debugLogger, "<== " + "." + methodName + message);
         } catch (Exception e) {
-            LOGGER.info(EELFLoggerDelegate.errorLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
-            LOGGER.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
+            LOGGER.info(EELFLoggerDelegate.errorLogger, "<== " + "." + methodName + e.toString());
+            LOGGER.debug(EELFLoggerDelegate.debugLogger, "<== " + "." + methodName + e.toString());
         }
 
         return resp;
@@ -673,8 +642,7 @@ public class AaiController extends RestrictedBaseController {
      */
     protected Response doAaiPost(String uri, String payload, boolean xml) {
         String methodName = "getSubscriberList";
-        String transId = UUID.randomUUID().toString();
-        LOGGER.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
+        LOGGER.debug(EELFLoggerDelegate.debugLogger, "<== " + methodName + " start");
 
         Response resp = null;
         try {
@@ -682,8 +650,8 @@ public class AaiController extends RestrictedBaseController {
             resp = aaiRestInterface.RestPost(fromAppId, uri, payload, xml);
 
         } catch (Exception e) {
-            LOGGER.info(EELFLoggerDelegate.errorLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
-            LOGGER.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
+            LOGGER.info(EELFLoggerDelegate.errorLogger, "<== " + "." + methodName + e.toString());
+            LOGGER.debug(EELFLoggerDelegate.debugLogger, "<== " + "." + methodName + e.toString());
         }
 
         return resp;