summaryrefslogtreecommitdiffstats
path: root/POLICY-SDK-APP
diff options
context:
space:
mode:
Diffstat (limited to 'POLICY-SDK-APP')
-rw-r--r--POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateBRMSParamController.java435
-rw-r--r--POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateBRMSRawController.java236
-rw-r--r--POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateClosedLoopFaultController.java1166
-rw-r--r--POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateClosedLoopPMController.java289
4 files changed, 1056 insertions, 1070 deletions
diff --git a/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateBRMSParamController.java b/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateBRMSParamController.java
index b49f1fc35..8c14048c4 100644
--- a/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateBRMSParamController.java
+++ b/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateBRMSParamController.java
@@ -4,13 +4,14 @@
* ================================================================================
* Copyright (C) 2017-2018 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.
* 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.
@@ -24,20 +25,24 @@ package org.onap.policy.controller;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
+import java.util.Objects;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.xml.bind.JAXBElement;
+import org.apache.commons.collections.CollectionUtils;
import org.json.JSONObject;
import org.onap.policy.common.logging.flexlogger.FlexLogger;
import org.onap.policy.common.logging.flexlogger.Logger;
@@ -50,6 +55,7 @@ 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;
+import org.springframework.web.bind.annotation.RequestMethod;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JsonNode;
@@ -57,7 +63,6 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import oasis.names.tc.xacml._3_0.core.schema.wd_17.AdviceExpressionType;
import oasis.names.tc.xacml._3_0.core.schema.wd_17.AdviceExpressionsType;
-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.AttributeAssignmentExpressionType;
import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeDesignatorType;
@@ -70,6 +75,7 @@ import oasis.names.tc.xacml._3_0.core.schema.wd_17.TargetType;
@Controller
@RequestMapping("/")
public class CreateBRMSParamController extends RestrictedBaseController {
+
private static final Logger policyLogger = FlexLogger.getLogger(CreateBRMSParamController.class);
private static CommonClassDao commonClassDao;
@@ -83,13 +89,14 @@ public class CreateBRMSParamController extends RestrictedBaseController {
}
@Autowired
- private CreateBRMSParamController(CommonClassDao commonClassDao){
+ private CreateBRMSParamController(CommonClassDao commonClassDao) {
CreateBRMSParamController.commonClassDao = commonClassDao;
}
- public CreateBRMSParamController(){
+ public CreateBRMSParamController() {
// Empty constructor
}
+
protected PolicyRestAdapter policyAdapter = null;
private HashMap<String, String> dynamicLayoutMap;
@@ -98,9 +105,9 @@ public class CreateBRMSParamController extends RestrictedBaseController {
private static String string = "String";
- @RequestMapping(value={"/policyController/getBRMSTemplateData.htm"}, method={org.springframework.web.bind.annotation.RequestMethod.POST})
- public void getBRMSParamPolicyRuleData(HttpServletRequest request, HttpServletResponse response){
- try{
+ @RequestMapping(value = {"/policyController/getBRMSTemplateData.htm"}, method = { RequestMethod.POST})
+ public void getBRMSParamPolicyRuleData(HttpServletRequest request, HttpServletResponse response) {
+ try {
dynamicLayoutMap = new HashMap<>();
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
@@ -115,22 +122,22 @@ public class CreateBRMSParamController extends RestrictedBaseController {
String responseString = mapper.writeValueAsString(dynamicLayoutMap);
JSONObject j = new JSONObject("{policyData: " + responseString + "}");
out.write(j.toString());
- }catch(Exception e){
- policyLogger.error("Exception Occured while getting BRMS Rule data" , e);
+ } catch (Exception e) {
+ policyLogger.error("Exception Occured while getting BRMS Rule data", e);
}
}
- protected String findRule(String ruleTemplate) {
+ private String findRule(String ruleTemplate) {
List<Object> datas = commonClassDao.getDataById(BRMSParamTemplate.class, "ruleName", ruleTemplate);
- if(datas != null && !datas.isEmpty()){
- BRMSParamTemplate bRMSParamTemplate = (BRMSParamTemplate) datas.get(0);
+ if(CollectionUtils.isNotEmpty(datas)){
+ BRMSParamTemplate bRMSParamTemplate = (BRMSParamTemplate) datas.get(0);
return bRMSParamTemplate.getRule();
}
return null;
}
- protected void generateUI(String rule) {
- if (rule==null){
+ private void generateUI(String rule) {
+ if (rule == null) {
return;
}
try {
@@ -142,11 +149,44 @@ public class CreateBRMSParamController extends RestrictedBaseController {
}
private void processRule(String rule) {
- StringBuilder params = new StringBuilder("");
- Boolean flag = false;
- Boolean comment = false;
+ StringBuilder params = getParamsBuilderFromRule(rule);
+ params = new StringBuilder(
+ params.toString().replace("declare Params", "").replace("end", "").replaceAll("\\s+", ""));
+ String[] components = params.toString().split(":");
+ String caption = "";
+ for (int i = 0; i < components.length; i++) {
+ String type;
+ if (i == 0) {
+ caption = components[i];
+ }
+ if ("".equals(caption)) {
+ break;
+ }
+ String nextComponent;
+ try {
+ nextComponent = components[i + 1];
+ } catch (Exception e) {
+ policyLogger.info("Error when procesing rule: " + e);
+ nextComponent = components[i];
+ }
+ if (nextComponent.startsWith(string)) {
+ type = "String";
+ createField(caption, type);
+ caption = nextComponent.replace(string, "");
+ } else if (nextComponent.startsWith("int")) {
+ type = "int";
+ createField(caption, type);
+ caption = nextComponent.replace("int", "");
+ }
+ }
+ }
+
+ private StringBuilder getParamsBuilderFromRule(final String rule) {
+ StringBuilder params = new StringBuilder();
+ boolean flag = false;
+ boolean comment = false;
String[] lines = rule.split("\n");
- for(String line : lines){
+ for (String line : lines) {
if (line.isEmpty() || line.startsWith("//")) {
continue;
}
@@ -184,34 +224,7 @@ public class CreateBRMSParamController extends RestrictedBaseController {
break;
}
}
- params = new StringBuilder(params.toString().replace("declare Params", "").replace("end", "").replaceAll("\\s+", ""));
- String[] components = params.toString().split(":");
- String caption = "";
- for (int i = 0; i < components.length; i++) {
- String type;
- if (i == 0) {
- caption = components[i];
- }
- if("".equals(caption)){
- break;
- }
- String nextComponent = "";
- try {
- nextComponent = components[i + 1];
- } catch (Exception e) {
- policyLogger.info("Just for Logging"+e);
- nextComponent = components[i];
- }
- if (nextComponent.startsWith(string)) {
- type = "String";
- createField(caption, type);
- caption = nextComponent.replace(string, "");
- } else if (nextComponent.startsWith("int")) {
- type = "int";
- createField(caption, type);
- caption = nextComponent.replace("int", "");
- }
- }
+ return params;
}
private String splitMultiLineStartComment(String line) {
@@ -241,28 +254,38 @@ public class CreateBRMSParamController extends RestrictedBaseController {
policyAdapter.setOldPolicyFileName(policyAdapter.getPolicyName());
// policy name value is the policy name without any prefix and
// Extensions.
- String policyNameValue = policyAdapter.getPolicyName().substring(policyAdapter.getPolicyName().indexOf("BRMS_Param_") + 11);
+ String policyNameValue = policyAdapter.getPolicyName()
+ .substring(policyAdapter.getPolicyName().indexOf("BRMS_Param_") + 11);
if (policyLogger.isDebugEnabled()) {
- policyLogger.debug("Prepopulating form data for BRMS RAW Policy selected:" + policyAdapter.getPolicyName());
+ policyLogger
+ .debug("Prepopulating form data for BRMS RAW Policy selected:" + policyAdapter.getPolicyName());
}
policyAdapter.setPolicyName(policyNameValue);
- String description = "";
- try{
+ String description;
+ try {
description = policy.getDescription().substring(0, policy.getDescription().indexOf("@CreatedBy:"));
- }catch(Exception e){
- policyLogger.info("Just for Logging"+e);
+ } catch (Exception e) {
+ policyLogger.info("Error getting description: " + e);
description = policy.getDescription();
}
policyAdapter.setPolicyDescription(description);
setDataAdapterFromAdviceExpressions(policy, policyAdapter);
- paramUIGenerate(policyAdapter, entity);
+
+ // Generate Param UI
+ try {
+ paramUIGenerate(policyAdapter, entity);
+ } catch (Exception e) {
+ policyLogger.error(XACMLErrorConstants.ERROR_DATA_ISSUE + e.getMessage() + e);
+ }
+
// Get the target data under policy.
policyAdapter.setDynamicLayoutMap(dynamicLayoutMap);
- if(policyAdapter.getDynamicLayoutMap().size() > 0){
- LinkedHashMap<String,String> drlRule = new LinkedHashMap<>();
- for(Object keyValue: policyAdapter.getDynamicLayoutMap().keySet()){
- drlRule.put(keyValue.toString(), policyAdapter.getDynamicLayoutMap().get(keyValue));
- }
+ if (policyAdapter.getDynamicLayoutMap().size() > 0) {
+ LinkedHashMap<String, String> drlRule = policyAdapter.getDynamicLayoutMap()
+ .keySet().stream()
+ .collect(Collectors
+ .toMap(String::toString, keyValue -> policyAdapter.getDynamicLayoutMap().get(keyValue),
+ (a, b) -> b, LinkedHashMap::new));
policyAdapter.setRuleData(drlRule);
}
TargetType target = policy.getTarget();
@@ -272,28 +295,30 @@ public class CreateBRMSParamController extends RestrictedBaseController {
}
}
- private void setDataAdapterFromAdviceExpressions(PolicyType policy, PolicyRestAdapter policyAdapter){
+ private void setDataAdapterFromAdviceExpressions(PolicyType policy, PolicyRestAdapter policyAdapter) {
ArrayList<Object> attributeList = new ArrayList<>();
// Set Attributes.
- AdviceExpressionsType expressionTypes = ((RuleType)policy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().get(0)).getAdviceExpressions();
- for( AdviceExpressionType adviceExpression: expressionTypes.getAdviceExpression()){
- for(AttributeAssignmentExpressionType attributeAssignment: adviceExpression.getAttributeAssignmentExpression()){
- if(attributeAssignment.getAttributeId().startsWith("key:")){
+ AdviceExpressionsType expressionTypes = ((RuleType) policy
+ .getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().get(0)).getAdviceExpressions();
+ for (AdviceExpressionType adviceExpression : expressionTypes.getAdviceExpression()) {
+ for (AttributeAssignmentExpressionType attributeAssignment : adviceExpression
+ .getAttributeAssignmentExpression()) {
+ if (attributeAssignment.getAttributeId().startsWith("key:")) {
Map<String, String> attribute = new HashMap<>();
String key = attributeAssignment.getAttributeId().replace("key:", "");
attribute.put("key", key);
@SuppressWarnings("unchecked")
- JAXBElement<AttributeValueType> attributevalue = (JAXBElement<AttributeValueType>) attributeAssignment.getExpression();
- String value = (String) attributevalue.getValue().getContent().get(0);
+ JAXBElement<AttributeValueType> attributeValue = (JAXBElement<AttributeValueType>) attributeAssignment
+ .getExpression();
+ String value = (String) attributeValue.getValue().getContent().get(0);
attribute.put("value", value);
attributeList.add(attribute);
- }else if(attributeAssignment.getAttributeId().startsWith("dependencies:")){
- ArrayList<String> dependencies = new ArrayList<>(Arrays.asList(attributeAssignment.getAttributeId().replace("dependencies:", "").split(",")));
- if(dependencies.contains("")){
- dependencies.remove("");
- }
+ } else if (attributeAssignment.getAttributeId().startsWith("dependencies:")) {
+ ArrayList<String> dependencies = new ArrayList<>(
+ Arrays.asList(attributeAssignment.getAttributeId().replace("dependencies:", "").split(",")));
+ dependencies.remove("");
policyAdapter.setBrmsDependency(dependencies);
- }else if(attributeAssignment.getAttributeId().startsWith("controller:")){
+ } else if (attributeAssignment.getAttributeId().startsWith("controller:")) {
policyAdapter.setBrmsController(attributeAssignment.getAttributeId().replace("controller:", ""));
}
}
@@ -301,38 +326,23 @@ public class CreateBRMSParamController extends RestrictedBaseController {
}
}
- private void setDataToAdapterFromTarget(TargetType target, PolicyRestAdapter policyAdapter){
+ private void setDataToAdapterFromTarget(TargetType target, PolicyRestAdapter policyAdapter) {
// Under target we have AnyOFType
List<AnyOfType> anyOfList = target.getAnyOf();
-
if (anyOfList == null) {
return;
}
-
- Iterator<AnyOfType> iterAnyOf = anyOfList.iterator();
- while (iterAnyOf.hasNext()) {
- AnyOfType anyOf = iterAnyOf.next();
- // Under AnyOFType we have AllOFType
- List<AllOfType> allOfList = anyOf.getAllOf();
- if (allOfList == null) {
- continue;
- }
- Iterator<AllOfType> iterAllOf = allOfList.iterator();
- while (iterAllOf.hasNext()) {
- AllOfType allOf = iterAllOf.next();
- // Under AllOFType we have Match
- List<MatchType> matchList = allOf.getMatch();
- if (matchList != null) {
- setDataToAdapterFromMatchList(matchList, policyAdapter);
- }
- }
- }
+ anyOfList.stream().map(AnyOfType::getAllOf)
+ .filter(Objects::nonNull)
+ .flatMap(Collection::stream)
+ .forEach(allOf -> setDataToAdapterFromMatchList(allOf.getMatch(), policyAdapter));
}
- private void setDataToAdapterFromMatchList(List<MatchType> matchList, PolicyRestAdapter policyAdapter){
- Iterator<MatchType> iterMatch = matchList.iterator();
- while (iterMatch.hasNext()) {
- MatchType match = iterMatch.next();
+ private void setDataToAdapterFromMatchList(List<MatchType> matchList, PolicyRestAdapter policyAdapter) {
+ if (matchList == null) {
+ return;
+ }
+ for (final MatchType match : matchList) {
//
// Under the match we have attribute value and
// attributeDesignator. So,finally down to the actual attribute.
@@ -341,17 +351,16 @@ public class CreateBRMSParamController extends RestrictedBaseController {
String value = (String) attributeValue.getContent().get(0);
AttributeDesignatorType designator = match.getAttributeDesignator();
String attributeId = designator.getAttributeId();
-
- if ("RiskType".equals(attributeId)){
+ if ("RiskType".equals(attributeId)) {
policyAdapter.setRiskType(value);
}
- if ("RiskLevel".equals(attributeId)){
+ if ("RiskLevel".equals(attributeId)) {
policyAdapter.setRiskLevel(value);
}
- if ("guard".equals(attributeId)){
+ if ("guard".equals(attributeId)) {
policyAdapter.setGuard(value);
}
- if ("TTLDate".equals(attributeId) && !value.contains("NA")){
+ if ("TTLDate".equals(attributeId) && !value.contains("NA")) {
PolicyController controller = new PolicyController();
String newDate = controller.convertDate(value);
policyAdapter.setTtlDate(newDate);
@@ -360,109 +369,103 @@ public class CreateBRMSParamController extends RestrictedBaseController {
}
// This method generates the UI from rule configuration
- public void paramUIGenerate(PolicyRestAdapter policyAdapter, PolicyEntity entity) {
+ private void paramUIGenerate(PolicyRestAdapter policyAdapter, PolicyEntity entity) {
String data = entity.getConfigurationData().getConfigBody();
- if(data == null){
+ if (data == null) {
return;
}
-
- try {
- StringBuilder params = new StringBuilder("");
- Boolean flag = false;
- Boolean comment = false;
- for (String line : data.split("\n")) {
- if (line.isEmpty() || line.startsWith("//")) {
- continue;
- }
- if(line.contains(brmsTemplateVlaue)){
- String value = line.substring(line.indexOf("<$%"),line.indexOf("%$>"));
- 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;
- }
- if ((line.contains("//"))&&(!(line.contains("http://") || line.contains("https://")))){
- line = splitSingleLineComment(line);
- }
- if (line.contains("/*")) {
- comment = true;
- if (line.contains("*/")) {
- comment = false;
- line = processMultiLineFullComment(line);
- } else {
- line = splitMultiLineStartComment(line);
- }
- }
+ StringBuilder params = new StringBuilder();
+ boolean flag = false;
+ boolean comment = false;
+ for (String line : data.split("\n")) {
+ if (line.isEmpty() || line.startsWith("//")) {
+ continue;
+ }
+ if (line.contains(brmsTemplateVlaue)) {
+ String value = line.substring(line.indexOf("<$%"), line.indexOf("%$>"));
+ value = value.replace(brmsTemplateVlaue, "");
+ policyAdapter.setRuleName(value);
+ }
+ if (line.contains("<%$Values=")) {
+ String value = line.substring(line.indexOf("<%$"), line.indexOf("$%>"));
+ value = value.replaceAll("<%\\$Values=", "");
+ Arrays.stream(value.split(":\\|:")).map(keyValue -> keyValue.split(":-:"))
+ .filter(pair -> pair.length > 0)
+ .forEach(pair -> dynamicLayoutMap.put(pair[0], (pair.length > 1) ? pair[1] : ""));
+ return;
+ }
+ if (line.startsWith("/*")) {
+ comment = true;
+ continue;
+ }
+ if ((line.contains("//")) && (!(line.contains("http://") || line.contains("https://")))) {
+ line = splitSingleLineComment(line);
+ }
+ if (line.contains("/*")) {
+ comment = true;
if (line.contains("*/")) {
comment = false;
- line = processEndComment(line);
- }
- if (comment) {
- continue;
- }
- if (flag) {
- params.append(line);
- }
- if (line.contains("rule") && line.contains(".Params\"")) {
- params.append(line);
- flag = true;
- }
- if (line.contains("end") && flag) {
- break;
+ line = processMultiLineFullComment(line);
+ } else {
+ line = splitMultiLineStartComment(line);
}
}
- 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;
- components[i] = components[i]+")";
- String caption = components[i].substring(0,
- components[i].indexOf('('));
- caption = caption.substring(0, 1).toLowerCase() + caption.substring(1);
- if (components[i].contains("(\"")) {
- value = components[i]
- .substring(components[i].indexOf("(\""),
- components[i].indexOf("\")"))
- .replace("(\"", "").replace("\")", "");
- } else {
- value = components[i]
- .substring(components[i].indexOf('('),
- components[i].indexOf(')'))
- .replace("(", "").replace(")", "");
- }
- dynamicLayoutMap.put(caption, value);
+ if (line.contains("*/")) {
+ comment = false;
+ line = processEndComment(line);
+ }
+ if (comment) {
+ continue;
+ }
+ if (flag) {
+ params.append(line);
+ }
+ if (line.contains("rule") && line.contains(".Params\"")) {
+ params.append(line);
+ flag = true;
+ }
+ if (line.contains("end") && flag) {
+ break;
+ }
+ }
+ 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", ""));
+ updateCaptionToDynamicLayoutMap(params);
+ }
+ private void updateCaptionToDynamicLayoutMap(final StringBuilder params) {
+ String[] components = params.toString().split("\\);");
+ if(components.length > 0){
+ for (int i = 0; i < components.length; i++) {
+ String value;
+ components[i] = components[i] + ")";
+ String caption = components[i].substring(0,
+ components[i].indexOf('('));
+ caption = caption.substring(0, 1).toLowerCase() + caption.substring(1);
+ if (components[i].contains("(\"")) {
+ value = components[i]
+ .substring(components[i].indexOf("(\""),
+ components[i].indexOf("\")"))
+ .replace("(\"", "").replace("\")", "");
+ } else {
+ value = components[i]
+ .substring(components[i].indexOf('('),
+ components[i].indexOf(')'))
+ .replace("(", "").replace(")", "");
}
+ dynamicLayoutMap.put(caption, value);
}
- } catch (Exception e) {
- policyLogger.error(XACMLErrorConstants.ERROR_DATA_ISSUE + e.getMessage() + e);
}
-
-
}
private String processEndComment(String line) {
try {
line = splitMultiLineEndComment(line);
} catch (Exception e) {
- policyLogger.info("Just for Logging"+e);
+ policyLogger.info("Just for Logging" + e);
line = "";
}
return line;
@@ -471,9 +474,9 @@ public class CreateBRMSParamController extends RestrictedBaseController {
private String processMultiLineFullComment(String line) {
try {
line = splitMultiLineStartComment(line)
- + splitMultiLineEndComment(line);
+ + splitMultiLineEndComment(line);
} catch (Exception e) {
- policyLogger.info("Just for Logging"+e);
+ policyLogger.info("Just for Logging" + e);
line = splitMultiLineStartComment(line);
}
return line;
@@ -481,30 +484,33 @@ public class CreateBRMSParamController extends RestrictedBaseController {
// set View Rule
@SuppressWarnings("unchecked")
- @RequestMapping(value={"/policyController/ViewBRMSParamPolicyRule.htm"}, method={org.springframework.web.bind.annotation.RequestMethod.POST})
- public void setViewRule(HttpServletRequest request, HttpServletResponse response){
+ @RequestMapping(value = {"/policyController/ViewBRMSParamPolicyRule.htm"}, method = { RequestMethod.POST})
+ public void setViewRule(HttpServletRequest request, HttpServletResponse response) {
try {
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
JsonNode root = mapper.readTree(request.getReader());
- PolicyRestAdapter policyData = mapper.readValue(root.get(PolicyController.getPolicydata()).get("policy").toString(), PolicyRestAdapter.class);
- policyData.setDomainDir(root.get(PolicyController.getPolicydata()).get("model").get("name").toString().replace("\"", ""));
- if(root.get(PolicyController.getPolicydata()).get("model").get("type").toString().replace("\"", "").equals(PolicyController.getFile())){
+ PolicyRestAdapter policyData = mapper
+ .readValue(root.get(PolicyController.getPolicydata()).get("policy").toString(),
+ PolicyRestAdapter.class);
+ policyData.setDomainDir(
+ root.get(PolicyController.getPolicydata()).get("model").get("name").toString().replace("\"", ""));
+ if (root.get(PolicyController.getPolicydata()).get("model").get("type").toString().replace("\"", "")
+ .equals(PolicyController.getFile())) {
policyData.setEditPolicy(true);
}
- 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");
+ String body = findRule(policyData.getRuleName()) + "\n";
+ StringBuilder generatedMetadata = new StringBuilder().append(
+ "/* Autogenerated Code Please Don't change/remove this comment section. This is for the UI purpose. \n\t ")
+ .append(brmsTemplateVlaue).append(policyData.getRuleName()).append("%$> \n */ \n");
- if(policyData.getDynamicLayoutMap().size() > 0){
+ 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()+":|:");
+ if (!"templateName".equals(uiKey)) {
+ generatedMetadata.append(uiKey).append(":-:").append(entry.getValue()).append(":|:");
}
}
generatedMetadata.append("$%> \n*/ \n");
@@ -512,26 +518,27 @@ public class CreateBRMSParamController extends RestrictedBaseController {
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());
- copyMap.put("policyName", policyData.getDomainDir().replace("\\", ".") +".Config_BRMS_Param_" + policyData.getPolicyName());
+ Map<String, String> copyMap = new HashMap<>(
+ (Map<? extends String, ? extends String>) policyData.getRuleData());
+ copyMap.put("policyName",
+ policyData.getDomainDir().replace("\\", ".") + ".Config_BRMS_Param_" + policyData.getPolicyName());
copyMap.put("policyScope", policyData.getDomainDir().replace("\\", "."));
copyMap.put("policyVersion", "1");
//Finding all the keys in the Map data-structure.
- Set<String> keySet= copyMap.keySet();
+ Set<String> keySet = copyMap.keySet();
Iterator<String> iterator = keySet.iterator();
Pattern p;
Matcher m;
- while(iterator.hasNext()) {
+ while (iterator.hasNext()) {
//Converting the first character of the key into a lower case.
- String input= iterator.next();
- String output = Character.toLowerCase(input.charAt(0)) +
- (input.length() > 1 ? input.substring(1) : "");
+ String input = iterator.next();
+ String output = Character.toLowerCase(input.charAt(0)) +
+ (input.length() > 1 ? input.substring(1) : "");
//Searching for a pattern in the String using the key.
- p=Pattern.compile("\\$\\{"+output+"\\}");
- m=p.matcher(body);
+ p = Pattern.compile("\\$\\{" + output + "\\}");
+ m = p.matcher(body);
//Replacing the value with the inputs provided by the user in the editor.
- body=m.replaceAll(copyMap.get(input));
+ body = m.replaceAll(copyMap.get(input));
}
response.setCharacterEncoding("UTF-8");
response.setContentType("application / json");
diff --git a/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateBRMSRawController.java b/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateBRMSRawController.java
index 3ab4f4f16..93ca28190 100644
--- a/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateBRMSRawController.java
+++ b/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateBRMSRawController.java
@@ -3,13 +3,14 @@
* ONAP Policy Engine
* ================================================================================
* Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * 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.
* 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.
@@ -20,14 +21,14 @@
package org.onap.policy.controller;
-
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collection;
import java.util.HashMap;
-import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import javax.xml.bind.JAXBElement;
import oasis.names.tc.xacml._3_0.core.schema.wd_17.AdviceExpressionType;
@@ -37,122 +38,133 @@ import oasis.names.tc.xacml._3_0.core.schema.wd_17.AnyOfType;
import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeAssignmentExpressionType;
import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeDesignatorType;
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.RuleType;
import oasis.names.tc.xacml._3_0.core.schema.wd_17.TargetType;
-import org.onap.policy.common.logging.flexlogger.FlexLogger;
+import org.onap.policy.common.logging.flexlogger.FlexLogger;
import org.onap.policy.common.logging.flexlogger.Logger;
import org.onap.policy.rest.adapter.PolicyRestAdapter;
import org.onap.policy.rest.jpa.PolicyEntity;
-public class CreateBRMSRawController{
-
- private static final Logger logger = FlexLogger.getLogger(CreateBRMSRawController.class);
-
- protected PolicyRestAdapter policyAdapter = null;
- private ArrayList<Object> attributeList;
-
-
- @SuppressWarnings("unchecked")
- public void prePopulateBRMSRawPolicyData(PolicyRestAdapter policyAdapter, PolicyEntity entity) {
- attributeList = new ArrayList<>();
- if (policyAdapter.getPolicyData() instanceof PolicyType) {
- PolicyType policy = (PolicyType) policyAdapter.getPolicyData();
- policyAdapter.setOldPolicyFileName(policyAdapter.getPolicyName());
- // policy name value is the policy name without any prefix and
- // Extensions.
- String policyNameValue = policyAdapter.getPolicyName().substring(policyAdapter.getPolicyName().indexOf("BRMS_Raw_") + 9);
- if (logger.isDebugEnabled()) {
- logger.debug("Prepopulating form data for BRMS RAW Policy selected:" + policyAdapter.getPolicyName());
- }
- policyAdapter.setPolicyName(policyNameValue);
- String description = "";
- try{
- description = policy.getDescription().substring(0, policy.getDescription().indexOf("@CreatedBy:"));
- }catch(Exception e){
- logger.info("Not able to see the createdby in description. So, add generic description", e);
- description = policy.getDescription();
- }
- policyAdapter.setPolicyDescription(description);
- // Set Attributes.
- AdviceExpressionsType expressionTypes = ((RuleType)policy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().get(0)).getAdviceExpressions();
- for( AdviceExpressionType adviceExpression: expressionTypes.getAdviceExpression()){
- for(AttributeAssignmentExpressionType attributeAssignment: adviceExpression.getAttributeAssignmentExpression()){
- if(attributeAssignment.getAttributeId().startsWith("key:")){
- Map<String, String> attribute = new HashMap<>();
- String key = attributeAssignment.getAttributeId().replace("key:", "");
- attribute.put("key", key);
- JAXBElement<AttributeValueType> attributevalue = (JAXBElement<AttributeValueType>) attributeAssignment.getExpression();
- String value = (String) attributevalue.getValue().getContent().get(0);
- attribute.put("value", value);
- attributeList.add(attribute);
- }else if(attributeAssignment.getAttributeId().startsWith("dependencies:")){
- ArrayList<String> dependencies = new ArrayList<>(Arrays.asList(attributeAssignment.getAttributeId().replace("dependencies:", "").split(",")));
- if(dependencies.contains("")){
- dependencies.remove("");
+public class CreateBRMSRawController {
+
+ private static final Logger logger = FlexLogger.getLogger(CreateBRMSRawController.class);
+
+ protected PolicyRestAdapter policyAdapter = null;
+
+ @SuppressWarnings("unchecked")
+ public void prePopulateBRMSRawPolicyData(PolicyRestAdapter policyAdapter, PolicyEntity entity) {
+
+ if (policyAdapter.getPolicyData() instanceof PolicyType) {
+ PolicyType policy = (PolicyType) policyAdapter.getPolicyData();
+ policyAdapter.setOldPolicyFileName(policyAdapter.getPolicyName());
+
+ // Set PolicyAdapter name value
+ setPolicyAdapterNameValue(policyAdapter);
+
+ // Set PolicyAdapter description.
+ setPolicyAdapterDescription(policyAdapter, policy);
+
+ // Set PolicyAdapter attributes.
+ setPolicyAdapterAttributes(policyAdapter, policy);
+
+ // Set PolicyAdapter configBodyData
+ policyAdapter.setConfigBodyData(entity.getConfigurationData().getConfigBody());
+
+ // Get the target data under policy.
+ TargetType target = policy.getTarget();
+ if (target == null) {
+ return;
+ }
+ // Under target we have AnyOFType
+ List<AnyOfType> anyOfList = target.getAnyOf();
+ if (anyOfList == null) {
+ return;
+ }
+
+ // Set PolicyAdapter riskType, riskLevel, guard, ttlDate from match attributes
+ setPolicyAdapterMatchAttributes(policyAdapter, policy.getTarget().getAnyOf());
+ }
+ }
+
+ private void setPolicyAdapterMatchAttributes(PolicyRestAdapter policyAdapter, List<AnyOfType> anyOfList) {
+ anyOfList.stream()
+ //Extract nonNull list of AllOfType objs from each AnyOfType obj
+ .map(AnyOfType::getAllOf).filter(Objects::nonNull)
+ .forEach(allOfList ->
+ //Extract nonNull list of MatchType objs from each AllOFType obj
+ allOfList.stream().map(AllOfType::getMatch).filter(Objects::nonNull)
+ .flatMap(Collection::stream)
+ .forEach(match -> {
+ // Under the match we have attribute value and
+ // attributeDesignator. So,finally down to the actual attribute.
+ AttributeValueType attributeValue = match.getAttributeValue();
+ String value = (String) attributeValue.getContent().get(0);
+ AttributeDesignatorType designator = match.getAttributeDesignator();
+ String attributeId = designator.getAttributeId();
+ if ("RiskType".equals(attributeId)) {
+ policyAdapter.setRiskType(value);
+ } else if ("RiskLevel".equals(attributeId)) {
+ policyAdapter.setRiskLevel(value);
+ } else if ("guard".equals(attributeId)) {
+ policyAdapter.setGuard(value);
+ } else if ("TTLDate".equals(attributeId) && !value.contains("NA")) {
+ PolicyController controller = new PolicyController();
+ String newDate = controller.convertDate(value);
+ policyAdapter.setTtlDate(newDate);
}
- policyAdapter.setBrmsDependency(dependencies);
- }else if(attributeAssignment.getAttributeId().startsWith("controller:")){
- policyAdapter.setBrmsController(attributeAssignment.getAttributeId().replace("controller:", ""));
- }
- }
- policyAdapter.setAttributes(attributeList);
- }
- // Get the target data under policy.
- policyAdapter.setConfigBodyData(entity.getConfigurationData().getConfigBody());
- TargetType target = policy.getTarget();
- if (target != null) {
- // Under target we have AnyOFType
- List<AnyOfType> anyOfList = target.getAnyOf();
- if (anyOfList != null) {
- Iterator<AnyOfType> iterAnyOf = anyOfList.iterator();
- while (iterAnyOf.hasNext()) {
- AnyOfType anyOf = iterAnyOf.next();
- // Under AnyOFType we have AllOFType
- List<AllOfType> allOfList = anyOf.getAllOf();
- if (allOfList != null) {
- Iterator<AllOfType> iterAllOf = allOfList.iterator();
- while (iterAllOf.hasNext()) {
- AllOfType allOf = iterAllOf.next();
- // Under AllOFType we have Match
- List<MatchType> matchList = allOf.getMatch();
- if (matchList != null) {
- Iterator<MatchType> iterMatch = matchList.iterator();
- while (iterMatch.hasNext()) {
- MatchType match = iterMatch.next();
- //
- // Under the match we have attribute value and
- // attributeDesignator. So,finally down to the actual attribute.
- //
- AttributeValueType attributeValue = match.getAttributeValue();
- String value = (String) attributeValue.getContent().get(0);
- AttributeDesignatorType designator = match.getAttributeDesignator();
- String attributeId = designator.getAttributeId();
-
- if ("RiskType".equals(attributeId)){
- policyAdapter.setRiskType(value);
- }
- if ("RiskLevel".equals(attributeId)){
- policyAdapter.setRiskLevel(value);
- }
- if ("guard".equals(attributeId)){
- policyAdapter.setGuard(value);
- }
- if ("TTLDate".equals(attributeId) && !value.contains("NA")){
- PolicyController controller = new PolicyController();
- String newDate = controller.convertDate(value);
- policyAdapter.setTtlDate(newDate);
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
+ }));
+ }
+
+ private void setPolicyAdapterNameValue(final PolicyRestAdapter policyAdapter) {
+ // policy name value is the policy name without any prefix and extensions.
+ String policyNameValue = policyAdapter.getPolicyName()
+ .substring(policyAdapter.getPolicyName().indexOf("BRMS_Raw_") + 9);
+ if (logger.isDebugEnabled()) {
+ logger.debug("Prepopulating form data for BRMS RAW Policy selected:" + policyAdapter.getPolicyName());
+ }
+ policyAdapter.setPolicyName(policyNameValue);
+ }
+
+ private void setPolicyAdapterDescription(final PolicyRestAdapter policyAdapter, final PolicyType policy) {
+ String description;
+ try {
+ description = policy.getDescription().substring(0, policy.getDescription().indexOf("@CreatedBy:"));
+ } catch (Exception e) {
+ logger.info("Not able to see the createdby in description. So, add generic description", e);
+ description = policy.getDescription();
+ }
+ policyAdapter.setPolicyDescription(description);
+ }
+ private void setPolicyAdapterAttributes(final PolicyRestAdapter policyAdapter, final PolicyType policy) {
+ ArrayList<Object> attributeList = new ArrayList<>();
+ AdviceExpressionsType expressionTypes = ((RuleType) policy
+ .getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().get(0)).getAdviceExpressions();
+ for (AdviceExpressionType adviceExpression : expressionTypes.getAdviceExpression()) {
+ for (AttributeAssignmentExpressionType attributeAssignment : adviceExpression
+ .getAttributeAssignmentExpression()) {
+ if (attributeAssignment.getAttributeId().startsWith("key:")) {
+ Map<String, String> attribute = new HashMap<>();
+ String key = attributeAssignment.getAttributeId().replace("key:", "");
+ attribute.put("key", key);
+ JAXBElement<AttributeValueType> attributeValue = (JAXBElement<AttributeValueType>) attributeAssignment
+ .getExpression();
+ String value = (String) attributeValue.getValue().getContent().get(0);
+ attribute.put("value", value);
+ attributeList.add(attribute);
+ } else if (attributeAssignment.getAttributeId().startsWith("dependencies:")) {
+ ArrayList<String> dependencies = new ArrayList<>(Arrays
+ .asList(attributeAssignment.getAttributeId().replace("dependencies:", "").split(",")));
+ dependencies.remove("");
+ policyAdapter.setBrmsDependency(dependencies);
+ } else if (attributeAssignment.getAttributeId().startsWith("controller:")) {
+ policyAdapter
+ .setBrmsController(attributeAssignment.getAttributeId().replace("controller:", ""));
+ }
+ }
+ policyAdapter.setAttributes(attributeList);
+ }
+ }
}
diff --git a/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateClosedLoopFaultController.java b/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateClosedLoopFaultController.java
index d942939d1..4c3249311 100644
--- a/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateClosedLoopFaultController.java
+++ b/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateClosedLoopFaultController.java
@@ -3,13 +3,14 @@
* ONAP Policy Engine
* ================================================================================
* Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * 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.
* 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.
@@ -20,15 +21,17 @@
package org.onap.policy.controller;
-
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.ArrayList;
-import java.util.Iterator;
+import java.util.Arrays;
+import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
+import java.util.stream.IntStream;
import org.onap.policy.common.logging.flexlogger.FlexLogger;
import org.onap.policy.common.logging.flexlogger.Logger;
import org.onap.policy.rest.adapter.ClosedLoopFaultBody;
@@ -54,602 +57,573 @@ 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.AttributeDesignatorType;
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;
@Controller
@RequestMapping("/")
-public class CreateClosedLoopFaultController extends RestrictedBaseController{
-
- private static final Logger policyLogger = FlexLogger.getLogger(CreateClosedLoopFaultController.class);
-
- protected PolicyRestAdapter policyAdapter = null;
-
-
- private static CommonClassDao commonclassdao;
-
- @Autowired
- private CreateClosedLoopFaultController(CommonClassDao commonclassdao){
- CreateClosedLoopFaultController.commonclassdao = commonclassdao;
- }
-
- public CreateClosedLoopFaultController(){
- // Empty constructor
- }
-
- public PolicyRestAdapter setDataToPolicyRestAdapter(PolicyRestAdapter policyData, JsonNode root){
- try{
- ObjectMapper mapper = new ObjectMapper();
- mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
- ClosedLoopFaultTrapDatas trapDatas = mapper.readValue(root.get("trapData").toString(), ClosedLoopFaultTrapDatas.class);
- ClosedLoopFaultTrapDatas faultDatas = mapper.readValue(root.get("faultData").toString(), ClosedLoopFaultTrapDatas.class);
- ClosedLoopGridJSONData policyJsonData = mapper.readValue(root.get("policyData").get("policy").toString(), ClosedLoopGridJSONData.class);
- ClosedLoopFaultBody jsonBody = mapper.readValue(root.get("policyData").get("policy").get("jsonBodyData").toString(), ClosedLoopFaultBody.class);
-
- ArrayList<Object> trapSignatureDatas = new ArrayList<>();
- if(trapDatas.getTrap1() != null){
- trapSignatureDatas.add(trapDatas);
- }
- ArrayList<Object> faultSignatureDatas = new ArrayList<>();
- if(faultDatas.getTrap1() != null){
- faultSignatureDatas.add(faultDatas);
- }
-
- StringBuilder resultBody = new StringBuilder();
- if(!policyJsonData.getConnecttriggerSignatures().isEmpty()){
- resultBody.append("(");
- for(int i = policyJsonData.getConnecttriggerSignatures().size()-1; i>=0 ; i--){
- String connectBody = connectTriggerSignature(i, policyJsonData.getConnecttriggerSignatures(), trapSignatureDatas.get(0));
- resultBody.append(connectBody);
- }
- resultBody.append(resultBody + ")");
- }else{
- if(!trapSignatureDatas.isEmpty()){
- resultBody.append(callTrap("nill", trapSignatureDatas.get(0)));
- }
- }
- ClosedLoopSignatures triggerSignatures = new ClosedLoopSignatures();
- triggerSignatures.setSignatures(resultBody.toString());
- if(policyData.getClearTimeOut() != null){
- triggerSignatures.setTimeWindow(Integer.parseInt(policyData.getClearTimeOut()));
- triggerSignatures.setTrapMaxAge(Integer.parseInt(policyData.getTrapMaxAge()));
- ClosedLoopFaultTriggerUISignatures uiTriggerSignatures = new ClosedLoopFaultTriggerUISignatures();
- if(!trapSignatureDatas.isEmpty()){
- uiTriggerSignatures.setSignatures(getUITriggerSignature("Trap", trapSignatureDatas.get(0)));
- if(!policyJsonData.getConnecttriggerSignatures().isEmpty()){
- uiTriggerSignatures.setConnectSignatures(getUIConnectTraps(policyJsonData.getConnecttriggerSignatures()));
- }
- }
- jsonBody.setTriggerSignaturesUsedForUI(uiTriggerSignatures);
- jsonBody.setTriggerTimeWindowUsedForUI(Integer.parseInt(policyData.getClearTimeOut()));
- jsonBody.setTrapMaxAge(Integer.parseInt(policyData.getTrapMaxAge()));
- }
-
- jsonBody.setTriggerSignatures(triggerSignatures);
- StringBuilder faultBody = new StringBuilder();
- if(!policyJsonData.getConnectVerificationSignatures().isEmpty()){
- faultBody.append("(");
- for(int i = policyJsonData.getConnectVerificationSignatures().size()-1; i>=0 ; i--){
- String connectBody = connectTriggerSignature(i, policyJsonData.getConnectVerificationSignatures(), faultSignatureDatas.get(0));
- faultBody.append(connectBody);
- }
- faultBody.append(")");
- }else{
- if(!faultSignatureDatas.isEmpty()){
- faultBody.append(callTrap("nill", faultSignatureDatas.get(0)));
- }
- }
- ClosedLoopSignatures faultSignatures = new ClosedLoopSignatures();
- faultSignatures.setSignatures(faultBody.toString());
- if(policyData.getVerificationclearTimeOut() != null){
- faultSignatures.setTimeWindow(Integer.parseInt(policyData.getVerificationclearTimeOut()));
- ClosedLoopFaultTriggerUISignatures uifaultSignatures = new ClosedLoopFaultTriggerUISignatures();
- if(!faultSignatureDatas.isEmpty()){
- uifaultSignatures.setSignatures(getUITriggerSignature("Fault", faultSignatureDatas.get(0)));
- if(!policyJsonData.getConnectVerificationSignatures().isEmpty()){
- uifaultSignatures.setConnectSignatures(getUIConnectTraps(policyJsonData.getConnectVerificationSignatures()));
- }
- }
-
- jsonBody.setVerificationSignaturesUsedForUI(uifaultSignatures);
- jsonBody.setVerificationTimeWindowUsedForUI(Integer.parseInt(policyData.getVerificationclearTimeOut()));
- }
- jsonBody.setVerificationSignatures(faultSignatures);
- ObjectWriter om = new ObjectMapper().writer();
- String json = om.writeValueAsString(jsonBody);
- policyData.setJsonBody(json);
-
- }catch(Exception e){
- policyLogger.error("Exception Occured while setting data to Adapter" , e);
- }
- return policyData;
- }
-
-
- @SuppressWarnings("unchecked")
- private String connectTriggerSignature(int index, List<Object> triggerSignatures, Object object) {
- StringBuilder resultBody = new StringBuilder();
- Map<String, String> connectTraps = (Map<String, String>) triggerSignatures.get(index);
- try{
- String notBox = "";
- if(connectTraps.keySet().contains("notBox")){
- notBox = connectTraps.get("notBox");
- }
- resultBody.append("(" + notBox);
- }catch(NullPointerException e){
- policyLogger.info("General error" , e);
- resultBody.append("(");
- }
- String connectTrap1 = connectTraps.get("connectTrap1");
- if(connectTrap1.startsWith("Trap") || connectTrap1.startsWith("Fault")){
- String trapBody = callTrap(connectTrap1, object);
- if(trapBody!=null){
- resultBody.append(trapBody);
- }
- }else if(connectTrap1.startsWith("C")){
- for(int i=0; i<= triggerSignatures.size(); i++){
- Map<String,String> triggerSignature = (Map<String, String>) triggerSignatures.get(i);
- if(triggerSignature.get("id").equals(connectTrap1)){
- resultBody.append("(");
- String connectBody = connectTriggerSignature(i, triggerSignatures, object);
- resultBody.append(connectBody + ")");
- }else{
- i++;
- }
- }
- }
- try{
- String trapCount1 = connectTraps.get("trapCount1");
- resultBody.append(", Time = " + trapCount1 + ")");
- }catch(NullPointerException e){
- policyLogger.info("General error" , e);
- }
- try{
- String operatorBox = connectTraps.get("operatorBox");
- resultBody.append(operatorBox +"(");
- }catch (NullPointerException e){
- policyLogger.info("General error" , e);
- }
- try{
- String connectTrap2 = connectTraps.get("connectTrap2");
- if(connectTrap2.startsWith("Trap") || connectTrap2.startsWith("Fault")){
- String trapBody = callTrap(connectTrap2, object);
- if(trapBody!=null){
- resultBody.append(trapBody);
- }
- }else if(connectTrap2.startsWith("C")){
- for(int i=0; i<= triggerSignatures.size(); i++){
- Map<String,String> triggerSignature = (Map<String, String>) triggerSignatures.get(i);
- if(triggerSignature.get("id").equals(connectTrap2)){
- resultBody.append("(");
- String connectBody = connectTriggerSignature(i, triggerSignatures, object);
- resultBody.append(connectBody + ")");
- }else{
- i++;
- }
- }
- }
- }catch(NullPointerException e){
- policyLogger.info("General error" , e);
- }
- try{
- String trapCount2 = connectTraps.get("trapCount2");
- resultBody.append(", Time = " + trapCount2 + ")");
- }catch(NullPointerException e){
- policyLogger.info("General error" , e);
- }
- return resultBody.toString();
- }
-
-
- private String callTrap(String trap, Object object) {
- String signatureBody = "";
- ClosedLoopFaultTrapDatas trapDatas = (ClosedLoopFaultTrapDatas) object;
- List<Object> attributeList = new ArrayList<>();
- // Read the Trap
- if(! "nill".equals(trap)){
- try{
- if(trap.startsWith("Trap")){
- if("Trap1".equals(trap)){
- attributeList = trapDatas.getTrap1();
- }else if("Trap2".equals(trap)){
- attributeList = trapDatas.getTrap2();
- }else if("Trap3".equals(trap)){
- attributeList = trapDatas.getTrap3();
- }else if("Trap4".equals(trap)){
- attributeList = trapDatas.getTrap4();
- }else if("Trap5".equals(trap)){
- attributeList = trapDatas.getTrap5();
- }else if("Trap6".equals(trap)){
- attributeList = trapDatas.getTrap6();
- }
- }else{
- if(trap.startsWith("Fault")){
- if("Fault1".equals(trap)){
- attributeList = trapDatas.getTrap1();
- }else if("Fault2".equals(trap)){
- attributeList = trapDatas.getTrap2();
- }else if("Fault3".equals(trap)){
- attributeList = trapDatas.getTrap3();
- }else if("Fault4".equals(trap)){
- attributeList = trapDatas.getTrap4();
- }else if("Fault5".equals(trap)){
- attributeList = trapDatas.getTrap5();
- }else if("Fault6".equals(trap)){
- attributeList = trapDatas.getTrap6();
- }
- }
- }
- } catch(Exception e){
- policyLogger.warn("Error during callTrap" , e);
- return "(" + trap + ")";
- }
- }else{
- if(trapDatas.getTrap1()!=null){
- attributeList = trapDatas.getTrap1();
- }else{
- return "";
- }
- }
- signatureBody = signatureBody + "(" + readAttributes(attributeList, attributeList.size()-1) + ")";
- return signatureBody;
- }
-
- @SuppressWarnings("unchecked")
- private String readAttributes(List<Object> object, int index) {
- String attributes = "";
- Map<String, String> trapSignatures = (Map<String, String>) object.get(index);
- // Read the Elements.
- Object notBox = "";
- if(trapSignatures.keySet().contains("notBox")){
- notBox = trapSignatures.get("notBox");
- }
- if(notBox!=null){
- attributes = attributes + notBox.toString();
- }
- Object trapName1 = trapSignatures.get("trigger1");
- if(trapName1!=null){
- String attrib = trapName1.toString();
- if(attrib.startsWith("A")){
- try{
- int iy = Integer.parseInt(attrib.substring(1))-1;
- attributes = attributes + "(" + readAttributes(object, iy) + ")";
- }catch(NumberFormatException e){
- try {
- attrib = getVarbindOID(attrib);
- attributes = attributes + "("+ URLEncoder.encode(attrib, "UTF-8")+ ")";
- } catch (UnsupportedEncodingException e1) {
- policyLogger.error("Caused Exception while Encoding Varbind Dictionary Values",e1);
- }
- }
- }else{
- try {
- attrib = getVarbindOID(attrib);
- attributes = attributes + "("+ URLEncoder.encode(attrib, "UTF-8")+ ")";
- } catch (UnsupportedEncodingException e) {
- policyLogger.error("Caused Exception while Encoding Varbind Dictionary Values",e);
- }
- }
- }else{
- return "";
- }
- Object comboBox = trapSignatures.get("operatorBox");
- if(comboBox!=null){
- attributes = attributes + comboBox.toString();
- }else{
- return attributes;
- }
- Object trapName2 = trapSignatures.get("trigger2");
- if(trapName2!=null){
- String attrib = trapName2.toString();
- if(attrib.startsWith("A")){
- try{
- int iy = Integer.parseInt(attrib.substring(1))-1;
- attributes = attributes + "(" + readAttributes(object, iy) + ")";
- }catch(NumberFormatException e){
- try {
- attrib = getVarbindOID(attrib);
- attributes = attributes + "("+ URLEncoder.encode(attrib, "UTF-8") + ")";
- } catch (UnsupportedEncodingException e1) {
- policyLogger.error("Caused Exception while Encoding Varbind Dictionary Values",e1);
- }
- }
- }else{
- try {
- attrib = getVarbindOID(attrib);
- attributes = attributes + "("+ URLEncoder.encode(attrib, "UTF-8") + ")";
- } catch (UnsupportedEncodingException e) {
- policyLogger.error("Caused Exception while Encoding Varbind Dictionary Values",e);
- }
- }
- }
- return attributes;
- }
-
- private String getVarbindOID(String attrib) {
- VarbindDictionary varbindId = null;
- try{
- varbindId = (VarbindDictionary) commonclassdao.getEntityItem(VarbindDictionary.class, "varbindName", attrib);
- return varbindId.getVarbindOID();
- }catch(Exception e){
- policyLogger.error("Error during retrieving varbindName " + attrib, e);
- return attrib;
- }
- }
-
-
- //connect traps data set to JSON Body as String
- @SuppressWarnings({ "unchecked", "rawtypes" })
- private String getUIConnectTraps(List<Object> connectTrapSignatures) {
- StringBuilder resultBody = new StringBuilder();
- String connectMainBody = "";
- for(int j = 0; j < connectTrapSignatures.size(); j++){
- Map<String, String> connectTraps = (Map<String, String>)connectTrapSignatures.get(j);
- String connectBody = "";
- Object object = connectTraps;
- if(object instanceof LinkedHashMap<?, ?>){
- String notBox = "";
- String connectTrap1 = "";
- String trapCount1 = "";
- String operatorBox = "";
- String connectTrap2 = "";
- String trapCount2 = "";
- if(((LinkedHashMap) object).keySet().contains("notBox")){
- notBox = ((LinkedHashMap) object).get("notBox").toString();
- }
- if(((LinkedHashMap) object).get("connectTrap1") != null){
- connectTrap1 = ((LinkedHashMap) object).get("connectTrap1").toString();
- }
- if(((LinkedHashMap) object).get("trapCount1") != null){
- trapCount1 = ((LinkedHashMap) object).get("trapCount1").toString();
- }
- if(((LinkedHashMap) object).get("operatorBox") != null){
- operatorBox = ((LinkedHashMap) object).get("operatorBox").toString();
- }
- if(((LinkedHashMap) object).get("connectTrap2") != null){
- connectTrap2 = ((LinkedHashMap) object).get("connectTrap2").toString();
- }
- if(((LinkedHashMap) object).get("trapCount2") != null){
- trapCount2 = ((LinkedHashMap) object).get("trapCount2").toString();
- }
- connectBody = notBox + "@!" + connectTrap1 + "@!" + trapCount1 + "@!" + operatorBox + "@!" + connectTrap2 + "@!" + trapCount2 + "#!?!";
- }
- resultBody.append(connectBody);
- }
- connectMainBody = connectMainBody + resultBody;
- return connectMainBody;
- }
-
-
-
- // get Trigger signature from JSON body
- @SuppressWarnings({ "rawtypes", "unchecked" })
- private String getUITriggerSignature(String trap, Object object2) {
- StringBuilder triggerBody = new StringBuilder();
- ClosedLoopFaultTrapDatas trapDatas = (ClosedLoopFaultTrapDatas) object2;
- ArrayList<Object> attributeList = new ArrayList<>();
- // Read the Trap
- if(trap.startsWith("Trap")){
- if(trapDatas.getTrap1()!= null){
- attributeList.add(trapDatas.getTrap1());
- }
- if(trapDatas.getTrap2()!= null){
- attributeList.add(trapDatas.getTrap2());
- }
- if(trapDatas.getTrap3()!= null){
- attributeList.add(trapDatas.getTrap3());
- }
- if(trapDatas.getTrap4()!= null){
- attributeList.add(trapDatas.getTrap4());
- }
- if(trapDatas.getTrap5()!= null){
- attributeList.add(trapDatas.getTrap5());
- }
- if(trapDatas.getTrap6()!= null){
- attributeList.add(trapDatas.getTrap6());
- }
- }else{
- if(trap.startsWith("Fault")){
- if(trapDatas.getTrap1()!= null){
- attributeList.add(trapDatas.getTrap1());
- }
- if(trapDatas.getTrap2()!= null){
- attributeList.add(trapDatas.getTrap2());
- }
- if(trapDatas.getTrap3()!= null){
- attributeList.add(trapDatas.getTrap3());
- }
- if(trapDatas.getTrap4()!= null){
- attributeList.add(trapDatas.getTrap4());
- }
- if(trapDatas.getTrap5()!= null){
- attributeList.add(trapDatas.getTrap5());
- }
- if(trapDatas.getTrap6()!= null){
- attributeList.add(trapDatas.getTrap6());
- }
- }
- }
-
- for(int j = 0; j < attributeList.size(); j++){
- StringBuilder signatureBody = new StringBuilder();
- ArrayList<Object> connectTraps = (ArrayList<Object>) attributeList.get(j);
- for(int i =0 ; i < connectTraps.size(); i++){
- String connectBody = "";
- Object object = connectTraps.get(i);
- if(object instanceof LinkedHashMap<?, ?>){
- String notBox = "";
- String trigger1 = "";
- String operatorBox = "";
- String trigger2 = "";
- if(((LinkedHashMap) object).keySet().contains("notBox")){
- notBox = ((LinkedHashMap) object).get("notBox").toString();
- }
- if(((LinkedHashMap) object).get("trigger1") != null){
- trigger1 = ((LinkedHashMap) object).get("trigger1").toString();
- }
- if(((LinkedHashMap) object).get("operatorBox") != null){
- operatorBox = ((LinkedHashMap) object).get("operatorBox").toString();
- }
- if(((LinkedHashMap) object).get("trigger2") != null){
- trigger2 = ((LinkedHashMap) object).get("trigger2").toString();
- }
- connectBody = notBox + "@!" + trigger1 + "@!" + operatorBox + "@!" + trigger2 + "#!";
- }
- signatureBody.append(connectBody);
- }
- triggerBody.append(signatureBody + "?!");
- }
-
- return triggerBody.toString();
- }
-
- public void prePopulateClosedLoopFaultPolicyData(PolicyRestAdapter policyAdapter, PolicyEntity entity) {
- 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("Fault_") +6);
- policyAdapter.setPolicyName(policyNameValue);
- String description = "";
- try{
- description = policy.getDescription().substring(0, policy.getDescription().indexOf("@CreatedBy:"));
- }catch(Exception e){
- policyLogger.error("Error during collecting the description tag info for createClosedLoopFault " + policyNameValue , e);
- description = policy.getDescription();
- }
- policyAdapter.setPolicyDescription(description);
- // Get the target data under policy.
- TargetType target = policy.getTarget();
- if (target != null) {
- // Under target we have AnyOFType
- List<AnyOfType> anyOfList = target.getAnyOf();
- if (anyOfList != null) {
- Iterator<AnyOfType> iterAnyOf = anyOfList.iterator();
- while (iterAnyOf.hasNext()) {
- AnyOfType anyOf = iterAnyOf.next();
- // Under AnyOFType we have AllOFType
- List<AllOfType> allOfList = anyOf.getAllOf();
- if (allOfList != null) {
- Iterator<AllOfType> iterAllOf = allOfList.iterator();
- while (iterAllOf.hasNext()) {
- AllOfType allOf = iterAllOf.next();
- // Under AllOFType we have Match
- List<MatchType> matchList = allOf.getMatch();
- if (matchList != null) {
- Iterator<MatchType> iterMatch = matchList.iterator();
- while (iterMatch.hasNext()) {
- MatchType match = iterMatch.next();
- //
- // Under the match we have attribute value and
- // attributeDesignator. So,finally down to the actual attribute.
- //
- AttributeValueType attributeValue = match.getAttributeValue();
- String value = (String) attributeValue.getContent().get(0);
- AttributeDesignatorType designator = match.getAttributeDesignator();
- String attributeId = designator.getAttributeId();
-
- // First match in the target is OnapName, so set that value.
- if ("ONAPName".equals(attributeId)) {
- policyAdapter.setOnapName(value);
- OnapName onapName = new OnapName();
- onapName.setOnapName(value);
- policyAdapter.setOnapNameField(onapName);
- }
- if ("RiskType".equals(attributeId)){
- policyAdapter.setRiskType(value);
- }
- if ("RiskLevel".equals(attributeId)){
- policyAdapter.setRiskLevel(value);
- }
- if ("guard".equals(attributeId)){
- policyAdapter.setGuard(value);
- }
- if ("TTLDate".equals(attributeId) && !value.contains("NA")){
- PolicyController controller = new PolicyController();
- String newDate = controller.convertDate(value);
- policyAdapter.setTtlDate(newDate);
- }
- }
- }
- }
- }
- }
- }
- }
- readClosedLoopJSONFile(policyAdapter, entity);
- }
-
- }
-
- private String readClosedLoopJSONFile(PolicyRestAdapter policyAdapter, PolicyEntity entity) {
- ObjectMapper mapper = new ObjectMapper();
- try {
- ClosedLoopFaultBody closedLoopBody = mapper.readValue(entity.getConfigurationData().getConfigBody(), ClosedLoopFaultBody.class);
- if("ACTIVE".equalsIgnoreCase(closedLoopBody.getClosedLoopPolicyStatus())){
- closedLoopBody.setClosedLoopPolicyStatus("Active");
- }else{
- closedLoopBody.setClosedLoopPolicyStatus("InActive");
- }
- policyAdapter.setJsonBodyData(closedLoopBody);
- if(closedLoopBody.getTrapMaxAge() != null){
- policyAdapter.setTrapMaxAge(closedLoopBody.getTrapMaxAge().toString());
- }
- if(closedLoopBody.getTriggerTimeWindowUsedForUI() != null){
- policyAdapter.setClearTimeOut(closedLoopBody.getTriggerTimeWindowUsedForUI().toString());
- }
- if(closedLoopBody.getVerificationTimeWindowUsedForUI() != null){
- policyAdapter.setVerificationclearTimeOut(closedLoopBody.getVerificationTimeWindowUsedForUI().toString());
- }
-
- } catch (Exception e) {
- policyLogger.error("Exception Occured"+e);
- }
-
- return null;
- }
-
+public class CreateClosedLoopFaultController extends RestrictedBaseController {
+
+ private static final Logger policyLogger = FlexLogger.getLogger(CreateClosedLoopFaultController.class);
+ private static final String FAULT = "Fault";
+ private static final String TRAP = "Trap";
+ private static final String NOT_BOX = "notBox";
+ private static final String OPERATOR_BOX = "operatorBox";
+ private static final String CONNECT_TRAP_1 = "connectTrap1";
+ private static final String TRAP_COUNT_1 = "trapCount1";
+ private static final String CONNECT_TRAP_2 = "connectTrap2";
+ private static final String TRAP_COUNT_2 = "trapCount2";
+ private static final String TRIGGER_1 = "trigger1";
+ private static final String ENC_UTF_8 = "UTF-8";
+ private static final String TRIGGER_2 = "trigger2";
+
+ protected PolicyRestAdapter policyAdapter = null;
+
+ private static CommonClassDao commonclassdao;
+
+ @Autowired
+ private CreateClosedLoopFaultController(CommonClassDao commonclassdao) {
+ CreateClosedLoopFaultController.commonclassdao = commonclassdao;
+ }
+
+ public CreateClosedLoopFaultController() {
+ // Empty constructor
+ }
+
+ public PolicyRestAdapter setDataToPolicyRestAdapter(PolicyRestAdapter policyData, JsonNode root) {
+ try {
+ ObjectMapper mapper = new ObjectMapper();
+ mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+ ClosedLoopFaultTrapDatas trapDatas = mapper
+ .readValue(root.get("trapData").toString(), ClosedLoopFaultTrapDatas.class);
+ ClosedLoopFaultTrapDatas faultDatas = mapper
+ .readValue(root.get("faultData").toString(), ClosedLoopFaultTrapDatas.class);
+ ClosedLoopGridJSONData policyJsonData = mapper
+ .readValue(root.get("policyData").get("policy").toString(), ClosedLoopGridJSONData.class);
+ ClosedLoopFaultBody jsonBody = mapper
+ .readValue(root.get("policyData").get("policy").get("jsonBodyData").toString(),
+ ClosedLoopFaultBody.class);
+
+ // Build trapSignatureDatas list from faultData
+ List<Object> trapSignatureDatas = new ArrayList<>();
+ if (trapDatas.getTrap1() != null) {
+ trapSignatureDatas.add(trapDatas);
+ }
+ // Extract resultBody and set jsonBody with trap ClosedLoopSignatures
+ String resultBody = getResultBody(policyJsonData, trapSignatureDatas);
+ ClosedLoopSignatures triggerSignatures = new ClosedLoopSignatures();
+ triggerSignatures.setSignatures(resultBody);
+ if (policyData.getClearTimeOut() != null) {
+ triggerSignatures.setTimeWindow(Integer.parseInt(policyData.getClearTimeOut()));
+ triggerSignatures.setTrapMaxAge(Integer.parseInt(policyData.getTrapMaxAge()));
+ ClosedLoopFaultTriggerUISignatures uiTriggerSignatures = new ClosedLoopFaultTriggerUISignatures();
+ if (!trapSignatureDatas.isEmpty()) {
+ uiTriggerSignatures.setSignatures(getUITriggerSignature(TRAP, trapSignatureDatas.get(0)));
+ if (!policyJsonData.getConnecttriggerSignatures().isEmpty()) {
+ uiTriggerSignatures
+ .setConnectSignatures(getUIConnectTraps(policyJsonData.getConnecttriggerSignatures()));
+ }
+ }
+ jsonBody.setTriggerSignaturesUsedForUI(uiTriggerSignatures);
+ jsonBody.setTriggerTimeWindowUsedForUI(Integer.parseInt(policyData.getClearTimeOut()));
+ jsonBody.setTrapMaxAge(Integer.parseInt(policyData.getTrapMaxAge()));
+ }
+
+ jsonBody.setTriggerSignatures(triggerSignatures);
+
+ // Build faultSignatureData list from faultData
+ List<Object> faultSignatureDatas = new ArrayList<>();
+ if (faultDatas.getTrap1() != null) {
+ faultSignatureDatas.add(faultDatas);
+ }
+ // Extract faultBody and set jsonBody with fault ClosedLoopSignatures
+ String faultBody = getFaultBody(policyJsonData, faultSignatureDatas);
+ ClosedLoopSignatures faultSignatures = new ClosedLoopSignatures();
+ faultSignatures.setSignatures(faultBody);
+ if (policyData.getVerificationclearTimeOut() != null) {
+ faultSignatures.setTimeWindow(Integer.parseInt(policyData.getVerificationclearTimeOut()));
+ ClosedLoopFaultTriggerUISignatures uifaultSignatures = new ClosedLoopFaultTriggerUISignatures();
+ if (!faultSignatureDatas.isEmpty()) {
+ uifaultSignatures.setSignatures(getUITriggerSignature(FAULT, faultSignatureDatas.get(0)));
+ if (!policyJsonData.getConnectVerificationSignatures().isEmpty()) {
+ uifaultSignatures
+ .setConnectSignatures(getUIConnectTraps(policyJsonData.getConnectVerificationSignatures()));
+ }
+ }
+ jsonBody.setVerificationSignaturesUsedForUI(uifaultSignatures);
+ jsonBody.setVerificationTimeWindowUsedForUI(Integer.parseInt(policyData.getVerificationclearTimeOut()));
+ }
+ jsonBody.setVerificationSignatures(faultSignatures);
+ ObjectWriter om = new ObjectMapper().writer();
+ String json = om.writeValueAsString(jsonBody);
+ policyData.setJsonBody(json);
+
+ } catch (Exception e) {
+ policyLogger.error("Exception Occured while setting data to Adapter", e);
+ }
+ return policyData;
+ }
+
+ // TODO: Can getResultBody() and getFaultBody() be merged?
+ private String getResultBody(final ClosedLoopGridJSONData policyJsonData, final List<Object> trapSignatureDatas) {
+ StringBuilder resultBody = new StringBuilder();
+ if (!policyJsonData.getConnecttriggerSignatures().isEmpty()) {
+ resultBody.append("(");
+ IntStream.range(0, policyJsonData.getConnecttriggerSignatures().size())
+ .mapToObj(i -> connectTriggerSignature(i, policyJsonData.getConnecttriggerSignatures(),
+ trapSignatureDatas.get(0))).forEach(resultBody::append);
+ resultBody.append(resultBody).append(")");
+ } else {
+ if (!trapSignatureDatas.isEmpty()) {
+ resultBody.append(callTrap("nill", trapSignatureDatas.get(0)));
+ }
+ }
+ return resultBody.toString();
+ }
+
+ private String getFaultBody(final ClosedLoopGridJSONData policyJsonData, final List<Object> faultSignatureDatas) {
+ StringBuilder faultBody = new StringBuilder();
+ if (!policyJsonData.getConnectVerificationSignatures().isEmpty()) {
+ faultBody.append("(");
+ IntStream.range(0, policyJsonData.getConnectVerificationSignatures().size())
+ .mapToObj(i -> connectTriggerSignature(i, policyJsonData.getConnectVerificationSignatures(),
+ faultSignatureDatas.get(0))).forEach(faultBody::append);
+ faultBody.append(")");
+ } else {
+ if (!faultSignatureDatas.isEmpty()) {
+ faultBody.append(callTrap("nill", faultSignatureDatas.get(0)));
+ }
+ }
+ return faultBody.toString();
+ }
+
+ @SuppressWarnings("unchecked")
+ private String connectTriggerSignature(int index, List<Object> triggerSignatures, Object object) {
+ StringBuilder resultBody = new StringBuilder();
+ Map<String, String> connectTraps = (Map<String, String>) triggerSignatures.get(index);
+ try {
+ String notBox = "";
+ if (connectTraps.keySet().contains(NOT_BOX)) {
+ notBox = connectTraps.get(NOT_BOX);
+ }
+ resultBody.append("(").append(notBox);
+ } catch (NullPointerException e) {
+ policyLogger.info("General error", e);
+ resultBody.append("(");
+ }
+
+ try {
+ // Append connectTrap1 body to resultBody
+ appendTrapToResultBody(triggerSignatures, object, resultBody, connectTraps, CONNECT_TRAP_1);
+
+ // Update trap1 count to resultBody
+ String trapCount1 = connectTraps.get(TRAP_COUNT_1);
+ resultBody.append(", Time = ").append(trapCount1).append(")");
+
+ // Append connectTrap2 body to resultBody
+ appendTrapToResultBody(triggerSignatures, object, resultBody, connectTraps, CONNECT_TRAP_2);
+
+ // Update operatorBox to resultBody
+ String operatorBox = connectTraps.get(OPERATOR_BOX);
+ resultBody.append(operatorBox).append("(");
+
+ // Update trap2 count to resultBody
+ String trapCount2 = connectTraps.get(TRAP_COUNT_2);
+ resultBody.append(", Time = ").append(trapCount2).append(")");
+ } catch (NullPointerException e) {
+ policyLogger.info("General error", e);
+ }
+ return resultBody.toString();
+ }
+
+ private void appendTrapToResultBody(List<Object> triggerSignatures, Object object, StringBuilder resultBody,
+ Map<String, String> connectTraps, String connectTrapName) {
+ String connectTrap = connectTraps.get(connectTrapName);
+ if (connectTrap.startsWith(TRAP) || connectTrap.startsWith(FAULT)) {
+ String trapBody = callTrap(connectTrap, object);
+ resultBody.append(trapBody);
+ } else if (connectTrap.startsWith("C")) {
+ for (int i = 0; i <= triggerSignatures.size(); i++) {
+ Map<String, String> triggerSignature = (Map<String, String>) triggerSignatures.get(i);
+ if (triggerSignature.get("id").equals(connectTrap)) {
+ resultBody.append("(");
+ String connectBody = connectTriggerSignature(i, triggerSignatures, object);
+ resultBody.append(connectBody).append(")");
+ } else { // FIXME: Is this a bug and can it be removed?
+ i++;
+ }
+ }
+ }
+ }
+
+ private String callTrap(String trap, Object object) {
+ String signatureBody = "";
+ ClosedLoopFaultTrapDatas trapDatas = (ClosedLoopFaultTrapDatas) object;
+ List<Object> attributeList = new ArrayList<>();
+ // Read the Trap
+ if (!"nill".equals(trap)) {
+ List<String> trapTypes = new ArrayList<>();
+ if (trap.startsWith(TRAP)) {
+ trapTypes = Arrays.asList("Trap1", "Trap2", "Trap3", "Trap4", "Trap5", "Trap6");
+ } else if (trap.startsWith(FAULT)) {
+ trapTypes = Arrays.asList("Fault1", "Fault2", "Fault3", "Fault4", "Fault5", "Fault6");
+ }
+ try {
+ if (trapTypes.get(0).equals(trap)) {
+ attributeList = trapDatas.getTrap1();
+ } else if (trapTypes.get(1).equals(trap)) {
+ attributeList = trapDatas.getTrap2();
+ } else if (trapTypes.get(2).equals(trap)) {
+ attributeList = trapDatas.getTrap3();
+ } else if (trapTypes.get(3).equals(trap)) {
+ attributeList = trapDatas.getTrap4();
+ } else if (trapTypes.get(4).equals(trap)) {
+ attributeList = trapDatas.getTrap5();
+ } else if (trapTypes.get(5).equals(trap)) {
+ attributeList = trapDatas.getTrap6();
+ }
+ } catch (Exception e) {
+ policyLogger.warn("Error during callTrap", e);
+ return "(" + trap + ")";
+ }
+ } else {
+ if (trapDatas.getTrap1() == null) {
+ return "";
+ }
+ attributeList = trapDatas.getTrap1();
+ }
+ signatureBody = signatureBody + "(" + readAttributes(attributeList, attributeList.size() - 1) + ")";
+ return signatureBody;
+ }
+
+ @SuppressWarnings("unchecked")
+ private String readAttributes(List<Object> object, int index) {
+ String attributes = "";
+ Map<String, String> trapSignatures = (Map<String, String>) object.get(index);
+ // Read the Elements.
+ Object notBox = "";
+ if (trapSignatures.keySet().contains(NOT_BOX)) {
+ notBox = trapSignatures.get(NOT_BOX);
+ }
+ if (notBox != null) {
+ attributes = attributes + notBox.toString();
+ }
+
+ // Get Attributes for trap1 name
+ Object trapName1 = trapSignatures.get(TRIGGER_1);
+ if (trapName1 == null) {
+ return "";
+ }
+ attributes = getTrapAttributesString(object, attributes, trapName1);
+
+ Object comboBox = trapSignatures.get(OPERATOR_BOX);
+ if (comboBox != null) {
+ attributes = attributes + comboBox.toString();
+ } else {
+ return attributes;
+ }
+
+ // Get Attributes for trap1 name
+ Object trapName2 = trapSignatures.get(TRIGGER_2);
+ if (trapName2 != null) {
+ attributes = getTrapAttributesString(object, attributes, trapName2);
+ }
+ return attributes;
+ }
+
+ private String getTrapAttributesString(List<Object> objectList, String attributesStr, Object trapName) {
+ String trap1Attrib = trapName.toString();
+ if (trap1Attrib.startsWith("A")) {
+ try {
+ int iy = Integer.parseInt(trap1Attrib.substring(1)) - 1;
+ attributesStr = attributesStr + "(" + readAttributes(objectList, iy) + ")";
+ } catch (NumberFormatException e) {
+ try {
+ trap1Attrib = getVarbindOID(trap1Attrib);
+ attributesStr = attributesStr + "(" + URLEncoder.encode(trap1Attrib, ENC_UTF_8) + ")";
+ } catch (UnsupportedEncodingException e1) {
+ policyLogger.error("Caused Exception while Encoding Varbind Dictionary Values", e1);
+ }
+ }
+ } else {
+ try {
+ trap1Attrib = getVarbindOID(trap1Attrib);
+ attributesStr = attributesStr + "(" + URLEncoder.encode(trap1Attrib, ENC_UTF_8) + ")";
+ } catch (UnsupportedEncodingException e) {
+ policyLogger.error("Caused Exception while Encoding Varbind Dictionary Values", e);
+ }
+ }
+ return attributesStr;
+ }
+
+ private String getVarbindOID(String attrib) {
+ VarbindDictionary varbindId;
+ try {
+ varbindId = (VarbindDictionary) commonclassdao
+ .getEntityItem(VarbindDictionary.class, "varbindName", attrib);
+ return varbindId.getVarbindOID();
+ } catch (Exception e) {
+ policyLogger.error("Error during retrieving varbindName " + attrib, e);
+ return attrib;
+ }
+ }
+
+ //connect traps data set to JSON Body as String
+ @SuppressWarnings({"unchecked", "rawtypes"})
+ private String getUIConnectTraps(List<Object> connectTrapSignatures) {
+ StringBuilder resultBody = new StringBuilder();
+ String connectMainBody = "";
+ for (Object connectTrapSignature : connectTrapSignatures) {
+ Map<String, String> connectTraps = (Map<String, String>) connectTrapSignature;
+ String connectBody = "";
+ if (connectTraps instanceof LinkedHashMap<?, ?>) {
+ String notBox = "";
+ String connectTrap1 = "";
+ String trapCount1 = "";
+ String operatorBox = "";
+ String connectTrap2 = "";
+ String trapCount2 = "";
+ if (((LinkedHashMap) connectTraps).keySet().contains(NOT_BOX)) {
+ notBox = ((LinkedHashMap) connectTraps).get(NOT_BOX).toString();
+ }
+ if (((LinkedHashMap) connectTraps).get(CONNECT_TRAP_1) != null) {
+ connectTrap1 = ((LinkedHashMap) connectTraps).get(CONNECT_TRAP_1).toString();
+ }
+ if (((LinkedHashMap) connectTraps).get(TRAP_COUNT_1) != null) {
+ trapCount1 = ((LinkedHashMap) connectTraps).get(TRAP_COUNT_1).toString();
+ }
+ if (((LinkedHashMap) connectTraps).get(OPERATOR_BOX) != null) {
+ operatorBox = ((LinkedHashMap) connectTraps).get(OPERATOR_BOX).toString();
+ }
+ if (((LinkedHashMap) connectTraps).get(CONNECT_TRAP_2) != null) {
+ connectTrap2 = ((LinkedHashMap) connectTraps).get(CONNECT_TRAP_2).toString();
+ }
+ if (((LinkedHashMap) connectTraps).get(TRAP_COUNT_2) != null) {
+ trapCount2 = ((LinkedHashMap) connectTraps).get(TRAP_COUNT_2).toString();
+ }
+ connectBody =
+ notBox + "@!" + connectTrap1 + "@!" + trapCount1 + "@!" + operatorBox + "@!" + connectTrap2 + "@!"
+ + trapCount2 + "#!?!";
+ }
+ resultBody.append(connectBody);
+ }
+ connectMainBody = connectMainBody + resultBody;
+ return connectMainBody;
+ }
+
+ // get Trigger signature from JSON body
+ private String getUITriggerSignature(String trap, Object object2) {
+ ClosedLoopFaultTrapDatas trapDatas = (ClosedLoopFaultTrapDatas) object2;
+ List<Object> attributeList = new ArrayList<>();
+ // Read the Trap
+ if (trap.startsWith(TRAP) || trap.startsWith(FAULT)) {
+ if (trapDatas.getTrap1() != null) {
+ attributeList.add(trapDatas.getTrap1());
+ }
+ if (trapDatas.getTrap2() != null) {
+ attributeList.add(trapDatas.getTrap2());
+ }
+ if (trapDatas.getTrap3() != null) {
+ attributeList.add(trapDatas.getTrap3());
+ }
+ if (trapDatas.getTrap4() != null) {
+ attributeList.add(trapDatas.getTrap4());
+ }
+ if (trapDatas.getTrap5() != null) {
+ attributeList.add(trapDatas.getTrap5());
+ }
+ if (trapDatas.getTrap6() != null) {
+ attributeList.add(trapDatas.getTrap6());
+ }
+ }
+ return getTriggerBody(attributeList);
+ }
+
+ @SuppressWarnings({"rawtypes", "unchecked"})
+ private String getTriggerBody(final List<Object> attributeList) {
+ StringBuilder triggerBody = new StringBuilder();
+ for (Object o : attributeList) {
+ StringBuilder signatureBody = new StringBuilder();
+ List<Object> connectTraps = (ArrayList<Object>) o;
+ for (Object connectTrap : connectTraps) {
+ String connectBody = "";
+ if (connectTrap instanceof LinkedHashMap<?, ?>) {
+ String notBox = "";
+ String trigger1 = "";
+ String operatorBox = "";
+ String trigger2 = "";
+ if (((LinkedHashMap) connectTrap).keySet().contains(NOT_BOX)) {
+ notBox = ((LinkedHashMap) connectTrap).get(NOT_BOX).toString();
+ }
+ if (((LinkedHashMap) connectTrap).get(TRIGGER_1) != null) {
+ trigger1 = ((LinkedHashMap) connectTrap).get(TRIGGER_1).toString();
+ }
+ if (((LinkedHashMap) connectTrap).get(OPERATOR_BOX) != null) {
+ operatorBox = ((LinkedHashMap) connectTrap).get(OPERATOR_BOX).toString();
+ }
+ if (((LinkedHashMap) connectTrap).get(TRIGGER_2) != null) {
+ trigger2 = ((LinkedHashMap) connectTrap).get(TRIGGER_2).toString();
+ }
+ connectBody = notBox + "@!" + trigger1 + "@!" + operatorBox + "@!" + trigger2 + "#!";
+ }
+ signatureBody.append(connectBody);
+ }
+ triggerBody.append(signatureBody).append("?!");
+ }
+ return triggerBody.toString();
+ }
+
+ public void prePopulateClosedLoopFaultPolicyData(PolicyRestAdapter policyAdapter, PolicyEntity entity) {
+ if (policyAdapter.getPolicyData() instanceof PolicyType) {
+ PolicyType policy = (PolicyType) policyAdapter.getPolicyData();
+
+ // Set PolicyAdapter policyName, description
+ setPolicyAdapterPolicyNameAndDescription(policyAdapter, policy);
+
+ // Set PolicyAdapter JsonBodyData, timeout settings
+ setClosedLoopJSONFile(policyAdapter, entity);
+
+ // Get the target data under policy.
+ TargetType target = policy.getTarget();
+ if (target == null) {
+ return;
+ }
+
+ // Under target we have AnyOFType
+ List<AnyOfType> anyOfList = target.getAnyOf();
+ if (anyOfList == null) {
+ return;
+ }
+
+ // Set PolicyAdapter OnapNameField, riskType, riskLevel, guard, ttlDate from match attributes
+ setPolicyAdapterMatchAttributes(policyAdapter, anyOfList);
+ }
+ }
+
+ private void setPolicyAdapterMatchAttributes(PolicyRestAdapter policyAdapter, List<AnyOfType> anyOfList) {
+ anyOfList.stream()
+ //Extract nonNull list of AllOfType objs from each AnyOfType obj
+ .map(AnyOfType::getAllOf).filter(Objects::nonNull)
+ .forEach(allOfList ->
+ //Extract nonNull list of MatchType objs from each AllOFType obj
+ allOfList.stream().map(AllOfType::getMatch).filter(Objects::nonNull)
+ .flatMap(Collection::stream)
+ .forEach(match -> {
+ // Under the match we have attribute value and
+ // attributeDesignator. So,finally down to the actual attribute.
+ AttributeValueType attributeValue = match.getAttributeValue();
+ String value = (String) attributeValue.getContent().get(0);
+ AttributeDesignatorType designator = match.getAttributeDesignator();
+ String attributeId = designator.getAttributeId();
+ // First match in the target is OnapName, so set that value.
+ if ("ONAPName".equals(attributeId)) {
+ policyAdapter.setOnapName(value);
+ OnapName onapName = new OnapName();
+ onapName.setOnapName(value);
+ policyAdapter.setOnapNameField(onapName);
+ } else if ("RiskType".equals(attributeId)) {
+ policyAdapter.setRiskType(value);
+ } else if ("RiskLevel".equals(attributeId)) {
+ policyAdapter.setRiskLevel(value);
+ } else if ("guard".equals(attributeId)) {
+ policyAdapter.setGuard(value);
+ } else if ("TTLDate".equals(attributeId) && !value.contains("NA")) {
+ PolicyController controller = new PolicyController();
+ String newDate = controller.convertDate(value);
+ policyAdapter.setTtlDate(newDate);
+ }
+ }));
+ }
+
+ private void setPolicyAdapterPolicyNameAndDescription(PolicyRestAdapter policyAdapter, PolicyType policy) {
+ policyAdapter.setOldPolicyFileName(policyAdapter.getPolicyName());
+ String policyNameValue = policyAdapter.getPolicyName()
+ .substring(policyAdapter.getPolicyName().indexOf("Fault_") + 6);
+ policyAdapter.setPolicyName(policyNameValue);
+ String description;
+ try {
+ description = policy.getDescription().substring(0, policy.getDescription().indexOf("@CreatedBy:"));
+ } catch (Exception e) {
+ policyLogger.error(
+ "Error during collecting the description tag info for createClosedLoopFault " + policyNameValue, e);
+ description = policy.getDescription();
+ }
+ policyAdapter.setPolicyDescription(description);
+ }
+
+ private void setClosedLoopJSONFile(PolicyRestAdapter policyAdapter, PolicyEntity entity) {
+ ObjectMapper mapper = new ObjectMapper();
+ try {
+ ClosedLoopFaultBody closedLoopBody = mapper
+ .readValue(entity.getConfigurationData().getConfigBody(), ClosedLoopFaultBody.class);
+ if ("ACTIVE".equalsIgnoreCase(closedLoopBody.getClosedLoopPolicyStatus())) {
+ closedLoopBody.setClosedLoopPolicyStatus("Active");
+ } else {
+ closedLoopBody.setClosedLoopPolicyStatus("InActive");
+ }
+ policyAdapter.setJsonBodyData(closedLoopBody);
+ if (closedLoopBody.getTrapMaxAge() != null) {
+ policyAdapter.setTrapMaxAge(closedLoopBody.getTrapMaxAge().toString());
+ }
+ if (closedLoopBody.getTriggerTimeWindowUsedForUI() != null) {
+ policyAdapter.setClearTimeOut(closedLoopBody.getTriggerTimeWindowUsedForUI().toString());
+ }
+ if (closedLoopBody.getVerificationTimeWindowUsedForUI() != null) {
+ policyAdapter
+ .setVerificationclearTimeOut(closedLoopBody.getVerificationTimeWindowUsedForUI().toString());
+ }
+ } catch (Exception e) {
+ policyLogger.error("Exception Occured" + e);
+ }
+ }
}
-class ClosedLoopGridJSONData{
-
- private String clearTimeOut;
- private String trapMaxAge;
- private String verificationclearTimeOut;
- private List<Object> connecttriggerSignatures;
- private List<Object> connectVerificationSignatures;
-
- public String getClearTimeOut() {
- return clearTimeOut;
- }
- public void setClearTimeOut(String clearTimeOut) {
- this.clearTimeOut = clearTimeOut;
- }
- public String getTrapMaxAge() {
- return trapMaxAge;
- }
- public void setTrapMaxAge(String trapMaxAge) {
- this.trapMaxAge = trapMaxAge;
- }
- public String getVerificationclearTimeOut() {
- return verificationclearTimeOut;
- }
- public void setVerificationclearTimeOut(String verificationclearTimeOut) {
- this.verificationclearTimeOut = verificationclearTimeOut;
- }
-
-
- public List<Object> getConnecttriggerSignatures() {
- return connecttriggerSignatures;
- }
- public void setConnecttriggerSignatures(List<Object> connecttriggerSignatures) {
- this.connecttriggerSignatures = connecttriggerSignatures;
- }
- public List<Object> getConnectVerificationSignatures() {
- return connectVerificationSignatures;
- }
- public void setConnectVerificationSignatures(List<Object> connectVerificationSignatures) {
- this.connectVerificationSignatures = connectVerificationSignatures;
- }
-} \ No newline at end of file
+class ClosedLoopGridJSONData {
+
+ private String clearTimeOut;
+ private String trapMaxAge;
+ private String verificationclearTimeOut;
+ private List<Object> connecttriggerSignatures;
+ private List<Object> connectVerificationSignatures;
+
+ public String getClearTimeOut() {
+ return clearTimeOut;
+ }
+
+ public void setClearTimeOut(String clearTimeOut) {
+ this.clearTimeOut = clearTimeOut;
+ }
+
+ public String getTrapMaxAge() {
+ return trapMaxAge;
+ }
+
+ public void setTrapMaxAge(String trapMaxAge) {
+ this.trapMaxAge = trapMaxAge;
+ }
+
+ public String getVerificationclearTimeOut() {
+ return verificationclearTimeOut;
+ }
+
+ public void setVerificationclearTimeOut(String verificationclearTimeOut) {
+ this.verificationclearTimeOut = verificationclearTimeOut;
+ }
+
+
+ public List<Object> getConnecttriggerSignatures() {
+ return connecttriggerSignatures;
+ }
+
+ public void setConnecttriggerSignatures(List<Object> connecttriggerSignatures) {
+ this.connecttriggerSignatures = connecttriggerSignatures;
+ }
+
+ public List<Object> getConnectVerificationSignatures() {
+ return connectVerificationSignatures;
+ }
+
+ public void setConnectVerificationSignatures(List<Object> connectVerificationSignatures) {
+ this.connectVerificationSignatures = connectVerificationSignatures;
+ }
+}
diff --git a/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateClosedLoopPMController.java b/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateClosedLoopPMController.java
index 392adf039..d2b04e024 100644
--- a/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateClosedLoopPMController.java
+++ b/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateClosedLoopPMController.java
@@ -3,13 +3,14 @@
* ONAP Policy Engine
* ================================================================================
* Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * 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.
* 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.
@@ -20,12 +21,11 @@
package org.onap.policy.controller;
-
import java.io.IOException;
-import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
+import java.util.Objects;
import javax.json.JsonArray;
import javax.json.JsonObject;
@@ -42,152 +42,145 @@ 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.AttributeDesignatorType;
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;
-public class CreateClosedLoopPMController{
-
- private static final Logger LOGGER = FlexLogger.getLogger(CreateClosedLoopPMController.class);
-
- protected PolicyRestAdapter policyAdapter = null;
-
- public void prePopulateClosedLoopPMPolicyData(PolicyRestAdapter policyAdapter, PolicyEntity entity) {
- 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("PM_") +3);
- policyAdapter.setPolicyName(policyNameValue);
- String description = "";
- try{
- description = policy.getDescription().substring(0, policy.getDescription().indexOf("@CreatedBy:"));
- }catch(Exception e){
- LOGGER.info("General error" , e);
- description = policy.getDescription();
- }
- policyAdapter.setPolicyDescription(description);
- // Get the target data under policy.
- TargetType target = policy.getTarget();
- if (target != null) {
- // Under target we have AnyOFType
- List<AnyOfType> anyOfList = target.getAnyOf();
- if (anyOfList != null) {
- Iterator<AnyOfType> iterAnyOf = anyOfList.iterator();
- while (iterAnyOf.hasNext()) {
- AnyOfType anyOf = iterAnyOf.next();
- // Under AnyOFType we have AllOFType
- List<AllOfType> allOfList = anyOf.getAllOf();
- if (allOfList != null) {
- Iterator<AllOfType> iterAllOf = allOfList.iterator();
- while (iterAllOf.hasNext()) {
- AllOfType allOf = iterAllOf.next();
- // Under AllOFType we have Match
- List<MatchType> matchList = allOf.getMatch();
- if (matchList != null) {
- Iterator<MatchType> iterMatch = matchList.iterator();
- while (matchList.size()>1 && iterMatch.hasNext()) {
- MatchType match = iterMatch.next();
- //
- // Under the match we have attribute value and
- // attributeDesignator. So,finally down to the actual attribute.
- //
- AttributeValueType attributeValue = match.getAttributeValue();
- String value = (String) attributeValue.getContent().get(0);
- AttributeDesignatorType designator = match.getAttributeDesignator();
- String attributeId = designator.getAttributeId();
-
- // First match in the target is OnapName, so set that value.
- if ("ONAPName".equals(attributeId)) {
- policyAdapter.setOnapName(value);
- }
- if ("RiskType".equals(attributeId)){
- policyAdapter.setRiskType(value);
- }
- if ("RiskLevel".equals(attributeId)){
- policyAdapter.setRiskLevel(value);
- }
- if ("guard".equals(attributeId)){
- policyAdapter.setGuard(value);
- }
- if ("TTLDate".equals(attributeId) && !value.contains("NA")){
- PolicyController controller = new PolicyController();
- String newDate = controller.convertDate(value);
- policyAdapter.setTtlDate(newDate);
- }
- if ("ServiceType".equals(attributeId)){
- LinkedHashMap<String, String> serviceTypePolicyName1 = new LinkedHashMap<>();
- String key = "serviceTypePolicyName";
- serviceTypePolicyName1.put(key, value);
- policyAdapter.setServiceTypePolicyName(serviceTypePolicyName1);
- LinkedHashMap<String, String> vertica = new LinkedHashMap<>();
- vertica.put("verticaMetrics", getVertica(value));
- policyAdapter.setVerticaMetrics(vertica);
- LinkedHashMap<String, String> desc = new LinkedHashMap<>();
- desc.put("policyDescription", getDescription(value));
- policyAdapter.setDescription(desc);
- LinkedHashMap<String, Object> attributes = new LinkedHashMap<>();
- attributes.put("attributes", getAttributes(value));
- policyAdapter.setAttributeFields(attributes);
- }
- }
- }
- }
- }
- }
- }
- }
- readClosedLoopJSONFile(policyAdapter, entity);
- }
- }
-
- protected void readClosedLoopJSONFile(PolicyRestAdapter policyAdapter, PolicyEntity entity) {
- ObjectMapper mapper = new ObjectMapper();
- try {
- ClosedLoopPMBody closedLoopBody = mapper.readValue(entity.getConfigurationData().getConfigBody(), ClosedLoopPMBody.class);
- policyAdapter.setJsonBodyData(closedLoopBody);
- } catch (IOException e) {
- LOGGER.error("Exception Occured"+e);
- }
- }
-
- //get vertica metrics data from the table
- private String getVertica(String policyName){
- String verticas = null;
- JsonArray data = PolicyManagerServlet.getPolicyNames();
- for(int i=0 ; i< data.size(); i++){
- if(policyName.equals(data.getJsonObject(i).getJsonString("serviceTypePolicyName").getString())){
- verticas = data.getJsonObject(i).getJsonString("verticaMetrics").getString();
- return verticas;
- }
- }
- return verticas;
- }
-
- //get policy description from the table
- private String getDescription(String policyName){
- String description = null;
- JsonArray data = PolicyManagerServlet.getPolicyNames();
- for(int i=0 ; i< data.size(); i++){
- if(policyName.equals(data.getJsonObject(i).getJsonString("serviceTypePolicyName").getString())){
- description = data.getJsonObject(i).getJsonString("policyDescription").getString();
- return description;
- }
- }
- return description;
- }
-
- //get Attributes
- private JsonObject getAttributes(String policyName){
- JsonObject attributes = null;
- JsonArray data = PolicyManagerServlet.getPolicyNames();
- for(int i=0 ; i< data.size(); i++){
- if(policyName.equals(data.getJsonObject(i).getJsonString("serviceTypePolicyName").getString())){
- attributes = data.getJsonObject(i).getJsonObject("attributes");
- return attributes;
- }
- }
- return attributes;
- }
+public class CreateClosedLoopPMController {
+
+ private static final Logger LOGGER = FlexLogger.getLogger(CreateClosedLoopPMController.class);
+ private static final String KEY_SERVICE_TYPE_POLICY_NAME = "serviceTypePolicyName";
+
+ protected PolicyRestAdapter policyAdapter = null;
+
+ public void prePopulateClosedLoopPMPolicyData(PolicyRestAdapter policyAdapter, PolicyEntity entity) {
+ if (policyAdapter.getPolicyData() instanceof PolicyType) {
+ Object policyData = policyAdapter.getPolicyData();
+ PolicyType policy = (PolicyType) policyData;
+
+ // Set oldPolicyFileName to PolicyAdapter
+ policyAdapter.setOldPolicyFileName(policyAdapter.getPolicyName());
+
+ // Set policyNameValue and description to PolicyAdapter
+ setPolicyAdapterNameValueAndDescription(policyAdapter, policy);
+
+ // Set PolicyAdapter JsonBodyData
+ setClosedLoopJSONFile(policyAdapter, entity);
+
+ // Get the target data under policy.
+ TargetType target = policy.getTarget();
+ if (target == null) {
+ return;
+ }
+ // Under target we have AnyOFType
+ List<AnyOfType> anyOfList = target.getAnyOf();
+ if (anyOfList == null) {
+ return;
+ }
+ // Set PolicyAdapter OnapNameField, riskType, riskLevel, guard, ttlDate, ServiceType from match attributes
+ setPolicyAdapterMatchAttributes(policyAdapter, anyOfList);
+ }
+ }
+
+ private void setPolicyAdapterNameValueAndDescription(PolicyRestAdapter policyAdapter, PolicyType policy) {
+ String policyNameValue = policyAdapter.getPolicyName()
+ .substring(policyAdapter.getPolicyName().indexOf("PM_") + 3);
+ policyAdapter.setPolicyName(policyNameValue);
+ String description;
+ try {
+ description = policy.getDescription().substring(0, policy.getDescription().indexOf("@CreatedBy:"));
+ } catch (Exception e) {
+ LOGGER.info("General error", e);
+ description = policy.getDescription();
+ }
+ policyAdapter.setPolicyDescription(description);
+ }
+
+ private void setClosedLoopJSONFile(PolicyRestAdapter policyAdapter, PolicyEntity entity) {
+ ObjectMapper mapper = new ObjectMapper();
+ try {
+ ClosedLoopPMBody closedLoopBody = mapper
+ .readValue(entity.getConfigurationData().getConfigBody(), ClosedLoopPMBody.class);
+ policyAdapter.setJsonBodyData(closedLoopBody);
+ } catch (IOException e) {
+ LOGGER.error("Exception Occured" + e);
+ }
+ }
+
+ private void setPolicyAdapterMatchAttributes(final PolicyRestAdapter policyAdapter,
+ final List<AnyOfType> anyOfList) {
+ anyOfList.stream()
+ //Extract nonNull list of AllOfType objs from each AnyOfType obj
+ .map(AnyOfType::getAllOf).filter(Objects::nonNull)
+ .forEach(allOfList ->
+ //Extract nonNull list of MatchType objs from each AllOFType obj
+ allOfList.stream().map(AllOfType::getMatch).filter(Objects::nonNull)
+ .forEach(matchList -> matchList.forEach(match -> {
+ // Under the match we have attribute value and
+ // attributeDesignator. So,finally down to the actual attribute.
+ AttributeValueType attributeValue = match.getAttributeValue();
+ String value = (String) attributeValue.getContent().get(0);
+ AttributeDesignatorType designator = match.getAttributeDesignator();
+ String attributeId = designator.getAttributeId();
+ // First match in the target is OnapName, so set that value.
+ if ("ONAPName".equals(attributeId)) {
+ policyAdapter.setOnapName(value);
+ } else if ("RiskType".equals(attributeId)) {
+ policyAdapter.setRiskType(value);
+ } else if ("RiskLevel".equals(attributeId)) {
+ policyAdapter.setRiskLevel(value);
+ } else if ("guard".equals(attributeId)) {
+ policyAdapter.setGuard(value);
+ } else if ("TTLDate".equals(attributeId) && !value.contains("NA")) {
+ PolicyController controller = new PolicyController();
+ String newDate = controller.convertDate(value);
+ policyAdapter.setTtlDate(newDate);
+ } else if ("ServiceType".equals(attributeId)) {
+ LinkedHashMap<String, String> serviceTypePolicyName1 = new LinkedHashMap<>();
+ serviceTypePolicyName1.put(KEY_SERVICE_TYPE_POLICY_NAME, value);
+ policyAdapter.setServiceTypePolicyName(serviceTypePolicyName1);
+ LinkedHashMap<String, String> vertica = new LinkedHashMap<>();
+ vertica.put("verticaMetrics", getVertica(value));
+ policyAdapter.setVerticaMetrics(vertica);
+ LinkedHashMap<String, String> desc = new LinkedHashMap<>();
+ desc.put("policyDescription", getDescription(value));
+ policyAdapter.setDescription(desc);
+ LinkedHashMap<String, Object> attributes = new LinkedHashMap<>();
+ attributes.put("attributes", getAttributes(value));
+ policyAdapter.setAttributeFields(attributes);
+ }
+ })));
+ }
+
+ //get vertica metrics data from the table
+ private String getVertica(String policyName) {
+ JsonArray data = PolicyManagerServlet.getPolicyNames();
+ for (int i = 0; i < data.size(); i++) {
+ if (policyName.equals(data.getJsonObject(i).getJsonString(KEY_SERVICE_TYPE_POLICY_NAME).getString())) {
+ return data.getJsonObject(i).getJsonString("verticaMetrics").getString();
+ }
+ }
+ return null;
+ }
+
+ //get policy description from the table
+ private String getDescription(String policyName) {
+ JsonArray data = PolicyManagerServlet.getPolicyNames();
+ for (int i = 0; i < data.size(); i++) {
+ if (policyName.equals(data.getJsonObject(i).getJsonString(KEY_SERVICE_TYPE_POLICY_NAME).getString())) {
+ return data.getJsonObject(i).getJsonString("policyDescription").getString();
+ }
+ }
+ return null;
+ }
+ //get Attributes
+ private JsonObject getAttributes(String policyName) {
+ JsonArray data = PolicyManagerServlet.getPolicyNames();
+ for (int i = 0; i < data.size(); i++) {
+ if (policyName.equals(data.getJsonObject(i).getJsonString(KEY_SERVICE_TYPE_POLICY_NAME).getString())) {
+ return data.getJsonObject(i).getJsonObject("attributes");
+ }
+ }
+ return null;
+ }
}