X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=POLICY-SDK-APP%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fpolicy%2Fcontroller%2FPolicyExportAndImportController.java;h=cf7e62b46d87f39d67aaaa645095e203ac9c9708;hb=HEAD;hp=fb566f37d6b85de30ef2730f56d8e4e584a04fdc;hpb=b831c6a3df8e1dc9017ae5e8ad002dc3b1002aab;p=policy%2Fengine.git diff --git a/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/PolicyExportAndImportController.java b/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/PolicyExportAndImportController.java index fb566f37d..cf7e62b46 100644 --- a/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/PolicyExportAndImportController.java +++ b/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/PolicyExportAndImportController.java @@ -2,14 +2,14 @@ * ============LICENSE_START======================================================= * ONAP Policy Engine * ================================================================================ - * Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2017-2020 AT&T Intellectual Property. All rights reserved. * ================================================================================ * Licensed 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 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -23,7 +23,6 @@ package org.onap.policy.controller; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; - import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; @@ -36,11 +35,10 @@ import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; import java.util.Set; - import javax.script.SimpleBindings; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; - +import org.apache.commons.lang3.StringUtils; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; @@ -55,7 +53,7 @@ import org.onap.policy.rest.adapter.PolicyExportAdapter; import org.onap.policy.rest.dao.CommonClassDao; import org.onap.policy.rest.jpa.ActionBodyEntity; import org.onap.policy.rest.jpa.ConfigurationDataEntity; -import org.onap.policy.rest.jpa.DCAEuuid; +import org.onap.policy.rest.jpa.DcaeUuid; import org.onap.policy.rest.jpa.GroupPolicyScopeList; import org.onap.policy.rest.jpa.MicroServiceConfigName; import org.onap.policy.rest.jpa.MicroServiceLocation; @@ -64,10 +62,12 @@ import org.onap.policy.rest.jpa.PolicyEditorScopes; import org.onap.policy.rest.jpa.PolicyEntity; import org.onap.policy.rest.jpa.PolicyVersion; import org.onap.policy.rest.jpa.UserInfo; +import org.onap.policy.utils.PolicyUtils; import org.onap.policy.utils.UserUtils.Pair; import org.onap.policy.xacml.api.XACMLErrorConstants; import org.onap.portalsdk.core.controller.RestrictedBaseController; import org.onap.portalsdk.core.web.support.UserUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @@ -115,9 +115,14 @@ public class PolicyExportAndImportController extends RestrictedBaseController { // Empty constructor } + @Autowired + private PolicyExportAndImportController(CommonClassDao commonClassDao) { + PolicyExportAndImportController.commonClassDao = commonClassDao; + } + /** * This is for downloading existing policy. - * + * * @param request HttpServletRequest * @param response HttpServletResponse * @throws IOException error out @@ -174,14 +179,14 @@ public class PolicyExportAndImportController extends RestrictedBaseController { workBook2.write(fos); fos.flush(); - response.setContentType("application / json"); - request.setCharacterEncoding("UTF-8"); + response.setContentType(PolicyUtils.APPLICATION_JSON); + request.setCharacterEncoding(PolicyUtils.CHARACTER_ENCODING); PrintWriter out = response.getWriter(); String successMap = file.substring(file.lastIndexOf("webapps") + 8); String responseString = mapper.writeValueAsString(successMap); - JSONObject j = new JSONObject("{data: " + responseString + "}"); - out.write(j.toString()); + JSONObject json = new JSONObject("{data: " + responseString + "}"); + out.write(json.toString()); } catch (Exception e) { logger.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "Exception Occured while Exporting Policies" + e); } @@ -250,13 +255,13 @@ public class PolicyExportAndImportController extends RestrictedBaseController { /** * This is to upload a policy and save it to database. - * + * * @param file String * @param request HttpServletRequest * @return JSONObject * @throws IOException error out */ - public JSONObject importRepositoryFile(String file, HttpServletRequest request) throws IOException { + public String importRepositoryFile(String file, HttpServletRequest request) throws IOException { boolean configExists = false; boolean actionExists = false; String configName = null; @@ -268,14 +273,14 @@ public class PolicyExportAndImportController extends RestrictedBaseController { // Check if the Role and Scope Size are Null get the values from db. List userRoles = controller.getRoles(userId); Pair, List> pair = org.onap.policy.utils.UserUtils.checkRoleAndScope(userRoles); - List roles = pair.u; - Set scopes = pair.t; + List roles = pair.second; + Set scopes = pair.first; try (FileInputStream excelFile = new FileInputStream(new File(file)); HSSFWorkbook workbook = new HSSFWorkbook(excelFile)) { Sheet datatypeSheet = workbook.getSheetAt(0); Iterator rowIterator = datatypeSheet.iterator(); - + String sendResult = null; while (rowIterator.hasNext()) { finalColumn = false; PolicyEntity policyEntity = new PolicyEntity(); @@ -290,6 +295,7 @@ public class PolicyExportAndImportController extends RestrictedBaseController { int bodySize = 0; int setBodySize = 0; boolean configurationBodySet = false; + boolean errorFlag = false; while (cellIterator.hasNext()) { Cell cell = cellIterator.next(); if (policyName.equalsIgnoreCase(getCellHeaderName(cell))) { @@ -313,13 +319,18 @@ public class PolicyExportAndImportController extends RestrictedBaseController { configurationDataEntity = populateConfigurationDataEntity(policyEntity, configurationDataEntity, cell); actionBodyEntity = populateActionBodyObject(policyEntity, actionBodyEntity, cell); - JSONObject response = validatRequiredValue(policyEntity, body, finalColumn, configurationBodySet); - if (response != null) { - return response; + String response = null; + response = validatRequiredValue(policyEntity, body, finalColumn, configurationBodySet); + if (!StringUtils.isBlank(response)) { + sendResult = sendResult + "\n" + response; + errorFlag = true; + } + if (!StringUtils.isBlank(response) && !rowIterator.hasNext()) { + return sendResult; } savePolicyEntiies(finalColumn, configurationBodySet, configurationDataEntity, policyEntity, controller, roles, userInfo, scopes, configName, userId, configExists, actionExists, - actionBodyEntity, body); + actionBodyEntity, body, errorFlag); } } @@ -358,49 +369,46 @@ public class PolicyExportAndImportController extends RestrictedBaseController { /** * This is to validate all matching required fields. - * + * * @param policyName String * @param jsonString String * @return String */ public String validatMatchRequiredFields(String policyName, String jsonString) { - + String errorMsg = ""; try { JSONObject jsonObject = new JSONObject(jsonString); - String configName = jsonObject.getString("configName"); - String uuid = jsonObject.getString("uuid"); - String erorMsg = validConfigName(configName); - if (erorMsg != null) { - return erorMsg; + String confErorMsg = validConfigName(jsonObject.getString("configName")); + if (!confErorMsg.isEmpty()) { + errorMsg = errorMsg + "\n POLICY :" + policyName + " at " + confErorMsg; } - erorMsg = validUuid(uuid); - if (erorMsg != null) { - return erorMsg; + String uuidErorMsg = validUuid(jsonObject.getString("uuid")); + if (!uuidErorMsg.isEmpty()) { + errorMsg = errorMsg + "\n POLICY :" + policyName + " at " + uuidErorMsg; } - String location = jsonObject.getString("location"); - erorMsg = validLocation(location); - if (erorMsg != null) { - return erorMsg; + String locErorMsg = validLocation(jsonObject.getString("location")); + if (!locErorMsg.isEmpty()) { + errorMsg = errorMsg + "\n POLICY :" + policyName + " at " + locErorMsg; } - String policyScope = jsonObject.getString("policyScope"); - erorMsg = validPolicyScope(policyScope); - if (erorMsg != null) { - return erorMsg; + String pScopeErorMsg = validPolicyScope(jsonObject.getString("policyScope")); + if (!pScopeErorMsg.isEmpty()) { + errorMsg = errorMsg + "\n POLICY :" + policyName + " at " + pScopeErorMsg; } String msVersion = jsonObject.getString("version"); String msService = jsonObject.getString("service"); if (!isAttributeObjectFound(msService, msVersion)) { - return POLICY + policyName + " MS Service: " + msService + " and MS Version: " + msVersion + NOTVALID; + errorMsg = errorMsg + "\n POLICY :" + policyName + " at MS Service: " + msService + " and MS Version: " + + msVersion + NOTVALID; } } catch (Exception e) { logger.error("Exception Occured While validating required fields", e); } - return null; + return errorMsg; } - private JSONObject validatRequiredValue(PolicyEntity policyEntity, StringBuilder body, boolean finalColumn, + private String validatRequiredValue(PolicyEntity policyEntity, StringBuilder body, boolean finalColumn, boolean configurationBodySet) { if (finalColumn && configurationBodySet && (policyEntity.getPolicyName().contains(CONFIG_MS))) { String errorMsg = validatMatchRequiredFields(policyEntity.getPolicyName(), body.toString()); @@ -408,7 +416,7 @@ public class PolicyExportAndImportController extends RestrictedBaseController { logger.error("errorMsg => " + errorMsg); JSONObject response = new JSONObject(); response.append("error", errorMsg); - return response; + return errorMsg; } } return null; @@ -431,7 +439,7 @@ public class PolicyExportAndImportController extends RestrictedBaseController { private String validUuid(String uuid) { String message = null; if (uuid != null) { - List uuids = commonClassDao.getDataByColumn(DCAEuuid.class, "name"); + List uuids = commonClassDao.getDataByColumn(DcaeUuid.class, "name"); if (uuids != null && !(uuids.stream().filter(o -> o.equals(uuid)).findFirst().isPresent())) { message = POLICY + policyName + " uuid: " + uuid + NOTVALID; } @@ -563,6 +571,7 @@ public class PolicyExportAndImportController extends RestrictedBaseController { return false; } + @SuppressWarnings("rawtypes") private boolean isContinue(List roles, String scope, UserInfo userInfo, Set scopes) { if (roles.contains(admin) || roles.contains(editor)) { if (scopes.isEmpty()) { @@ -749,9 +758,9 @@ public class PolicyExportAndImportController extends RestrictedBaseController { private void savePolicyEntiies(boolean finalColumn, boolean configurationBodySet, ConfigurationDataEntity configurationDataEntity, PolicyEntity policyEntity, PolicyController controller, List roles, UserInfo userInfo, Set scopes, String configName, String userId, - boolean configExists, boolean actionExists, ActionBodyEntity actionBodyEntity, StringBuilder body) { + boolean configExists, boolean actionExists, ActionBodyEntity actionBodyEntity, StringBuilder body, boolean errorFlagSent) { - if (finalColumn && configurationBodySet) { + if (finalColumn && configurationBodySet && !errorFlagSent) { configurationDataEntity.setConfigBody(body.toString()); String scope = policyEntity.getScope().replace(".", File.separator); String query = "FROM PolicyEntity where policyName = :policyName and scope = :policyScope"; @@ -769,7 +778,7 @@ public class PolicyExportAndImportController extends RestrictedBaseController { saveVersion(policyEntity, scope, userId); // // Notify Other paps regarding Export Policy. PolicyRestController restController = new PolicyRestController(); - restController.notifyOtherPAPSToUpdateConfigurations("exportPolicy", configName, null); + restController.notifyOtherPapsToUpdateConfigurations("exportPolicy", configName, null); } } }