From: Pamela Dragosh Date: Tue, 9 Apr 2019 22:40:10 +0000 (+0000) Subject: Merge "Refactor getInnerDecisionApply function" X-Git-Tag: 1.4.0~16 X-Git-Url: https://gerrit.onap.org/r/gitweb?p=policy%2Fengine.git;a=commitdiff_plain;h=a654d6f4986f9151ee58cec93388c5d006ac17e8;hp=-c Merge "Refactor getInnerDecisionApply function" --- a654d6f4986f9151ee58cec93388c5d006ac17e8 diff --combined ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/DecisionPolicy.java index a254f7ad0,e6e843217..5e2bb58ff --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/DecisionPolicy.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/DecisionPolicy.java @@@ -26,7 -26,6 +26,6 @@@ import com.att.research.xacml.std.Ident import java.io.ByteArrayInputStream; import java.io.File; import java.io.IOException; - import java.io.PrintWriter; import java.net.URI; import java.net.URISyntaxException; import java.nio.charset.StandardCharsets; @@@ -40,9 -39,8 +39,8 @@@ import java.util.LinkedList import java.util.List; import java.util.Map; import java.util.UUID; - import javax.script.SimpleBindings; + import org.apache.commons.lang3.StringEscapeUtils; - import org.apache.commons.lang3.StringUtils; import org.onap.policy.common.logging.eelf.MessageCodes; import org.onap.policy.common.logging.eelf.PolicyLogger; import org.onap.policy.common.logging.flexlogger.FlexLogger; @@@ -457,7 -455,7 +455,7 @@@ public class DecisionPolicy extends Pol } private DecisionSettings findDecisionSettingsBySettingId(String settingId) { - return (DecisionSettings) commonClassDao.getEntityItem(DecisionSettings.class, "xacmlId", settingId); + return (DecisionSettings) commonClassDao.getEntityItem(DecisionSettings.class, "xacml_id", settingId); } private void createRule(PolicyType decisionPolicy, boolean permitRule) { @@@ -700,76 -698,29 +698,29 @@@ // check the index for the label. for (String labelAttr : dynamicLabelRuleAlgorithms) { if (labelAttr.equals(value1Label)) { - String value1 = dynamicFieldOneRuleAlgorithms.get(index); - populateDataTypeList(value1); + String attributeId = dynamicFieldOneRuleAlgorithms.get(index); + populateDataTypeList(attributeId); // check if the row contains label again for (String labelValue : dynamicLabelRuleAlgorithms) { - if (labelValue.equals(value1)) { + if (labelValue.equals(attributeId)) { return getCompoundDecisionApply(index); } } // Getting the values from the form. String functionKey = dynamicFieldComboRuleAlgorithms.get(index); - String value2 = dynamicFieldTwoRuleAlgorithms.get(index); + String attributeValue = dynamicFieldTwoRuleAlgorithms.get(index); decisionApply.setFunctionId(getFunctionDefinitionId(functionKey)); // if two text field are rule attributes. - if ((value1.contains(RULE_VARIABLE)) && (value2.contains(RULE_VARIABLE))) { - ApplyType innerDecisionApply1 = new ApplyType(); - ApplyType innerDecisionApply2 = new ApplyType(); - AttributeDesignatorType attributeDesignator1 = new AttributeDesignatorType(); - AttributeDesignatorType attributeDesignator2 = new AttributeDesignatorType(); - // If selected function is Integer function set integer functionID - if (functionKey.toLowerCase().contains("integer")) { - innerDecisionApply1.setFunctionId(FUNTION_INTEGER_ONE_AND_ONLY); - innerDecisionApply2.setFunctionId(FUNTION_INTEGER_ONE_AND_ONLY); - attributeDesignator1.setDataType(INTEGER_DATATYPE); - attributeDesignator2.setDataType(INTEGER_DATATYPE); - } else { - // If selected function is not a Integer function set String functionID - innerDecisionApply1.setFunctionId(FUNCTION_STRING_ONE_AND_ONLY); - innerDecisionApply2.setFunctionId(FUNCTION_STRING_ONE_AND_ONLY); - attributeDesignator1.setDataType(STRING_DATATYPE); - attributeDesignator2.setDataType(STRING_DATATYPE); - } - attributeDesignator1.setCategory(CATEGORY_RESOURCE); - attributeDesignator2.setCategory(CATEGORY_RESOURCE); - // Here set actual field values - attributeDesignator1 - .setAttributeId(value1.contains("resource:") ? value1.substring(9) : value1.substring(8)); - attributeDesignator2 - .setAttributeId(value1.contains("resource:") ? value1.substring(9) : value1.substring(8)); - innerDecisionApply1.getExpression() - .add(new ObjectFactory().createAttributeDesignator(attributeDesignator1)); - innerDecisionApply2.getExpression() - .add(new ObjectFactory().createAttributeDesignator(attributeDesignator2)); - decisionApply.getExpression().add(new ObjectFactory().createApply(innerDecisionApply1)); - decisionApply.getExpression().add(new ObjectFactory().createApply(innerDecisionApply2)); + if ((attributeId.contains(RULE_VARIABLE)) && (attributeValue.contains(RULE_VARIABLE))) { + applyTwoTextFieldRuleAttribute(decisionApply, attributeId, functionKey); } else { // if either of one text field is rule attribute. - if (!value1.startsWith("S_")) { - ApplyType innerDecisionApply = new ApplyType(); - AttributeDesignatorType attributeDesignator = new AttributeDesignatorType(); - AttributeValueType decisionConditionAttributeValue = new AttributeValueType(); - - if (functionKey.toLowerCase().contains("integer")) { - innerDecisionApply.setFunctionId(FUNTION_INTEGER_ONE_AND_ONLY); - decisionConditionAttributeValue.setDataType(INTEGER_DATATYPE); - attributeDesignator.setDataType(INTEGER_DATATYPE); - } else { - innerDecisionApply.setFunctionId(FUNCTION_STRING_ONE_AND_ONLY); - decisionConditionAttributeValue.setDataType(STRING_DATATYPE); - attributeDesignator.setDataType(STRING_DATATYPE); - } - - String attributeId = null; - String attributeValue = null; - - // Find which textField has rule attribute and set it as - // attributeId and the other as attributeValue. - attributeId = value1; - attributeValue = value2; + if (!attributeId.startsWith("S_")) { + ApplyType innerDecisionApply = generateApplyTypeDataType(functionKey); + AttributeDesignatorType attributeDesignator = generateAttributeDesignatorDataType(functionKey); + AttributeValueType decisionConditionAttributeValue = generateAttributeValueTypeDataType(functionKey); if (attributeId != null) { attributeDesignator.setCategory(CATEGORY_RESOURCE); @@@ -782,15 -733,15 +733,15 @@@ .add(new ObjectFactory().createAttributeValue(decisionConditionAttributeValue)); decisionApply.getExpression().add(new ObjectFactory().createApply(innerDecisionApply)); } else { - value1 = value1.substring(2, value1.length()); + attributeId = attributeId.substring(2, attributeId.length()); VariableReferenceType variableReferenceType = new VariableReferenceType(); - variableReferenceType.setVariableId(value1); + variableReferenceType.setVariableId(attributeId); String dataType = dataTypeList.get(index); AttributeValueType decisionConditionAttributeValue = new AttributeValueType(); decisionConditionAttributeValue.setDataType(dataType); - decisionConditionAttributeValue.getContent().add(value2); + decisionConditionAttributeValue.getContent().add(attributeValue); decisionApply.getExpression() .add(new ObjectFactory().createVariableReference(variableReferenceType)); decisionApply.getExpression() @@@ -873,11 -824,68 +824,68 @@@ public String getFunctionDefinitionId(String key) { FunctionDefinition object = - (FunctionDefinition) commonClassDao.getEntityItem(FunctionDefinition.class, "shortname", key); + (FunctionDefinition) commonClassDao.getEntityItem(FunctionDefinition.class, "short_name", key); if (object != null) { return object.getXacmlid(); } return null; } + private AttributeDesignatorType generateAttributeDesignatorDataType(String functionKey) { + AttributeDesignatorType attributeDesignator = new AttributeDesignatorType(); + switch(functionKey.toLowerCase()) + { + case "integer": + attributeDesignator.setDataType(INTEGER_DATATYPE); + break; + default: + attributeDesignator.setDataType(STRING_DATATYPE); + } + return attributeDesignator; + } + + private ApplyType generateApplyTypeDataType(String functionKey) { + ApplyType applyType = new ApplyType(); + switch(functionKey.toLowerCase()) + { + case "integer": + applyType.setFunctionId(FUNTION_INTEGER_ONE_AND_ONLY); + break; + default: + applyType.setFunctionId(FUNCTION_STRING_ONE_AND_ONLY); + } + return applyType; + } + + private AttributeValueType generateAttributeValueTypeDataType(String functionKey) { + AttributeValueType applyType = new AttributeValueType(); + switch(functionKey.toLowerCase()) + { + case "integer": + applyType.setDataType(INTEGER_DATATYPE); + break; + default: + applyType.setDataType(STRING_DATATYPE); + } + return applyType; + } + + private void applyTwoTextFieldRuleAttribute(ApplyType decisionApply, String value1, String functionKey) { + decisionApply.getExpression().add(new ObjectFactory().createApply(generateApplyTypeDataType(value1, functionKey))); + decisionApply.getExpression().add(new ObjectFactory().createApply(generateApplyTypeDataType(value1, functionKey))); + } + + private ApplyType generateApplyTypeDataType(String value1, String functionKey) { + ApplyType innerApply = generateApplyTypeDataType(functionKey); + AttributeDesignatorType attributeDesignator = generateAttributeDesignatorDataType(functionKey); + + attributeDesignator.setCategory(CATEGORY_RESOURCE); + // Here set actual field values + attributeDesignator + .setAttributeId(value1.contains("resource:") ? value1.substring(9) : value1.substring(8)); + innerApply.getExpression() + .add(new ObjectFactory().createAttributeDesignator(attributeDesignator)); + return innerApply; + } + }