Merge "Support CSIT tests for OOF Policy"
[policy/engine.git] / POLICY-SDK-APP / src / main / java / org / onap / policy / controller / CreateBRMSParamController.java
index 3107950..40cceea 100644 (file)
@@ -2,7 +2,7 @@
  * ============LICENSE_START=======================================================
  * ONAP Policy Engine
  * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2017-2018 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.
 
 package org.onap.policy.controller;
 
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileReader;
 import java.io.PrintWriter;
-import java.nio.file.Files;
-import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
@@ -33,6 +28,7 @@ import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Map.Entry;
 import java.util.Set;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -49,7 +45,7 @@ import org.onap.policy.rest.dao.CommonClassDao;
 import org.onap.policy.rest.jpa.BRMSParamTemplate;
 import org.onap.policy.rest.jpa.PolicyEntity;
 import org.onap.policy.xacml.api.XACMLErrorConstants;
-import org.openecomp.portalsdk.core.controller.RestrictedBaseController;
+import org.onap.portalsdk.core.controller.RestrictedBaseController;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -90,7 +86,9 @@ public class CreateBRMSParamController extends RestrictedBaseController {
                CreateBRMSParamController.commonClassDao = commonClassDao;
        }
 
-       public CreateBRMSParamController(){}
+       public CreateBRMSParamController(){
+               // Empty constructor
+       }
        protected PolicyRestAdapter policyAdapter = null; 
 
        private HashMap<String, String> dynamicLayoutMap;
@@ -136,7 +134,7 @@ public class CreateBRMSParamController extends RestrictedBaseController {
                                StringBuilder params = new StringBuilder("");
                                Boolean flag = false;
                                Boolean comment = false;
-                               String lines[] = rule.split("\n");
+                               String[] lines = rule.split("\n");
                                for(String line : lines){
                                        if (line.isEmpty() || line.startsWith("//")) {
                                                continue;
@@ -190,7 +188,7 @@ public class CreateBRMSParamController extends RestrictedBaseController {
                                String[] components = params.toString().split(":");
                                String caption = "";
                                for (int i = 0; i < components.length; i++) {
-                                       String type = "";
+                                       String type;
                                        if (i == 0) {
                                                caption = components[i];
                                        }
@@ -342,50 +340,22 @@ public class CreateBRMSParamController extends RestrictedBaseController {
                                policyAdapter.setGuard(value);
                        }
                        if ("TTLDate".equals(attributeId) && !value.contains("NA")){
-                               String newDate = convertDate(value, true);
+                               PolicyController controller = new PolicyController();
+                               String newDate = controller.convertDate(value);
                                policyAdapter.setTtlDate(newDate);
                        }
                }
        }
 
-       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;
-       }
        // This method generates the UI from rule configuration
        public void paramUIGenerate(PolicyRestAdapter policyAdapter, PolicyEntity entity) {
                String data = entity.getConfigurationData().getConfigBody();
                if(data != null){
-                       File file = new File(PolicyController.getConfigHome() +File.separator+ entity.getConfigurationData().getConfigurationName());
-                       if(file.exists()){
-                               try (BufferedReader br = new BufferedReader(new FileReader(file))) {
-                                       StringBuilder sb = new StringBuilder();
-                                       String line = br.readLine();
-                                       while (line != null) {
-                                               sb.append(line);
-                                               sb.append("\n");
-                                               line = br.readLine();
-                                       }
-                               }catch(Exception e){
-                                       policyLogger.error(XACMLErrorConstants.ERROR_DATA_ISSUE+ e.getMessage() + e);
-                               }
-                       }
                        try {   
                                StringBuilder params = new StringBuilder("");
                                Boolean flag = false;
                                Boolean comment = false;
-                               for (String line : Files.readAllLines(Paths.get(file.toString()))) {
+                               for (String line : data.split("\n")) {
                                        if (line.isEmpty() || line.startsWith("//")) {
                                                continue;
                                        }
@@ -394,6 +364,17 @@ public class CreateBRMSParamController extends RestrictedBaseController {
                                                value = value.replace(brmsTemplateVlaue, "");
                                                policyAdapter.setRuleName(value);
                                        }
+                                       if(line.contains("<%$Values=")) {
+                                           String value = line.substring(line.indexOf("<%$"), line.indexOf("$%>"));
+                                           value = value.replaceAll("<%\\$Values=", "");
+                                           for( String keyValue : value.split(":\\|:")) {
+                                               String[] pair = keyValue.split(":-:");
+                                               if (pair != null && pair.length > 0) {
+                                                       dynamicLayoutMap.put(pair[0], (pair.length > 1) ? pair[1] : "");
+                                               }
+                                           }
+                                           return;
+                                       }
                                        if (line.startsWith("/*")) {
                                                comment = true;
                                                continue;
@@ -441,14 +422,14 @@ public class CreateBRMSParamController extends RestrictedBaseController {
                                                break;
                                        }
                                }
-                               params = new StringBuilder(params.substring(params.indexOf(".Params\"")+ 8));
+                               params = new StringBuilder(params.substring(params.indexOf(".Params\"")+ 11));
                                params = new StringBuilder(params.toString().replaceAll("\\s+", "").replace("salience1000whenthenParamsparams=newParams();","")
                         .replace("insert(params);end", "")
                         .replace("params.set", ""));
                                String[] components = params.toString().split("\\);");
                                if(components!= null && components.length > 0){
                                        for (int i = 0; i < components.length; i++) {
-                                               String value = null;
+                                               String value;
                                                components[i] = components[i]+")";
                                                String caption = components[i].substring(0,
                                                                components[i].indexOf('('));
@@ -489,31 +470,24 @@ public class CreateBRMSParamController extends RestrictedBaseController {
                                policyData.setEditPolicy(true);
                        }
 
-                       String body = "";
-
-                       body = "/* Autogenerated Code Please Don't change/remove this comment section. This is for the UI purpose. \n\t " +
-                                       brmsTemplateVlaue + policyData.getRuleName() + "%$> \n */ \n";
-                       body = body + findRule((String) policyData.getRuleName()) + "\n";
-                       StringBuilder generatedRule = new StringBuilder();
-                       generatedRule.append("rule \""+ policyData.getDomainDir().replace("\\", ".") +".Config_BRMS_Param_" + policyData.getPolicyName()+".Params\" \n\tsalience 1000 \n\twhen\n\tthen\n\t\tParams params = new Params();");
+                       String body;
+                       body = findRule((String) policyData.getRuleName()) + "\n";
+                       StringBuilder generatedMetadata = new StringBuilder();
+                       generatedMetadata.append("/* Autogenerated Code Please Don't change/remove this comment section. This is for the UI purpose. \n\t " +
+                                       brmsTemplateVlaue + policyData.getRuleName() + "%$> \n */ \n");
 
-                       if(policyData.getRuleData().size() > 0){ 
-                               for(Object keyValue: policyData.getRuleData().keySet()){ 
-                                       String key = keyValue.toString().substring(0, 1).toUpperCase() + keyValue.toString().substring(1); 
-                                       if (string.equals(keyValue)) { 
-                                               generatedRule.append("\n\t\tparams.set" 
-                                                               + key + "(\"" 
-                                                               + policyData.getRuleData().get(keyValue).toString() + "\");"); 
-                                       } else { 
-                                               generatedRule.append("\n\t\tparams.set" 
-                                                               + key + "(" 
-                                                               + policyData.getRuleData().get(keyValue).toString() + ");"); 
-                                       } 
-                               } 
+                       if(policyData.getDynamicLayoutMap().size() > 0){
+                               generatedMetadata.append("/* <%$Values=");
+                           for (Entry<?, ?> entry : policyData.getRuleData().entrySet()) {
+                               String uiKey = (String) entry.getKey();
+                               if(!"templateName".equals(uiKey)) {
+                                       generatedMetadata.append(uiKey+":-:"+entry.getValue()+":|:");
+                               }
+                           }
+                           generatedMetadata.append("$%> \n*/ \n");                        
                        }
-                       generatedRule.append("\n\t\tinsert(params);\nend");
-                       policyLogger.info("New rule generated with :" + generatedRule.toString());
-                       body = body + generatedRule.toString();
+                       policyLogger.info("Metadata generated with :" + generatedMetadata.toString());
+                       body = generatedMetadata.toString() + body;
                        // Expand the body. 
                        Map<String,String> copyMap=new HashMap<>();
                        copyMap.putAll((Map<? extends String, ? extends String>) policyData.getRuleData());