Policy 1707 commit to LF
[policy/engine.git] / ECOMP-PAP-REST / src / main / java / org / openecomp / policy / pap / xacml / rest / components / CreateBrmsRawPolicy.java
index d77abf0..dfd647c 100644 (file)
@@ -27,13 +27,20 @@ import java.io.PrintWriter;
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.nio.charset.Charset;
-import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Map;
-import java.util.StringTokenizer;
+
+import org.apache.commons.io.FilenameUtils;
+import org.openecomp.policy.common.logging.eelf.MessageCodes;
+import org.openecomp.policy.common.logging.eelf.PolicyLogger;
+import org.openecomp.policy.pap.xacml.rest.controller.BRMSDictionaryController;
+import org.openecomp.policy.rest.adapter.PolicyRestAdapter;
+
+import com.att.research.xacml.std.IdentifierImpl;
 
 import oasis.names.tc.xacml._3_0.core.schema.wd_17.AdviceExpressionType;
 import oasis.names.tc.xacml._3_0.core.schema.wd_17.AdviceExpressionsType;
@@ -49,29 +56,9 @@ import oasis.names.tc.xacml._3_0.core.schema.wd_17.PolicyType;
 import oasis.names.tc.xacml._3_0.core.schema.wd_17.RuleType;
 import oasis.names.tc.xacml._3_0.core.schema.wd_17.TargetType;
 
-import org.apache.commons.io.FilenameUtils;
-import org.openecomp.policy.pap.xacml.rest.adapters.PolicyRestAdapter;
-
-import com.att.research.xacml.std.IdentifierImpl;
-
-import org.openecomp.policy.common.logging.eelf.MessageCodes;
-import org.openecomp.policy.common.logging.eelf.PolicyLogger;
-import org.openecomp.policy.common.logging.flexlogger.FlexLogger; 
-import org.openecomp.policy.common.logging.flexlogger.Logger; 
-
 
 public class CreateBrmsRawPolicy extends Policy {
-       /**
-        * Config Fields
-        */
-       private static final Logger logger = FlexLogger
-                       .getLogger(CreateBrmsRawPolicy.class);
-
-       public static final String JSON_CONFIG = "JSON";
-       public static final String XML_CONFIG = "XML";
-       public static final String PROPERTIES_CONFIG = "PROPERTIES";
-       public static final String OTHER_CONFIG = "OTHER";
-
+       
        public CreateBrmsRawPolicy() {
                super();
        }
@@ -82,104 +69,19 @@ public class CreateBrmsRawPolicy extends Policy {
 
        }
 
-       // Saving the Configurations file at server location for config policy.
-       protected void saveConfigurations(String policyName, String prevPolicyName,
-                       String jsonBody) {
-               final Path gitPath = Paths.get(policyAdapter.getUserGitPath()
-                               .toString());
-               String policyDir = policyAdapter.getParentPath().toString();
-               int startIndex = policyDir.indexOf(gitPath.toString())
-                               + gitPath.toString().length() + 1;
-               policyDir = policyDir.substring(startIndex, policyDir.length());
-               logger.info("print the main domain value" + policyDir);
-               String path = policyDir.replace('\\', '.');
-               if (path.contains("/")) {
-                       path = policyDir.replace('/', '.');
-                       logger.info("print the path:" + path);
-               }
-
+       // Saving the Configurations file at server location for CreateBrmsRawPolicy policy.
+       protected void saveConfigurations(String policyName, String jsonBody) {         
                try {
-                       String configFileName = getConfigFile(policyName);
-
-                       File file;
-                       if (CONFIG_HOME.contains("\\")) {
-                               file = new File(CONFIG_HOME + "\\" + path + "."
-                                               + configFileName);
-                       } else {
-                               file = new File(CONFIG_HOME + "/" + path + "." + configFileName);
-                       }
-
-                       // if file doesnt exists, then create it
-                       if (!file.exists()) {
-                               file.createNewFile();
-                       }
-
-                       // Getting the previous policy Config Json file to be used for
-                       // updating the dictionary tables
-                       if (policyAdapter.isEditPolicy()) {
-
-                               String prevConfigFileName = getConfigFile(prevPolicyName);
-
-                               File oldFile;
-                               if (CONFIG_HOME.contains("\\")) {
-                                       oldFile = new File(CONFIG_HOME + "\\" + path + "."
-                                                       + prevConfigFileName);
-                               } else {
-                                       oldFile = new File(CONFIG_HOME + "/" + path + "."
-                                                       + prevConfigFileName);
-                               }
-
-                               String filepath = oldFile.toString();
-
-                               String prevJsonBody = readFile(filepath, StandardCharsets.UTF_8);
-                               policyAdapter.setPrevJsonBody(prevJsonBody);
-                       }
-
-                       File configHomeDir = new File(CONFIG_HOME);
-                       File[] listOfFiles = configHomeDir.listFiles();
-                       if (listOfFiles != null) {
-                               for (File eachFile : listOfFiles) {
-                                       if (eachFile.isFile()) {
-                                               String fileNameWithoutExtension = FilenameUtils
-                                                               .removeExtension(eachFile.getName());
-                                               String configFileNameWithoutExtension = FilenameUtils
-                                                               .removeExtension(configFileName);
-                                               if (fileNameWithoutExtension
-                                                               .equals(configFileNameWithoutExtension)) {
-                                                       // delete the file
-                                                       eachFile.delete();
-                                               }
-                                       }
-                               }
+                       if (policyName.endsWith(".xml")) {
+                               policyName = policyName.substring(0,
+                                               policyName.lastIndexOf(".xml"));
                        }
+                       PrintWriter out = new PrintWriter(CONFIG_HOME + File.separator + policyName + ".txt");
+                       out.println(jsonBody);
+                       out.close();
 
-                       /*FileWriter fw = new FileWriter(file.getAbsoluteFile());
-                       BufferedWriter bw = new BufferedWriter(fw);
-                       bw.write(jsonBody);
-                       bw.close();
-                       if (logger.isDebugEnabled()) {
-                               logger.debug("Configuration is succesfully saved");
-                       }*/
-                       
-                       try {
-                               
-                               if (policyName.endsWith(".xml")) {
-                                       policyName = policyName.substring(0,
-                                                       policyName.lastIndexOf(".xml"));
-                               }
-                               PrintWriter out = new PrintWriter(CONFIG_HOME + File.separator
-                                               + path + "." + policyName + ".txt");
-                               out.println(jsonBody);
-                               out.close();
-
-                       } catch (Exception e) {
-                               //TODO:EELF Cleanup - Remove logger
-                               //logger.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + e);
-                               PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "CreateBrmsRawPolicy", "Exception saving configurations file");
-                       }
-                       
-               } catch (IOException e) {
-                       e.printStackTrace();
+               } catch (Exception e) {
+                       PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "CreateBrmsRawPolicy", "Exception saving configurations file");
                }
        }
 
@@ -227,8 +129,7 @@ public class CreateBrmsRawPolicy extends Policy {
                // Until here we prepared the data and here calling the method to create
                // xml.
                Path newPolicyPath = null;
-               newPolicyPath = Paths.get(policyAdapter.getParentPath().toString(),
-                               policyName);
+               newPolicyPath = Paths.get(policyAdapter.getNewFileName());
                
                Boolean dbIsUpdated = true;
 
@@ -237,20 +138,10 @@ public class CreateBrmsRawPolicy extends Policy {
                        successMap = createPolicy(newPolicyPath,
                                        getCorrectPolicyDataObject());
                } else {
-                       //TODO:EELF Cleanup - Remove logger
-                       //logger.error("Failed to Update the Database Dictionary Tables.");
                        PolicyLogger.error("Failed to Update the Database Dictionary Tables.");
-
-                       // remove the new json file
-                       String jsonBody = policyAdapter.getPrevJsonBody();
-                       saveConfigurations(policyName, "", jsonBody);
                        successMap.put("error", "DB UPDATE");
                }
 
-               if (successMap.containsKey("success")) {
-                       Path finalPolicyPath = getFinalPolicyPath();
-                       policyAdapter.setFinalPolicyPath(finalPolicyPath.toString());
-               }
                return successMap;
        }
 
@@ -268,13 +159,7 @@ public class CreateBrmsRawPolicy extends Policy {
 
                int version = 0;
                String policyID = policyAdapter.getPolicyID();
-
-               if (policyAdapter.isEditPolicy()) {
-                       // version = Integer.parseInt(policyAdapter.getVersion()) + 1;
-                       version = policyAdapter.getHighestVersion() + 1;
-               } else {
-                       version = 1;
-               }
+               version = policyAdapter.getHighestVersion();
 
                // Create the Instance for pojo, PolicyType object is used in
                // marshalling.
@@ -287,36 +172,12 @@ public class CreateBrmsRawPolicy extends Policy {
                        policyAdapter.setData(policyConfig);
                }
 
+               policyName = policyAdapter.getNewFileName();
+               
                if (policyAdapter.getData() != null) {
-
-                       // Save off everything
-                       // making ready all the required elements to generate the action
-                       // policy xml.
-                       // Get the uniqueness for policy name.
-                       String prevPolicyName = null;
-                       if (policyAdapter.isEditPolicy()) {
-                               prevPolicyName = "Config_BRMS_Raw_" + policyAdapter.getPolicyName()
-                                               + "." + policyAdapter.getHighestVersion() + ".xml";
-                       }
-                       //if (!policyAdapter.isEditPolicy()) {
-                               Path newFile = getNextFilename(
-                                               Paths.get(policyAdapter.getParentPath().toString()),
-                                               (policyAdapter.getPolicyType() + "_BRMS_Raw"),
-                                               policyAdapter.getPolicyName(), version);
-       
-                               if (newFile == null) {
-                                       //TODO:EELF Cleanup - Remove logger
-                                       //logger.error("File already exists, cannot create the policy.");
-                                       PolicyLogger.error("File already exists, cannot create the policy.");
-                                       setPolicyExists(true);
-                                       return false;
-                               }
-                               policyName = newFile.getFileName().toString();
-                       //}
-
                        //String jsonBody = policyAdapter.getJsonBody();
                        String configBody=policyAdapter.getConfigBodyData();
-                       saveConfigurations(policyName, prevPolicyName, configBody);
+                       saveConfigurations(policyName, configBody);
 
                        // Make sure the filename ends with an extension
                        if (policyName.endsWith(".xml") == false) {
@@ -327,17 +188,11 @@ public class CreateBrmsRawPolicy extends Policy {
 
                        configPolicy.setDescription(policyAdapter.getPolicyDescription());
 
-                       configPolicy.setRuleCombiningAlgId(policyAdapter
-                                       .getRuleCombiningAlgId());
+                       configPolicy.setRuleCombiningAlgId(policyAdapter.getRuleCombiningAlgId());
 
                        AllOfType allOfOne = new AllOfType();
-                       File policyFilePath = new File(policyAdapter.getParentPath()
-                                       .toString(), policyName);
-                       String policyDir = policyFilePath.getParentFile().getName();
-                       String fileName = FilenameUtils.removeExtension(policyName);
-                       fileName = policyDir + "." + fileName + ".xml";
-                       String name = fileName.substring(fileName.lastIndexOf("\\") + 1,
-                                       fileName.length());
+                       String fileName = policyAdapter.getNewFileName();
+                       String name = fileName.substring(fileName.lastIndexOf("\\") + 1, fileName.length());
                        if ((name == null) || (name.equals(""))) {
                                name = fileName.substring(fileName.lastIndexOf("/") + 1,
                                                fileName.length());
@@ -348,22 +203,16 @@ public class CreateBrmsRawPolicy extends Policy {
                        AllOfType allOf = new AllOfType();
 
                        // Match for ECOMPName
-                       allOf.getMatch().add(
-                                       createMatch("ECOMPName", policyAdapter.getEcompName()));
-                       allOf.getMatch().add(
-                                       createMatch("ConfigName", policyAdapter.getConfigName()));
+                       allOf.getMatch().add(createMatch("ECOMPName", policyAdapter.getEcompName()));
+                       allOf.getMatch().add(createMatch("ConfigName", policyAdapter.getConfigName()));
                        // Match for riskType
-                       allOf.getMatch().add(
-                                       createDynamicMatch("RiskType", policyAdapter.getRiskType()));
+                       allOf.getMatch().add(createDynamicMatch("RiskType", policyAdapter.getRiskType()));
                        // Match for riskLevel
-                       allOf.getMatch().add(
-                                       createDynamicMatch("RiskLevel", String.valueOf(policyAdapter.getRiskLevel())));
+                       allOf.getMatch().add(createDynamicMatch("RiskLevel", String.valueOf(policyAdapter.getRiskLevel())));
                        // Match for riskguard
-                       allOf.getMatch().add(
-                                       createDynamicMatch("guard", policyAdapter.getGuard()));
+                       allOf.getMatch().add(createDynamicMatch("guard", policyAdapter.getGuard()));
                        // Match for ttlDate
-                       allOf.getMatch().add(
-                                       createDynamicMatch("TTLDate", policyAdapter.getTtlDate()));
+                       allOf.getMatch().add(createDynamicMatch("TTLDate", policyAdapter.getTtlDate()));
                        AnyOfType anyOf = new AnyOfType();
                        anyOf.getAllOf().add(allOfOne);
                        anyOf.getAllOf().add(allOf);
@@ -393,9 +242,6 @@ public class CreateBrmsRawPolicy extends Policy {
                        try {
                                accessURI = new URI(ACTION_ID);
                        } catch (URISyntaxException e) {
-                               //TODO:EELF Cleanup - Remove logger
-                               //logger.error(XACMLErrorConstants.ERROR_DATA_ISSUE
-                                               //+ e.getStackTrace());
                                PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "CreateBrmsRawPolicy", "Exception creating ACCESS URI");
                        }
                        accessAttributeDesignator.setCategory(CATEGORY_ACTION);
@@ -418,9 +264,6 @@ public class CreateBrmsRawPolicy extends Policy {
                        try {
                                configURI = new URI(RESOURCE_ID);
                        } catch (URISyntaxException e) {
-                               //TODO:EELF Cleanup - Remove logger
-                               //logger.error(XACMLErrorConstants.ERROR_DATA_ISSUE
-                                               //+ e.getStackTrace());
                                PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "CreateBrmsRawPolicy", "Exception creating Config URI");
                        }
 
@@ -449,9 +292,6 @@ public class CreateBrmsRawPolicy extends Policy {
                        policyAdapter.setPolicyData(configPolicy);
 
                } else {
-                       //TODO:EELF Cleanup - Remove logger
-                       //logger.error("Unsupported data object."
-                                       //+ policyAdapter.getData().getClass().getCanonicalName());
                        PolicyLogger.error("Unsupported data object."
                                        + policyAdapter.getData().getClass().getCanonicalName());
                }
@@ -482,26 +322,14 @@ public class CreateBrmsRawPolicy extends Policy {
 
                // For Config file Url if configurations are provided.
                // URL ID Assignment
-               final Path gitPath = Paths.get(policyAdapter.getUserGitPath()
-                               .toString());
                AttributeAssignmentExpressionType assignment2 = new AttributeAssignmentExpressionType();
                assignment2.setAttributeId("URLID");
                assignment2.setCategory(CATEGORY_RESOURCE);
                assignment2.setIssuer("");
                AttributeValueType AttributeValue = new AttributeValueType();
                AttributeValue.setDataType(URI_DATATYPE);
-               String policyDir1 = policyAdapter.getParentPath().toString();
-               int startIndex1 = policyDir1.indexOf(gitPath.toString())
-                               + gitPath.toString().length() + 1;
-               policyDir1 = policyDir1.substring(startIndex1, policyDir1.length());
-               logger.info("print the main domain value" + policyDir1);
-               String path = policyDir1.replace('\\', '.');
-               if (path.contains("/")) {
-                       path = policyDir1.replace('/', '.');
-                       logger.info("print the path:" + path);
-               }
-               String content = CONFIG_URL + "/Config/" + path + "."
-                               + getConfigFile(policyName);
+
+               String content = CONFIG_URL + "/Config/" + getConfigFile(policyName);
 
                AttributeValue.getContent().add(content);
                assignment2.setExpression(new ObjectFactory()
@@ -515,26 +343,8 @@ public class CreateBrmsRawPolicy extends Policy {
                assignment3.setIssuer("");
                AttributeValueType attributeValue3 = new AttributeValueType();
                attributeValue3.setDataType(STRING_DATATYPE);
-               String policyDir = policyAdapter.getParentPath().toString();
-               int startIndex = policyDir.indexOf(gitPath.toString())
-                               + gitPath.toString().length() + 1;
-               policyDir = policyDir.substring(startIndex, policyDir.length());
-               StringTokenizer tokenizer = null;
-               StringBuffer buffer = new StringBuffer();
-               if (policyDir.contains("\\")) {
-                       tokenizer = new StringTokenizer(policyDir, "\\");
-               } else {
-                       tokenizer = new StringTokenizer(policyDir, "/");
-               }
-               if (tokenizer != null) {
-                       while (tokenizer.hasMoreElements()) {
-                               String value = tokenizer.nextToken();
-                               buffer.append(value);
-                               buffer.append(".");
-                       }
-               }
                fileName = FilenameUtils.removeExtension(fileName);
-               fileName = buffer.toString() + fileName + ".xml";
+               fileName = fileName + ".xml";
                System.out.println(fileName);
                String name = fileName.substring(fileName.lastIndexOf("\\") + 1,
                                fileName.length());
@@ -562,7 +372,7 @@ public class CreateBrmsRawPolicy extends Policy {
 
                // Ecomp Name Assignment
                AttributeAssignmentExpressionType assignment5 = new AttributeAssignmentExpressionType();
-               assignment5.setAttributeId("matching:" + this.ECOMPID);
+               assignment5.setAttributeId("matching:" + ECOMPID);
                assignment5.setCategory(CATEGORY_RESOURCE);
                assignment5.setIssuer("");
                AttributeValueType configNameAttributeValue5 = new AttributeValueType();
@@ -575,7 +385,7 @@ public class CreateBrmsRawPolicy extends Policy {
                
                //Config Name Assignment
                AttributeAssignmentExpressionType assignment6 = new AttributeAssignmentExpressionType();
-               assignment6.setAttributeId("matching:" + this.CONFIGID);
+               assignment6.setAttributeId("matching:" + CONFIGID);
                assignment6.setCategory(CATEGORY_RESOURCE);
                assignment6.setIssuer("");
                AttributeValueType configNameAttributeValue6 = new AttributeValueType();
@@ -584,21 +394,31 @@ public class CreateBrmsRawPolicy extends Policy {
                assignment6.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue6));
                advice.getAttributeAssignmentExpression().add(assignment6);
                
+        // Adding Controller Information. 
+        if(policyAdapter.getBrmsController()!=null){
+            BRMSDictionaryController brmsDicitonaryController = new BRMSDictionaryController();
+            advice.getAttributeAssignmentExpression().add(
+                    createResponseAttributes("controller:"+ policyAdapter.getBrmsController(), 
+                                brmsDicitonaryController.getControllerDataByID(policyAdapter.getBrmsController()).getController()));
+        }
+        
+        // Adding Dependencies. 
+        if(policyAdapter.getBrmsDependency()!=null){
+            BRMSDictionaryController brmsDicitonaryController = new BRMSDictionaryController();
+            ArrayList<String> dependencies = new ArrayList<String>();
+            StringBuilder key = new StringBuilder();
+            for(String dependencyName: policyAdapter.getBrmsDependency()){
+                dependencies.add(brmsDicitonaryController.getDependencyDataByID(dependencyName).getDependency());
+                key.append(dependencyName + ",");
+            }
+            advice.getAttributeAssignmentExpression().add(
+                        createResponseAttributes("dependencies:"+key.toString(), dependencies.toString()));
+        }
+        
+        // Dynamic Field Config Attributes. 
                Map<String, String> dynamicFieldConfigAttributes = policyAdapter.getDynamicFieldConfigAttributes();
                for (String keyField : dynamicFieldConfigAttributes.keySet()) {
-                       String key = keyField;
-                       String value = dynamicFieldConfigAttributes.get(key);
-                       AttributeAssignmentExpressionType assignment7 = new AttributeAssignmentExpressionType();
-                       assignment7.setAttributeId("key:" + key);
-                       assignment7.setCategory(CATEGORY_RESOURCE);
-                       assignment7.setIssuer("");
-
-                       AttributeValueType configNameAttributeValue7 = new AttributeValueType();
-                       configNameAttributeValue7.setDataType(STRING_DATATYPE);
-                       configNameAttributeValue7.getContent().add(value);
-                       assignment7.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue7));
-
-                       advice.getAttributeAssignmentExpression().add(assignment7);
+                       advice.getAttributeAssignmentExpression().add(createResponseAttributes("key:"+keyField, dynamicFieldConfigAttributes.get(keyField)));
                }
                
                //Risk Attributes
@@ -658,4 +478,16 @@ public class CreateBrmsRawPolicy extends Policy {
        public Object getCorrectPolicyDataObject() {
                return policyAdapter.getData();
        }
+       
+    private AttributeAssignmentExpressionType  createResponseAttributes(String key, String value){
+        AttributeAssignmentExpressionType assignment7 = new AttributeAssignmentExpressionType();
+        assignment7.setAttributeId(key);
+        assignment7.setCategory(CATEGORY_RESOURCE);
+        assignment7.setIssuer("");
+        AttributeValueType configNameAttributeValue7 = new AttributeValueType();
+        configNameAttributeValue7.setDataType(STRING_DATATYPE);
+        configNameAttributeValue7.getContent().add(value);
+        assignment7.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue7));
+        return assignment7;
+    }
 }