From e0addf5b588a1244f9679becd90999dfcb4c3a94 Mon Sep 17 00:00:00 2001 From: "ITSERVICES\\rb7147" Date: Tue, 25 Apr 2017 11:46:00 -0400 Subject: Policy 1707 commit to LF Change-Id: Ibe6f01d92f9a434c040abb05d5386e89d675ae65 Signed-off-by: ITSERVICES\rb7147 --- .../CreateDcaeMicroServiceController.java | 987 --------------------- 1 file changed, 987 deletions(-) delete mode 100644 ecomp-sdk-app/src/main/java/org/openecomp/policy/controller/CreateDcaeMicroServiceController.java (limited to 'ecomp-sdk-app/src/main/java/org/openecomp/policy/controller/CreateDcaeMicroServiceController.java') diff --git a/ecomp-sdk-app/src/main/java/org/openecomp/policy/controller/CreateDcaeMicroServiceController.java b/ecomp-sdk-app/src/main/java/org/openecomp/policy/controller/CreateDcaeMicroServiceController.java deleted file mode 100644 index c4d4cfd50..000000000 --- a/ecomp-sdk-app/src/main/java/org/openecomp/policy/controller/CreateDcaeMicroServiceController.java +++ /dev/null @@ -1,987 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ECOMP Policy Engine - * ================================================================================ - * Copyright (C) 2017 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. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.policy.controller; - - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.InputStream; -import java.io.PrintWriter; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.Iterator; -import java.util.LinkedHashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.UUID; -import java.util.Map.Entry; -import java.util.Properties; -import java.util.TreeMap; - -import javax.json.Json; -import javax.json.JsonReader; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.apache.commons.lang.StringUtils; -import org.json.JSONArray; -import org.json.JSONObject; -import org.openecomp.policy.adapter.PolicyAdapter; -import org.openecomp.policy.admin.PolicyNotificationMail; -import org.openecomp.policy.admin.RESTfulPAPEngine; -import org.openecomp.policy.dao.PolicyVersionDao; -import org.openecomp.policy.dao.RemoteCatalogValuesDao; -import org.openecomp.policy.dao.RuleAlgorithmsDao; -import org.openecomp.policy.dao.WatchPolicyNotificationDao; -import org.openecomp.policy.elk.client.PolicyElasticSearchController; -import org.openecomp.policy.rest.XACMLRestProperties; -import org.openecomp.policy.rest.dao.GroupPolicyScopeListDao; -import org.openecomp.policy.rest.dao.MicroServiceModelsDao; -import org.openecomp.policy.rest.jpa.GroupPolicyScopeList; -import org.openecomp.policy.rest.jpa.MicroServiceModels; -import org.openecomp.policy.rest.jpa.PolicyVersion; -import org.openecomp.policy.rest.jpa.RemoteCatalogValues; -import org.openecomp.policy.rest.jpa.RuleAlgorithms; -import org.openecomp.policy.utils.ConfigurableRESTUtils; -import org.openecomp.policy.utils.ConfigurableRESTUtils.RESQUEST_METHOD; -import org.openecomp.policy.utils.ConfigurableRESTUtils.REST_RESPONSE_FORMAT; -import org.openecomp.portalsdk.core.controller.RestrictedBaseController; -import org.openecomp.portalsdk.core.web.support.JsonMessage; -import org.openecomp.portalsdk.core.web.support.UserUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.MediaType; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.servlet.ModelAndView; - -import com.att.research.xacml.api.XACML3; -import org.openecomp.policy.xacml.api.XACMLErrorConstants; -import org.openecomp.policy.xacml.util.XACMLPolicyScanner; -import com.att.research.xacml.util.XACMLProperties; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.ObjectWriter; -import com.fasterxml.jackson.databind.node.JsonNodeFactory; -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.google.common.base.Joiner; -import com.google.common.base.Splitter; -import com.google.gson.Gson; -import com.google.gson.JsonArray; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.google.gson.JsonParser; - -import oasis.names.tc.xacml._3_0.core.schema.wd_17.AllOfType; -import oasis.names.tc.xacml._3_0.core.schema.wd_17.AnyOfType; -import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeValueType; -import oasis.names.tc.xacml._3_0.core.schema.wd_17.MatchType; -import oasis.names.tc.xacml._3_0.core.schema.wd_17.PolicyType; -import oasis.names.tc.xacml._3_0.core.schema.wd_17.TargetType; -import org.openecomp.policy.common.logging.flexlogger.FlexLogger; -import org.openecomp.policy.common.logging.flexlogger.Logger; - -@Controller -@RequestMapping("/") -public class CreateDcaeMicroServiceController extends RestrictedBaseController { - private static final Logger logger = FlexLogger.getLogger(CreateDcaeMicroServiceController.class); - - private static RuleAlgorithmsDao ruleAlgorithmsDao; - private static RemoteCatalogValuesDao remoteCatalogValuesDao; - private static MicroServiceModelsDao microServiceModelsDao; - private static PolicyVersionDao policyVersionDao; - private static GroupPolicyScopeListDao groupPolicyScopeListDao; - private static WatchPolicyNotificationDao policyNotificationDao; - - @Autowired - private CreateDcaeMicroServiceController(RuleAlgorithmsDao ruleAlgorithmsDao, RemoteCatalogValuesDao remoteCatalogValuesDao, - MicroServiceModelsDao microServiceModelsDao, PolicyVersionDao policyVersionDao, GroupPolicyScopeListDao groupPolicyScopeListDao, - WatchPolicyNotificationDao policyNotificationDao){ - CreateDcaeMicroServiceController.groupPolicyScopeListDao = groupPolicyScopeListDao; - CreateDcaeMicroServiceController.policyVersionDao = policyVersionDao; - CreateDcaeMicroServiceController.microServiceModelsDao = microServiceModelsDao; - CreateDcaeMicroServiceController.remoteCatalogValuesDao = remoteCatalogValuesDao; - CreateDcaeMicroServiceController.ruleAlgorithmsDao = ruleAlgorithmsDao; - CreateDcaeMicroServiceController.policyNotificationDao = policyNotificationDao; - } - - public CreateDcaeMicroServiceController(){} - - protected PolicyAdapter policyAdapter = null; - private String ruleID = ""; - private int priorityCount; - private Map attributesListRefMap = new HashMap(); - private Map> arrayTextList = new HashMap>(); - - - public String newPolicyID() { - return Joiner.on(':').skipNulls().join((PolicyController.getDomain().startsWith("urn") ? null: "urn"), - PolicyController.getDomain().replaceAll("[/\\\\.]", ":"), "xacml", "policy", "id", UUID.randomUUID()); - } - - - @RequestMapping(value={"/policyController/getDCAEMSTemplateData.htm"}, method={org.springframework.web.bind.annotation.RequestMethod.POST}) - public ModelAndView getBRMSParamPolicyRuleData(HttpServletRequest request, HttpServletResponse response) throws Exception{ - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - JsonNode root = mapper.readTree(request.getReader()); - - String value = root.get("policyData").toString().replaceAll("^\"|\"$", ""); - String servicename = value.toString().split("-v")[0]; - String version = null; - if (value.toString().contains("-v")){ - version = value.toString().split("-v")[1]; - } - MicroServiceModels returnModel = getAttributeObject(servicename, version); - - response.setCharacterEncoding("UTF-8"); - response.setContentType("application / json"); - request.setCharacterEncoding("UTF-8"); - List list = new ArrayList<>(); - PrintWriter out = response.getWriter(); - String responseString = mapper.writeValueAsString(returnModel); - JSONObject j = new JSONObject("{dcaeModelData: " + responseString +"}"); - list.add(j); - out.write(list.toString()); - return null; - } - - private MicroServiceModels getAttributeObject(String name, String version) { - MicroServiceModels workingModel = new MicroServiceModels(); - List microServiceModelsData = microServiceModelsDao.getMicroServiceModelsData(); - for (int i = 0; i < microServiceModelsData.size(); i++) { - workingModel = microServiceModelsData.get(i); - if (version!=null && workingModel.getVersion()!=null){ - if (workingModel.getModelName().equals(name) && workingModel.getVersion().equals(version)){ - break; - } - }else{ - if (workingModel.getModelName().equals(name) && workingModel.getVersion() == null){ - break; - } - } - } - return workingModel; - } - - @RequestMapping(value={"/get_DCAEPriorityValues"}, method={org.springframework.web.bind.annotation.RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getDCAEPriorityValuesData(HttpServletRequest request, HttpServletResponse response){ - try{ - Map model = new HashMap(); - ObjectMapper mapper = new ObjectMapper(); - List priorityList = new ArrayList(); - priorityCount = 10; - for (int i = 1; i < priorityCount; i++) { - priorityList.add(String.valueOf(i)); - } - model.put("priorityDatas", mapper.writeValueAsString(priorityList)); - JsonMessage msg = new JsonMessage(mapper.writeValueAsString(model)); - JSONObject j = new JSONObject(msg); - response.getWriter().write(j.toString()); - } - catch (Exception e){ - e.printStackTrace(); - } - } - - - @RequestMapping(value={"/policyController/save_DCAEMSPolicy.htm"}, method={org.springframework.web.bind.annotation.RequestMethod.POST}) - public ModelAndView saveDCAEMSPolicy(HttpServletRequest request, HttpServletResponse response) throws Exception{ - try { - String userId = UserUtils.getUserIdFromCookie(request); - RESTfulPAPEngine engine = (RESTfulPAPEngine) PolicyController.getPapEngine(); - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - JsonNode root = mapper.readTree(request.getReader()); - String jsonContent = null; - try{ - jsonContent = decodeContent(root.get("policyJSON")).toString(); - }catch(Exception e){ - logger.error("Error while decoding microservice content"); - } - PolicyAdapter policyData = (PolicyAdapter)mapper.readValue(root.get("policyData").get("policy").toString(), PolicyAdapter.class); - policyData.setDomainDir(root.get("policyData").get("model").get("name").toString().replace("\"", "")); - if(root.get("policyData").get("model").get("type").toString().replace("\"", "").equals("file")){ - policyData.isEditPolicy = true; - } - - if(root.get("policyData").get("model").get("path").size() != 0){ - String dirName = ""; - for(int i = 0; i < root.get("policyData").get("model").get("path").size(); i++){ - dirName = dirName.replace("\"", "") + root.get("policyData").get("model").get("path").get(i).toString().replace("\"", "") + File.separator; - } - if(policyData.isEditPolicy){ - policyData.setDomainDir(dirName.substring(0, dirName.lastIndexOf(File.separator))); - }else{ - policyData.setDomainDir(dirName + root.get("policyData").get("model").get("name").toString().replace("\"", "")); - } - }else{ - policyData.setDomainDir(root.get("policyData").get("model").get("name").toString().replace("\"", "")); - } - - if (policyData.getTtlDate()==null){ - policyData.setTtlDate("NA"); - }else{ - String dateTTL = policyData.getTtlDate(); - String newDate = convertDate(dateTTL); - policyData.setTtlDate(newDate); - } - - int version = 0; - int highestVersion = 0; - int descriptionVersion = 0; - //get the highest version of policy from policy version table. - //getting the sub scope domain where the policy is created or updated - String dbCheckPolicyName = policyData.getDomainDir() + File.separator + "Config_MS_" + policyData.getPolicyName(); - List versionList = policyVersionDao.getPolicyVersionEntityByName(dbCheckPolicyName); - if (versionList.size() > 0) { - for(int i = 0; i < versionList.size(); i++) { - PolicyVersion entityItem = versionList.get(i); - if(entityItem.getPolicyName().equals(dbCheckPolicyName)){ - highestVersion = entityItem.getHigherVersion(); - } - } - } - if(highestVersion != 0){ - version = highestVersion; - descriptionVersion = highestVersion +1; - }else{ - version = 1; - descriptionVersion = 1; - } - - //set policy adapter values for Building JSON object containing policy data - String createdBy = ""; - String modifiedBy = userId; - if(descriptionVersion == 1){ - createdBy = userId; - }else{ - String policyName = PolicyController.getGitPath().toAbsolutePath().toString() + File.separator + policyData.getDomainDir() + File.separator + policyData.getOldPolicyFileName() + ".xml"; - File policyPath = new File(policyName); - try { - createdBy = XACMLPolicyScanner.getCreatedBy(policyPath.toPath()); - } catch (IOException e) { - createdBy = "guest"; - } - } - - policyData.setPolicyDescription(policyData.getPolicyDescription()+ "@CreatedBy:" +createdBy + "@CreatedBy:" + "@ModifiedBy:" +modifiedBy + "@ModifiedBy:"); - policyData.setEcompName(policyData.getEcompName()); - //get the jsonBody - String jsonBody = null; - try { - jsonBody = constructJson(policyData, jsonContent); - } catch (Exception e) { - logger.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + e); - } - policyData.setJsonBody(jsonBody); - Map successMap = new HashMap(); - //set the Rule Combining Algorithm Id to be sent to PAP-REST via JSON - List ruleAlgorithmsList = ruleAlgorithmsDao.getRuleAlgorithms(); - for (int i = 0; i < ruleAlgorithmsList.size(); i++) { - RuleAlgorithms a = ruleAlgorithmsList.get(i); - if (a.getXacmlId().equals(XACML3.ID_RULE_PERMIT_OVERRIDES.stringValue())) { - policyData.setRuleCombiningAlgId(a.getXacmlId()); - break; - } - } - if (policyData.isEditPolicy()){ - //increment the version and set in policyAdapter - policyData.setVersion(String.valueOf(version)); - policyData.setHighestVersion(version); - policyData.setPolicyID(this.newPolicyID()); - policyData.setRuleID(ruleID); - successMap = engine.updatePolicyRequest(policyData); - } else { - //send it for policy creation - policyData.setVersion(String.valueOf(version)); - policyData.setHighestVersion(version); - successMap = engine.createPolicyRequest(policyData); - - } - - if (successMap.containsKey("success")) { - // Add it into our tree - Path finalPolicyPath = null; - finalPolicyPath = Paths.get(successMap.get("success")); - PolicyElasticSearchController controller = new PolicyElasticSearchController(); - controller.updateElk(finalPolicyPath.toString()); - File file = finalPolicyPath.toFile(); - if(file != null){ - String policyName = file.toString(); - String removePath = policyName.substring(policyName.indexOf("repository")+11); - String removeXml = removePath.replace(".xml", ""); - String removeExtension = removeXml.substring(0, removeXml.indexOf(".")); - List policyVersionList = policyVersionDao.getPolicyVersionEntityByName(removeExtension); - if (policyVersionList.size() > 0) { - for(int i = 0; i < policyVersionList.size(); i++) { - PolicyVersion entityItem = policyVersionList.get(i); - if(entityItem.getPolicyName().equals(removeExtension)){ - version = entityItem.getHigherVersion() +1; - entityItem.setActiveVersion(version); - entityItem.setHigherVersion(version); - entityItem.setModifiedBy(userId); - policyVersionDao.update(entityItem); - if(policyData.isEditPolicy){ - PolicyNotificationMail email = new PolicyNotificationMail(); - String mode = "EditPolicy"; - String policyNameForEmail = policyData.getDomainDir() + File.separator + policyData.getOldPolicyFileName() + ".xml"; - email.sendMail(entityItem, policyNameForEmail, mode, policyNotificationDao); - } - } - } - }else{ - PolicyVersion entityItem = new PolicyVersion(); - entityItem.setActiveVersion(version); - entityItem.setHigherVersion(version); - entityItem.setPolicyName(removeExtension); - entityItem.setCreatedBy(userId); - entityItem.setModifiedBy(userId); - policyVersionDao.Save(entityItem); - } - } - } - - System.out.println(root); - response.setCharacterEncoding("UTF-8"); - response.setContentType("application / json"); - request.setCharacterEncoding("UTF-8"); - - PrintWriter out = response.getWriter(); - String responseString = mapper.writeValueAsString(successMap); - JSONObject j = new JSONObject("{policyData: " + responseString + "}"); - out.write(j.toString()); - return null; - } - catch (Exception e){ - response.setCharacterEncoding("UTF-8"); - request.setCharacterEncoding("UTF-8"); - PrintWriter out = response.getWriter(); - out.write(e.getMessage()); - } - return null; - } - - private JSONObject decodeContent(JsonNode jsonNode){ - Iterator jsonElements = jsonNode.elements(); - Iterator jsonKeys = jsonNode.fieldNames(); - Map element = new TreeMap(); - while(jsonElements.hasNext() && jsonKeys.hasNext()){ - element.put(jsonKeys.next(), jsonElements.next().toString()); - } - JSONObject jsonResult = new JSONObject(); - JSONArray jsonArray = null; - String oldValue = null; - String nodeKey = null; - String arryKey = null; - Boolean isArray = false; - JsonNodeFactory nodeFactory = JsonNodeFactory.instance; - ObjectNode node = nodeFactory.objectNode(); - String prevKey = null; - String presKey = null; - for(String key: element.keySet()){ - if(key.contains(".")){ - presKey = key.substring(0,key.indexOf(".")); - }else if(key.contains("@")){ - presKey = key.substring(0,key.indexOf("@")); - }else{ - presKey = key; - } - // first check if we are different from old. - System.out.println(key+"\n"); - if(jsonArray!=null && jsonArray.length()>0 && key.contains("@") && !key.contains(".") && oldValue!=null){ - if(!oldValue.equals(key.substring(0,key.indexOf("@")))){ - jsonResult.put(oldValue, jsonArray); - jsonArray = new JSONArray(); - } - }else if(jsonArray!=null && jsonArray.length()>0 && !presKey.equals(prevKey) && oldValue!=null){ - jsonResult.put(oldValue, jsonArray); - isArray = false; - jsonArray = new JSONArray(); - } - /*if(node.size()!=0 && key.contains("@")){ - - }else{ - if(node.size()!=0){ - - } - }*/ - prevKey = presKey; - // - if(key.contains(".")){ - if(nodeKey==null){ - nodeKey = key.substring(0,key.indexOf(".")); - } - if(nodeKey.equals(key.substring(0,key.indexOf(".")))){ - node.put(key.substring(key.indexOf(".")+1), element.get(key)); - }else{ - if(node.size()!=0){ - if(nodeKey.contains("@")){ - if(arryKey==null){ - arryKey = nodeKey.substring(0,nodeKey.indexOf("@")); - } - if(nodeKey.endsWith("@0")){ - isArray = true; - jsonArray = new JSONArray(); - } - if(arryKey.equals(nodeKey.substring(0,nodeKey.indexOf("@")))){ - jsonArray.put(decodeContent(node)); - } - if(key.contains("@") && !arryKey.equals(key.substring(0,nodeKey.indexOf("@")))){ - jsonResult.put(arryKey, jsonArray); - jsonArray = new JSONArray(); - }else if(!key.contains("@")){ - jsonResult.put(arryKey, jsonArray); - jsonArray = new JSONArray(); - } - arryKey = nodeKey.substring(0,nodeKey.indexOf("@")); - }else{ - isArray = false; - jsonResult.put(nodeKey, decodeContent(node)); - } - node = nodeFactory.objectNode(); - } - nodeKey = key.substring(0,key.indexOf(".")); - if(nodeKey.contains("@")){ - arryKey = nodeKey.substring(0,nodeKey.indexOf("@")); - } - node.put(key.substring(key.indexOf(".")+1), element.get(key)); - } - }else if(node.size()!=0){ - if(nodeKey.contains("@")){ - if(arryKey==null){ - arryKey = nodeKey.substring(0,nodeKey.indexOf("@")); - } - if(nodeKey.endsWith("@0")){ - isArray = true; - jsonArray = new JSONArray(); - } - if(arryKey.equals(nodeKey.substring(0,nodeKey.indexOf("@")))){ - jsonArray.put(decodeContent(node)); - } - jsonResult.put(arryKey, jsonArray); - jsonArray = new JSONArray(); - arryKey = nodeKey.substring(0,nodeKey.indexOf("@")); - }else{ - isArray = false; - jsonResult.put(nodeKey, decodeContent(node)); - } - node = nodeFactory.objectNode(); - if(key.contains("@")){ - isArray = true; - if(key.endsWith("@0")|| jsonArray==null){ - jsonArray = new JSONArray(); - } - }else if(!key.contains("@")){ - isArray = false; - } - if(isArray){ - if(oldValue==null){ - oldValue = key.substring(0,key.indexOf("@")); - } - if(oldValue!=prevKey){ - oldValue = key.substring(0,key.indexOf("@")); - } - if(oldValue.equals(key.substring(0,key.indexOf("@")))){ - jsonArray.put(element.get(key)); - }else{ - jsonResult.put(oldValue, jsonArray); - jsonArray = new JSONArray(); - } - oldValue = key.substring(0,key.indexOf("@")); - }else{ - jsonResult.put(key, element.get(key)); - } - }else{ - if(key.contains("@")){ - isArray = true; - if(key.endsWith("@0")|| jsonArray==null){ - jsonArray = new JSONArray(); - } - }else if(!key.contains("@")){ - isArray = false; - } - if(isArray){ - if(oldValue==null){ - oldValue = key.substring(0,key.indexOf("@")); - } - if(oldValue!=prevKey){ - oldValue = key.substring(0,key.indexOf("@")); - } - if(oldValue.equals(key.substring(0,key.indexOf("@")))){ - jsonArray.put(element.get(key)); - }else{ - jsonResult.put(oldValue, jsonArray); - jsonArray = new JSONArray(); - } - oldValue = key.substring(0,key.indexOf("@")); - }else{ - jsonResult.put(key, element.get(key)); - } - } - } - if(node.size()>0){ - if(nodeKey.contains("@")){ - if(jsonArray==null){ - jsonArray = new JSONArray(); - } - if(arryKey==null){ - arryKey = nodeKey.substring(0,nodeKey.indexOf("@")); - } - jsonArray.put(decodeContent(node)); - jsonResult.put(arryKey, jsonArray); - isArray = false;; - }else{ - jsonResult.put(nodeKey, decodeContent(node)); - } - } - if(isArray && jsonArray.length() > 0){ - jsonResult.put(oldValue, jsonArray); - } - return jsonResult; - } - - public void PrePopulateDCAEMSPolicyData(PolicyAdapter policyAdapter) { - if (policyAdapter.getPolicyData() instanceof PolicyType) { - Object policyData = policyAdapter.getPolicyData(); - PolicyType policy = (PolicyType) policyData; - policyAdapter.setOldPolicyFileName(policyAdapter.getPolicyName()); - String policyNameValue = policyAdapter.getPolicyName().substring(policyAdapter.getPolicyName().indexOf("MS_") +3 , policyAdapter.getPolicyName().lastIndexOf(".")); - policyAdapter.setPolicyName(policyNameValue); - String description = ""; - try{ - description = policy.getDescription().substring(0, policy.getDescription().indexOf("@CreatedBy:")); - }catch(Exception e){ - description = policy.getDescription(); - } - policyAdapter.setPolicyDescription(description); - String jsonBodyName = policyAdapter.getDirPath().replace(File.separator, ".")+ "." + policyAdapter.getOldPolicyFileName() + "."; - policyAdapter.setConfigBodyPath(jsonBodyName); - // Get the target data under policy. - TargetType target = policy.getTarget(); - if (target != null) { - // Under target we have AnyOFType - List anyOfList = target.getAnyOf(); - if (anyOfList != null) { - Iterator iterAnyOf = anyOfList.iterator(); - while (iterAnyOf.hasNext()) { - AnyOfType anyOf = iterAnyOf.next(); - // Under AnyOFType we have AllOFType - List allOfList = anyOf.getAllOf(); - if (allOfList != null) { - Iterator iterAllOf = allOfList.iterator(); - while (iterAllOf.hasNext()) { - AllOfType allOf = iterAllOf.next(); - // Under AllOFType we have Match - List matchList = allOf.getMatch(); - if (matchList != null) { - int index = 0; - Iterator iterMatch = matchList.iterator(); - while (matchList.size()>1 && iterMatch.hasNext()) { - MatchType match = iterMatch.next(); - // - // Under the match we have attributevalue and - // attributeDesignator. So,finally down to the actual attribute. - // - AttributeValueType attributeValue = match.getAttributeValue(); - String value = (String) attributeValue.getContent().get(0); - - // First match in the target is EcompName, so set that value. - if (index == 0) { - policyAdapter.setEcompName(value); - } - if (index == 1){ - policyAdapter.setConfigName(value); - } - if (index == 2){ - if(value != null){ - readFile(policyAdapter); - } - } - if (index == 3){ - policyAdapter.setUuid(value); - } - if (index == 4){ - policyAdapter.setLocation(value); - } - if (index == 5){ - policyAdapter.setRiskType(value); - } - - if (index == 6){ - policyAdapter.setRiskLevel(value); - } - - if (index == 7){ - policyAdapter.setGuard(value); - } - if (index == 8 && !value.contains("NA")){ - String newDate = convertDate(value, true); - policyAdapter.setTtlDate(newDate); - } - index++; - } - } - } - } - } - } - } - } - - } - - private String convertDate(String dateTTL, boolean portalType) { - String formateDate = null; - String[] date; - String[] parts; - - if (portalType){ - parts = dateTTL.split("-"); - formateDate = parts[2] + "-" + parts[1] + "-" + parts[0] + "T05:00:00.000Z"; - } else { - date = dateTTL.split("T"); - parts = date[0].split("-"); - formateDate = parts[2] + "-" + parts[1] + "-" + parts[0]; - } - return formateDate; - } - - @SuppressWarnings("unchecked") - private String readFile(PolicyAdapter policyAdapter) { - String fileLocation = null; - String policyScopeName = null; - String fileName = policyAdapter.getConfigBodyPath(); - if (fileName != null ) { - fileLocation = PolicyController.getConfigHome(); - } - if (fileLocation == null) { - return fileLocation; - } - File dir = new File(fileLocation); - File[] listOfFiles = dir.listFiles(); - for (File file : listOfFiles) { - if (file.isFile() && file.getName().contains(fileName)) { - FileInputStream inputStream = null; - String location = file.toString(); - try { - inputStream = new FileInputStream(location); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } - if (location.endsWith("json")) { - JsonReader jsonReader = null; - jsonReader = Json.createReader(inputStream); - ObjectMapper mapper = new ObjectMapper(); - try { - DCAEMicroServiceObject msBody = (DCAEMicroServiceObject) mapper.readValue(jsonReader.read().toString(), DCAEMicroServiceObject.class); - policyScopeName = getPolicyScope(msBody.getPolicyScope()); - policyAdapter.setPolicyScope(policyScopeName); - - policyAdapter.setPriority(msBody.getPriority()); - - if (msBody.getVersion()!= null){ - policyAdapter.setServiceType(msBody.getService() + "-v" + msBody.getVersion()); - }else{ - policyAdapter.setServiceType(msBody.getService()); - } - if(msBody.getContent() != null){ - LinkedHashMap data = new LinkedHashMap(); - LinkedHashMap map = (LinkedHashMap) msBody.getContent(); - readRecursivlyJSONContent(map, data); - policyAdapter.setRuleData(data); - } - - } catch (Exception e) { - e.printStackTrace(); - } - jsonReader.close(); - } - } - } - return fileName; - - } - - @SuppressWarnings({ "rawtypes", "unchecked" }) - private void readRecursivlyJSONContent(LinkedHashMap map, LinkedHashMap data){ - for (Iterator iterator = map.keySet().iterator(); iterator.hasNext();) { - Object key = iterator.next(); - Object value = map.get(key); - if(value instanceof LinkedHashMap){ - readRecursivlyJSONContent((LinkedHashMap) value, data); - }else if(value instanceof ArrayList){ - ArrayList jsonArrayVal = (ArrayList)value; - for(int i = 0; i < jsonArrayVal.size(); i++){ - Object arrayvalue = jsonArrayVal.get(i); - if(arrayvalue instanceof LinkedHashMap){ - LinkedHashMap newData = new LinkedHashMap(); - readRecursivlyJSONContent((LinkedHashMap) arrayvalue, newData); - for(String objKey: newData.keySet()){ - data.put(key+"@"+i+"." +objKey, newData.get(objKey)); - } - }else if(arrayvalue instanceof ArrayList){ - ArrayList jsonArrayVal1 = (ArrayList)value; - for(int j = 0; j < jsonArrayVal1.size(); j++){ - Object arrayvalue1 = jsonArrayVal1.get(i); - data.put(key+"@"+j, arrayvalue1.toString()); - } - }else{ - data.put(key+"@"+i, arrayvalue.toString()); - } - } - }else{ - data.put(key.toString(), value.toString()); - } - } - } - - private String getPolicyScope(String value) { - GroupPolicyScopeList pScope = new GroupPolicyScopeList(); - List groupList= groupPolicyScopeListDao.getGroupPolicyScopeListData(); - if(groupList.size() > 0){ - for(int i = 0 ; i < groupList.size() ; i ++){ - pScope = groupList.get(i); - if (pScope.getGroupList().equals(value)){ - break; - } - } - } - return pScope.getGroupName(); - } - - private GroupPolicyScopeList getPolicyObject(String policyScope) { - GroupPolicyScopeList pScope = new GroupPolicyScopeList(); - List groupList = groupPolicyScopeListDao.getGroupPolicyScopeListData(); - if(groupList.size() > 0){ - for(int i = 0 ; i < groupList.size() ; i ++){ - pScope = groupList.get(i); - if (pScope.getGroupName().equals(policyScope)){ - break; - } - } - } - return pScope; - } - - private String constructJson(PolicyAdapter policyAdapter, String jsonContent) { - ObjectWriter om = new ObjectMapper().writer(); - String json=""; - DCAEMicroServiceObject microServiceObject = new DCAEMicroServiceObject(); - - microServiceObject.setTemplateVersion(XACMLProperties.getProperty(XACMLRestProperties.TemplateVersion_MS)); - if(policyAdapter.getServiceType() !=null){ - microServiceObject.setService(policyAdapter.getServiceType().toString().split("-v")[0]); - if (policyAdapter.getServiceType().toString().contains("-v")){ - microServiceObject.setVersion(policyAdapter.getServiceType().toString().split("-v")[1]); - } - } - if(policyAdapter.getUuid()!=null){ - microServiceObject.setUuid(policyAdapter.getUuid()); - } - - if(policyAdapter.getLocation()!=null){ - microServiceObject.setLocation(policyAdapter.getLocation()); - } - if(policyAdapter.getPolicyName()!=null){ - microServiceObject.setPolicyName(policyAdapter.getPolicyName()); - } - - if(policyAdapter.getConfigName()!=null){ - microServiceObject.setConfigName(policyAdapter.getConfigName()); - } - if(policyAdapter.getPolicyDescription()!=null){ - microServiceObject.setDescription(policyAdapter.getPolicyDescription()); - } - if (policyAdapter.getPriority()!=null){ - microServiceObject.setPriority(policyAdapter.getPriority()); - }else { - microServiceObject.setPriority("9999"); - } - microServiceObject.setContent(jsonContent); - GroupPolicyScopeList policyScopeValue = getPolicyObject(policyAdapter.getPolicyScope()); - microServiceObject.setPolicyScope(policyScopeValue.getGroupList()); - try { - json = om.writeValueAsString(microServiceObject); - } catch (JsonProcessingException e) { - logger.error("Error writing out the object"); - } - System.out.println(json); - String cleanJson = cleanUPJson(json); - return cleanJson; - } - - private String cleanUPJson(String json) { - String cleanJason = StringUtils.replaceEach(json, new String[]{"\\\\", "\\\\\\", "\\\\\\\\"}, new String[]{"\\", "\\", "\\"}); - cleanJason = StringUtils.replaceEach(json, new String[]{"\\\\\\"}, new String[]{"\\"}); - cleanJason = StringUtils.replaceEach(cleanJason, new String[]{"\\\\", "[[", "]]"}, new String[]{"\\", "[", "]"}); - - cleanJason = StringUtils.replaceEach(cleanJason, new String[]{"\\\\\"", "\\\"", "\"[{", "}]\""}, new String[]{"\"", "\"", "[{", "}]"}); - cleanJason = StringUtils.replaceEach(cleanJason, new String[]{"\"[{", "}]\""}, new String[]{"[{", "}]"}); - cleanJason = StringUtils.replaceEach(cleanJason, new String[]{"\"[", "]\""}, new String[]{"[", "]"}); - cleanJason = StringUtils.replaceEach(cleanJason, new String[]{"\"{", "}\""}, new String[]{"{", "}"}); - cleanJason = StringUtils.replaceEach(cleanJason, new String[]{"\"\"\"", "\"\""}, new String[]{"\"", "\""}); - cleanJason = StringUtils.replaceEach(cleanJason, new String[]{"\\\""}, new String[]{""}); - return cleanJason; - } - - //Convert the map values and set into JSON body - public Map convertMap(Map attributesMap, Map attributesRefMap) { - Map attribute = new HashMap(); - String temp = null; - String key; - String value; - for (Entry entry : attributesMap.entrySet()) { - key = entry.getKey(); - value = entry.getValue(); - attribute.put(key, value); - } - for (Entry entryRef : attributesRefMap.entrySet()) { - key = entryRef.getKey(); - value = entryRef.getValue().toString(); - attribute.put(key, value); - } - for (Entry entryList : attributesListRefMap.entrySet()) { - key = entryList.getKey(); - value = entryList.getValue().toString(); - attribute.put(key, value); - } - for (Entry> arrayList : arrayTextList.entrySet()){ - key = arrayList.getKey(); - temp = null; - for (Object textList : arrayList.getValue()){ - if (temp == null){ - temp = "[" + textList; - }else{ - temp = temp + "," + textList; - } - } - attribute.put(key, temp+ "]"); - } - - return attribute; - } - - private String convertDate(String dateTTL) { - String formateDate = null; - String[] date = dateTTL.split("T"); - String[] parts = date[0].split("-"); - - formateDate = parts[2] + "-" + parts[1] + "-" + parts[0]; - return formateDate; - } -} - -class DCAEMicroServiceObject { - - public String service; - public String location; - public String uuid; - public String policyName; - public String description; - public String configName; - public String templateVersion; - public String version; - public String priority; - public String policyScope; - - public String getPolicyScope() { - return policyScope; - } - public void setPolicyScope(String policyScope) { - this.policyScope = policyScope; - } - - public String getPriority() { - return priority; - } - public void setPriority(String priority) { - this.priority = priority; - } - public String getVersion() { - return version; - } - public void setVersion(String version) { - this.version = version; - } - private Object content; - - - public String getPolicyName() { - return policyName; - } - public void setPolicyName(String policyName) { - this.policyName = policyName; - } - public String getDescription() { - return description; - } - public void setDescription(String description) { - this.description = description; - } - public String getConfigName() { - return configName; - } - public void setConfigName(String configName) { - this.configName = configName; - } - public Object getContent() { - return content; - } - public void setContent(Object content) { - this.content = content; - } - - public String getService() { - return service; - } - public void setService(String service) { - this.service = service; - } - public String getLocation() { - return location; - } - public void setLocation(String location) { - this.location = location; - } - - public String getUuid() { - return uuid; - } - public void setUuid(String uuid) { - this.uuid = uuid; - } - public String getTemplateVersion() { - return templateVersion; - } - public void setTemplateVersion(String templateVersion) { - this.templateVersion = templateVersion; - } - -} \ No newline at end of file -- cgit 1.2.3-korg