Merge "Fix Sonar Issues policy/engine POLICY-SDK-APP module"
authorJorge Hernandez <jorge.hernandez-herrero@att.com>
Fri, 29 Mar 2019 19:36:38 +0000 (19:36 +0000)
committerGerrit Code Review <gerrit@onap.org>
Fri, 29 Mar 2019 19:36:38 +0000 (19:36 +0000)
1  2 
POLICY-SDK-APP/src/main/java/org/onap/policy/controller/PolicyController.java

@@@ -4,6 -4,7 +4,7 @@@
   * ================================================================================
   * Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved.
   * Modified Copyright (C) 2018 Samsung Electronics Co., Ltd.
+  * Modifications Copyright (C) 2019 Bell Canada
   * ================================================================================
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
@@@ -28,7 -29,6 +29,7 @@@ import java.io.File
  import java.io.FileInputStream;
  import java.io.IOException;
  import java.io.InputStream;
 +import java.nio.charset.StandardCharsets;
  import java.util.ArrayList;
  import java.util.HashMap;
  import java.util.List;
@@@ -36,13 -36,11 +37,12 @@@ import java.util.Map
  import java.util.Map.Entry;
  import java.util.Properties;
  import java.util.Set;
 -import java.nio.charset.StandardCharsets;
  import javax.annotation.PostConstruct;
- import javax.mail.MessagingException;
  import javax.script.SimpleBindings;
  import javax.servlet.http.HttpServletRequest;
  import javax.servlet.http.HttpServletResponse;
 +import oasis.names.tc.xacml._3_0.core.schema.wd_17.PolicySetType;
 +import oasis.names.tc.xacml._3_0.core.schema.wd_17.PolicyType;
  import org.json.JSONObject;
  import org.onap.policy.admin.PolicyNotificationMail;
  import org.onap.policy.admin.RESTfulPAPEngine;
@@@ -73,6 -71,8 +73,6 @@@ import org.springframework.stereotype.C
  import org.springframework.web.bind.annotation.RequestMapping;
  import org.springframework.web.bind.annotation.RequestMethod;
  import org.springframework.web.servlet.ModelAndView;
 -import oasis.names.tc.xacml._3_0.core.schema.wd_17.PolicySetType;
 -import oasis.names.tc.xacml._3_0.core.schema.wd_17.PolicyType;
  
  @Controller
  @RequestMapping("/")
@@@ -182,9 -182,8 +182,9 @@@ public class PolicyController extends R
          try {
              String fileName;
              if (jUnit) {
 -                fileName = new File(".").getCanonicalPath() + File.separator + "src" + File.separator + "test"
 -                        + File.separator + "resources" + File.separator + "JSONConfig.json";
 +                fileName = new File(".").getCanonicalPath() + File.separator + "src"
 +                        + File.separator + "test" + File.separator + "resources" + File.separator
 +                        + "JSONConfig.json";
              } else {
                  fileName = "xacml.admin.properties";
              }
              // Get the Property Values for Dashboard tab Limit
              try {
                  setLogTableLimit(prop.getProperty("xacml.onap.dashboard.logTableLimit"));
 -                setSystemAlertTableLimit(prop.getProperty("xacml.onap.dashboard.systemAlertTableLimit"));
 +                setSystemAlertTableLimit(
 +                        prop.getProperty("xacml.onap.dashboard.systemAlertTableLimit"));
              } catch (Exception e) {
 -                policyLogger
 -                        .error(XACMLErrorConstants.ERROR_DATA_ISSUE + "Dashboard tab Property fields are missing" + e);
 +                policyLogger.error(XACMLErrorConstants.ERROR_DATA_ISSUE
 +                        + "Dashboard tab Property fields are missing" + e);
                  setLogTableLimit("5000");
                  setSystemAlertTableLimit("2000");
              }
              System.setProperty(XACMLProperties.XACML_PROPERTIES_NAME, "xacml.admin.properties");
          } catch (IOException ex) {
              policyLogger.error(XACMLErrorConstants.ERROR_DATA_ISSUE
 -                    + "Exception Occured while reading the Smtp properties from xacml.admin.properties file" + ex);
 +                    + "Exception Occured while reading the Smtp properties from xacml.admin.properties file"
 +                    + ex);
          }
  
          // Initialize the FunctionDefinition table at Server Start up
  
      /**
       * Get FunctionData Type from DB.
 -     * 
 +     *
       * @return list of FunctionData.
       */
      public static Map<Datatype, List<FunctionDefinition>> getFunctionDatatypeMap() {
  
      /**
       * Get Function ID.
 -     * 
 +     *
       * @return Function ID.
       */
      public static Map<String, FunctionDefinition> getFunctionIdMap() {
              FunctionDefinition value = (FunctionDefinition) functiondefinitions.get(i);
              mapID2Function.put(value.getXacmlid(), value);
              if (!mapDatatype2Function.containsKey(value.getDatatypeBean())) {
 -                mapDatatype2Function.put(value.getDatatypeBean(), new ArrayList<FunctionDefinition>());
 +                mapDatatype2Function.put(value.getDatatypeBean(),
 +                        new ArrayList<FunctionDefinition>());
              }
              mapDatatype2Function.get(value.getDatatypeBean()).add(value);
          }
  
      /**
       * Get Functional Definition data.
 -     * 
 -     * @param request  HttpServletRequest.
 +     *
 +     * @param request HttpServletRequest.
       * @param response HttpServletResponse.
       */
 -    @RequestMapping(value = { "/get_FunctionDefinitionDataByName" }, method = {
 -            org.springframework.web.bind.annotation.RequestMethod.GET }, produces = MediaType.APPLICATION_JSON_VALUE)
 -    public void getFunctionDefinitionData(HttpServletRequest request, HttpServletResponse response) {
 +    @RequestMapping(value = {"/get_FunctionDefinitionDataByName"},
 +            method = {org.springframework.web.bind.annotation.RequestMethod.GET},
 +            produces = MediaType.APPLICATION_JSON_VALUE)
 +    public void getFunctionDefinitionData(HttpServletRequest request,
 +            HttpServletResponse response) {
          try {
              Map<String, Object> model = new HashMap<>();
              ObjectMapper mapper = new ObjectMapper();
 -            model.put("functionDefinitionDatas",
 -                    mapper.writeValueAsString(commonClassDao.getDataByColumn(FunctionDefinition.class, "shortname")));
 +            model.put("functionDefinitionDatas", mapper.writeValueAsString(
 +                    commonClassDao.getDataByColumn(FunctionDefinition.class, "shortname")));
              JsonMessage msg = new JsonMessage(mapper.writeValueAsString(model));
              JSONObject j = new JSONObject(msg);
              response.getWriter().write(j.toString());
          } catch (Exception e) {
 -            policyLogger.error(
 -                    XACMLErrorConstants.ERROR_DATA_ISSUE + "Error while retriving the Function Definition data" + e);
 +            policyLogger.error(XACMLErrorConstants.ERROR_DATA_ISSUE
 +                    + "Error while retriving the Function Definition data" + e);
          }
      }
  
      /**
       * Get PolicyEntity Data from db.
 -     * 
 -     * @param scope      scopeName.
 +     *
 +     * @param scope scopeName.
       * @param policyName policyName.
       * @return policyEntity data.
       */
  
      /**
       * Get Policy User Roles from db.
 -     * 
 +     *
       * @param userId LoginID.
       * @return list of Roles.
       */
  
      /**
       * Get List of User Roles.
 -     * 
 -     * @param request  HttpServletRequest.
 +     *
 +     * @param request HttpServletRequest.
       * @param response HttpServletResponse.
       */
 -    @RequestMapping(value = { "/get_UserRolesData" }, method = {
 -            org.springframework.web.bind.annotation.RequestMethod.GET }, produces = MediaType.APPLICATION_JSON_VALUE)
 +    @RequestMapping(value = {"/get_UserRolesData"},
 +            method = {org.springframework.web.bind.annotation.RequestMethod.GET},
 +            produces = MediaType.APPLICATION_JSON_VALUE)
      public void getUserRolesEntityData(HttpServletRequest request, HttpServletResponse response) {
          try {
              String userId = UserUtils.getUserSession(request).getOrgUserId();
  
      /**
       * Policy tabs Model and View.
 -     * 
 +     *
       * @param request Request input.
       * @return view model.
       */
 -    @RequestMapping(value = { "/policy", "/policy/Editor" }, method = RequestMethod.GET)
 +    @RequestMapping(value = {"/policy", "/policy/Editor"}, method = RequestMethod.GET)
      public ModelAndView view(HttpServletRequest request) {
          getUserRoleFromSession(request);
          String myRequestUrl = request.getRequestURL().toString();
              setPapEngine(new RESTfulPAPEngine(myRequestUrl));
              new PDPGroupContainer(new RESTfulPAPEngine(myRequestUrl));
          } catch (Exception e) {
 -            policyLogger.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "Exception Occured while loading PAP" + e);
 +            policyLogger.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR
 +                    + "Exception Occured while loading PAP" + e);
          }
          Map<String, Object> model = new HashMap<>();
          return new ModelAndView("policy_Editor", "model", model);
  
      /**
       * Read the role from session for inserting into the database.
 -     * 
 +     *
       * @param request Request input for Role.
       */
      public void getUserRoleFromSession(HttpServletRequest request) {
                  savePolicyRoles(name, filteredRole, userId);
              } else {
                  userRoles = getRoles(userId);
 -                Pair<Set<String>, List<String>> pair = org.onap.policy.utils.UserUtils.checkRoleAndScope(userRoles);
 +                Pair<Set<String>, List<String>> pair =
 +                        org.onap.policy.utils.UserUtils.checkRoleAndScope(userRoles);
                  roles = pair.u;
                  if (!roles.contains(filteredRole)) {
                      savePolicyRoles(name, filteredRole, userId);
  
      /**
       * Build a delete query for cleaning up roles and execute it.
 -     * 
 +     *
       * @param filteredRoles Filtered roles list.
 -     * @param userId        UserID.
 +     * @param userId UserID.
       */
      private void cleanUpRoles(List<String> filteredRoles, String userId) {
          StringBuilder query = new StringBuilder();
  
      /**
       * Save the Role to DB.
 -     * 
 -     * @param name         User Name.
 +     *
 +     * @param name User Name.
       * @param filteredRole Role Name.
 -     * @param userId       User LoginID.
 +     * @param userId User LoginID.
       */
      private void savePolicyRoles(String name, String filteredRole, String userId) {
          UserInfo userInfo = new UserInfo();
  
      /**
       * Filter the list of roles hierarchy wise.
 -     * 
 +     *
       * @param newRoles list of roles from request.
       * @return
       */
                  roles.clear();
                  roles.add(SUPERADMIN);
              }
 -            if (!roles.contains(SUPERADMIN) || (POLICYGUEST.equalsIgnoreCase(role) && !superCheck)) {
 +            if (!roles.contains(SUPERADMIN)
 +                    || (POLICYGUEST.equalsIgnoreCase(role) && !superCheck)) {
                  if ("Policy Admin".equalsIgnoreCase(role.trim())) {
                      roles.add("admin");
                  } else if ("Policy Editor".equalsIgnoreCase(role.trim())) {
  
      /**
       * Get UserName based on LoginID.
 -     * 
 +     *
       * @param createdBy loginID.
       * @return name.
       */
  
      /**
       * Check if the Policy is Active or not.
 -     * 
 +     *
       * @param query sql query.
       * @return boolean.
       */
      }
  
      public PolicyVersion getPolicyEntityFromPolicyVersion(String query) {
 -        return (PolicyVersion) commonClassDao.getEntityItem(PolicyVersion.class, "policyName", query);
 +        return (PolicyVersion) commonClassDao.getEntityItem(PolicyVersion.class, "policyName",
 +                query);
      }
  
      public List<Object> getDataByQuery(String query, SimpleBindings params) {
  
      /**
       * Watch Policy Function.
 -     * 
 -     * @param entity     PolicyVersion entity.
 +     *
 +     * @param entity PolicyVersion entity.
       * @param policyName updated policy name.
 -     * @param mode       type of action rename/delete/import.
 +     * @param mode type of action rename/delete/import.
       */
      public void watchPolicyFunction(PolicyVersion entity, String policyName, String mode) {
          PolicyNotificationMail email = new PolicyNotificationMail();
-         try {
-             email.sendMail(entity, policyName, mode, commonClassDao);
-         } catch (MessagingException e) {
-             policyLogger.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR
-                     + "Excepton Occured while Renaming/Deleting a Policy or Scope" + e);
-         }
+         email.sendMail(entity, policyName, mode, commonClassDao);
      }
  
      /**
       * Switch Version Policy Content.
 -     * 
 +     *
       * @param pName which is used to find associated versions.
       * @return list of available versions based on policy name.
       */
              dbCheckName = dbCheckName.replace(".Decision_", ":Decision_");
          }
          String[] splitDbCheckName = dbCheckName.split(":");
 -        String query = "FROM PolicyEntity where policyName like :splitDBCheckName1 and scope = :splitDBCheckName0";
 +        String query =
 +                "FROM PolicyEntity where policyName like :splitDBCheckName1 and scope = :splitDBCheckName0";
          SimpleBindings params = new SimpleBindings();
          params.put("splitDBCheckName1", splitDbCheckName[1] + "%");
          params.put("splitDBCheckName0", splitDbCheckName[0]);
          if (policyName.contains("/")) {
              policyName = policyName.replace("/", File.separator);
          }
 -        PolicyVersion entity = (PolicyVersion) commonClassDao.getEntityItem(PolicyVersion.class, "policyName",
 -                policyName);
 +        PolicyVersion entity = (PolicyVersion) commonClassDao.getEntityItem(PolicyVersion.class,
 +                "policyName", policyName);
          JSONObject el = new JSONObject();
          el.put("activeVersion", entity.getActiveVersion());
          el.put("availableVersions", av);
      }
  
      public String getDescription(PolicyEntity data) {
 -        InputStream stream = new ByteArrayInputStream(data.getPolicyData().getBytes(StandardCharsets.UTF_8));
 +        InputStream stream =
 +                new ByteArrayInputStream(data.getPolicyData().getBytes(StandardCharsets.UTF_8));
          Object policy = XACMLPolicyScanner.readPolicy(stream);
          if (policy instanceof PolicySetType) {
              return ((PolicySetType) policy).getDescription();
          } else if (policy instanceof PolicyType) {
              return ((PolicyType) policy).getDescription();
          } else {
 -            PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + "Expecting a PolicySet/Policy/Rule object. Got: "
 +            PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE
 +                    + "Expecting a PolicySet/Policy/Rule object. Got: "
                      + policy.getClass().getCanonicalName());
              return null;
          }
      public String[] getUserInfo(PolicyEntity data, List<PolicyVersion> activePolicies) {
          String policyName = data.getScope().replace(".", File.separator) + File.separator
                  + data.getPolicyName().substring(0, data.getPolicyName().indexOf('.'));
 -        PolicyVersion pVersion = activePolicies.stream().filter(a -> policyName.equals(a.getPolicyName())).findAny()
 -                .orElse(null);
 +        PolicyVersion polVersion = activePolicies.stream()
 +                .filter(a -> policyName.equals(a.getPolicyName())).findAny().orElse(null);
          String[] result = new String[2];
 +        UserInfo userCreate = null;
 +        UserInfo userModify = null;
 +        if (polVersion != null) {
 +            userCreate = (UserInfo) getEntityItem(UserInfo.class, "userLoginId",
 +                    polVersion.getCreatedBy());
 +            userModify = (UserInfo) getEntityItem(UserInfo.class, "userLoginId",
 +                    polVersion.getModifiedBy());
 +        }
  
 -        UserInfo userCreate = (UserInfo) getEntityItem(UserInfo.class, "userLoginId", pVersion.getCreatedBy());
 -        UserInfo userModify = (UserInfo) getEntityItem(UserInfo.class, "userLoginId", pVersion.getModifiedBy());
 -        result[0] = userCreate != null ? userCreate.getUserName() : "super-admin";
 -        result[1] = userModify != null ? userModify.getUserName() : "super-admin";
 +        result[0] = userCreate != null ? userCreate.getUserName() : SUPERADMIN;
 +        result[1] = userModify != null ? userModify.getUserName() : SUPERADMIN;
  
          return result;
      }
          return mapDatatype2Function;
      }
  
 -    public static void setMapDatatype2Function(Map<Datatype, List<FunctionDefinition>> mapDatatype2Function) {
 +    public static void setMapDatatype2Function(
 +            Map<Datatype, List<FunctionDefinition>> mapDatatype2Function) {
          PolicyController.mapDatatype2Function = mapDatatype2Function;
      }
  
  
      /**
       * Set File Size limit.
 -     * 
 +     *
       * @param uploadSize value.
       */
      public static void setFileSizeLimit(String uploadSize) {
  
      /**
       * Function to convert date.
 -     * 
 +     *
       * @param dateTTL input date value.
       * @return
       */