diff options
Diffstat (limited to 'ONAP-PAP-REST/src')
29 files changed, 9382 insertions, 9382 deletions
diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/adapters/GridData.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/adapters/GridData.java index 7e05efc63..24f4fefca 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/adapters/GridData.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/adapters/GridData.java @@ -23,40 +23,40 @@ package org.onap.policy.pap.xacml.rest.adapters; import java.util.List; public class GridData { - private List<Object> attributes; - private List<Object> alAttributes; - private List<Object> transportProtocols; - private List<Object> appProtocols; - - public List<Object> getAttributes() { - return attributes; - } - - public void setAttributes(List<Object> attributes) { - this.attributes = attributes; - } - - public List<Object> getAlAttributes() { - return alAttributes; - } - - public void setAlAttributes(List<Object> alAttributes) { - this.alAttributes = alAttributes; - } - - public List<Object> getAppProtocols() { - return appProtocols; - } - - public void setAppProtocols(List<Object> appProtocols) { - this.appProtocols = appProtocols; - } - - public List<Object> getTransportProtocols() { - return transportProtocols; - } - - public void setTransportProtocols(List<Object> transportProtocols) { - this.transportProtocols = transportProtocols; - } + private List<Object> attributes; + private List<Object> alAttributes; + private List<Object> transportProtocols; + private List<Object> appProtocols; + + public List<Object> getAttributes() { + return attributes; + } + + public void setAttributes(List<Object> attributes) { + this.attributes = attributes; + } + + public List<Object> getAlAttributes() { + return alAttributes; + } + + public void setAlAttributes(List<Object> alAttributes) { + this.alAttributes = alAttributes; + } + + public List<Object> getAppProtocols() { + return appProtocols; + } + + public void setAppProtocols(List<Object> appProtocols) { + this.appProtocols = appProtocols; + } + + public List<Object> getTransportProtocols() { + return transportProtocols; + } + + public void setTransportProtocols(List<Object> transportProtocols) { + this.transportProtocols = transportProtocols; + } } diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/adapters/SearchData.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/adapters/SearchData.java index 44e340396..45c46cb5b 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/adapters/SearchData.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/adapters/SearchData.java @@ -20,81 +20,81 @@ package org.onap.policy.pap.xacml.rest.adapters; public class SearchData { - private String query; - private String policyType; - private String descriptiveScope; - private String closedLooppolicyType; - private String onapName; - private String d2Service; - private String vnfType; - private String policyStatus; - private String vproAction; - private String serviceType; - private String bindTextSearch; - public String getQuery() { - return query; - } - public void setQuery(String query) { - this.query = query; - } - public String getPolicyType() { - return policyType; - } - public void setPolicyType(String policyType) { - this.policyType = policyType; - } - public String getDescriptiveScope() { - return descriptiveScope; - } - public void setDescriptiveScope(String descriptiveScope) { - this.descriptiveScope = descriptiveScope; - } - public String getClosedLooppolicyType() { - return closedLooppolicyType; - } - public void setClosedLooppolicyType(String closedLooppolicyType) { - this.closedLooppolicyType = closedLooppolicyType; - } - public String getOnapName() { - return onapName; - } - public void setOnapName(String onapName) { - this.onapName = onapName; - } - public String getD2Service() { - return d2Service; - } - public void setD2Service(String d2Service) { - this.d2Service = d2Service; - } - public String getVnfType() { - return vnfType; - } - public void setVnfType(String vnfType) { - this.vnfType = vnfType; - } - public String getPolicyStatus() { - return policyStatus; - } - public void setPolicyStatus(String policyStatus) { - this.policyStatus = policyStatus; - } - public String getVproAction() { - return vproAction; - } - public void setVproAction(String vproAction) { - this.vproAction = vproAction; - } - public String getServiceType() { - return serviceType; - } - public void setServiceType(String serviceType) { - this.serviceType = serviceType; - } - public String getBindTextSearch() { - return bindTextSearch; - } - public void setBindTextSearch(String bindTextSearch) { - this.bindTextSearch = bindTextSearch; - } + private String query; + private String policyType; + private String descriptiveScope; + private String closedLooppolicyType; + private String onapName; + private String d2Service; + private String vnfType; + private String policyStatus; + private String vproAction; + private String serviceType; + private String bindTextSearch; + public String getQuery() { + return query; + } + public void setQuery(String query) { + this.query = query; + } + public String getPolicyType() { + return policyType; + } + public void setPolicyType(String policyType) { + this.policyType = policyType; + } + public String getDescriptiveScope() { + return descriptiveScope; + } + public void setDescriptiveScope(String descriptiveScope) { + this.descriptiveScope = descriptiveScope; + } + public String getClosedLooppolicyType() { + return closedLooppolicyType; + } + public void setClosedLooppolicyType(String closedLooppolicyType) { + this.closedLooppolicyType = closedLooppolicyType; + } + public String getOnapName() { + return onapName; + } + public void setOnapName(String onapName) { + this.onapName = onapName; + } + public String getD2Service() { + return d2Service; + } + public void setD2Service(String d2Service) { + this.d2Service = d2Service; + } + public String getVnfType() { + return vnfType; + } + public void setVnfType(String vnfType) { + this.vnfType = vnfType; + } + public String getPolicyStatus() { + return policyStatus; + } + public void setPolicyStatus(String policyStatus) { + this.policyStatus = policyStatus; + } + public String getVproAction() { + return vproAction; + } + public void setVproAction(String vproAction) { + this.vproAction = vproAction; + } + public String getServiceType() { + return serviceType; + } + public void setServiceType(String serviceType) { + this.serviceType = serviceType; + } + public String getBindTextSearch() { + return bindTextSearch; + } + public void setBindTextSearch(String bindTextSearch) { + this.bindTextSearch = bindTextSearch; + } }
\ No newline at end of file diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/adapters/UpdateObjectData.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/adapters/UpdateObjectData.java index 04006f320..aa59868fe 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/adapters/UpdateObjectData.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/adapters/UpdateObjectData.java @@ -20,31 +20,31 @@ package org.onap.policy.pap.xacml.rest.adapters; public class UpdateObjectData { - private String oldPolicyName; - private String newPolicyName; - private String action; - - public String getOldPolicyName() { - return oldPolicyName; - } - - public void setOldPolicyName(String oldPolicyName) { - this.oldPolicyName = oldPolicyName; - } - - public String getNewPolicyName() { - return newPolicyName; - } - - public void setNewPolicyName(String newPolicyName) { - this.newPolicyName = newPolicyName; - } - - public String getAction() { - return action; - } - - public void setAction(String action) { - this.action = action; - } + private String oldPolicyName; + private String newPolicyName; + private String action; + + public String getOldPolicyName() { + return oldPolicyName; + } + + public void setOldPolicyName(String oldPolicyName) { + this.oldPolicyName = oldPolicyName; + } + + public String getNewPolicyName() { + return newPolicyName; + } + + public void setNewPolicyName(String newPolicyName) { + this.newPolicyName = newPolicyName; + } + + public String getAction() { + return action; + } + + public void setAction(String action) { + this.action = action; + } } diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/ActionPolicy.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/ActionPolicy.java index 43eb4348e..9f84a4eac 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/ActionPolicy.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/ActionPolicy.java @@ -106,7 +106,7 @@ public class ActionPolicy extends Policy { this.commonClassDao = commonClassDao; } - @Override + @Override public Map<String, String> savePolicies() throws PAPException { Map<String, String> successMap = new HashMap<>(); @@ -260,7 +260,7 @@ public class ActionPolicy extends Policy { policyName = policyName.replace(".xml", ""); } File file = new File(ACTION_HOME+ File.separator + policyName + ".json"); - try(BufferedWriter bw = new BufferedWriter(new FileWriter(file.getAbsoluteFile()))) { + try(BufferedWriter bw = new BufferedWriter(new FileWriter(file.getAbsoluteFile()))) { bw.write(actionBodyData); if (LOGGER.isInfoEnabled()) { LOGGER.info("Action Body is succesfully saved at " + file.getAbsolutePath()); @@ -488,11 +488,11 @@ public class ActionPolicy extends Policy { } public String getFunctionDefinitionId(String key){ - FunctionDefinition object = (FunctionDefinition) commonClassDao.getDataById(FunctionDefinition.class, "short_name", key); - if(object != null){ - return object.getXacmlid(); - } - return null; + FunctionDefinition object = (FunctionDefinition) commonClassDao.getDataById(FunctionDefinition.class, "short_name", key); + if(object != null){ + return object.getXacmlid(); + } + return null; } }
\ No newline at end of file diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/ClosedLoopPolicy.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/ClosedLoopPolicy.java index 7c05a31c6..e446c2af3 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/ClosedLoopPolicy.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/ClosedLoopPolicy.java @@ -58,345 +58,345 @@ import oasis.names.tc.xacml._3_0.core.schema.wd_17.TargetType; public class ClosedLoopPolicy extends Policy { - private static final Logger LOGGER = FlexLogger.getLogger(ClosedLoopPolicy.class); - - public ClosedLoopPolicy() { - super(); - } - - public ClosedLoopPolicy(PolicyRestAdapter policyAdapter){ - this.policyAdapter = policyAdapter; - } - - //save configuration of the policy based on the policyname - private void saveConfigurations(String policyName, String jsonBody) { - - if(policyName.endsWith(".xml")){ - policyName = policyName.replace(".xml", ""); - } - try (PrintWriter out = new PrintWriter(CONFIG_HOME + File.separator+ policyName +".json")){ - String body = jsonBody; - //Remove the trapMaxAge in Verification Signature - body = body.replace(",\"trapMaxAge\":null", ""); - this.policyAdapter.setJsonBody(body); - out.println(body); - } catch (Exception e) { - LOGGER.error("Exception Occured while writing Configuration Data"+e); - } - } - - //Utility to read json data from the existing file to a string - static String readFile(String path, Charset encoding) throws IOException { - - byte[] encoded = Files.readAllBytes(Paths.get(path)); - return new String(encoded, encoding); - - } - - //create the configuration file based on the policy name on adding the extension as .json - private String getConfigFile(String filename) { - filename = FilenameUtils.removeExtension(filename); - if (filename.endsWith(".xml")) { - filename = filename.substring(0, filename.length() - 4); - } - filename = filename + ".json"; - return filename; - } - - @Override - public Map<String, String> savePolicies() throws PAPException { - - Map<String, String> successMap = new HashMap<>(); - if(isPolicyExists()){ - successMap.put("EXISTS", "This Policy already exist on the PAP"); - return successMap; - } - - if(!isPreparedToSave()){ - prepareToSave(); - } - - // Until here we prepared the data and here calling the method to create xml. - Path newPolicyPath = null; - newPolicyPath = Paths.get(policyAdapter.getNewFileName()); - - successMap = createPolicy(newPolicyPath,getCorrectPolicyDataObject()); - return successMap; - } - - //This is the method for preparing the policy for saving. We have broken it out - //separately because the fully configured policy is used for multiple things - @Override - public boolean prepareToSave() throws PAPException{ - - if(isPreparedToSave()){ - //we have already done this - return true; - } - - int version = 0; - String policyID = policyAdapter.getPolicyID(); - version = policyAdapter.getHighestVersion(); - - // Create the Instance for pojo, PolicyType object is used in marshalling. - if (policyAdapter.getPolicyType().equals("Config")) { - PolicyType policyConfig = new PolicyType(); - - policyConfig.setVersion(Integer.toString(version)); - policyConfig.setPolicyId(policyID); - policyConfig.setTarget(new TargetType()); - policyAdapter.setData(policyConfig); - } - policyName = policyAdapter.getNewFileName(); - if (policyAdapter.getData() != null) { - // Save the Configurations file with the policy name with extention based on selection. - String jsonBody = policyAdapter.getJsonBody(); - saveConfigurations(policyName, jsonBody); - - // Make sure the filename ends with an extension - if (policyName.endsWith(".xml") == false) { - policyName = policyName + ".xml"; - } - - PolicyType faultPolicy = (PolicyType) policyAdapter.getData(); - - faultPolicy.setDescription(policyAdapter.getPolicyDescription()); - - faultPolicy.setRuleCombiningAlgId(policyAdapter.getRuleCombiningAlgId()); - - AllOfType allOfOne = new AllOfType(); - String fileName = policyAdapter.getNewFileName(); - String name = fileName.substring(fileName.lastIndexOf("\\") + 1, fileName.length()); - if ((name == null) || (name.equals(""))) { - name = fileName.substring(fileName.lastIndexOf("/") + 1, fileName.length()); - } - allOfOne.getMatch().add(createMatch("PolicyName", name)); - AllOfType allOf = new AllOfType(); - // Adding the matches to AllOfType element - // Match for Onap - allOf.getMatch().add(createMatch("ONAPName", policyAdapter.getOnapName())); - // Match for riskType - allOf.getMatch().add( - createDynamicMatch("RiskType", policyAdapter.getRiskType())); - // Match for riskLevel - allOf.getMatch().add( - createDynamicMatch("RiskLevel", String.valueOf(policyAdapter.getRiskLevel()))); - // Match for riskguard - allOf.getMatch().add( - createDynamicMatch("guard", policyAdapter.getGuard())); - // Match for ttlDate - allOf.getMatch().add( - createDynamicMatch("TTLDate", policyAdapter.getTtlDate())); - - AnyOfType anyOf = new AnyOfType(); - anyOf.getAllOf().add(allOfOne); - anyOf.getAllOf().add(allOf); - - TargetType target = new TargetType(); - ((TargetType) target).getAnyOf().add(anyOf); - // Adding the target to the policy element - faultPolicy.setTarget((TargetType) target); - - RuleType rule = new RuleType(); - rule.setRuleId(policyAdapter.getRuleID()); - rule.setEffect(EffectType.PERMIT); - - // Create Target in Rule - AllOfType allOfInRule = new AllOfType(); - - // Creating match for ACCESS in rule target - MatchType accessMatch = new MatchType(); - AttributeValueType accessAttributeValue = new AttributeValueType(); - accessAttributeValue.setDataType(STRING_DATATYPE); - accessAttributeValue.getContent().add("ACCESS"); - accessMatch.setAttributeValue(accessAttributeValue); - AttributeDesignatorType accessAttributeDesignator = new AttributeDesignatorType(); - URI accessURI = null; - try { - accessURI = new URI(ACTION_ID); - } catch (URISyntaxException e) { - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "CreateClosedLoopPolicy", "Exception creating ACCESS URI"); - } - accessAttributeDesignator.setCategory(CATEGORY_ACTION); - accessAttributeDesignator.setDataType(STRING_DATATYPE); - accessAttributeDesignator.setAttributeId(new IdentifierImpl(accessURI).stringValue()); - accessMatch.setAttributeDesignator(accessAttributeDesignator); - accessMatch.setMatchId(FUNCTION_STRING_EQUAL_IGNORE); - - // Creating Config Match in rule Target - MatchType closedMatch = new MatchType(); - AttributeValueType closedAttributeValue = new AttributeValueType(); - closedAttributeValue.setDataType(STRING_DATATYPE); - closedAttributeValue.getContent().add("Config"); - closedMatch.setAttributeValue(closedAttributeValue); - AttributeDesignatorType closedAttributeDesignator = new AttributeDesignatorType(); - URI closedURI = null; - try { - closedURI = new URI(RESOURCE_ID); - } catch (URISyntaxException e) { - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "CreateClosedLoopPolicy", "Exception creating closed URI"); - } - closedAttributeDesignator.setCategory(CATEGORY_RESOURCE); - closedAttributeDesignator.setDataType(STRING_DATATYPE); - closedAttributeDesignator.setAttributeId(new IdentifierImpl(closedURI).stringValue()); - closedMatch.setAttributeDesignator(closedAttributeDesignator); - closedMatch.setMatchId(FUNCTION_STRING_EQUAL_IGNORE); - - allOfInRule.getMatch().add(accessMatch); - allOfInRule.getMatch().add(closedMatch); - - AnyOfType anyOfInRule = new AnyOfType(); - anyOfInRule.getAllOf().add(allOfInRule); - - TargetType targetInRule = new TargetType(); - targetInRule.getAnyOf().add(anyOfInRule); - - rule.setTarget(targetInRule); - rule.setAdviceExpressions(getAdviceExpressions(version, policyName)); - - faultPolicy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().add(rule); - policyAdapter.setPolicyData(faultPolicy); - - } else { - PolicyLogger.error("Unsupported data object." + policyAdapter.getData().getClass().getCanonicalName()); - } - - setPreparedToSave(true); - return true; - } - - // Data required for Advice part is setting here. - private AdviceExpressionsType getAdviceExpressions(int version, String fileName) { - AdviceExpressionsType advices = new AdviceExpressionsType(); - AdviceExpressionType advice = new AdviceExpressionType(); - advice.setAdviceId("faultID"); - advice.setAppliesTo(EffectType.PERMIT); - // For Configuration - AttributeAssignmentExpressionType assignment1 = new AttributeAssignmentExpressionType(); - assignment1.setAttributeId("type"); - assignment1.setCategory(CATEGORY_RESOURCE); - assignment1.setIssuer(""); - - AttributeValueType configNameAttributeValue = new AttributeValueType(); - configNameAttributeValue.setDataType(STRING_DATATYPE); - configNameAttributeValue.getContent().add("Configuration"); - assignment1.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue)); - - advice.getAttributeAssignmentExpression().add(assignment1); - // For Config file Url if configurations are provided. - AttributeAssignmentExpressionType assignment2 = new AttributeAssignmentExpressionType(); - assignment2.setAttributeId("URLID"); - assignment2.setCategory(CATEGORY_RESOURCE); - assignment2.setIssuer(""); - - AttributeValueType AttributeValue = new AttributeValueType(); - AttributeValue.setDataType(URI_DATATYPE); - String content = CONFIG_URL +"/Config/" + getConfigFile(policyName); - System.out.println("URL value :" + content); - AttributeValue.getContent().add(content); - assignment2.setExpression(new ObjectFactory().createAttributeValue(AttributeValue)); - - advice.getAttributeAssignmentExpression().add(assignment2); - AttributeAssignmentExpressionType assignment3 = new AttributeAssignmentExpressionType(); - assignment3.setAttributeId("PolicyName"); - assignment3.setCategory(CATEGORY_RESOURCE); - assignment3.setIssuer(""); - - AttributeValueType attributeValue3 = new AttributeValueType(); - attributeValue3.setDataType(STRING_DATATYPE); - fileName = FilenameUtils.removeExtension(fileName); - fileName = fileName + ".xml"; - String name = fileName.substring(fileName.lastIndexOf("\\") + 1, fileName.length()); - if ((name == null) || (name.equals(""))) { - name = fileName.substring(fileName.lastIndexOf("/") + 1, fileName.length()); - } - attributeValue3.getContent().add(name); - assignment3.setExpression(new ObjectFactory().createAttributeValue(attributeValue3)); - advice.getAttributeAssignmentExpression().add(assignment3); - - AttributeAssignmentExpressionType assignment4 = new AttributeAssignmentExpressionType(); - assignment4.setAttributeId("VersionNumber"); - assignment4.setCategory(CATEGORY_RESOURCE); - assignment4.setIssuer(""); - - AttributeValueType configNameAttributeValue4 = new AttributeValueType(); - configNameAttributeValue4.setDataType(STRING_DATATYPE); - configNameAttributeValue4.getContent().add(Integer.toString(version)); - assignment4.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue4)); - - advice.getAttributeAssignmentExpression().add(assignment4); - - AttributeAssignmentExpressionType assignment5 = new AttributeAssignmentExpressionType(); - assignment5.setAttributeId("matching:" + ONAPID); - assignment5.setCategory(CATEGORY_RESOURCE); - assignment5.setIssuer(""); - - AttributeValueType configNameAttributeValue5 = new AttributeValueType(); - configNameAttributeValue5.setDataType(STRING_DATATYPE); - configNameAttributeValue5.getContent().add(policyAdapter.getOnapName()); - assignment5.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue5)); - - advice.getAttributeAssignmentExpression().add(assignment5); - - //Risk Attributes - AttributeAssignmentExpressionType assignment6 = new AttributeAssignmentExpressionType(); - assignment6.setAttributeId("RiskType"); - assignment6.setCategory(CATEGORY_RESOURCE); - assignment6.setIssuer(""); - - AttributeValueType configNameAttributeValue6 = new AttributeValueType(); - configNameAttributeValue6.setDataType(STRING_DATATYPE); - configNameAttributeValue6.getContent().add(policyAdapter.getRiskType()); - assignment6.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue6)); - - advice.getAttributeAssignmentExpression().add(assignment6); - - AttributeAssignmentExpressionType assignment7 = new AttributeAssignmentExpressionType(); - assignment7.setAttributeId("RiskLevel"); - assignment7.setCategory(CATEGORY_RESOURCE); - assignment7.setIssuer(""); - - AttributeValueType configNameAttributeValue7 = new AttributeValueType(); - configNameAttributeValue7.setDataType(STRING_DATATYPE); - configNameAttributeValue7.getContent().add(policyAdapter.getRiskLevel()); - assignment7.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue7)); - - advice.getAttributeAssignmentExpression().add(assignment7); - - AttributeAssignmentExpressionType assignment8 = new AttributeAssignmentExpressionType(); - assignment8.setAttributeId("guard"); - assignment8.setCategory(CATEGORY_RESOURCE); - assignment8.setIssuer(""); - - AttributeValueType configNameAttributeValue8 = new AttributeValueType(); - configNameAttributeValue8.setDataType(STRING_DATATYPE); - configNameAttributeValue8.getContent().add(policyAdapter.getGuard()); - assignment8.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue8)); - - advice.getAttributeAssignmentExpression().add(assignment8); - - AttributeAssignmentExpressionType assignment9 = new AttributeAssignmentExpressionType(); - assignment9.setAttributeId("TTLDate"); - assignment9.setCategory(CATEGORY_RESOURCE); - assignment9.setIssuer(""); - - AttributeValueType configNameAttributeValue9 = new AttributeValueType(); - configNameAttributeValue9.setDataType(STRING_DATATYPE); - configNameAttributeValue9.getContent().add(policyAdapter.getTtlDate()); - assignment9.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue9)); - - advice.getAttributeAssignmentExpression().add(assignment9); - - - - advices.getAdviceExpression().add(advice); - return advices; - } - - @Override - public Object getCorrectPolicyDataObject() { - return policyAdapter.getPolicyData(); - } + private static final Logger LOGGER = FlexLogger.getLogger(ClosedLoopPolicy.class); + + public ClosedLoopPolicy() { + super(); + } + + public ClosedLoopPolicy(PolicyRestAdapter policyAdapter){ + this.policyAdapter = policyAdapter; + } + + //save configuration of the policy based on the policyname + private void saveConfigurations(String policyName, String jsonBody) { + + if(policyName.endsWith(".xml")){ + policyName = policyName.replace(".xml", ""); + } + try (PrintWriter out = new PrintWriter(CONFIG_HOME + File.separator+ policyName +".json")){ + String body = jsonBody; + //Remove the trapMaxAge in Verification Signature + body = body.replace(",\"trapMaxAge\":null", ""); + this.policyAdapter.setJsonBody(body); + out.println(body); + } catch (Exception e) { + LOGGER.error("Exception Occured while writing Configuration Data"+e); + } + } + + //Utility to read json data from the existing file to a string + static String readFile(String path, Charset encoding) throws IOException { + + byte[] encoded = Files.readAllBytes(Paths.get(path)); + return new String(encoded, encoding); + + } + + //create the configuration file based on the policy name on adding the extension as .json + private String getConfigFile(String filename) { + filename = FilenameUtils.removeExtension(filename); + if (filename.endsWith(".xml")) { + filename = filename.substring(0, filename.length() - 4); + } + filename = filename + ".json"; + return filename; + } + + @Override + public Map<String, String> savePolicies() throws PAPException { + + Map<String, String> successMap = new HashMap<>(); + if(isPolicyExists()){ + successMap.put("EXISTS", "This Policy already exist on the PAP"); + return successMap; + } + + if(!isPreparedToSave()){ + prepareToSave(); + } + + // Until here we prepared the data and here calling the method to create xml. + Path newPolicyPath = null; + newPolicyPath = Paths.get(policyAdapter.getNewFileName()); + + successMap = createPolicy(newPolicyPath,getCorrectPolicyDataObject()); + return successMap; + } + + //This is the method for preparing the policy for saving. We have broken it out + //separately because the fully configured policy is used for multiple things + @Override + public boolean prepareToSave() throws PAPException{ + + if(isPreparedToSave()){ + //we have already done this + return true; + } + + int version = 0; + String policyID = policyAdapter.getPolicyID(); + version = policyAdapter.getHighestVersion(); + + // Create the Instance for pojo, PolicyType object is used in marshalling. + if (policyAdapter.getPolicyType().equals("Config")) { + PolicyType policyConfig = new PolicyType(); + + policyConfig.setVersion(Integer.toString(version)); + policyConfig.setPolicyId(policyID); + policyConfig.setTarget(new TargetType()); + policyAdapter.setData(policyConfig); + } + policyName = policyAdapter.getNewFileName(); + if (policyAdapter.getData() != null) { + // Save the Configurations file with the policy name with extention based on selection. + String jsonBody = policyAdapter.getJsonBody(); + saveConfigurations(policyName, jsonBody); + + // Make sure the filename ends with an extension + if (policyName.endsWith(".xml") == false) { + policyName = policyName + ".xml"; + } + + PolicyType faultPolicy = (PolicyType) policyAdapter.getData(); + + faultPolicy.setDescription(policyAdapter.getPolicyDescription()); + + faultPolicy.setRuleCombiningAlgId(policyAdapter.getRuleCombiningAlgId()); + + AllOfType allOfOne = new AllOfType(); + String fileName = policyAdapter.getNewFileName(); + String name = fileName.substring(fileName.lastIndexOf("\\") + 1, fileName.length()); + if ((name == null) || (name.equals(""))) { + name = fileName.substring(fileName.lastIndexOf("/") + 1, fileName.length()); + } + allOfOne.getMatch().add(createMatch("PolicyName", name)); + AllOfType allOf = new AllOfType(); + // Adding the matches to AllOfType element + // Match for Onap + allOf.getMatch().add(createMatch("ONAPName", policyAdapter.getOnapName())); + // Match for riskType + allOf.getMatch().add( + createDynamicMatch("RiskType", policyAdapter.getRiskType())); + // Match for riskLevel + allOf.getMatch().add( + createDynamicMatch("RiskLevel", String.valueOf(policyAdapter.getRiskLevel()))); + // Match for riskguard + allOf.getMatch().add( + createDynamicMatch("guard", policyAdapter.getGuard())); + // Match for ttlDate + allOf.getMatch().add( + createDynamicMatch("TTLDate", policyAdapter.getTtlDate())); + + AnyOfType anyOf = new AnyOfType(); + anyOf.getAllOf().add(allOfOne); + anyOf.getAllOf().add(allOf); + + TargetType target = new TargetType(); + ((TargetType) target).getAnyOf().add(anyOf); + // Adding the target to the policy element + faultPolicy.setTarget((TargetType) target); + + RuleType rule = new RuleType(); + rule.setRuleId(policyAdapter.getRuleID()); + rule.setEffect(EffectType.PERMIT); + + // Create Target in Rule + AllOfType allOfInRule = new AllOfType(); + + // Creating match for ACCESS in rule target + MatchType accessMatch = new MatchType(); + AttributeValueType accessAttributeValue = new AttributeValueType(); + accessAttributeValue.setDataType(STRING_DATATYPE); + accessAttributeValue.getContent().add("ACCESS"); + accessMatch.setAttributeValue(accessAttributeValue); + AttributeDesignatorType accessAttributeDesignator = new AttributeDesignatorType(); + URI accessURI = null; + try { + accessURI = new URI(ACTION_ID); + } catch (URISyntaxException e) { + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "CreateClosedLoopPolicy", "Exception creating ACCESS URI"); + } + accessAttributeDesignator.setCategory(CATEGORY_ACTION); + accessAttributeDesignator.setDataType(STRING_DATATYPE); + accessAttributeDesignator.setAttributeId(new IdentifierImpl(accessURI).stringValue()); + accessMatch.setAttributeDesignator(accessAttributeDesignator); + accessMatch.setMatchId(FUNCTION_STRING_EQUAL_IGNORE); + + // Creating Config Match in rule Target + MatchType closedMatch = new MatchType(); + AttributeValueType closedAttributeValue = new AttributeValueType(); + closedAttributeValue.setDataType(STRING_DATATYPE); + closedAttributeValue.getContent().add("Config"); + closedMatch.setAttributeValue(closedAttributeValue); + AttributeDesignatorType closedAttributeDesignator = new AttributeDesignatorType(); + URI closedURI = null; + try { + closedURI = new URI(RESOURCE_ID); + } catch (URISyntaxException e) { + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "CreateClosedLoopPolicy", "Exception creating closed URI"); + } + closedAttributeDesignator.setCategory(CATEGORY_RESOURCE); + closedAttributeDesignator.setDataType(STRING_DATATYPE); + closedAttributeDesignator.setAttributeId(new IdentifierImpl(closedURI).stringValue()); + closedMatch.setAttributeDesignator(closedAttributeDesignator); + closedMatch.setMatchId(FUNCTION_STRING_EQUAL_IGNORE); + + allOfInRule.getMatch().add(accessMatch); + allOfInRule.getMatch().add(closedMatch); + + AnyOfType anyOfInRule = new AnyOfType(); + anyOfInRule.getAllOf().add(allOfInRule); + + TargetType targetInRule = new TargetType(); + targetInRule.getAnyOf().add(anyOfInRule); + + rule.setTarget(targetInRule); + rule.setAdviceExpressions(getAdviceExpressions(version, policyName)); + + faultPolicy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().add(rule); + policyAdapter.setPolicyData(faultPolicy); + + } else { + PolicyLogger.error("Unsupported data object." + policyAdapter.getData().getClass().getCanonicalName()); + } + + setPreparedToSave(true); + return true; + } + + // Data required for Advice part is setting here. + private AdviceExpressionsType getAdviceExpressions(int version, String fileName) { + AdviceExpressionsType advices = new AdviceExpressionsType(); + AdviceExpressionType advice = new AdviceExpressionType(); + advice.setAdviceId("faultID"); + advice.setAppliesTo(EffectType.PERMIT); + // For Configuration + AttributeAssignmentExpressionType assignment1 = new AttributeAssignmentExpressionType(); + assignment1.setAttributeId("type"); + assignment1.setCategory(CATEGORY_RESOURCE); + assignment1.setIssuer(""); + + AttributeValueType configNameAttributeValue = new AttributeValueType(); + configNameAttributeValue.setDataType(STRING_DATATYPE); + configNameAttributeValue.getContent().add("Configuration"); + assignment1.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue)); + + advice.getAttributeAssignmentExpression().add(assignment1); + // For Config file Url if configurations are provided. + AttributeAssignmentExpressionType assignment2 = new AttributeAssignmentExpressionType(); + assignment2.setAttributeId("URLID"); + assignment2.setCategory(CATEGORY_RESOURCE); + assignment2.setIssuer(""); + + AttributeValueType AttributeValue = new AttributeValueType(); + AttributeValue.setDataType(URI_DATATYPE); + String content = CONFIG_URL +"/Config/" + getConfigFile(policyName); + System.out.println("URL value :" + content); + AttributeValue.getContent().add(content); + assignment2.setExpression(new ObjectFactory().createAttributeValue(AttributeValue)); + + advice.getAttributeAssignmentExpression().add(assignment2); + AttributeAssignmentExpressionType assignment3 = new AttributeAssignmentExpressionType(); + assignment3.setAttributeId("PolicyName"); + assignment3.setCategory(CATEGORY_RESOURCE); + assignment3.setIssuer(""); + + AttributeValueType attributeValue3 = new AttributeValueType(); + attributeValue3.setDataType(STRING_DATATYPE); + fileName = FilenameUtils.removeExtension(fileName); + fileName = fileName + ".xml"; + String name = fileName.substring(fileName.lastIndexOf("\\") + 1, fileName.length()); + if ((name == null) || (name.equals(""))) { + name = fileName.substring(fileName.lastIndexOf("/") + 1, fileName.length()); + } + attributeValue3.getContent().add(name); + assignment3.setExpression(new ObjectFactory().createAttributeValue(attributeValue3)); + advice.getAttributeAssignmentExpression().add(assignment3); + + AttributeAssignmentExpressionType assignment4 = new AttributeAssignmentExpressionType(); + assignment4.setAttributeId("VersionNumber"); + assignment4.setCategory(CATEGORY_RESOURCE); + assignment4.setIssuer(""); + + AttributeValueType configNameAttributeValue4 = new AttributeValueType(); + configNameAttributeValue4.setDataType(STRING_DATATYPE); + configNameAttributeValue4.getContent().add(Integer.toString(version)); + assignment4.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue4)); + + advice.getAttributeAssignmentExpression().add(assignment4); + + AttributeAssignmentExpressionType assignment5 = new AttributeAssignmentExpressionType(); + assignment5.setAttributeId("matching:" + ONAPID); + assignment5.setCategory(CATEGORY_RESOURCE); + assignment5.setIssuer(""); + + AttributeValueType configNameAttributeValue5 = new AttributeValueType(); + configNameAttributeValue5.setDataType(STRING_DATATYPE); + configNameAttributeValue5.getContent().add(policyAdapter.getOnapName()); + assignment5.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue5)); + + advice.getAttributeAssignmentExpression().add(assignment5); + + //Risk Attributes + AttributeAssignmentExpressionType assignment6 = new AttributeAssignmentExpressionType(); + assignment6.setAttributeId("RiskType"); + assignment6.setCategory(CATEGORY_RESOURCE); + assignment6.setIssuer(""); + + AttributeValueType configNameAttributeValue6 = new AttributeValueType(); + configNameAttributeValue6.setDataType(STRING_DATATYPE); + configNameAttributeValue6.getContent().add(policyAdapter.getRiskType()); + assignment6.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue6)); + + advice.getAttributeAssignmentExpression().add(assignment6); + + AttributeAssignmentExpressionType assignment7 = new AttributeAssignmentExpressionType(); + assignment7.setAttributeId("RiskLevel"); + assignment7.setCategory(CATEGORY_RESOURCE); + assignment7.setIssuer(""); + + AttributeValueType configNameAttributeValue7 = new AttributeValueType(); + configNameAttributeValue7.setDataType(STRING_DATATYPE); + configNameAttributeValue7.getContent().add(policyAdapter.getRiskLevel()); + assignment7.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue7)); + + advice.getAttributeAssignmentExpression().add(assignment7); + + AttributeAssignmentExpressionType assignment8 = new AttributeAssignmentExpressionType(); + assignment8.setAttributeId("guard"); + assignment8.setCategory(CATEGORY_RESOURCE); + assignment8.setIssuer(""); + + AttributeValueType configNameAttributeValue8 = new AttributeValueType(); + configNameAttributeValue8.setDataType(STRING_DATATYPE); + configNameAttributeValue8.getContent().add(policyAdapter.getGuard()); + assignment8.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue8)); + + advice.getAttributeAssignmentExpression().add(assignment8); + + AttributeAssignmentExpressionType assignment9 = new AttributeAssignmentExpressionType(); + assignment9.setAttributeId("TTLDate"); + assignment9.setCategory(CATEGORY_RESOURCE); + assignment9.setIssuer(""); + + AttributeValueType configNameAttributeValue9 = new AttributeValueType(); + configNameAttributeValue9.setDataType(STRING_DATATYPE); + configNameAttributeValue9.getContent().add(policyAdapter.getTtlDate()); + assignment9.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue9)); + + advice.getAttributeAssignmentExpression().add(assignment9); + + + + advices.getAdviceExpression().add(advice); + return advices; + } + + @Override + public Object getCorrectPolicyDataObject() { + return policyAdapter.getPolicyData(); + } } diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/CreateBRMSRuleTemplate.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/CreateBRMSRuleTemplate.java index 45080cee9..9809ad498 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/CreateBRMSRuleTemplate.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/CreateBRMSRuleTemplate.java @@ -34,50 +34,50 @@ import org.springframework.stereotype.Service; @Service public class CreateBRMSRuleTemplate { - private static final Logger LOGGER = FlexLogger.getLogger(CreateBRMSRuleTemplate.class); - private static CommonClassDao commonClassDao; - - @Autowired - public CreateBRMSRuleTemplate(CommonClassDao commonClassDao){ - CreateBRMSRuleTemplate.commonClassDao = commonClassDao; - } - - public CreateBRMSRuleTemplate() {} + private static final Logger LOGGER = FlexLogger.getLogger(CreateBRMSRuleTemplate.class); + private static CommonClassDao commonClassDao; - public Map<String, String> addRule(String rule, String ruleName, String description, String userID) { - Map<String,String> responseMap = new HashMap<>(); - if(rule!=null && !PolicyUtils.brmsRawValidate(rule).contains("[ERR")){ - List<Object> duplicateData = commonClassDao.checkDuplicateEntry(ruleName, "ruleName", BRMSParamTemplate.class); - if(duplicateData!=null && !duplicateData.isEmpty()){ - LOGGER.error("Import new service failed. Service already exists"); - responseMap.put("DBError", "EXISTS"); - return responseMap; - }else{ - BRMSParamTemplate brmsParamTemplate = new BRMSParamTemplate(); - brmsParamTemplate.setDescription(description); - brmsParamTemplate.setRuleName(ruleName); - brmsParamTemplate.setRule(rule); - UserInfo userCreatedBy = (UserInfo) commonClassDao.getEntityItem(UserInfo.class, "userLoginId", userID); - brmsParamTemplate.setUserCreatedBy(userCreatedBy); - commonClassDao.save(brmsParamTemplate); - LOGGER.info("Template created with " + ruleName + " by " + userID); - } - responseMap.put("success", "success"); - }else{ - LOGGER.debug("Error during validating the rule for creating record for BRMS Param Template"); - responseMap.put("error", "VALIDATION"); - } - return responseMap; - } - - public static boolean validateRuleParams(String rule) { - CreateBrmsParamPolicy policy = new CreateBrmsParamPolicy(); - Map<String, String> paramValues = policy.findType(rule); - for(String key : paramValues.keySet()) { - if(!PolicyUtils.SUCCESS.equals(PolicyUtils.policySpecialCharValidator(key))){ - return false; - } - } - return true; - } + @Autowired + public CreateBRMSRuleTemplate(CommonClassDao commonClassDao){ + CreateBRMSRuleTemplate.commonClassDao = commonClassDao; + } + + public CreateBRMSRuleTemplate() {} + + public Map<String, String> addRule(String rule, String ruleName, String description, String userID) { + Map<String,String> responseMap = new HashMap<>(); + if(rule!=null && !PolicyUtils.brmsRawValidate(rule).contains("[ERR")){ + List<Object> duplicateData = commonClassDao.checkDuplicateEntry(ruleName, "ruleName", BRMSParamTemplate.class); + if(duplicateData!=null && !duplicateData.isEmpty()){ + LOGGER.error("Import new service failed. Service already exists"); + responseMap.put("DBError", "EXISTS"); + return responseMap; + }else{ + BRMSParamTemplate brmsParamTemplate = new BRMSParamTemplate(); + brmsParamTemplate.setDescription(description); + brmsParamTemplate.setRuleName(ruleName); + brmsParamTemplate.setRule(rule); + UserInfo userCreatedBy = (UserInfo) commonClassDao.getEntityItem(UserInfo.class, "userLoginId", userID); + brmsParamTemplate.setUserCreatedBy(userCreatedBy); + commonClassDao.save(brmsParamTemplate); + LOGGER.info("Template created with " + ruleName + " by " + userID); + } + responseMap.put("success", "success"); + }else{ + LOGGER.debug("Error during validating the rule for creating record for BRMS Param Template"); + responseMap.put("error", "VALIDATION"); + } + return responseMap; + } + + public static boolean validateRuleParams(String rule) { + CreateBrmsParamPolicy policy = new CreateBrmsParamPolicy(); + Map<String, String> paramValues = policy.findType(rule); + for(String key : paramValues.keySet()) { + if(!PolicyUtils.SUCCESS.equals(PolicyUtils.policySpecialCharValidator(key))){ + return false; + } + } + return true; + } } diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/CreateBrmsParamPolicy.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/CreateBrmsParamPolicy.java index 2a13fb000..3d9a779e3 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/CreateBrmsParamPolicy.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/CreateBrmsParamPolicy.java @@ -69,496 +69,496 @@ import oasis.names.tc.xacml._3_0.core.schema.wd_17.RuleType; import oasis.names.tc.xacml._3_0.core.schema.wd_17.TargetType; public class CreateBrmsParamPolicy extends Policy { - - private static final Logger LOGGER = FlexLogger.getLogger(CreateBrmsParamPolicy.class); - - public CreateBrmsParamPolicy() { - super(); - } - - public CreateBrmsParamPolicy(PolicyRestAdapter policyAdapter) { - this.policyAdapter = policyAdapter; - this.policyAdapter.setConfigType(policyAdapter.getConfigType()); - - } - - public String expandConfigBody(String ruleContents, Map<String, String> brmsParamBody) { - - Map<String,String> copyMap=new HashMap<>(); - copyMap.putAll(brmsParamBody); - copyMap.put("policyName", policyName.substring(0, policyName.replace(".xml", "").lastIndexOf('.'))); - copyMap.put("policyScope", policyAdapter.getDomainDir()); - copyMap.put("policyVersion",policyAdapter.getHighestVersion().toString()); - copyMap.put("unique", ("p"+policyName+UUID.randomUUID().toString()).replaceAll("[^A-Za-z0-9]", "")); - - //Finding all the keys in the Map data-structure. - Iterator<String> iterator = copyMap.keySet().iterator(); - Pattern p; - Matcher m; - 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) : ""); - //Searching for a pattern in the String using the key. - p=Pattern.compile("\\$\\{"+output+"\\}"); - m=p.matcher(ruleContents); - //Replacing the value with the inputs provided by the user in the editor. - String finalInput = copyMap.get(input); - if(finalInput.contains("$")){ - finalInput = finalInput.replace("$", "\\$"); - } - ruleContents=m.replaceAll(finalInput); - } - return ruleContents; - } - + + private static final Logger LOGGER = FlexLogger.getLogger(CreateBrmsParamPolicy.class); + + public CreateBrmsParamPolicy() { + super(); + } + + public CreateBrmsParamPolicy(PolicyRestAdapter policyAdapter) { + this.policyAdapter = policyAdapter; + this.policyAdapter.setConfigType(policyAdapter.getConfigType()); + + } + + public String expandConfigBody(String ruleContents, Map<String, String> brmsParamBody) { + + Map<String,String> copyMap=new HashMap<>(); + copyMap.putAll(brmsParamBody); + copyMap.put("policyName", policyName.substring(0, policyName.replace(".xml", "").lastIndexOf('.'))); + copyMap.put("policyScope", policyAdapter.getDomainDir()); + copyMap.put("policyVersion",policyAdapter.getHighestVersion().toString()); + copyMap.put("unique", ("p"+policyName+UUID.randomUUID().toString()).replaceAll("[^A-Za-z0-9]", "")); + + //Finding all the keys in the Map data-structure. + Iterator<String> iterator = copyMap.keySet().iterator(); + Pattern p; + Matcher m; + 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) : ""); + //Searching for a pattern in the String using the key. + p=Pattern.compile("\\$\\{"+output+"\\}"); + m=p.matcher(ruleContents); + //Replacing the value with the inputs provided by the user in the editor. + String finalInput = copyMap.get(input); + if(finalInput.contains("$")){ + finalInput = finalInput.replace("$", "\\$"); + } + ruleContents=m.replaceAll(finalInput); + } + return ruleContents; + } + - // Utility to read json data from the existing file to a string - static String readFile(String path, Charset encoding) throws IOException { - byte[] encoded = Files.readAllBytes(Paths.get(path)); - return new String(encoded, encoding); - } - - // Saving the Configurations file at server location for config policy. - protected void saveConfigurations(String policyName, String ruleBody) { - if (policyName.endsWith(".xml")) { + // Utility to read json data from the existing file to a string + static String readFile(String path, Charset encoding) throws IOException { + byte[] encoded = Files.readAllBytes(Paths.get(path)); + return new String(encoded, encoding); + } + + // Saving the Configurations file at server location for config policy. + protected void saveConfigurations(String policyName, String ruleBody) { + if (policyName.endsWith(".xml")) { policyName = policyName.substring(0, policyName.lastIndexOf(".xml")); } - try (PrintWriter out = new PrintWriter(CONFIG_HOME + File.separator + policyName + ".txt")) { - String expandedBody=expandConfigBody(ruleBody,policyAdapter.getBrmsParamBody()); - out.println(expandedBody); - policyAdapter.setJsonBody(expandedBody); - policyAdapter.setConfigBodyData(expandedBody); - out.close(); - } catch (Exception e) { - PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "CreateBrmsParamPolicy", "Exception saving configuration file"); - } - } - - - // Here we are adding the extension for the configurations file based on the - // config type selection for saving. - private String getConfigFile(String filename) { - filename = FilenameUtils.removeExtension(filename); - if (filename.endsWith(".txt")) { - filename = filename.substring(0, filename.length() - 3); - } - - filename = filename + ".txt"; - return filename; - } - - // Validations for Config form - public boolean validateConfigForm() { - - // Validating mandatory Fields. - isValidForm = true; - return isValidForm; - - } - - @Override - public Map<String, String> savePolicies() throws PAPException { - - Map<String, String> successMap = new HashMap<>(); - if(isPolicyExists()){ - successMap.put("EXISTS", "This Policy already exist on the PAP"); - return successMap; - } - - if (!isPreparedToSave()) { - prepareToSave(); - } - // Until here we prepared the data and here calling the method to create - // xml. - Path newPolicyPath = null; - newPolicyPath = Paths.get(policyAdapter.getNewFileName()); - successMap = createPolicy(newPolicyPath,getCorrectPolicyDataObject()); - if(successMap == null){ - successMap = new HashMap<>(); - PolicyLogger.error("Failed to Update the Database Dictionary Tables."); - successMap.put("error", "DB UPDATE"); - } - return successMap; - } - - private String getValueFromDictionary(String templateName){ - String ruleTemplate = null; - CommonClassDaoImpl dbConnection = new CommonClassDaoImpl(); - String queryString="from BRMSParamTemplate where param_template_name= :templateName"; - SimpleBindings params = new SimpleBindings(); - params.put("templateName", templateName); - List<Object> result = dbConnection.getDataByQuery(queryString, params); - if(!result.isEmpty()){ - BRMSParamTemplate template = (BRMSParamTemplate) result.get(0); - ruleTemplate = template.getRule(); - } - return ruleTemplate; - } - - protected Map<String, String> findType(String rule) { - Map<String, String> mapFieldType= new HashMap<>(); - if(rule!=null){ - try { - StringBuilder params = new StringBuilder(); - Boolean flag = false; - Boolean comment = false; - String lines[] = rule.split("\n"); - for(String line : lines){ - if (line.isEmpty() || line.startsWith("//")) { - continue; - } - if (line.startsWith("/*")) { - comment = true; - continue; - } - if (line.contains("//") && !(line.contains("http://") || line.contains("https://"))){ - line = line.split("\\/\\/")[0]; - } - if (line.contains("/*")) { - comment = true; - if (line.contains("*/")) { - try { - comment = false; - line = line.split("\\/\\*")[0] - + line.split("\\*\\/")[1].replace("*/", ""); - } catch (Exception e) { - LOGGER.debug(e); - line = line.split("\\/\\*")[0]; - } - } else { - line = line.split("\\/\\*")[0]; - } - } - if (line.contains("*/")) { - comment = false; - try { - line = line.split("\\*\\/")[1].replace("*/", ""); - } catch (Exception e) { - LOGGER.debug(e); - line = ""; - } - } - if (comment) { - continue; - } - if (flag) { - params.append(line); - } - if (line.contains("declare Params")) { - params.append(line); - flag = true; - } - if (line.contains("end") && flag) { - break; - } - } - String param = params.toString().replace("declare Params", "").replace("end", "") - .replaceAll("\\s+", ""); - String[] components = param.split(":"); - String caption = ""; - for (int i = 0; i < components.length; i++) { - String type = ""; - if (i == 0) { - caption = components[i]; - } - if(caption.equals("")){ - break; - } - String nextComponent = ""; - try { - nextComponent = components[i + 1]; - } catch (Exception e) { - LOGGER.debug(e); - nextComponent = components[i]; - } - //If the type is of type String then we add the UI Item and type to the map. - if (nextComponent.startsWith("String")) { - type = "String"; - mapFieldType.put(caption, type); - caption = nextComponent.replace("String", ""); - } else if (nextComponent.startsWith("int")) { - type = "int"; - mapFieldType.put(caption, type); - caption = nextComponent.replace("int", ""); - } - } - } catch (Exception e) { - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, "CreateBrmsParamPolicy", "Exception parsing file in findType"); - } - } - return mapFieldType; - } - - // This is the method for preparing the policy for saving. We have broken it - // out - // separately because the fully configured policy is used for multiple - // things - @Override - public boolean prepareToSave() throws PAPException { - - if (isPreparedToSave()) { - // we have already done this - return true; - } - - int version = 0; - String policyID = policyAdapter.getPolicyID(); - version = policyAdapter.getHighestVersion(); - - // Create the Instance for pojo, PolicyType object is used in - // marshalling. - if (policyAdapter.getPolicyType().equals("Config")) { - PolicyType policyConfig = new PolicyType(); - - policyConfig.setVersion(Integer.toString(version)); - policyConfig.setPolicyId(policyID); - policyConfig.setTarget(new TargetType()); - policyAdapter.setData(policyConfig); - } - - policyName = policyAdapter.getNewFileName(); - - if (policyAdapter.getData() != null) { - Map<String,String> ruleAndUIValue= policyAdapter.getBrmsParamBody(); - String templateValue= ruleAndUIValue.get("templateName"); - String valueFromDictionary= getValueFromDictionary(templateValue); - - StringBuilder body = new StringBuilder(); - - try { - body.append("/* Autogenerated Code Please Don't change/remove this comment section. This is for the UI purpose. \n\t " + - "<$%BRMSParamTemplate=" + templateValue + "%$> \n"); - body.append("<%$Values="); - for (Map.Entry<String, String> entry : ruleAndUIValue.entrySet()) { - String uiKey = entry.getKey(); - if(!"templateName".equals(uiKey)) { - body.append(uiKey+":-:"+entry.getValue()+":|:"); - } - } - body.append("$%> \n*/ \n"); - body.append(valueFromDictionary + "\n"); - } - catch (Exception e) { - PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "CreateBrmsParamPolicy", "Exception saving policy"); - } - - saveConfigurations(policyName,body.toString()); - - // Make sure the filename ends with an extension - if (!policyName.endsWith(".xml")) { - policyName = policyName + ".xml"; - } - - PolicyType configPolicy = (PolicyType) policyAdapter.getData(); - - configPolicy.setDescription(policyAdapter.getPolicyDescription()); - - configPolicy.setRuleCombiningAlgId(policyAdapter.getRuleCombiningAlgId()); - - AllOfType allOfOne = new AllOfType(); - - String fileName = policyAdapter.getNewFileName(); - String name = fileName.substring(fileName.lastIndexOf("\\") + 1, fileName.length()); - if ((name == null) || (name.equals(""))) { - name = fileName.substring(fileName.lastIndexOf("/") + 1, - fileName.length()); - } - allOfOne.getMatch().add(createMatch("PolicyName", name)); - - - AllOfType allOf = new AllOfType(); - - // Match for ONAPName - allOf.getMatch().add(createMatch("ONAPName", policyAdapter.getOnapName())); - allOf.getMatch().add(createMatch("ConfigName", policyAdapter.getConfigName())); - // Match for riskType - allOf.getMatch().add(createDynamicMatch("RiskType", policyAdapter.getRiskType())); - // Match for riskLevel - allOf.getMatch().add(createDynamicMatch("RiskLevel", String.valueOf(policyAdapter.getRiskLevel()))); - // Match for riskguard - allOf.getMatch().add(createDynamicMatch("guard", policyAdapter.getGuard())); - // Match for ttlDate - allOf.getMatch().add(createDynamicMatch("TTLDate", policyAdapter.getTtlDate())); - AnyOfType anyOf = new AnyOfType(); - anyOf.getAllOf().add(allOfOne); - anyOf.getAllOf().add(allOf); - - TargetType target = new TargetType(); - target.getAnyOf().add(anyOf); - - // Adding the target to the policy element - configPolicy.setTarget((TargetType) target); - - RuleType rule = new RuleType(); - rule.setRuleId(policyAdapter.getRuleID()); - - rule.setEffect(EffectType.PERMIT); - - // Create Target in Rule - AllOfType allOfInRule = new AllOfType(); - - // Creating match for ACCESS in rule target - MatchType accessMatch = new MatchType(); - AttributeValueType accessAttributeValue = new AttributeValueType(); - accessAttributeValue.setDataType(STRING_DATATYPE); - accessAttributeValue.getContent().add("ACCESS"); - accessMatch.setAttributeValue(accessAttributeValue); - AttributeDesignatorType accessAttributeDesignator = new AttributeDesignatorType(); - URI accessURI = null; - try { - accessURI = new URI(ACTION_ID); - } catch (URISyntaxException e) { - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "CreateBrmsParamPolicy", "Exception creating ACCESS URI"); - } - accessAttributeDesignator.setCategory(CATEGORY_ACTION); - accessAttributeDesignator.setDataType(STRING_DATATYPE); - accessAttributeDesignator.setAttributeId(new IdentifierImpl( - accessURI).stringValue()); - accessMatch.setAttributeDesignator(accessAttributeDesignator); - accessMatch.setMatchId(FUNCTION_STRING_EQUAL_IGNORE); - - // Creating Config Match in rule Target - MatchType configMatch = new MatchType(); - AttributeValueType configAttributeValue = new AttributeValueType(); - configAttributeValue.setDataType(STRING_DATATYPE); - - configAttributeValue.getContent().add("Config"); - - configMatch.setAttributeValue(configAttributeValue); - AttributeDesignatorType configAttributeDesignator = new AttributeDesignatorType(); - URI configURI = null; - try { - configURI = new URI(RESOURCE_ID); - } catch (URISyntaxException e) { - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "CreateBrmsParamPolicy", "Exception creating Config URI"); - } - - configAttributeDesignator.setCategory(CATEGORY_RESOURCE); - configAttributeDesignator.setDataType(STRING_DATATYPE); - configAttributeDesignator.setAttributeId(new IdentifierImpl(configURI).stringValue()); - configMatch.setAttributeDesignator(configAttributeDesignator); - configMatch.setMatchId(FUNCTION_STRING_EQUAL_IGNORE); - - allOfInRule.getMatch().add(accessMatch); - allOfInRule.getMatch().add(configMatch); - - AnyOfType anyOfInRule = new AnyOfType(); - anyOfInRule.getAllOf().add(allOfInRule); - - TargetType targetInRule = new TargetType(); - targetInRule.getAnyOf().add(anyOfInRule); - - rule.setTarget(targetInRule); - rule.setAdviceExpressions(getAdviceExpressions(version, policyName)); - - configPolicy - .getCombinerParametersOrRuleCombinerParametersOrVariableDefinition() - .add(rule); - policyAdapter.setPolicyData(configPolicy); - - } else { - PolicyLogger.error("Unsupported data object." - + policyAdapter.getData().getClass().getCanonicalName()); - } - setPreparedToSave(true); - return true; - } - - // Data required for Advice part is setting here. - private AdviceExpressionsType getAdviceExpressions(int version, - String fileName) { - - //Policy Config ID Assignment - AdviceExpressionsType advices = new AdviceExpressionsType(); - AdviceExpressionType advice = new AdviceExpressionType(); - advice.setAdviceId("BRMSPARAMID"); - advice.setAppliesTo(EffectType.PERMIT); - // For Configuration - AttributeAssignmentExpressionType assignment1 = new AttributeAssignmentExpressionType(); - assignment1.setAttributeId("type"); - assignment1.setCategory(CATEGORY_RESOURCE); - assignment1.setIssuer(""); - AttributeValueType configNameAttributeValue = new AttributeValueType(); - configNameAttributeValue.setDataType(STRING_DATATYPE); - configNameAttributeValue.getContent().add("Configuration"); - assignment1.setExpression(new ObjectFactory() - .createAttributeValue(configNameAttributeValue)); - advice.getAttributeAssignmentExpression().add(assignment1); - - // For Config file Url if configurations are provided. - // URL ID Assignment - AttributeAssignmentExpressionType assignment2 = new AttributeAssignmentExpressionType(); - assignment2.setAttributeId("URLID"); - assignment2.setCategory(CATEGORY_RESOURCE); - assignment2.setIssuer(""); - AttributeValueType attributeValue = new AttributeValueType(); - attributeValue.setDataType(URI_DATATYPE); - - String content = CONFIG_URL + "/Config/"+ getConfigFile(policyName); - - attributeValue.getContent().add(content); - assignment2.setExpression(new ObjectFactory() - .createAttributeValue(attributeValue)); - advice.getAttributeAssignmentExpression().add(assignment2); - - // Policy Name Assignment - AttributeAssignmentExpressionType assignment3 = new AttributeAssignmentExpressionType(); - assignment3.setAttributeId("PolicyName"); - assignment3.setCategory(CATEGORY_RESOURCE); - assignment3.setIssuer(""); - AttributeValueType attributeValue3 = new AttributeValueType(); - attributeValue3.setDataType(STRING_DATATYPE); - fileName = FilenameUtils.removeExtension(fileName); - fileName = fileName + ".xml"; - String name = fileName.substring(fileName.lastIndexOf("\\") + 1, - fileName.length()); - if ((name == null) || (name.equals(""))) { - name = fileName.substring(fileName.lastIndexOf("/") + 1, - fileName.length()); - } - attributeValue3.getContent().add(name); - assignment3.setExpression(new ObjectFactory() - .createAttributeValue(attributeValue3)); - advice.getAttributeAssignmentExpression().add(assignment3); - - // Version Number Assignment - AttributeAssignmentExpressionType assignment4 = new AttributeAssignmentExpressionType(); - assignment4.setAttributeId("VersionNumber"); - assignment4.setCategory(CATEGORY_RESOURCE); - assignment4.setIssuer(""); - AttributeValueType configNameAttributeValue4 = new AttributeValueType(); - configNameAttributeValue4.setDataType(STRING_DATATYPE); - configNameAttributeValue4.getContent().add(Integer.toString(version)); - assignment4.setExpression(new ObjectFactory() - .createAttributeValue(configNameAttributeValue4)); - advice.getAttributeAssignmentExpression().add(assignment4); - - // Onap Name Assignment - AttributeAssignmentExpressionType assignment5 = new AttributeAssignmentExpressionType(); - assignment5.setAttributeId("matching:" + ONAPID); - assignment5.setCategory(CATEGORY_RESOURCE); - assignment5.setIssuer(""); - AttributeValueType configNameAttributeValue5 = new AttributeValueType(); - configNameAttributeValue5.setDataType(STRING_DATATYPE); - configNameAttributeValue5.getContent().add(policyAdapter.getOnapName()); - assignment5.setExpression(new ObjectFactory() - .createAttributeValue(configNameAttributeValue5)); - advice.getAttributeAssignmentExpression().add(assignment5); - - - //Config Name Assignment - AttributeAssignmentExpressionType assignment6 = new AttributeAssignmentExpressionType(); - assignment6.setAttributeId("matching:" +CONFIGID); - assignment6.setCategory(CATEGORY_RESOURCE); - assignment6.setIssuer(""); - AttributeValueType configNameAttributeValue6 = new AttributeValueType(); - configNameAttributeValue6.setDataType(STRING_DATATYPE); - configNameAttributeValue6.getContent().add(policyAdapter.getConfigName()); - assignment6.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue6)); - advice.getAttributeAssignmentExpression().add(assignment6); + try (PrintWriter out = new PrintWriter(CONFIG_HOME + File.separator + policyName + ".txt")) { + String expandedBody=expandConfigBody(ruleBody,policyAdapter.getBrmsParamBody()); + out.println(expandedBody); + policyAdapter.setJsonBody(expandedBody); + policyAdapter.setConfigBodyData(expandedBody); + out.close(); + } catch (Exception e) { + PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "CreateBrmsParamPolicy", "Exception saving configuration file"); + } + } + + + // Here we are adding the extension for the configurations file based on the + // config type selection for saving. + private String getConfigFile(String filename) { + filename = FilenameUtils.removeExtension(filename); + if (filename.endsWith(".txt")) { + filename = filename.substring(0, filename.length() - 3); + } + + filename = filename + ".txt"; + return filename; + } + + // Validations for Config form + public boolean validateConfigForm() { + + // Validating mandatory Fields. + isValidForm = true; + return isValidForm; + + } + + @Override + public Map<String, String> savePolicies() throws PAPException { + + Map<String, String> successMap = new HashMap<>(); + if(isPolicyExists()){ + successMap.put("EXISTS", "This Policy already exist on the PAP"); + return successMap; + } + + if (!isPreparedToSave()) { + prepareToSave(); + } + // Until here we prepared the data and here calling the method to create + // xml. + Path newPolicyPath = null; + newPolicyPath = Paths.get(policyAdapter.getNewFileName()); + successMap = createPolicy(newPolicyPath,getCorrectPolicyDataObject()); + if(successMap == null){ + successMap = new HashMap<>(); + PolicyLogger.error("Failed to Update the Database Dictionary Tables."); + successMap.put("error", "DB UPDATE"); + } + return successMap; + } + + private String getValueFromDictionary(String templateName){ + String ruleTemplate = null; + CommonClassDaoImpl dbConnection = new CommonClassDaoImpl(); + String queryString="from BRMSParamTemplate where param_template_name= :templateName"; + SimpleBindings params = new SimpleBindings(); + params.put("templateName", templateName); + List<Object> result = dbConnection.getDataByQuery(queryString, params); + if(!result.isEmpty()){ + BRMSParamTemplate template = (BRMSParamTemplate) result.get(0); + ruleTemplate = template.getRule(); + } + return ruleTemplate; + } + + protected Map<String, String> findType(String rule) { + Map<String, String> mapFieldType= new HashMap<>(); + if(rule!=null){ + try { + StringBuilder params = new StringBuilder(); + Boolean flag = false; + Boolean comment = false; + String lines[] = rule.split("\n"); + for(String line : lines){ + if (line.isEmpty() || line.startsWith("//")) { + continue; + } + if (line.startsWith("/*")) { + comment = true; + continue; + } + if (line.contains("//") && !(line.contains("http://") || line.contains("https://"))){ + line = line.split("\\/\\/")[0]; + } + if (line.contains("/*")) { + comment = true; + if (line.contains("*/")) { + try { + comment = false; + line = line.split("\\/\\*")[0] + + line.split("\\*\\/")[1].replace("*/", ""); + } catch (Exception e) { + LOGGER.debug(e); + line = line.split("\\/\\*")[0]; + } + } else { + line = line.split("\\/\\*")[0]; + } + } + if (line.contains("*/")) { + comment = false; + try { + line = line.split("\\*\\/")[1].replace("*/", ""); + } catch (Exception e) { + LOGGER.debug(e); + line = ""; + } + } + if (comment) { + continue; + } + if (flag) { + params.append(line); + } + if (line.contains("declare Params")) { + params.append(line); + flag = true; + } + if (line.contains("end") && flag) { + break; + } + } + String param = params.toString().replace("declare Params", "").replace("end", "") + .replaceAll("\\s+", ""); + String[] components = param.split(":"); + String caption = ""; + for (int i = 0; i < components.length; i++) { + String type = ""; + if (i == 0) { + caption = components[i]; + } + if(caption.equals("")){ + break; + } + String nextComponent = ""; + try { + nextComponent = components[i + 1]; + } catch (Exception e) { + LOGGER.debug(e); + nextComponent = components[i]; + } + //If the type is of type String then we add the UI Item and type to the map. + if (nextComponent.startsWith("String")) { + type = "String"; + mapFieldType.put(caption, type); + caption = nextComponent.replace("String", ""); + } else if (nextComponent.startsWith("int")) { + type = "int"; + mapFieldType.put(caption, type); + caption = nextComponent.replace("int", ""); + } + } + } catch (Exception e) { + PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, "CreateBrmsParamPolicy", "Exception parsing file in findType"); + } + } + return mapFieldType; + } + + // This is the method for preparing the policy for saving. We have broken it + // out + // separately because the fully configured policy is used for multiple + // things + @Override + public boolean prepareToSave() throws PAPException { + + if (isPreparedToSave()) { + // we have already done this + return true; + } + + int version = 0; + String policyID = policyAdapter.getPolicyID(); + version = policyAdapter.getHighestVersion(); + + // Create the Instance for pojo, PolicyType object is used in + // marshalling. + if (policyAdapter.getPolicyType().equals("Config")) { + PolicyType policyConfig = new PolicyType(); + + policyConfig.setVersion(Integer.toString(version)); + policyConfig.setPolicyId(policyID); + policyConfig.setTarget(new TargetType()); + policyAdapter.setData(policyConfig); + } + + policyName = policyAdapter.getNewFileName(); + + if (policyAdapter.getData() != null) { + Map<String,String> ruleAndUIValue= policyAdapter.getBrmsParamBody(); + String templateValue= ruleAndUIValue.get("templateName"); + String valueFromDictionary= getValueFromDictionary(templateValue); + + StringBuilder body = new StringBuilder(); + + try { + body.append("/* Autogenerated Code Please Don't change/remove this comment section. This is for the UI purpose. \n\t " + + "<$%BRMSParamTemplate=" + templateValue + "%$> \n"); + body.append("<%$Values="); + for (Map.Entry<String, String> entry : ruleAndUIValue.entrySet()) { + String uiKey = entry.getKey(); + if(!"templateName".equals(uiKey)) { + body.append(uiKey+":-:"+entry.getValue()+":|:"); + } + } + body.append("$%> \n*/ \n"); + body.append(valueFromDictionary + "\n"); + } + catch (Exception e) { + PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "CreateBrmsParamPolicy", "Exception saving policy"); + } + + saveConfigurations(policyName,body.toString()); + + // Make sure the filename ends with an extension + if (!policyName.endsWith(".xml")) { + policyName = policyName + ".xml"; + } + + PolicyType configPolicy = (PolicyType) policyAdapter.getData(); + + configPolicy.setDescription(policyAdapter.getPolicyDescription()); + + configPolicy.setRuleCombiningAlgId(policyAdapter.getRuleCombiningAlgId()); + + AllOfType allOfOne = new AllOfType(); + + String fileName = policyAdapter.getNewFileName(); + String name = fileName.substring(fileName.lastIndexOf("\\") + 1, fileName.length()); + if ((name == null) || (name.equals(""))) { + name = fileName.substring(fileName.lastIndexOf("/") + 1, + fileName.length()); + } + allOfOne.getMatch().add(createMatch("PolicyName", name)); + + + AllOfType allOf = new AllOfType(); + + // Match for ONAPName + allOf.getMatch().add(createMatch("ONAPName", policyAdapter.getOnapName())); + allOf.getMatch().add(createMatch("ConfigName", policyAdapter.getConfigName())); + // Match for riskType + allOf.getMatch().add(createDynamicMatch("RiskType", policyAdapter.getRiskType())); + // Match for riskLevel + allOf.getMatch().add(createDynamicMatch("RiskLevel", String.valueOf(policyAdapter.getRiskLevel()))); + // Match for riskguard + allOf.getMatch().add(createDynamicMatch("guard", policyAdapter.getGuard())); + // Match for ttlDate + allOf.getMatch().add(createDynamicMatch("TTLDate", policyAdapter.getTtlDate())); + AnyOfType anyOf = new AnyOfType(); + anyOf.getAllOf().add(allOfOne); + anyOf.getAllOf().add(allOf); + + TargetType target = new TargetType(); + target.getAnyOf().add(anyOf); + + // Adding the target to the policy element + configPolicy.setTarget((TargetType) target); + + RuleType rule = new RuleType(); + rule.setRuleId(policyAdapter.getRuleID()); + + rule.setEffect(EffectType.PERMIT); + + // Create Target in Rule + AllOfType allOfInRule = new AllOfType(); + + // Creating match for ACCESS in rule target + MatchType accessMatch = new MatchType(); + AttributeValueType accessAttributeValue = new AttributeValueType(); + accessAttributeValue.setDataType(STRING_DATATYPE); + accessAttributeValue.getContent().add("ACCESS"); + accessMatch.setAttributeValue(accessAttributeValue); + AttributeDesignatorType accessAttributeDesignator = new AttributeDesignatorType(); + URI accessURI = null; + try { + accessURI = new URI(ACTION_ID); + } catch (URISyntaxException e) { + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "CreateBrmsParamPolicy", "Exception creating ACCESS URI"); + } + accessAttributeDesignator.setCategory(CATEGORY_ACTION); + accessAttributeDesignator.setDataType(STRING_DATATYPE); + accessAttributeDesignator.setAttributeId(new IdentifierImpl( + accessURI).stringValue()); + accessMatch.setAttributeDesignator(accessAttributeDesignator); + accessMatch.setMatchId(FUNCTION_STRING_EQUAL_IGNORE); + + // Creating Config Match in rule Target + MatchType configMatch = new MatchType(); + AttributeValueType configAttributeValue = new AttributeValueType(); + configAttributeValue.setDataType(STRING_DATATYPE); + + configAttributeValue.getContent().add("Config"); + + configMatch.setAttributeValue(configAttributeValue); + AttributeDesignatorType configAttributeDesignator = new AttributeDesignatorType(); + URI configURI = null; + try { + configURI = new URI(RESOURCE_ID); + } catch (URISyntaxException e) { + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "CreateBrmsParamPolicy", "Exception creating Config URI"); + } + + configAttributeDesignator.setCategory(CATEGORY_RESOURCE); + configAttributeDesignator.setDataType(STRING_DATATYPE); + configAttributeDesignator.setAttributeId(new IdentifierImpl(configURI).stringValue()); + configMatch.setAttributeDesignator(configAttributeDesignator); + configMatch.setMatchId(FUNCTION_STRING_EQUAL_IGNORE); + + allOfInRule.getMatch().add(accessMatch); + allOfInRule.getMatch().add(configMatch); + + AnyOfType anyOfInRule = new AnyOfType(); + anyOfInRule.getAllOf().add(allOfInRule); + + TargetType targetInRule = new TargetType(); + targetInRule.getAnyOf().add(anyOfInRule); + + rule.setTarget(targetInRule); + rule.setAdviceExpressions(getAdviceExpressions(version, policyName)); + + configPolicy + .getCombinerParametersOrRuleCombinerParametersOrVariableDefinition() + .add(rule); + policyAdapter.setPolicyData(configPolicy); + + } else { + PolicyLogger.error("Unsupported data object." + + policyAdapter.getData().getClass().getCanonicalName()); + } + setPreparedToSave(true); + return true; + } + + // Data required for Advice part is setting here. + private AdviceExpressionsType getAdviceExpressions(int version, + String fileName) { + + //Policy Config ID Assignment + AdviceExpressionsType advices = new AdviceExpressionsType(); + AdviceExpressionType advice = new AdviceExpressionType(); + advice.setAdviceId("BRMSPARAMID"); + advice.setAppliesTo(EffectType.PERMIT); + // For Configuration + AttributeAssignmentExpressionType assignment1 = new AttributeAssignmentExpressionType(); + assignment1.setAttributeId("type"); + assignment1.setCategory(CATEGORY_RESOURCE); + assignment1.setIssuer(""); + AttributeValueType configNameAttributeValue = new AttributeValueType(); + configNameAttributeValue.setDataType(STRING_DATATYPE); + configNameAttributeValue.getContent().add("Configuration"); + assignment1.setExpression(new ObjectFactory() + .createAttributeValue(configNameAttributeValue)); + advice.getAttributeAssignmentExpression().add(assignment1); + + // For Config file Url if configurations are provided. + // URL ID Assignment + AttributeAssignmentExpressionType assignment2 = new AttributeAssignmentExpressionType(); + assignment2.setAttributeId("URLID"); + assignment2.setCategory(CATEGORY_RESOURCE); + assignment2.setIssuer(""); + AttributeValueType attributeValue = new AttributeValueType(); + attributeValue.setDataType(URI_DATATYPE); + + String content = CONFIG_URL + "/Config/"+ getConfigFile(policyName); + + attributeValue.getContent().add(content); + assignment2.setExpression(new ObjectFactory() + .createAttributeValue(attributeValue)); + advice.getAttributeAssignmentExpression().add(assignment2); + + // Policy Name Assignment + AttributeAssignmentExpressionType assignment3 = new AttributeAssignmentExpressionType(); + assignment3.setAttributeId("PolicyName"); + assignment3.setCategory(CATEGORY_RESOURCE); + assignment3.setIssuer(""); + AttributeValueType attributeValue3 = new AttributeValueType(); + attributeValue3.setDataType(STRING_DATATYPE); + fileName = FilenameUtils.removeExtension(fileName); + fileName = fileName + ".xml"; + String name = fileName.substring(fileName.lastIndexOf("\\") + 1, + fileName.length()); + if ((name == null) || (name.equals(""))) { + name = fileName.substring(fileName.lastIndexOf("/") + 1, + fileName.length()); + } + attributeValue3.getContent().add(name); + assignment3.setExpression(new ObjectFactory() + .createAttributeValue(attributeValue3)); + advice.getAttributeAssignmentExpression().add(assignment3); + + // Version Number Assignment + AttributeAssignmentExpressionType assignment4 = new AttributeAssignmentExpressionType(); + assignment4.setAttributeId("VersionNumber"); + assignment4.setCategory(CATEGORY_RESOURCE); + assignment4.setIssuer(""); + AttributeValueType configNameAttributeValue4 = new AttributeValueType(); + configNameAttributeValue4.setDataType(STRING_DATATYPE); + configNameAttributeValue4.getContent().add(Integer.toString(version)); + assignment4.setExpression(new ObjectFactory() + .createAttributeValue(configNameAttributeValue4)); + advice.getAttributeAssignmentExpression().add(assignment4); + + // Onap Name Assignment + AttributeAssignmentExpressionType assignment5 = new AttributeAssignmentExpressionType(); + assignment5.setAttributeId("matching:" + ONAPID); + assignment5.setCategory(CATEGORY_RESOURCE); + assignment5.setIssuer(""); + AttributeValueType configNameAttributeValue5 = new AttributeValueType(); + configNameAttributeValue5.setDataType(STRING_DATATYPE); + configNameAttributeValue5.getContent().add(policyAdapter.getOnapName()); + assignment5.setExpression(new ObjectFactory() + .createAttributeValue(configNameAttributeValue5)); + advice.getAttributeAssignmentExpression().add(assignment5); + + + //Config Name Assignment + AttributeAssignmentExpressionType assignment6 = new AttributeAssignmentExpressionType(); + assignment6.setAttributeId("matching:" +CONFIGID); + assignment6.setCategory(CATEGORY_RESOURCE); + assignment6.setIssuer(""); + AttributeValueType configNameAttributeValue6 = new AttributeValueType(); + configNameAttributeValue6.setDataType(STRING_DATATYPE); + configNameAttributeValue6.getContent().add(policyAdapter.getConfigName()); + assignment6.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue6)); + advice.getAttributeAssignmentExpression().add(assignment6); // Adding Controller Information. if(policyAdapter.getBrmsController()!=null){ BRMSDictionaryController brmsDicitonaryController = new BRMSDictionaryController(); @@ -581,69 +581,69 @@ public class CreateBrmsParamPolicy extends Policy { } // Dynamic Field Config Attributes. - Map<String, String> dynamicFieldConfigAttributes = policyAdapter.getDynamicFieldConfigAttributes(); - for (Entry<String, String> map : dynamicFieldConfigAttributes.entrySet()) { - advice.getAttributeAssignmentExpression().add(createResponseAttributes("key:"+map.getKey(), map.getValue())); - } - - //Risk Attributes - AttributeAssignmentExpressionType assignment8 = new AttributeAssignmentExpressionType(); - assignment8.setAttributeId("RiskType"); - assignment8.setCategory(CATEGORY_RESOURCE); - assignment8.setIssuer(""); - - AttributeValueType configNameAttributeValue8 = new AttributeValueType(); - configNameAttributeValue8.setDataType(STRING_DATATYPE); - configNameAttributeValue8.getContent().add(policyAdapter.getRiskType()); - assignment8.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue8)); - - advice.getAttributeAssignmentExpression().add(assignment8); - - AttributeAssignmentExpressionType assignment9 = new AttributeAssignmentExpressionType(); - assignment9.setAttributeId("RiskLevel"); - assignment9.setCategory(CATEGORY_RESOURCE); - assignment9.setIssuer(""); - - AttributeValueType configNameAttributeValue9 = new AttributeValueType(); - configNameAttributeValue9.setDataType(STRING_DATATYPE); - configNameAttributeValue9.getContent().add(policyAdapter.getRiskLevel()); - assignment9.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue9)); - - advice.getAttributeAssignmentExpression().add(assignment9); - - AttributeAssignmentExpressionType assignment10 = new AttributeAssignmentExpressionType(); - assignment10.setAttributeId("guard"); - assignment10.setCategory(CATEGORY_RESOURCE); - assignment10.setIssuer(""); - - AttributeValueType configNameAttributeValue10 = new AttributeValueType(); - configNameAttributeValue10.setDataType(STRING_DATATYPE); - configNameAttributeValue10.getContent().add(policyAdapter.getGuard()); - assignment10.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue10)); - - advice.getAttributeAssignmentExpression().add(assignment10); - - AttributeAssignmentExpressionType assignment11 = new AttributeAssignmentExpressionType(); - assignment11.setAttributeId("TTLDate"); - assignment11.setCategory(CATEGORY_RESOURCE); - assignment11.setIssuer(""); - - AttributeValueType configNameAttributeValue11 = new AttributeValueType(); - configNameAttributeValue11.setDataType(STRING_DATATYPE); - configNameAttributeValue11.getContent().add(policyAdapter.getTtlDate()); - assignment11.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue11)); - - advice.getAttributeAssignmentExpression().add(assignment11); - - advices.getAdviceExpression().add(advice); - return advices; - } - - @Override - public Object getCorrectPolicyDataObject() { - return policyAdapter.getData(); - } - + Map<String, String> dynamicFieldConfigAttributes = policyAdapter.getDynamicFieldConfigAttributes(); + for (Entry<String, String> map : dynamicFieldConfigAttributes.entrySet()) { + advice.getAttributeAssignmentExpression().add(createResponseAttributes("key:"+map.getKey(), map.getValue())); + } + + //Risk Attributes + AttributeAssignmentExpressionType assignment8 = new AttributeAssignmentExpressionType(); + assignment8.setAttributeId("RiskType"); + assignment8.setCategory(CATEGORY_RESOURCE); + assignment8.setIssuer(""); + + AttributeValueType configNameAttributeValue8 = new AttributeValueType(); + configNameAttributeValue8.setDataType(STRING_DATATYPE); + configNameAttributeValue8.getContent().add(policyAdapter.getRiskType()); + assignment8.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue8)); + + advice.getAttributeAssignmentExpression().add(assignment8); + + AttributeAssignmentExpressionType assignment9 = new AttributeAssignmentExpressionType(); + assignment9.setAttributeId("RiskLevel"); + assignment9.setCategory(CATEGORY_RESOURCE); + assignment9.setIssuer(""); + + AttributeValueType configNameAttributeValue9 = new AttributeValueType(); + configNameAttributeValue9.setDataType(STRING_DATATYPE); + configNameAttributeValue9.getContent().add(policyAdapter.getRiskLevel()); + assignment9.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue9)); + + advice.getAttributeAssignmentExpression().add(assignment9); + + AttributeAssignmentExpressionType assignment10 = new AttributeAssignmentExpressionType(); + assignment10.setAttributeId("guard"); + assignment10.setCategory(CATEGORY_RESOURCE); + assignment10.setIssuer(""); + + AttributeValueType configNameAttributeValue10 = new AttributeValueType(); + configNameAttributeValue10.setDataType(STRING_DATATYPE); + configNameAttributeValue10.getContent().add(policyAdapter.getGuard()); + assignment10.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue10)); + + advice.getAttributeAssignmentExpression().add(assignment10); + + AttributeAssignmentExpressionType assignment11 = new AttributeAssignmentExpressionType(); + assignment11.setAttributeId("TTLDate"); + assignment11.setCategory(CATEGORY_RESOURCE); + assignment11.setIssuer(""); + + AttributeValueType configNameAttributeValue11 = new AttributeValueType(); + configNameAttributeValue11.setDataType(STRING_DATATYPE); + configNameAttributeValue11.getContent().add(policyAdapter.getTtlDate()); + assignment11.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue11)); + + advice.getAttributeAssignmentExpression().add(assignment11); + + advices.getAdviceExpression().add(advice); + return advices; + } + + @Override + public Object getCorrectPolicyDataObject() { + return policyAdapter.getData(); + } + private AttributeAssignmentExpressionType createResponseAttributes(String key, String value){ AttributeAssignmentExpressionType assignment7 = new AttributeAssignmentExpressionType(); assignment7.setAttributeId(key); diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/CreateBrmsRawPolicy.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/CreateBrmsRawPolicy.java index 0bac0e066..7290f4cd8 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/CreateBrmsRawPolicy.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/CreateBrmsRawPolicy.java @@ -59,336 +59,336 @@ import oasis.names.tc.xacml._3_0.core.schema.wd_17.TargetType; public class CreateBrmsRawPolicy extends Policy { - - public CreateBrmsRawPolicy() { - super(); - } - - public CreateBrmsRawPolicy(PolicyRestAdapter policyAdapter) { - this.policyAdapter = policyAdapter; - this.policyAdapter.setConfigType(policyAdapter.getConfigType()); - - } - - // Saving the Configurations file at server location for CreateBrmsRawPolicy policy. - protected void saveConfigurations(String policyName, String jsonBody) { - - if (policyName.endsWith(".xml")) { - policyName = policyName.substring(0, - policyName.lastIndexOf(".xml")); - } - try (PrintWriter out = new PrintWriter(CONFIG_HOME + File.separator + policyName + ".txt")){ - out.println(jsonBody); - } catch (Exception e) { - PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "CreateBrmsRawPolicy", "Exception saving configurations file"); - } - } - - // Utility to read json data from the existing file to a string - static String readFile(String path, Charset encoding) throws IOException { - - byte[] encoded = Files.readAllBytes(Paths.get(path)); - return new String(encoded, encoding); - - } - - // Here we are adding the extension for the configurations file based on the - // config type selection for saving. - private String getConfigFile(String filename) { - filename = FilenameUtils.removeExtension(filename); - if (filename.endsWith(".txt")) { - filename = filename.substring(0, filename.length() - 3); - } - - filename = filename + ".txt"; - return filename; - } - - // Validations for Config form - public boolean validateConfigForm() { - - // Validating mandatory Fields. - isValidForm = true; - return isValidForm; - - } - - @Override - public Map<String, String> savePolicies() throws PAPException { - - Map<String, String> successMap = new HashMap<>(); - if(isPolicyExists()){ - successMap.put("EXISTS", "This Policy already exist on the PAP"); - return successMap; - } - - if (!isPreparedToSave()) { - prepareToSave(); - } - // Until here we prepared the data and here calling the method to create - // xml. - Path newPolicyPath = null; - newPolicyPath = Paths.get(policyAdapter.getNewFileName()); - - successMap = createPolicy(newPolicyPath, getCorrectPolicyDataObject()); - if (successMap == null) { - successMap = new HashMap<>(); - PolicyLogger.error("Failed to Update the Database Dictionary Tables."); - successMap.put("error", "DB UPDATE"); - } - - return successMap; - } - - // This is the method for preparing the policy for saving. We have broken it - // out - // separately because the fully configured policy is used for multiple - // things - @Override - public boolean prepareToSave() throws PAPException { - - if (isPreparedToSave()) { - // we have already done this - return true; - } - - int version = 0; - String policyID = policyAdapter.getPolicyID(); - version = policyAdapter.getHighestVersion(); - - // Create the Instance for pojo, PolicyType object is used in - // marshalling. - if (policyAdapter.getPolicyType().equals("Config")) { - PolicyType policyConfig = new PolicyType(); - - policyConfig.setVersion(Integer.toString(version)); - policyConfig.setPolicyId(policyID); - policyConfig.setTarget(new TargetType()); - policyAdapter.setData(policyConfig); - } - - policyName = policyAdapter.getNewFileName(); - - if (policyAdapter.getData() != null) { - //String jsonBody = policyAdapter.getJsonBody(); - String configBody=policyAdapter.getConfigBodyData(); - saveConfigurations(policyName, configBody); - - // Make sure the filename ends with an extension - if (policyName.endsWith(".xml") == false) { - policyName = policyName + ".xml"; - } - - PolicyType configPolicy = (PolicyType) policyAdapter.getData(); - - configPolicy.setDescription(policyAdapter.getPolicyDescription()); - - configPolicy.setRuleCombiningAlgId(policyAdapter.getRuleCombiningAlgId()); - - AllOfType allOfOne = new AllOfType(); - String fileName = policyAdapter.getNewFileName(); - String name = fileName.substring(fileName.lastIndexOf("\\") + 1, fileName.length()); - if ((name == null) || (name.equals(""))) { - name = fileName.substring(fileName.lastIndexOf("/") + 1, - fileName.length()); - } - allOfOne.getMatch().add(createMatch("PolicyName", name)); - - - AllOfType allOf = new AllOfType(); - - // Match for ONAPName - allOf.getMatch().add(createMatch("ONAPName", policyAdapter.getOnapName())); - allOf.getMatch().add(createMatch("ConfigName", policyAdapter.getConfigName())); - // Match for riskType - allOf.getMatch().add(createDynamicMatch("RiskType", policyAdapter.getRiskType())); - // Match for riskLevel - allOf.getMatch().add(createDynamicMatch("RiskLevel", String.valueOf(policyAdapter.getRiskLevel()))); - // Match for riskguard - allOf.getMatch().add(createDynamicMatch("guard", policyAdapter.getGuard())); - // Match for ttlDate - allOf.getMatch().add(createDynamicMatch("TTLDate", policyAdapter.getTtlDate())); - AnyOfType anyOf = new AnyOfType(); - anyOf.getAllOf().add(allOfOne); - anyOf.getAllOf().add(allOf); - - TargetType target = new TargetType(); - ((TargetType) target).getAnyOf().add(anyOf); - - // Adding the target to the policy element - configPolicy.setTarget((TargetType) target); - - RuleType rule = new RuleType(); - rule.setRuleId(policyAdapter.getRuleID()); - - rule.setEffect(EffectType.PERMIT); - - // Create Target in Rule - AllOfType allOfInRule = new AllOfType(); - - // Creating match for ACCESS in rule target - MatchType accessMatch = new MatchType(); - AttributeValueType accessAttributeValue = new AttributeValueType(); - accessAttributeValue.setDataType(STRING_DATATYPE); - accessAttributeValue.getContent().add("ACCESS"); - accessMatch.setAttributeValue(accessAttributeValue); - AttributeDesignatorType accessAttributeDesignator = new AttributeDesignatorType(); - URI accessURI = null; - try { - accessURI = new URI(ACTION_ID); - } catch (URISyntaxException e) { - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "CreateBrmsRawPolicy", "Exception creating ACCESS URI"); - } - accessAttributeDesignator.setCategory(CATEGORY_ACTION); - accessAttributeDesignator.setDataType(STRING_DATATYPE); - accessAttributeDesignator.setAttributeId(new IdentifierImpl( - accessURI).stringValue()); - accessMatch.setAttributeDesignator(accessAttributeDesignator); - accessMatch.setMatchId(FUNCTION_STRING_EQUAL_IGNORE); - - // Creating Config Match in rule Target - MatchType configMatch = new MatchType(); - AttributeValueType configAttributeValue = new AttributeValueType(); - configAttributeValue.setDataType(STRING_DATATYPE); - - configAttributeValue.getContent().add("Config"); - - configMatch.setAttributeValue(configAttributeValue); - AttributeDesignatorType configAttributeDesignator = new AttributeDesignatorType(); - URI configURI = null; - try { - configURI = new URI(RESOURCE_ID); - } catch (URISyntaxException e) { - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "CreateBrmsRawPolicy", "Exception creating Config URI"); - } - - configAttributeDesignator.setCategory(CATEGORY_RESOURCE); - configAttributeDesignator.setDataType(STRING_DATATYPE); - configAttributeDesignator.setAttributeId(new IdentifierImpl( - configURI).stringValue()); - configMatch.setAttributeDesignator(configAttributeDesignator); - configMatch.setMatchId(FUNCTION_STRING_EQUAL_IGNORE); - - allOfInRule.getMatch().add(accessMatch); - allOfInRule.getMatch().add(configMatch); - - AnyOfType anyOfInRule = new AnyOfType(); - anyOfInRule.getAllOf().add(allOfInRule); - - TargetType targetInRule = new TargetType(); - targetInRule.getAnyOf().add(anyOfInRule); - - rule.setTarget(targetInRule); - rule.setAdviceExpressions(getAdviceExpressions(version, policyName)); - - configPolicy - .getCombinerParametersOrRuleCombinerParametersOrVariableDefinition() - .add(rule); - policyAdapter.setPolicyData(configPolicy); - - } else { - PolicyLogger.error("Unsupported data object." - + policyAdapter.getData().getClass().getCanonicalName()); - } - setPreparedToSave(true); - return true; - } - - // Data required for Advice part is setting here. - private AdviceExpressionsType getAdviceExpressions(int version, - String fileName) { - - // Policy Config ID Assignment - AdviceExpressionsType advices = new AdviceExpressionsType(); - AdviceExpressionType advice = new AdviceExpressionType(); - advice.setAdviceId("BRMSRAWID"); - advice.setAppliesTo(EffectType.PERMIT); - // For Configuration - AttributeAssignmentExpressionType assignment1 = new AttributeAssignmentExpressionType(); - assignment1.setAttributeId("type"); - assignment1.setCategory(CATEGORY_RESOURCE); - assignment1.setIssuer(""); - AttributeValueType configNameAttributeValue = new AttributeValueType(); - configNameAttributeValue.setDataType(STRING_DATATYPE); - configNameAttributeValue.getContent().add("Configuration"); - assignment1.setExpression(new ObjectFactory() - .createAttributeValue(configNameAttributeValue)); - advice.getAttributeAssignmentExpression().add(assignment1); - - // For Config file Url if configurations are provided. - // URL ID Assignment - AttributeAssignmentExpressionType assignment2 = new AttributeAssignmentExpressionType(); - assignment2.setAttributeId("URLID"); - assignment2.setCategory(CATEGORY_RESOURCE); - assignment2.setIssuer(""); - AttributeValueType AttributeValue = new AttributeValueType(); - AttributeValue.setDataType(URI_DATATYPE); - - String content = CONFIG_URL + "/Config/" + getConfigFile(policyName); - - AttributeValue.getContent().add(content); - assignment2.setExpression(new ObjectFactory() - .createAttributeValue(AttributeValue)); - advice.getAttributeAssignmentExpression().add(assignment2); - - // Policy Name Assignment - AttributeAssignmentExpressionType assignment3 = new AttributeAssignmentExpressionType(); - assignment3.setAttributeId("PolicyName"); - assignment3.setCategory(CATEGORY_RESOURCE); - assignment3.setIssuer(""); - AttributeValueType attributeValue3 = new AttributeValueType(); - attributeValue3.setDataType(STRING_DATATYPE); - fileName = FilenameUtils.removeExtension(fileName); - fileName = fileName + ".xml"; - System.out.println(fileName); - String name = fileName.substring(fileName.lastIndexOf("\\") + 1, - fileName.length()); - if ((name == null) || (name.equals(""))) { - name = fileName.substring(fileName.lastIndexOf("/") + 1, - fileName.length()); - } - System.out.println(name); - attributeValue3.getContent().add(name); - assignment3.setExpression(new ObjectFactory() - .createAttributeValue(attributeValue3)); - advice.getAttributeAssignmentExpression().add(assignment3); - - // Version Number Assignment - AttributeAssignmentExpressionType assignment4 = new AttributeAssignmentExpressionType(); - assignment4.setAttributeId("VersionNumber"); - assignment4.setCategory(CATEGORY_RESOURCE); - assignment4.setIssuer(""); - AttributeValueType configNameAttributeValue4 = new AttributeValueType(); - configNameAttributeValue4.setDataType(STRING_DATATYPE); - configNameAttributeValue4.getContent().add(Integer.toString(version)); - assignment4.setExpression(new ObjectFactory() - .createAttributeValue(configNameAttributeValue4)); - advice.getAttributeAssignmentExpression().add(assignment4); - - // Onap Name Assignment - AttributeAssignmentExpressionType assignment5 = new AttributeAssignmentExpressionType(); - assignment5.setAttributeId("matching:" + ONAPID); - assignment5.setCategory(CATEGORY_RESOURCE); - assignment5.setIssuer(""); - AttributeValueType configNameAttributeValue5 = new AttributeValueType(); - configNameAttributeValue5.setDataType(STRING_DATATYPE); - configNameAttributeValue5.getContent().add(policyAdapter.getOnapName()); - assignment5.setExpression(new ObjectFactory() - .createAttributeValue(configNameAttributeValue5)); - advice.getAttributeAssignmentExpression().add(assignment5); - - - //Config Name Assignment - AttributeAssignmentExpressionType assignment6 = new AttributeAssignmentExpressionType(); - assignment6.setAttributeId("matching:" + CONFIGID); - assignment6.setCategory(CATEGORY_RESOURCE); - assignment6.setIssuer(""); - AttributeValueType configNameAttributeValue6 = new AttributeValueType(); - configNameAttributeValue6.setDataType(STRING_DATATYPE); - configNameAttributeValue6.getContent().add(policyAdapter.getConfigName()); - assignment6.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue6)); - advice.getAttributeAssignmentExpression().add(assignment6); - + + public CreateBrmsRawPolicy() { + super(); + } + + public CreateBrmsRawPolicy(PolicyRestAdapter policyAdapter) { + this.policyAdapter = policyAdapter; + this.policyAdapter.setConfigType(policyAdapter.getConfigType()); + + } + + // Saving the Configurations file at server location for CreateBrmsRawPolicy policy. + protected void saveConfigurations(String policyName, String jsonBody) { + + if (policyName.endsWith(".xml")) { + policyName = policyName.substring(0, + policyName.lastIndexOf(".xml")); + } + try (PrintWriter out = new PrintWriter(CONFIG_HOME + File.separator + policyName + ".txt")){ + out.println(jsonBody); + } catch (Exception e) { + PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "CreateBrmsRawPolicy", "Exception saving configurations file"); + } + } + + // Utility to read json data from the existing file to a string + static String readFile(String path, Charset encoding) throws IOException { + + byte[] encoded = Files.readAllBytes(Paths.get(path)); + return new String(encoded, encoding); + + } + + // Here we are adding the extension for the configurations file based on the + // config type selection for saving. + private String getConfigFile(String filename) { + filename = FilenameUtils.removeExtension(filename); + if (filename.endsWith(".txt")) { + filename = filename.substring(0, filename.length() - 3); + } + + filename = filename + ".txt"; + return filename; + } + + // Validations for Config form + public boolean validateConfigForm() { + + // Validating mandatory Fields. + isValidForm = true; + return isValidForm; + + } + + @Override + public Map<String, String> savePolicies() throws PAPException { + + Map<String, String> successMap = new HashMap<>(); + if(isPolicyExists()){ + successMap.put("EXISTS", "This Policy already exist on the PAP"); + return successMap; + } + + if (!isPreparedToSave()) { + prepareToSave(); + } + // Until here we prepared the data and here calling the method to create + // xml. + Path newPolicyPath = null; + newPolicyPath = Paths.get(policyAdapter.getNewFileName()); + + successMap = createPolicy(newPolicyPath, getCorrectPolicyDataObject()); + if (successMap == null) { + successMap = new HashMap<>(); + PolicyLogger.error("Failed to Update the Database Dictionary Tables."); + successMap.put("error", "DB UPDATE"); + } + + return successMap; + } + + // This is the method for preparing the policy for saving. We have broken it + // out + // separately because the fully configured policy is used for multiple + // things + @Override + public boolean prepareToSave() throws PAPException { + + if (isPreparedToSave()) { + // we have already done this + return true; + } + + int version = 0; + String policyID = policyAdapter.getPolicyID(); + version = policyAdapter.getHighestVersion(); + + // Create the Instance for pojo, PolicyType object is used in + // marshalling. + if (policyAdapter.getPolicyType().equals("Config")) { + PolicyType policyConfig = new PolicyType(); + + policyConfig.setVersion(Integer.toString(version)); + policyConfig.setPolicyId(policyID); + policyConfig.setTarget(new TargetType()); + policyAdapter.setData(policyConfig); + } + + policyName = policyAdapter.getNewFileName(); + + if (policyAdapter.getData() != null) { + //String jsonBody = policyAdapter.getJsonBody(); + String configBody=policyAdapter.getConfigBodyData(); + saveConfigurations(policyName, configBody); + + // Make sure the filename ends with an extension + if (policyName.endsWith(".xml") == false) { + policyName = policyName + ".xml"; + } + + PolicyType configPolicy = (PolicyType) policyAdapter.getData(); + + configPolicy.setDescription(policyAdapter.getPolicyDescription()); + + configPolicy.setRuleCombiningAlgId(policyAdapter.getRuleCombiningAlgId()); + + AllOfType allOfOne = new AllOfType(); + String fileName = policyAdapter.getNewFileName(); + String name = fileName.substring(fileName.lastIndexOf("\\") + 1, fileName.length()); + if ((name == null) || (name.equals(""))) { + name = fileName.substring(fileName.lastIndexOf("/") + 1, + fileName.length()); + } + allOfOne.getMatch().add(createMatch("PolicyName", name)); + + + AllOfType allOf = new AllOfType(); + + // Match for ONAPName + allOf.getMatch().add(createMatch("ONAPName", policyAdapter.getOnapName())); + allOf.getMatch().add(createMatch("ConfigName", policyAdapter.getConfigName())); + // Match for riskType + allOf.getMatch().add(createDynamicMatch("RiskType", policyAdapter.getRiskType())); + // Match for riskLevel + allOf.getMatch().add(createDynamicMatch("RiskLevel", String.valueOf(policyAdapter.getRiskLevel()))); + // Match for riskguard + allOf.getMatch().add(createDynamicMatch("guard", policyAdapter.getGuard())); + // Match for ttlDate + allOf.getMatch().add(createDynamicMatch("TTLDate", policyAdapter.getTtlDate())); + AnyOfType anyOf = new AnyOfType(); + anyOf.getAllOf().add(allOfOne); + anyOf.getAllOf().add(allOf); + + TargetType target = new TargetType(); + ((TargetType) target).getAnyOf().add(anyOf); + + // Adding the target to the policy element + configPolicy.setTarget((TargetType) target); + + RuleType rule = new RuleType(); + rule.setRuleId(policyAdapter.getRuleID()); + + rule.setEffect(EffectType.PERMIT); + + // Create Target in Rule + AllOfType allOfInRule = new AllOfType(); + + // Creating match for ACCESS in rule target + MatchType accessMatch = new MatchType(); + AttributeValueType accessAttributeValue = new AttributeValueType(); + accessAttributeValue.setDataType(STRING_DATATYPE); + accessAttributeValue.getContent().add("ACCESS"); + accessMatch.setAttributeValue(accessAttributeValue); + AttributeDesignatorType accessAttributeDesignator = new AttributeDesignatorType(); + URI accessURI = null; + try { + accessURI = new URI(ACTION_ID); + } catch (URISyntaxException e) { + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "CreateBrmsRawPolicy", "Exception creating ACCESS URI"); + } + accessAttributeDesignator.setCategory(CATEGORY_ACTION); + accessAttributeDesignator.setDataType(STRING_DATATYPE); + accessAttributeDesignator.setAttributeId(new IdentifierImpl( + accessURI).stringValue()); + accessMatch.setAttributeDesignator(accessAttributeDesignator); + accessMatch.setMatchId(FUNCTION_STRING_EQUAL_IGNORE); + + // Creating Config Match in rule Target + MatchType configMatch = new MatchType(); + AttributeValueType configAttributeValue = new AttributeValueType(); + configAttributeValue.setDataType(STRING_DATATYPE); + + configAttributeValue.getContent().add("Config"); + + configMatch.setAttributeValue(configAttributeValue); + AttributeDesignatorType configAttributeDesignator = new AttributeDesignatorType(); + URI configURI = null; + try { + configURI = new URI(RESOURCE_ID); + } catch (URISyntaxException e) { + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "CreateBrmsRawPolicy", "Exception creating Config URI"); + } + + configAttributeDesignator.setCategory(CATEGORY_RESOURCE); + configAttributeDesignator.setDataType(STRING_DATATYPE); + configAttributeDesignator.setAttributeId(new IdentifierImpl( + configURI).stringValue()); + configMatch.setAttributeDesignator(configAttributeDesignator); + configMatch.setMatchId(FUNCTION_STRING_EQUAL_IGNORE); + + allOfInRule.getMatch().add(accessMatch); + allOfInRule.getMatch().add(configMatch); + + AnyOfType anyOfInRule = new AnyOfType(); + anyOfInRule.getAllOf().add(allOfInRule); + + TargetType targetInRule = new TargetType(); + targetInRule.getAnyOf().add(anyOfInRule); + + rule.setTarget(targetInRule); + rule.setAdviceExpressions(getAdviceExpressions(version, policyName)); + + configPolicy + .getCombinerParametersOrRuleCombinerParametersOrVariableDefinition() + .add(rule); + policyAdapter.setPolicyData(configPolicy); + + } else { + PolicyLogger.error("Unsupported data object." + + policyAdapter.getData().getClass().getCanonicalName()); + } + setPreparedToSave(true); + return true; + } + + // Data required for Advice part is setting here. + private AdviceExpressionsType getAdviceExpressions(int version, + String fileName) { + + // Policy Config ID Assignment + AdviceExpressionsType advices = new AdviceExpressionsType(); + AdviceExpressionType advice = new AdviceExpressionType(); + advice.setAdviceId("BRMSRAWID"); + advice.setAppliesTo(EffectType.PERMIT); + // For Configuration + AttributeAssignmentExpressionType assignment1 = new AttributeAssignmentExpressionType(); + assignment1.setAttributeId("type"); + assignment1.setCategory(CATEGORY_RESOURCE); + assignment1.setIssuer(""); + AttributeValueType configNameAttributeValue = new AttributeValueType(); + configNameAttributeValue.setDataType(STRING_DATATYPE); + configNameAttributeValue.getContent().add("Configuration"); + assignment1.setExpression(new ObjectFactory() + .createAttributeValue(configNameAttributeValue)); + advice.getAttributeAssignmentExpression().add(assignment1); + + // For Config file Url if configurations are provided. + // URL ID Assignment + AttributeAssignmentExpressionType assignment2 = new AttributeAssignmentExpressionType(); + assignment2.setAttributeId("URLID"); + assignment2.setCategory(CATEGORY_RESOURCE); + assignment2.setIssuer(""); + AttributeValueType AttributeValue = new AttributeValueType(); + AttributeValue.setDataType(URI_DATATYPE); + + String content = CONFIG_URL + "/Config/" + getConfigFile(policyName); + + AttributeValue.getContent().add(content); + assignment2.setExpression(new ObjectFactory() + .createAttributeValue(AttributeValue)); + advice.getAttributeAssignmentExpression().add(assignment2); + + // Policy Name Assignment + AttributeAssignmentExpressionType assignment3 = new AttributeAssignmentExpressionType(); + assignment3.setAttributeId("PolicyName"); + assignment3.setCategory(CATEGORY_RESOURCE); + assignment3.setIssuer(""); + AttributeValueType attributeValue3 = new AttributeValueType(); + attributeValue3.setDataType(STRING_DATATYPE); + fileName = FilenameUtils.removeExtension(fileName); + fileName = fileName + ".xml"; + System.out.println(fileName); + String name = fileName.substring(fileName.lastIndexOf("\\") + 1, + fileName.length()); + if ((name == null) || (name.equals(""))) { + name = fileName.substring(fileName.lastIndexOf("/") + 1, + fileName.length()); + } + System.out.println(name); + attributeValue3.getContent().add(name); + assignment3.setExpression(new ObjectFactory() + .createAttributeValue(attributeValue3)); + advice.getAttributeAssignmentExpression().add(assignment3); + + // Version Number Assignment + AttributeAssignmentExpressionType assignment4 = new AttributeAssignmentExpressionType(); + assignment4.setAttributeId("VersionNumber"); + assignment4.setCategory(CATEGORY_RESOURCE); + assignment4.setIssuer(""); + AttributeValueType configNameAttributeValue4 = new AttributeValueType(); + configNameAttributeValue4.setDataType(STRING_DATATYPE); + configNameAttributeValue4.getContent().add(Integer.toString(version)); + assignment4.setExpression(new ObjectFactory() + .createAttributeValue(configNameAttributeValue4)); + advice.getAttributeAssignmentExpression().add(assignment4); + + // Onap Name Assignment + AttributeAssignmentExpressionType assignment5 = new AttributeAssignmentExpressionType(); + assignment5.setAttributeId("matching:" + ONAPID); + assignment5.setCategory(CATEGORY_RESOURCE); + assignment5.setIssuer(""); + AttributeValueType configNameAttributeValue5 = new AttributeValueType(); + configNameAttributeValue5.setDataType(STRING_DATATYPE); + configNameAttributeValue5.getContent().add(policyAdapter.getOnapName()); + assignment5.setExpression(new ObjectFactory() + .createAttributeValue(configNameAttributeValue5)); + advice.getAttributeAssignmentExpression().add(assignment5); + + + //Config Name Assignment + AttributeAssignmentExpressionType assignment6 = new AttributeAssignmentExpressionType(); + assignment6.setAttributeId("matching:" + CONFIGID); + assignment6.setCategory(CATEGORY_RESOURCE); + assignment6.setIssuer(""); + AttributeValueType configNameAttributeValue6 = new AttributeValueType(); + configNameAttributeValue6.setDataType(STRING_DATATYPE); + configNameAttributeValue6.getContent().add(policyAdapter.getConfigName()); + assignment6.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue6)); + advice.getAttributeAssignmentExpression().add(assignment6); + // Adding Controller Information. if(policyAdapter.getBrmsController()!=null){ BRMSDictionaryController brmsDicitonaryController = new BRMSDictionaryController(); @@ -411,69 +411,69 @@ public class CreateBrmsRawPolicy extends Policy { } // Dynamic Field Config Attributes. - Map<String, String> dynamicFieldConfigAttributes = policyAdapter.getDynamicFieldConfigAttributes(); - for (String keyField : dynamicFieldConfigAttributes.keySet()) { - advice.getAttributeAssignmentExpression().add(createResponseAttributes("key:"+keyField, dynamicFieldConfigAttributes.get(keyField))); - } - - //Risk Attributes - AttributeAssignmentExpressionType assignment8 = new AttributeAssignmentExpressionType(); - assignment8.setAttributeId("RiskType"); - assignment8.setCategory(CATEGORY_RESOURCE); - assignment8.setIssuer(""); - - AttributeValueType configNameAttributeValue8 = new AttributeValueType(); - configNameAttributeValue8.setDataType(STRING_DATATYPE); - configNameAttributeValue8.getContent().add(policyAdapter.getRiskType()); - assignment8.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue8)); - - advice.getAttributeAssignmentExpression().add(assignment8); - - AttributeAssignmentExpressionType assignment9 = new AttributeAssignmentExpressionType(); - assignment9.setAttributeId("RiskLevel"); - assignment9.setCategory(CATEGORY_RESOURCE); - assignment9.setIssuer(""); - - AttributeValueType configNameAttributeValue9 = new AttributeValueType(); - configNameAttributeValue9.setDataType(STRING_DATATYPE); - configNameAttributeValue9.getContent().add(policyAdapter.getRiskLevel()); - assignment9.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue9)); - - advice.getAttributeAssignmentExpression().add(assignment9); - - AttributeAssignmentExpressionType assignment10 = new AttributeAssignmentExpressionType(); - assignment10.setAttributeId("guard"); - assignment10.setCategory(CATEGORY_RESOURCE); - assignment10.setIssuer(""); - - AttributeValueType configNameAttributeValue10 = new AttributeValueType(); - configNameAttributeValue10.setDataType(STRING_DATATYPE); - configNameAttributeValue10.getContent().add(policyAdapter.getGuard()); - assignment10.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue10)); - - advice.getAttributeAssignmentExpression().add(assignment10); - - AttributeAssignmentExpressionType assignment11 = new AttributeAssignmentExpressionType(); - assignment11.setAttributeId("TTLDate"); - assignment11.setCategory(CATEGORY_RESOURCE); - assignment11.setIssuer(""); - - AttributeValueType configNameAttributeValue11 = new AttributeValueType(); - configNameAttributeValue11.setDataType(STRING_DATATYPE); - configNameAttributeValue11.getContent().add(policyAdapter.getTtlDate()); - assignment11.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue11)); - - advice.getAttributeAssignmentExpression().add(assignment11); - - advices.getAdviceExpression().add(advice); - return advices; - } - - @Override - public Object getCorrectPolicyDataObject() { - return policyAdapter.getData(); - } - + Map<String, String> dynamicFieldConfigAttributes = policyAdapter.getDynamicFieldConfigAttributes(); + for (String keyField : dynamicFieldConfigAttributes.keySet()) { + advice.getAttributeAssignmentExpression().add(createResponseAttributes("key:"+keyField, dynamicFieldConfigAttributes.get(keyField))); + } + + //Risk Attributes + AttributeAssignmentExpressionType assignment8 = new AttributeAssignmentExpressionType(); + assignment8.setAttributeId("RiskType"); + assignment8.setCategory(CATEGORY_RESOURCE); + assignment8.setIssuer(""); + + AttributeValueType configNameAttributeValue8 = new AttributeValueType(); + configNameAttributeValue8.setDataType(STRING_DATATYPE); + configNameAttributeValue8.getContent().add(policyAdapter.getRiskType()); + assignment8.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue8)); + + advice.getAttributeAssignmentExpression().add(assignment8); + + AttributeAssignmentExpressionType assignment9 = new AttributeAssignmentExpressionType(); + assignment9.setAttributeId("RiskLevel"); + assignment9.setCategory(CATEGORY_RESOURCE); + assignment9.setIssuer(""); + + AttributeValueType configNameAttributeValue9 = new AttributeValueType(); + configNameAttributeValue9.setDataType(STRING_DATATYPE); + configNameAttributeValue9.getContent().add(policyAdapter.getRiskLevel()); + assignment9.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue9)); + + advice.getAttributeAssignmentExpression().add(assignment9); + + AttributeAssignmentExpressionType assignment10 = new AttributeAssignmentExpressionType(); + assignment10.setAttributeId("guard"); + assignment10.setCategory(CATEGORY_RESOURCE); + assignment10.setIssuer(""); + + AttributeValueType configNameAttributeValue10 = new AttributeValueType(); + configNameAttributeValue10.setDataType(STRING_DATATYPE); + configNameAttributeValue10.getContent().add(policyAdapter.getGuard()); + assignment10.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue10)); + + advice.getAttributeAssignmentExpression().add(assignment10); + + AttributeAssignmentExpressionType assignment11 = new AttributeAssignmentExpressionType(); + assignment11.setAttributeId("TTLDate"); + assignment11.setCategory(CATEGORY_RESOURCE); + assignment11.setIssuer(""); + + AttributeValueType configNameAttributeValue11 = new AttributeValueType(); + configNameAttributeValue11.setDataType(STRING_DATATYPE); + configNameAttributeValue11.getContent().add(policyAdapter.getTtlDate()); + assignment11.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue11)); + + advice.getAttributeAssignmentExpression().add(assignment11); + + advices.getAdviceExpression().add(advice); + return advices; + } + + @Override + public Object getCorrectPolicyDataObject() { + return policyAdapter.getData(); + } + private AttributeAssignmentExpressionType createResponseAttributes(String key, String value){ AttributeAssignmentExpressionType assignment7 = new AttributeAssignmentExpressionType(); assignment7.setAttributeId(key); diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/CreateClosedLoopPerformanceMetrics.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/CreateClosedLoopPerformanceMetrics.java index 456924ac9..e74cc3359 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/CreateClosedLoopPerformanceMetrics.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/CreateClosedLoopPerformanceMetrics.java @@ -55,351 +55,351 @@ import oasis.names.tc.xacml._3_0.core.schema.wd_17.RuleType; import oasis.names.tc.xacml._3_0.core.schema.wd_17.TargetType; public class CreateClosedLoopPerformanceMetrics extends Policy { - - private static final Logger LOGGER = FlexLogger.getLogger(CreateClosedLoopPerformanceMetrics.class); - - public CreateClosedLoopPerformanceMetrics() { - super(); - } - - public CreateClosedLoopPerformanceMetrics(PolicyRestAdapter policyAdapter){ - this.policyAdapter = policyAdapter; - } - - //save configuration of the policy based on the policyname - private void saveConfigurations(String policyName, final String jsonBody) { - - if(policyName.endsWith(".xml")){ - policyName = policyName.substring(0, policyName.lastIndexOf(".xml")); - } - try (PrintWriter out = new PrintWriter(CONFIG_HOME + File.separator + "."+ policyName +".json")){ - out.println(jsonBody); - policyAdapter.setJsonBody(jsonBody); - policyAdapter.setConfigBodyData(jsonBody); - } catch (Exception e) { - LOGGER.error("Exception Occured"+e); - } - } - - //getting the policy name and setting to configuration on adding .json - private String getConfigFile(String filename) { - filename = FilenameUtils.removeExtension(filename); - if (filename.endsWith(".xml")) { - filename = filename.substring(0, filename.length() - 4); - } - filename = filename +".json"; - return filename; - } - - @Override - public Map<String, String> savePolicies() throws PAPException { - - Map<String, String> successMap = new HashMap<>(); - if(isPolicyExists()){ - successMap.put("EXISTS", "This Policy already exist on the PAP"); - return successMap; - } - - if(!isPreparedToSave()){ - //Prep and configure the policy for saving - prepareToSave(); - } - - // Until here we prepared the data and here calling the method to create xml. - Path newPolicyPath = null; - newPolicyPath = Paths.get(policyAdapter.getNewFileName()); - - successMap = createPolicy(newPolicyPath,getCorrectPolicyDataObject()); - - return successMap; - } - - //This is the method for preparing the policy for saving. We have broken it out - //separately because the fully configured policy is used for multiple things - @Override - public boolean prepareToSave() throws PAPException{ - - if(isPreparedToSave()){ - //we have already done this - return true; - } - - int version = 0; - String policyID = policyAdapter.getPolicyID(); - version = policyAdapter.getHighestVersion(); - - // Create the Instance for pojo, PolicyType object is used in marshalling. - if (policyAdapter.getPolicyType().equals("Config")) { - PolicyType policyConfig = new PolicyType(); - - policyConfig.setVersion(Integer.toString(version)); - policyConfig.setPolicyId(policyID); - policyConfig.setTarget(new TargetType()); - policyAdapter.setData(policyConfig); - } - policyName = policyAdapter.getNewFileName(); - if (policyAdapter.getData() != null) { - // Save the Configurations file with the policy name with extention based on selection. - String jsonBody = policyAdapter.getJsonBody(); - saveConfigurations(policyName, jsonBody); - - // Make sure the filename ends with an extension - if (policyName.endsWith(".xml") == false) { - policyName = policyName + ".xml"; - } - - - PolicyType configPolicy = (PolicyType) policyAdapter.getData(); - - configPolicy.setDescription(policyAdapter.getPolicyDescription()); - - configPolicy.setRuleCombiningAlgId(policyAdapter.getRuleCombiningAlgId()); - - AllOfType allOfOne = new AllOfType(); - String fileName = policyAdapter.getNewFileName(); - String name = fileName.substring(fileName.lastIndexOf("\\") + 1, fileName.length()); - if ((name == null) || (name.equals(""))) { - name = fileName.substring(fileName.lastIndexOf("/") + 1, fileName.length()); - } - allOfOne.getMatch().add(createMatch("PolicyName", name)); - AllOfType allOf = new AllOfType(); - - // Adding the matches to AllOfType element Match for Onap - allOf.getMatch().add(createMatch("ONAPName", policyAdapter.getOnapName())); - // Match for riskType - allOf.getMatch().add( - createDynamicMatch("RiskType", policyAdapter.getRiskType())); - // Match for riskLevel - allOf.getMatch().add( - createDynamicMatch("RiskLevel", String.valueOf(policyAdapter.getRiskLevel()))); - // Match for riskguard - allOf.getMatch().add( - createDynamicMatch("guard", policyAdapter.getGuard())); - // Match for ttlDate - allOf.getMatch().add( - createDynamicMatch("TTLDate", policyAdapter.getTtlDate())); - // Match for ServiceType - allOf.getMatch().add(createMatch("ServiceType", policyAdapter.getServiceType())); - - AnyOfType anyOf = new AnyOfType(); - anyOf.getAllOf().add(allOfOne); - anyOf.getAllOf().add(allOf); - - TargetType target = new TargetType(); - ((TargetType) target).getAnyOf().add(anyOf); - - // Adding the target to the policy element - configPolicy.setTarget((TargetType) target); - - RuleType rule = new RuleType(); - rule.setRuleId(policyAdapter.getRuleID()); - - rule.setEffect(EffectType.PERMIT); - - // Create Target in Rule - AllOfType allOfInRule = new AllOfType(); - - // Creating match for ACCESS in rule target - MatchType accessMatch = new MatchType(); - AttributeValueType accessAttributeValue = new AttributeValueType(); - accessAttributeValue.setDataType(STRING_DATATYPE); - accessAttributeValue.getContent().add("ACCESS"); - accessMatch.setAttributeValue(accessAttributeValue); - AttributeDesignatorType accessAttributeDesignator = new AttributeDesignatorType(); - URI accessURI = null; - try { - accessURI = new URI(ACTION_ID); - } catch (URISyntaxException e) { - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "CreateClosedLoopPerformanceMetrics", "Exception creating ACCESS URI"); - } - accessAttributeDesignator.setCategory(CATEGORY_ACTION); - accessAttributeDesignator.setDataType(STRING_DATATYPE); - accessAttributeDesignator.setAttributeId(new IdentifierImpl(accessURI).stringValue()); - accessMatch.setAttributeDesignator(accessAttributeDesignator); - accessMatch.setMatchId(FUNCTION_STRING_EQUAL_IGNORE); - - // Creating Config Match in rule Target - MatchType configMatch = new MatchType(); - AttributeValueType configAttributeValue = new AttributeValueType(); - configAttributeValue.setDataType(STRING_DATATYPE); - configAttributeValue.getContent().add("Config"); - configMatch.setAttributeValue(configAttributeValue); - AttributeDesignatorType configAttributeDesignator = new AttributeDesignatorType(); - URI configURI = null; - try { - configURI = new URI(RESOURCE_ID); - } catch (URISyntaxException e) { - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "CreateClosedLoopPerformanceMetrics", "Exception creating Config URI"); - } - configAttributeDesignator.setCategory(CATEGORY_RESOURCE); - configAttributeDesignator.setDataType(STRING_DATATYPE); - configAttributeDesignator.setAttributeId(new IdentifierImpl(configURI).stringValue()); - configMatch.setAttributeDesignator(configAttributeDesignator); - configMatch.setMatchId(FUNCTION_STRING_EQUAL_IGNORE); - - allOfInRule.getMatch().add(accessMatch); - allOfInRule.getMatch().add(configMatch); - - AnyOfType anyOfInRule = new AnyOfType(); - anyOfInRule.getAllOf().add(allOfInRule); - - TargetType targetInRule = new TargetType(); - targetInRule.getAnyOf().add(anyOfInRule); - - rule.setTarget(targetInRule); - rule.setAdviceExpressions(getAdviceExpressions(version, policyName)); - - configPolicy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().add(rule); - policyAdapter.setPolicyData(configPolicy); - - } else { - PolicyLogger.error("Unsupported data object." + policyAdapter.getData().getClass().getCanonicalName()); - } - setPreparedToSave(true); - return true; - } - - // Data required for Advice part is setting here. - @SuppressWarnings("static-access") - private AdviceExpressionsType getAdviceExpressions(int version, String fileName) { - AdviceExpressionsType advices = new AdviceExpressionsType(); - AdviceExpressionType advice = new AdviceExpressionType(); - advice.setAdviceId("PMID"); - advice.setAppliesTo(EffectType.PERMIT); - // For Configuration - AttributeAssignmentExpressionType assignment1 = new AttributeAssignmentExpressionType(); - assignment1.setAttributeId("type"); - assignment1.setCategory(CATEGORY_RESOURCE); - assignment1.setIssuer(""); - - AttributeValueType configNameAttributeValue = new AttributeValueType(); - configNameAttributeValue.setDataType(STRING_DATATYPE); - configNameAttributeValue.getContent().add("Configuration"); - assignment1.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue)); - - advice.getAttributeAssignmentExpression().add(assignment1); - // For Config file Url if configurations are provided. - AttributeAssignmentExpressionType assignment2 = new AttributeAssignmentExpressionType(); - assignment2.setAttributeId("URLID"); - assignment2.setCategory(CATEGORY_RESOURCE); - assignment2.setIssuer(""); - - AttributeValueType AttributeValue = new AttributeValueType(); - AttributeValue.setDataType(URI_DATATYPE); - String content = CONFIG_URL +"/Config/"+ getConfigFile(policyName); - AttributeValue.getContent().add(content); - assignment2.setExpression(new ObjectFactory().createAttributeValue(AttributeValue)); - - advice.getAttributeAssignmentExpression().add(assignment2); - AttributeAssignmentExpressionType assignment3 = new AttributeAssignmentExpressionType(); - assignment3.setAttributeId("PolicyName"); - assignment3.setCategory(CATEGORY_RESOURCE); - assignment3.setIssuer(""); - - AttributeValueType attributeValue3 = new AttributeValueType(); - attributeValue3.setDataType(STRING_DATATYPE); - fileName = FilenameUtils.removeExtension(fileName); - fileName = fileName + ".xml"; - String name = fileName.substring(fileName.lastIndexOf("\\") + 1, fileName.length()); - if ((name == null) || (name.equals(""))) { - name = fileName.substring(fileName.lastIndexOf("/") + 1, fileName.length()); - } - attributeValue3.getContent().add(name); - assignment3.setExpression(new ObjectFactory().createAttributeValue(attributeValue3)); - advice.getAttributeAssignmentExpression().add(assignment3); - - AttributeAssignmentExpressionType assignment4 = new AttributeAssignmentExpressionType(); - assignment4.setAttributeId("VersionNumber"); - assignment4.setCategory(CATEGORY_RESOURCE); - assignment4.setIssuer(""); - - AttributeValueType configNameAttributeValue4 = new AttributeValueType(); - configNameAttributeValue4.setDataType(STRING_DATATYPE); - configNameAttributeValue4.getContent().add(Integer.toString(version)); - assignment4.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue4)); - - advice.getAttributeAssignmentExpression().add(assignment4); - - AttributeAssignmentExpressionType assignment5 = new AttributeAssignmentExpressionType(); - assignment5.setAttributeId("matching:" + this.ONAPID); - assignment5.setCategory(CATEGORY_RESOURCE); - assignment5.setIssuer(""); - - AttributeValueType configNameAttributeValue5 = new AttributeValueType(); - configNameAttributeValue5.setDataType(STRING_DATATYPE); - configNameAttributeValue5.getContent().add(policyAdapter.getOnapName()); - assignment5.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue5)); - - advice.getAttributeAssignmentExpression().add(assignment5); - - AttributeAssignmentExpressionType assignment6 = new AttributeAssignmentExpressionType(); - assignment6.setAttributeId("matching:" + this.CLOSEDLOOPID); - assignment6.setCategory(CATEGORY_RESOURCE); - assignment6.setIssuer(""); - - AttributeValueType configNameAttributeValue6 = new AttributeValueType(); - configNameAttributeValue6.setDataType(STRING_DATATYPE); - configNameAttributeValue6.getContent().add(policyAdapter.getServiceType()); - assignment6.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue6)); - - advice.getAttributeAssignmentExpression().add(assignment6); - - //Risk Attributes - AttributeAssignmentExpressionType assignment7 = new AttributeAssignmentExpressionType(); - assignment7.setAttributeId("RiskType"); - assignment7.setCategory(CATEGORY_RESOURCE); - assignment7.setIssuer(""); - - AttributeValueType configNameAttributeValue7 = new AttributeValueType(); - configNameAttributeValue7.setDataType(STRING_DATATYPE); - configNameAttributeValue7.getContent().add(policyAdapter.getRiskType()); - assignment7.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue7)); - - advice.getAttributeAssignmentExpression().add(assignment7); - - AttributeAssignmentExpressionType assignment8 = new AttributeAssignmentExpressionType(); - assignment8.setAttributeId("RiskLevel"); - assignment8.setCategory(CATEGORY_RESOURCE); - assignment8.setIssuer(""); - - AttributeValueType configNameAttributeValue8 = new AttributeValueType(); - configNameAttributeValue8.setDataType(STRING_DATATYPE); - configNameAttributeValue8.getContent().add(policyAdapter.getRiskLevel()); - assignment8.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue8)); - - advice.getAttributeAssignmentExpression().add(assignment8); - - AttributeAssignmentExpressionType assignment9 = new AttributeAssignmentExpressionType(); - assignment9.setAttributeId("guard"); - assignment9.setCategory(CATEGORY_RESOURCE); - assignment9.setIssuer(""); - - AttributeValueType configNameAttributeValue9 = new AttributeValueType(); - configNameAttributeValue9.setDataType(STRING_DATATYPE); - configNameAttributeValue9.getContent().add(policyAdapter.getGuard()); - assignment9.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue9)); - - advice.getAttributeAssignmentExpression().add(assignment9); - - AttributeAssignmentExpressionType assignment10 = new AttributeAssignmentExpressionType(); - assignment10.setAttributeId("TTLDate"); - assignment10.setCategory(CATEGORY_RESOURCE); - assignment10.setIssuer(""); - - AttributeValueType configNameAttributeValue10 = new AttributeValueType(); - configNameAttributeValue10.setDataType(STRING_DATATYPE); - configNameAttributeValue10.getContent().add(policyAdapter.getTtlDate()); - assignment10.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue10)); - - advice.getAttributeAssignmentExpression().add(assignment10); - - advices.getAdviceExpression().add(advice); - return advices; - } - - @Override - public Object getCorrectPolicyDataObject() { - return policyAdapter.getPolicyData(); - } + + private static final Logger LOGGER = FlexLogger.getLogger(CreateClosedLoopPerformanceMetrics.class); + + public CreateClosedLoopPerformanceMetrics() { + super(); + } + + public CreateClosedLoopPerformanceMetrics(PolicyRestAdapter policyAdapter){ + this.policyAdapter = policyAdapter; + } + + //save configuration of the policy based on the policyname + private void saveConfigurations(String policyName, final String jsonBody) { + + if(policyName.endsWith(".xml")){ + policyName = policyName.substring(0, policyName.lastIndexOf(".xml")); + } + try (PrintWriter out = new PrintWriter(CONFIG_HOME + File.separator + "."+ policyName +".json")){ + out.println(jsonBody); + policyAdapter.setJsonBody(jsonBody); + policyAdapter.setConfigBodyData(jsonBody); + } catch (Exception e) { + LOGGER.error("Exception Occured"+e); + } + } + + //getting the policy name and setting to configuration on adding .json + private String getConfigFile(String filename) { + filename = FilenameUtils.removeExtension(filename); + if (filename.endsWith(".xml")) { + filename = filename.substring(0, filename.length() - 4); + } + filename = filename +".json"; + return filename; + } + + @Override + public Map<String, String> savePolicies() throws PAPException { + + Map<String, String> successMap = new HashMap<>(); + if(isPolicyExists()){ + successMap.put("EXISTS", "This Policy already exist on the PAP"); + return successMap; + } + + if(!isPreparedToSave()){ + //Prep and configure the policy for saving + prepareToSave(); + } + + // Until here we prepared the data and here calling the method to create xml. + Path newPolicyPath = null; + newPolicyPath = Paths.get(policyAdapter.getNewFileName()); + + successMap = createPolicy(newPolicyPath,getCorrectPolicyDataObject()); + + return successMap; + } + + //This is the method for preparing the policy for saving. We have broken it out + //separately because the fully configured policy is used for multiple things + @Override + public boolean prepareToSave() throws PAPException{ + + if(isPreparedToSave()){ + //we have already done this + return true; + } + + int version = 0; + String policyID = policyAdapter.getPolicyID(); + version = policyAdapter.getHighestVersion(); + + // Create the Instance for pojo, PolicyType object is used in marshalling. + if (policyAdapter.getPolicyType().equals("Config")) { + PolicyType policyConfig = new PolicyType(); + + policyConfig.setVersion(Integer.toString(version)); + policyConfig.setPolicyId(policyID); + policyConfig.setTarget(new TargetType()); + policyAdapter.setData(policyConfig); + } + policyName = policyAdapter.getNewFileName(); + if (policyAdapter.getData() != null) { + // Save the Configurations file with the policy name with extention based on selection. + String jsonBody = policyAdapter.getJsonBody(); + saveConfigurations(policyName, jsonBody); + + // Make sure the filename ends with an extension + if (policyName.endsWith(".xml") == false) { + policyName = policyName + ".xml"; + } + + + PolicyType configPolicy = (PolicyType) policyAdapter.getData(); + + configPolicy.setDescription(policyAdapter.getPolicyDescription()); + + configPolicy.setRuleCombiningAlgId(policyAdapter.getRuleCombiningAlgId()); + + AllOfType allOfOne = new AllOfType(); + String fileName = policyAdapter.getNewFileName(); + String name = fileName.substring(fileName.lastIndexOf("\\") + 1, fileName.length()); + if ((name == null) || (name.equals(""))) { + name = fileName.substring(fileName.lastIndexOf("/") + 1, fileName.length()); + } + allOfOne.getMatch().add(createMatch("PolicyName", name)); + AllOfType allOf = new AllOfType(); + + // Adding the matches to AllOfType element Match for Onap + allOf.getMatch().add(createMatch("ONAPName", policyAdapter.getOnapName())); + // Match for riskType + allOf.getMatch().add( + createDynamicMatch("RiskType", policyAdapter.getRiskType())); + // Match for riskLevel + allOf.getMatch().add( + createDynamicMatch("RiskLevel", String.valueOf(policyAdapter.getRiskLevel()))); + // Match for riskguard + allOf.getMatch().add( + createDynamicMatch("guard", policyAdapter.getGuard())); + // Match for ttlDate + allOf.getMatch().add( + createDynamicMatch("TTLDate", policyAdapter.getTtlDate())); + // Match for ServiceType + allOf.getMatch().add(createMatch("ServiceType", policyAdapter.getServiceType())); + + AnyOfType anyOf = new AnyOfType(); + anyOf.getAllOf().add(allOfOne); + anyOf.getAllOf().add(allOf); + + TargetType target = new TargetType(); + ((TargetType) target).getAnyOf().add(anyOf); + + // Adding the target to the policy element + configPolicy.setTarget((TargetType) target); + + RuleType rule = new RuleType(); + rule.setRuleId(policyAdapter.getRuleID()); + + rule.setEffect(EffectType.PERMIT); + + // Create Target in Rule + AllOfType allOfInRule = new AllOfType(); + + // Creating match for ACCESS in rule target + MatchType accessMatch = new MatchType(); + AttributeValueType accessAttributeValue = new AttributeValueType(); + accessAttributeValue.setDataType(STRING_DATATYPE); + accessAttributeValue.getContent().add("ACCESS"); + accessMatch.setAttributeValue(accessAttributeValue); + AttributeDesignatorType accessAttributeDesignator = new AttributeDesignatorType(); + URI accessURI = null; + try { + accessURI = new URI(ACTION_ID); + } catch (URISyntaxException e) { + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "CreateClosedLoopPerformanceMetrics", "Exception creating ACCESS URI"); + } + accessAttributeDesignator.setCategory(CATEGORY_ACTION); + accessAttributeDesignator.setDataType(STRING_DATATYPE); + accessAttributeDesignator.setAttributeId(new IdentifierImpl(accessURI).stringValue()); + accessMatch.setAttributeDesignator(accessAttributeDesignator); + accessMatch.setMatchId(FUNCTION_STRING_EQUAL_IGNORE); + + // Creating Config Match in rule Target + MatchType configMatch = new MatchType(); + AttributeValueType configAttributeValue = new AttributeValueType(); + configAttributeValue.setDataType(STRING_DATATYPE); + configAttributeValue.getContent().add("Config"); + configMatch.setAttributeValue(configAttributeValue); + AttributeDesignatorType configAttributeDesignator = new AttributeDesignatorType(); + URI configURI = null; + try { + configURI = new URI(RESOURCE_ID); + } catch (URISyntaxException e) { + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "CreateClosedLoopPerformanceMetrics", "Exception creating Config URI"); + } + configAttributeDesignator.setCategory(CATEGORY_RESOURCE); + configAttributeDesignator.setDataType(STRING_DATATYPE); + configAttributeDesignator.setAttributeId(new IdentifierImpl(configURI).stringValue()); + configMatch.setAttributeDesignator(configAttributeDesignator); + configMatch.setMatchId(FUNCTION_STRING_EQUAL_IGNORE); + + allOfInRule.getMatch().add(accessMatch); + allOfInRule.getMatch().add(configMatch); + + AnyOfType anyOfInRule = new AnyOfType(); + anyOfInRule.getAllOf().add(allOfInRule); + + TargetType targetInRule = new TargetType(); + targetInRule.getAnyOf().add(anyOfInRule); + + rule.setTarget(targetInRule); + rule.setAdviceExpressions(getAdviceExpressions(version, policyName)); + + configPolicy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().add(rule); + policyAdapter.setPolicyData(configPolicy); + + } else { + PolicyLogger.error("Unsupported data object." + policyAdapter.getData().getClass().getCanonicalName()); + } + setPreparedToSave(true); + return true; + } + + // Data required for Advice part is setting here. + @SuppressWarnings("static-access") + private AdviceExpressionsType getAdviceExpressions(int version, String fileName) { + AdviceExpressionsType advices = new AdviceExpressionsType(); + AdviceExpressionType advice = new AdviceExpressionType(); + advice.setAdviceId("PMID"); + advice.setAppliesTo(EffectType.PERMIT); + // For Configuration + AttributeAssignmentExpressionType assignment1 = new AttributeAssignmentExpressionType(); + assignment1.setAttributeId("type"); + assignment1.setCategory(CATEGORY_RESOURCE); + assignment1.setIssuer(""); + + AttributeValueType configNameAttributeValue = new AttributeValueType(); + configNameAttributeValue.setDataType(STRING_DATATYPE); + configNameAttributeValue.getContent().add("Configuration"); + assignment1.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue)); + + advice.getAttributeAssignmentExpression().add(assignment1); + // For Config file Url if configurations are provided. + AttributeAssignmentExpressionType assignment2 = new AttributeAssignmentExpressionType(); + assignment2.setAttributeId("URLID"); + assignment2.setCategory(CATEGORY_RESOURCE); + assignment2.setIssuer(""); + + AttributeValueType AttributeValue = new AttributeValueType(); + AttributeValue.setDataType(URI_DATATYPE); + String content = CONFIG_URL +"/Config/"+ getConfigFile(policyName); + AttributeValue.getContent().add(content); + assignment2.setExpression(new ObjectFactory().createAttributeValue(AttributeValue)); + + advice.getAttributeAssignmentExpression().add(assignment2); + AttributeAssignmentExpressionType assignment3 = new AttributeAssignmentExpressionType(); + assignment3.setAttributeId("PolicyName"); + assignment3.setCategory(CATEGORY_RESOURCE); + assignment3.setIssuer(""); + + AttributeValueType attributeValue3 = new AttributeValueType(); + attributeValue3.setDataType(STRING_DATATYPE); + fileName = FilenameUtils.removeExtension(fileName); + fileName = fileName + ".xml"; + String name = fileName.substring(fileName.lastIndexOf("\\") + 1, fileName.length()); + if ((name == null) || (name.equals(""))) { + name = fileName.substring(fileName.lastIndexOf("/") + 1, fileName.length()); + } + attributeValue3.getContent().add(name); + assignment3.setExpression(new ObjectFactory().createAttributeValue(attributeValue3)); + advice.getAttributeAssignmentExpression().add(assignment3); + + AttributeAssignmentExpressionType assignment4 = new AttributeAssignmentExpressionType(); + assignment4.setAttributeId("VersionNumber"); + assignment4.setCategory(CATEGORY_RESOURCE); + assignment4.setIssuer(""); + + AttributeValueType configNameAttributeValue4 = new AttributeValueType(); + configNameAttributeValue4.setDataType(STRING_DATATYPE); + configNameAttributeValue4.getContent().add(Integer.toString(version)); + assignment4.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue4)); + + advice.getAttributeAssignmentExpression().add(assignment4); + + AttributeAssignmentExpressionType assignment5 = new AttributeAssignmentExpressionType(); + assignment5.setAttributeId("matching:" + this.ONAPID); + assignment5.setCategory(CATEGORY_RESOURCE); + assignment5.setIssuer(""); + + AttributeValueType configNameAttributeValue5 = new AttributeValueType(); + configNameAttributeValue5.setDataType(STRING_DATATYPE); + configNameAttributeValue5.getContent().add(policyAdapter.getOnapName()); + assignment5.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue5)); + + advice.getAttributeAssignmentExpression().add(assignment5); + + AttributeAssignmentExpressionType assignment6 = new AttributeAssignmentExpressionType(); + assignment6.setAttributeId("matching:" + this.CLOSEDLOOPID); + assignment6.setCategory(CATEGORY_RESOURCE); + assignment6.setIssuer(""); + + AttributeValueType configNameAttributeValue6 = new AttributeValueType(); + configNameAttributeValue6.setDataType(STRING_DATATYPE); + configNameAttributeValue6.getContent().add(policyAdapter.getServiceType()); + assignment6.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue6)); + + advice.getAttributeAssignmentExpression().add(assignment6); + + //Risk Attributes + AttributeAssignmentExpressionType assignment7 = new AttributeAssignmentExpressionType(); + assignment7.setAttributeId("RiskType"); + assignment7.setCategory(CATEGORY_RESOURCE); + assignment7.setIssuer(""); + + AttributeValueType configNameAttributeValue7 = new AttributeValueType(); + configNameAttributeValue7.setDataType(STRING_DATATYPE); + configNameAttributeValue7.getContent().add(policyAdapter.getRiskType()); + assignment7.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue7)); + + advice.getAttributeAssignmentExpression().add(assignment7); + + AttributeAssignmentExpressionType assignment8 = new AttributeAssignmentExpressionType(); + assignment8.setAttributeId("RiskLevel"); + assignment8.setCategory(CATEGORY_RESOURCE); + assignment8.setIssuer(""); + + AttributeValueType configNameAttributeValue8 = new AttributeValueType(); + configNameAttributeValue8.setDataType(STRING_DATATYPE); + configNameAttributeValue8.getContent().add(policyAdapter.getRiskLevel()); + assignment8.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue8)); + + advice.getAttributeAssignmentExpression().add(assignment8); + + AttributeAssignmentExpressionType assignment9 = new AttributeAssignmentExpressionType(); + assignment9.setAttributeId("guard"); + assignment9.setCategory(CATEGORY_RESOURCE); + assignment9.setIssuer(""); + + AttributeValueType configNameAttributeValue9 = new AttributeValueType(); + configNameAttributeValue9.setDataType(STRING_DATATYPE); + configNameAttributeValue9.getContent().add(policyAdapter.getGuard()); + assignment9.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue9)); + + advice.getAttributeAssignmentExpression().add(assignment9); + + AttributeAssignmentExpressionType assignment10 = new AttributeAssignmentExpressionType(); + assignment10.setAttributeId("TTLDate"); + assignment10.setCategory(CATEGORY_RESOURCE); + assignment10.setIssuer(""); + + AttributeValueType configNameAttributeValue10 = new AttributeValueType(); + configNameAttributeValue10.setDataType(STRING_DATATYPE); + configNameAttributeValue10.getContent().add(policyAdapter.getTtlDate()); + assignment10.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue10)); + + advice.getAttributeAssignmentExpression().add(assignment10); + + advices.getAdviceExpression().add(advice); + return advices; + } + + @Override + public Object getCorrectPolicyDataObject() { + return policyAdapter.getPolicyData(); + } } diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/CreateNewOptimizationModel.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/CreateNewOptimizationModel.java index c4de9a059..87c9f9108 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/CreateNewOptimizationModel.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/CreateNewOptimizationModel.java @@ -50,243 +50,243 @@ import org.onap.policy.rest.util.MSModelUtils.MODEL_TYPE; import com.google.gson.Gson; public class CreateNewOptimizationModel { - private static final Logger logger = FlexLogger.getLogger(CreateNewOptimizationModel.class); - private OptimizationModels newModel = null; - private HashMap<String,MSAttributeObject > classMap = new HashMap<>(); - - private static final String EXTRACTDIR = "ExtractDir"; - private static final String SUCCESS = "success"; - - - MSModelUtils utils = new MSModelUtils(XACMLPapServlet.getMsOnapName(), XACMLPapServlet.getMsPolicyName()); - - public CreateNewOptimizationModel() { - super(); - } - - public CreateNewOptimizationModel(String importFile, String modelName, String description, String version, String randomID) { - - this.newModel = new OptimizationModels(); - this.newModel.setVersion(version); - this.newModel.setModelName(modelName); - this.newModel.setDescription(description); - UserInfo userInfo = new UserInfo(); - userInfo.setUserLoginId("API"); - this.newModel.setUserCreatedBy(userInfo); - String cleanUpFile = null; - - Map<String, MSAttributeObject> tempMap = new HashMap<>(); - //Need to delete the file - if (importFile.contains(".zip")){ - extractFolder(randomID + ".zip"); - File directory = new File(EXTRACTDIR + File.separator + randomID); - List<File> fileList = listModelFiles(directory.toString()); - //get all the files from a director - for (File file : fileList){ - if (file.isFile()){ - processYmlModel(file.toString(), modelName); - } - } - cleanUpFile = EXTRACTDIR + File.separator + randomID + ".zip"; - try { - FileUtils.deleteDirectory(new File(EXTRACTDIR + File.separator + randomID)); - FileUtils.deleteDirectory(new File(randomID)); - File deleteFile = new File(cleanUpFile); - FileUtils.forceDelete(deleteFile); - } catch (IOException e) { - logger.error("Failed to unzip model file " + randomID, e); - } - }else { - if(importFile.contains(".yml")){ - - processYmlModel(EXTRACTDIR + File.separator + randomID+".yml", modelName); - cleanUpFile = EXTRACTDIR + File.separator + randomID+".yml"; - - }else{ - tempMap = utils.processEpackage(EXTRACTDIR + File.separator + randomID+".xmi", MODEL_TYPE.XMI); - classMap.putAll(tempMap); - cleanUpFile = EXTRACTDIR + File.separator + randomID+".xmi"; - } - File deleteFile = new File(cleanUpFile); - deleteFile.delete(); - } - } - - private void processYmlModel(String fileName, String modelName){ - - try { - - utils.parseTosca(fileName); - - MSAttributeObject msAttributes= new MSAttributeObject(); - msAttributes.setClassName(modelName); - - LinkedHashMap<String, String> returnAttributeList =new LinkedHashMap<>(); - returnAttributeList.put(modelName, utils.getAttributeString()); - msAttributes.setAttribute(returnAttributeList); - - msAttributes.setSubClass(utils.getRetmap()); - - msAttributes.setMatchingSet(utils.getMatchableValues()); - - LinkedHashMap<String, String> returnReferenceList =new LinkedHashMap<>(); - - returnReferenceList.put(modelName, utils.getReferenceAttributes()); - msAttributes.setRefAttribute(returnReferenceList); - - if(!"".equals(utils.getListConstraints())){ - LinkedHashMap<String, String> enumList =new LinkedHashMap<>(); - String[] listArray=utils.getListConstraints().split("#"); + private static final Logger logger = FlexLogger.getLogger(CreateNewOptimizationModel.class); + private OptimizationModels newModel = null; + private HashMap<String,MSAttributeObject > classMap = new HashMap<>(); + + private static final String EXTRACTDIR = "ExtractDir"; + private static final String SUCCESS = "success"; + + + MSModelUtils utils = new MSModelUtils(XACMLPapServlet.getMsOnapName(), XACMLPapServlet.getMsPolicyName()); + + public CreateNewOptimizationModel() { + super(); + } + + public CreateNewOptimizationModel(String importFile, String modelName, String description, String version, String randomID) { + + this.newModel = new OptimizationModels(); + this.newModel.setVersion(version); + this.newModel.setModelName(modelName); + this.newModel.setDescription(description); + UserInfo userInfo = new UserInfo(); + userInfo.setUserLoginId("API"); + this.newModel.setUserCreatedBy(userInfo); + String cleanUpFile = null; + + Map<String, MSAttributeObject> tempMap = new HashMap<>(); + //Need to delete the file + if (importFile.contains(".zip")){ + extractFolder(randomID + ".zip"); + File directory = new File(EXTRACTDIR + File.separator + randomID); + List<File> fileList = listModelFiles(directory.toString()); + //get all the files from a director + for (File file : fileList){ + if (file.isFile()){ + processYmlModel(file.toString(), modelName); + } + } + cleanUpFile = EXTRACTDIR + File.separator + randomID + ".zip"; + try { + FileUtils.deleteDirectory(new File(EXTRACTDIR + File.separator + randomID)); + FileUtils.deleteDirectory(new File(randomID)); + File deleteFile = new File(cleanUpFile); + FileUtils.forceDelete(deleteFile); + } catch (IOException e) { + logger.error("Failed to unzip model file " + randomID, e); + } + }else { + if(importFile.contains(".yml")){ + + processYmlModel(EXTRACTDIR + File.separator + randomID+".yml", modelName); + cleanUpFile = EXTRACTDIR + File.separator + randomID+".yml"; + + }else{ + tempMap = utils.processEpackage(EXTRACTDIR + File.separator + randomID+".xmi", MODEL_TYPE.XMI); + classMap.putAll(tempMap); + cleanUpFile = EXTRACTDIR + File.separator + randomID+".xmi"; + } + File deleteFile = new File(cleanUpFile); + deleteFile.delete(); + } + } + + private void processYmlModel(String fileName, String modelName){ + + try { + + utils.parseTosca(fileName); + + MSAttributeObject msAttributes= new MSAttributeObject(); + msAttributes.setClassName(modelName); + + LinkedHashMap<String, String> returnAttributeList =new LinkedHashMap<>(); + returnAttributeList.put(modelName, utils.getAttributeString()); + msAttributes.setAttribute(returnAttributeList); + + msAttributes.setSubClass(utils.getRetmap()); + + msAttributes.setMatchingSet(utils.getMatchableValues()); + + LinkedHashMap<String, String> returnReferenceList =new LinkedHashMap<>(); + + returnReferenceList.put(modelName, utils.getReferenceAttributes()); + msAttributes.setRefAttribute(returnReferenceList); + + if(!"".equals(utils.getListConstraints())){ + LinkedHashMap<String, String> enumList =new LinkedHashMap<>(); + String[] listArray=utils.getListConstraints().split("#"); for(String str:listArray){ String[] strArr= str.split("="); if(strArr.length>1){ enumList.put(strArr[0], strArr[1]); } } - msAttributes.setEnumType(enumList); - } - - classMap=new LinkedHashMap<>(); - classMap.put(modelName, msAttributes); - - } catch (Exception e) { - logger.error("Failed to process yml model" + e); - } - - } - - private List<File> listModelFiles(String directoryName) { - File directory = new File(directoryName); - List<File> resultList = new ArrayList<>(); - File[] fList = directory.listFiles(); - for (File file : fList) { - if (file.isFile()) { - resultList.add(file); - } else if (file.isDirectory()) { - resultList.addAll(listModelFiles(file.getAbsolutePath())); - } - } - return resultList; - } - - @SuppressWarnings("rawtypes") - private void extractFolder(String zipFile) { - int buffer = 2048; - File file = new File(zipFile); - - try(ZipFile zip = new ZipFile(EXTRACTDIR + File.separator +file);){ - String newPath = zipFile.substring(0, zipFile.length() - 4); - new File(newPath).mkdir(); - Enumeration zipFileEntries = zip.entries(); - - // Process each entry - while (zipFileEntries.hasMoreElements()){ - // grab a zip file entry - ZipEntry entry = (ZipEntry) zipFileEntries.nextElement(); - String currentEntry = entry.getName(); - File destFile = new File(EXTRACTDIR + File.separator + newPath + File.separator + currentEntry); - File destinationParent = destFile.getParentFile(); - - destinationParent.mkdirs(); - - if (!entry.isDirectory()){ - int currentByte; - - byte[] data = new byte[buffer]; - try(FileOutputStream fos = new FileOutputStream(destFile); - BufferedInputStream is = new BufferedInputStream(zip.getInputStream(entry)); - BufferedOutputStream dest = new BufferedOutputStream(fos, buffer)) { - - while ((currentByte = is.read(data, 0, buffer)) != -1) { - dest.write(data, 0, currentByte); - } - dest.flush(); - } - } - - if (currentEntry.endsWith(".zip")){ - extractFolder(destFile.getAbsolutePath()); - } - } - } catch (IOException e) { - logger.error("Failed to unzip model file " + zipFile + e); - } - } - - public Map<String, String> addValuesToNewModel() { - - Map<String, String> successMap = new HashMap<>(); - MSAttributeObject mainClass; - - if (!classMap.containsKey(this.newModel.getModelName())){ - logger.error("Model Provided does not contain the service name provided in request. Unable to import new model"); - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, "AddValuesToNewModel", "Unable to pull out required values, file missing service name provided in request"); - successMap.put("error", "MISSING"); - return successMap; - } - mainClass = classMap.get(this.newModel.getModelName()); - newModel.setDependency("[]"); - if(mainClass.getSubClass() != null){ - String value = new Gson().toJson(mainClass.getSubClass()); - newModel.setSubattributes(value); - } - - if(mainClass.getAttribute() != null){ - String attributes= mainClass.getAttribute().toString().replace("{", "").replace("}", ""); - int equalsIndexForAttributes= attributes.indexOf('='); - String atttributesAfterFirstEquals= attributes.substring(equalsIndexForAttributes+1); - this.newModel.setAttributes(atttributesAfterFirstEquals); - } - - if(mainClass.getRefAttribute() != null){ - String refAttributes= mainClass.getRefAttribute().toString().replace("{", "").replace("}", ""); - int equalsIndex= refAttributes.indexOf('='); - String refAttributesAfterFirstEquals= refAttributes.substring(equalsIndex+1); - this.newModel.setRefattributes(refAttributesAfterFirstEquals); - } - - if(mainClass.getEnumType() != null){ - this.newModel.setEnumValues(mainClass.getEnumType().toString().replace("{", "").replace("}", "")); - } - - if(mainClass.getMatchingSet() != null){ - this.newModel.setAnnotation(mainClass.getMatchingSet().toString().replace("{", "").replace("}", "")); - } - - successMap.put(SUCCESS, SUCCESS); - return successMap; - - } - - public Map<String, String> saveImportService(){ - String modelName = this.newModel.getModelName(); - String importedBy = "API"; - String version = this.newModel.getVersion(); - Map<String, String> successMap = new HashMap<>(); - CommonClassDaoImpl dbConnection = new CommonClassDaoImpl(); - List<Object> result = dbConnection.getDataById(OptimizationModels.class, "modelName:version", modelName+":"+version); - if(result.isEmpty()){ - OptimizationModels model = new OptimizationModels(); - model.setModelName(modelName); - model.setVersion(version); - model.setAttributes(this.newModel.getAttributes()); - model.setAnnotation(this.newModel.getAnnotation()); - model.setDependency(this.newModel.getDependency()); - model.setDescription(this.newModel.getDescription()); - model.setEnumValues(this.newModel.getEnumValues()); - model.setRefattributes(this.newModel.getRefattributes()); - model.setSubattributes(this.newModel.getSubattributes()); - model.setDataOrderInfo(this.newModel.getDataOrderInfo()); - UserInfo userInfo = new UserInfo(); - userInfo.setUserLoginId(importedBy); - userInfo.setUserName(importedBy); - model.setUserCreatedBy(userInfo); - dbConnection.save(model); - successMap.put(SUCCESS, SUCCESS); - }else{ - successMap.put("DBError", "EXISTS"); - logger.error("Import new service failed. Service already exists"); - } - return successMap; - } + msAttributes.setEnumType(enumList); + } + + classMap=new LinkedHashMap<>(); + classMap.put(modelName, msAttributes); + + } catch (Exception e) { + logger.error("Failed to process yml model" + e); + } + + } + + private List<File> listModelFiles(String directoryName) { + File directory = new File(directoryName); + List<File> resultList = new ArrayList<>(); + File[] fList = directory.listFiles(); + for (File file : fList) { + if (file.isFile()) { + resultList.add(file); + } else if (file.isDirectory()) { + resultList.addAll(listModelFiles(file.getAbsolutePath())); + } + } + return resultList; + } + + @SuppressWarnings("rawtypes") + private void extractFolder(String zipFile) { + int buffer = 2048; + File file = new File(zipFile); + + try(ZipFile zip = new ZipFile(EXTRACTDIR + File.separator +file);){ + String newPath = zipFile.substring(0, zipFile.length() - 4); + new File(newPath).mkdir(); + Enumeration zipFileEntries = zip.entries(); + + // Process each entry + while (zipFileEntries.hasMoreElements()){ + // grab a zip file entry + ZipEntry entry = (ZipEntry) zipFileEntries.nextElement(); + String currentEntry = entry.getName(); + File destFile = new File(EXTRACTDIR + File.separator + newPath + File.separator + currentEntry); + File destinationParent = destFile.getParentFile(); + + destinationParent.mkdirs(); + + if (!entry.isDirectory()){ + int currentByte; + + byte[] data = new byte[buffer]; + try(FileOutputStream fos = new FileOutputStream(destFile); + BufferedInputStream is = new BufferedInputStream(zip.getInputStream(entry)); + BufferedOutputStream dest = new BufferedOutputStream(fos, buffer)) { + + while ((currentByte = is.read(data, 0, buffer)) != -1) { + dest.write(data, 0, currentByte); + } + dest.flush(); + } + } + + if (currentEntry.endsWith(".zip")){ + extractFolder(destFile.getAbsolutePath()); + } + } + } catch (IOException e) { + logger.error("Failed to unzip model file " + zipFile + e); + } + } + + public Map<String, String> addValuesToNewModel() { + + Map<String, String> successMap = new HashMap<>(); + MSAttributeObject mainClass; + + if (!classMap.containsKey(this.newModel.getModelName())){ + logger.error("Model Provided does not contain the service name provided in request. Unable to import new model"); + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, "AddValuesToNewModel", "Unable to pull out required values, file missing service name provided in request"); + successMap.put("error", "MISSING"); + return successMap; + } + mainClass = classMap.get(this.newModel.getModelName()); + newModel.setDependency("[]"); + if(mainClass.getSubClass() != null){ + String value = new Gson().toJson(mainClass.getSubClass()); + newModel.setSubattributes(value); + } + + if(mainClass.getAttribute() != null){ + String attributes= mainClass.getAttribute().toString().replace("{", "").replace("}", ""); + int equalsIndexForAttributes= attributes.indexOf('='); + String atttributesAfterFirstEquals= attributes.substring(equalsIndexForAttributes+1); + this.newModel.setAttributes(atttributesAfterFirstEquals); + } + + if(mainClass.getRefAttribute() != null){ + String refAttributes= mainClass.getRefAttribute().toString().replace("{", "").replace("}", ""); + int equalsIndex= refAttributes.indexOf('='); + String refAttributesAfterFirstEquals= refAttributes.substring(equalsIndex+1); + this.newModel.setRefattributes(refAttributesAfterFirstEquals); + } + + if(mainClass.getEnumType() != null){ + this.newModel.setEnumValues(mainClass.getEnumType().toString().replace("{", "").replace("}", "")); + } + + if(mainClass.getMatchingSet() != null){ + this.newModel.setAnnotation(mainClass.getMatchingSet().toString().replace("{", "").replace("}", "")); + } + + successMap.put(SUCCESS, SUCCESS); + return successMap; + + } + + public Map<String, String> saveImportService(){ + String modelName = this.newModel.getModelName(); + String importedBy = "API"; + String version = this.newModel.getVersion(); + Map<String, String> successMap = new HashMap<>(); + CommonClassDaoImpl dbConnection = new CommonClassDaoImpl(); + List<Object> result = dbConnection.getDataById(OptimizationModels.class, "modelName:version", modelName+":"+version); + if(result.isEmpty()){ + OptimizationModels model = new OptimizationModels(); + model.setModelName(modelName); + model.setVersion(version); + model.setAttributes(this.newModel.getAttributes()); + model.setAnnotation(this.newModel.getAnnotation()); + model.setDependency(this.newModel.getDependency()); + model.setDescription(this.newModel.getDescription()); + model.setEnumValues(this.newModel.getEnumValues()); + model.setRefattributes(this.newModel.getRefattributes()); + model.setSubattributes(this.newModel.getSubattributes()); + model.setDataOrderInfo(this.newModel.getDataOrderInfo()); + UserInfo userInfo = new UserInfo(); + userInfo.setUserLoginId(importedBy); + userInfo.setUserName(importedBy); + model.setUserCreatedBy(userInfo); + dbConnection.save(model); + successMap.put(SUCCESS, SUCCESS); + }else{ + successMap.put("DBError", "EXISTS"); + logger.error("Import new service failed. Service already exists"); + } + return successMap; + } } diff --git 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 index c8c540c34..eece6c017 100644 --- 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 @@ -85,101 +85,101 @@ import oasis.names.tc.xacml._3_0.core.schema.wd_17.VariableDefinitionType; import oasis.names.tc.xacml._3_0.core.schema.wd_17.VariableReferenceType; public class DecisionPolicy extends Policy { - - private static final Logger LOGGER = FlexLogger.getLogger(DecisionPolicy.class); - - public static final String FUNCTION_NOT = "urn:oasis:names:tc:xacml:1.0:function:not"; - private static final String AAFPROVIDER = "AAF"; - public static final String GUARD_YAML = "GUARD_YAML"; + + private static final Logger LOGGER = FlexLogger.getLogger(DecisionPolicy.class); + + public static final String FUNCTION_NOT = "urn:oasis:names:tc:xacml:1.0:function:not"; + private static final String AAFPROVIDER = "AAF"; + public static final String GUARD_YAML = "GUARD_YAML"; public static final String GUARD_BL_YAML = "GUARD_BL_YAML"; public static final String RAINY_DAY = "Rainy_Day"; private static final String XACML_GUARD_TEMPLATE = "Decision_GuardPolicyTemplate.xml"; private static final String XACML_BLGUARD_TEMPLATE = "Decision_GuardBLPolicyTemplate.xml"; - private static final String ONAPNAME = "ONAPName"; - private static final String POLICY_NAME = "PolicyName"; - private static final String DESCRIPTION = "description"; - - - List<String> dynamicLabelRuleAlgorithms = new LinkedList<>(); - List<String> dynamicFieldComboRuleAlgorithms = new LinkedList<>(); - List<String> dynamicFieldOneRuleAlgorithms = new LinkedList<>(); - List<String> dynamicFieldTwoRuleAlgorithms = new LinkedList<>(); - List<String> dataTypeList = new LinkedList<>(); - - private CommonClassDao commonClassDao; - - public DecisionPolicy() { - super(); - } - - public DecisionPolicy(PolicyRestAdapter policyAdapter, CommonClassDao commonClassDao){ - this.policyAdapter = policyAdapter; - this.commonClassDao = commonClassDao; - } - - @Override - public Map<String, String> savePolicies() throws PAPException { - - Map<String, String> successMap = new HashMap<>(); - if(isPolicyExists()){ - successMap.put("EXISTS", "This Policy already exist on the PAP"); - return successMap; - } - - if(!isPreparedToSave()){ - //Prep and configure the policy for saving - prepareToSave(); - } - - // Until here we prepared the data and here calling the method to create xml. - Path newPolicyPath = null; - newPolicyPath = Paths.get(policyAdapter.getNewFileName()); - - successMap = createPolicy(newPolicyPath,getCorrectPolicyDataObject()); - return successMap; - } - - //This is the method for preparing the policy for saving. We have broken it out - //separately because the fully configured policy is used for multiple things - @Override - public boolean prepareToSave() throws PAPException{ - - if(isPreparedToSave()){ - //we have already done this - return true; - } - - int version = 0; - String policyID = policyAdapter.getPolicyID(); - version = policyAdapter.getHighestVersion(); - - // Create the Instance for pojo, PolicyType object is used in marshalling. - if ("Decision".equals(policyAdapter.getPolicyType())) { - PolicyType policyConfig = new PolicyType(); - - policyConfig.setVersion(Integer.toString(version)); - policyConfig.setPolicyId(policyID); - policyConfig.setTarget(new TargetType()); - policyAdapter.setData(policyConfig); - } - policyName = policyAdapter.getNewFileName(); - - if(policyAdapter.getRuleProvider().equals(GUARD_YAML) || policyAdapter.getRuleProvider().equals(GUARD_BL_YAML)){ - Map<String, String> yamlParams = new HashMap<>(); - String blackListEntryType = policyAdapter.getBlackListEntryType() !=null ? policyAdapter.getBlackListEntryType(): "Use Manual Entry"; - String description = policyAdapter.getPolicyDescription() != null? policyAdapter.getPolicyDescription(): "YAML Guard Policy"; - yamlParams.put(DESCRIPTION, description + "@blEntry@" + blackListEntryType + "@blEntry@"); - String fileName = policyAdapter.getNewFileName(); - String name = fileName.substring(fileName.lastIndexOf('\\') + 1, fileName.length()); - if ((name == null) || ("".equals(name))) { - name = fileName.substring(fileName.lastIndexOf('/') + 1, fileName.length()); - } - yamlParams.put(POLICY_NAME, name); - yamlParams.put(ONAPNAME, policyAdapter.getOnapName()); - Map<String, String> params = policyAdapter.getDynamicFieldConfigAttributes(); - yamlParams.putAll(params); - // Call YAML to XACML + private static final String ONAPNAME = "ONAPName"; + private static final String POLICY_NAME = "PolicyName"; + private static final String DESCRIPTION = "description"; + + + List<String> dynamicLabelRuleAlgorithms = new LinkedList<>(); + List<String> dynamicFieldComboRuleAlgorithms = new LinkedList<>(); + List<String> dynamicFieldOneRuleAlgorithms = new LinkedList<>(); + List<String> dynamicFieldTwoRuleAlgorithms = new LinkedList<>(); + List<String> dataTypeList = new LinkedList<>(); + + private CommonClassDao commonClassDao; + + public DecisionPolicy() { + super(); + } + + public DecisionPolicy(PolicyRestAdapter policyAdapter, CommonClassDao commonClassDao){ + this.policyAdapter = policyAdapter; + this.commonClassDao = commonClassDao; + } + + @Override + public Map<String, String> savePolicies() throws PAPException { + + Map<String, String> successMap = new HashMap<>(); + if(isPolicyExists()){ + successMap.put("EXISTS", "This Policy already exist on the PAP"); + return successMap; + } + + if(!isPreparedToSave()){ + //Prep and configure the policy for saving + prepareToSave(); + } + + // Until here we prepared the data and here calling the method to create xml. + Path newPolicyPath = null; + newPolicyPath = Paths.get(policyAdapter.getNewFileName()); + + successMap = createPolicy(newPolicyPath,getCorrectPolicyDataObject()); + return successMap; + } + + //This is the method for preparing the policy for saving. We have broken it out + //separately because the fully configured policy is used for multiple things + @Override + public boolean prepareToSave() throws PAPException{ + + if(isPreparedToSave()){ + //we have already done this + return true; + } + + int version = 0; + String policyID = policyAdapter.getPolicyID(); + version = policyAdapter.getHighestVersion(); + + // Create the Instance for pojo, PolicyType object is used in marshalling. + if ("Decision".equals(policyAdapter.getPolicyType())) { + PolicyType policyConfig = new PolicyType(); + + policyConfig.setVersion(Integer.toString(version)); + policyConfig.setPolicyId(policyID); + policyConfig.setTarget(new TargetType()); + policyAdapter.setData(policyConfig); + } + policyName = policyAdapter.getNewFileName(); + + if(policyAdapter.getRuleProvider().equals(GUARD_YAML) || policyAdapter.getRuleProvider().equals(GUARD_BL_YAML)){ + Map<String, String> yamlParams = new HashMap<>(); + String blackListEntryType = policyAdapter.getBlackListEntryType() !=null ? policyAdapter.getBlackListEntryType(): "Use Manual Entry"; + String description = policyAdapter.getPolicyDescription() != null? policyAdapter.getPolicyDescription(): "YAML Guard Policy"; + yamlParams.put(DESCRIPTION, description + "@blEntry@" + blackListEntryType + "@blEntry@"); + String fileName = policyAdapter.getNewFileName(); + String name = fileName.substring(fileName.lastIndexOf('\\') + 1, fileName.length()); + if ((name == null) || ("".equals(name))) { + name = fileName.substring(fileName.lastIndexOf('/') + 1, fileName.length()); + } + yamlParams.put(POLICY_NAME, name); + yamlParams.put(ONAPNAME, policyAdapter.getOnapName()); + Map<String, String> params = policyAdapter.getDynamicFieldConfigAttributes(); + yamlParams.putAll(params); + // Call YAML to XACML try { PolicyType decisionPolicy = getGuardPolicy(yamlParams, policyAdapter.getRuleProvider()); decisionPolicy.setRuleCombiningAlgId(policyAdapter.getRuleCombiningAlgId()); @@ -190,614 +190,614 @@ public class DecisionPolicy extends Policy { LOGGER.error(e); throw new PAPException(e); } - }else if (policyAdapter.getData() != null) { - PolicyType decisionPolicy = (PolicyType) policyAdapter.getData(); - - decisionPolicy.setDescription(policyAdapter.getPolicyDescription()); - - decisionPolicy.setRuleCombiningAlgId(policyAdapter.getRuleCombiningAlgId()); - AllOfType allOfOne = new AllOfType(); - String fileName = policyAdapter.getNewFileName(); - String name = fileName.substring(fileName.lastIndexOf('\\') + 1, fileName.length()); - if ((name == null) || ("".equals(name))) { - name = fileName.substring(fileName.lastIndexOf('/') + 1, fileName.length()); - } - allOfOne.getMatch().add(createMatch(POLICY_NAME, name)); - - AllOfType allOf = new AllOfType(); - - // Match for Onap - allOf.getMatch().add(createMatch(ONAPNAME, (policyAdapter.getOnapName()))); - - Map<String, String> dynamicFieldComponentAttributes = policyAdapter.getDynamicFieldConfigAttributes(); - if(policyAdapter.getRuleProvider()!=null && policyAdapter.getRuleProvider().equals(AAFPROVIDER)){ - dynamicFieldComponentAttributes = new HashMap<>(); - } - - // If there is any dynamic field attributes create the matches here - for (String keyField : dynamicFieldComponentAttributes.keySet()) { - String key = keyField; - String value = dynamicFieldComponentAttributes.get(key); - MatchType dynamicMatch = createDynamicMatch(key, value); - allOf.getMatch().add(dynamicMatch); - } - - AnyOfType anyOf = new AnyOfType(); - anyOf.getAllOf().add(allOfOne); - anyOf.getAllOf().add(allOf); - - TargetType target = new TargetType(); - target.getAnyOf().add(anyOf); - decisionPolicy.setTarget(target); - - Map<String, String> dynamicFieldDecisionSettings = policyAdapter.getDynamicSettingsMap(); - if(policyAdapter.getRuleProvider()!=null && (policyAdapter.getRuleProvider().equals(AAFPROVIDER)|| - policyAdapter.getRuleProvider().equals(RAINY_DAY))){ - dynamicFieldDecisionSettings = new HashMap<>(); - } - - // settings are dynamic so check how many rows are added and add all - for (String keyField : dynamicFieldDecisionSettings.keySet()) { - String key = keyField; - String value = dynamicFieldDecisionSettings.get(key); - String dataType = getDataType(key); - VariableDefinitionType dynamicVariable = createDynamicVariable(key, value, dataType); - decisionPolicy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().add(dynamicVariable); - } - - Map<String, String> dynamicFieldTreatmentAttributes = policyAdapter.getRainydayMap(); - if(policyAdapter.getRuleProvider().equals(RAINY_DAY)){ - for(String keyField : dynamicFieldTreatmentAttributes.keySet()) { - String errorcode = keyField; - String treatment = dynamicFieldTreatmentAttributes.get(errorcode); - createRainydayRule(decisionPolicy, errorcode, treatment, true); - } - } else { - createRule(decisionPolicy, true); - createRule(decisionPolicy, false); - } - - } - setPreparedToSave(true); - return true; - } - - public PolicyType getGuardPolicy(Map<String, String> yamlParams, String ruleProvider) throws BuilderException{ - try { - ControlLoopGuardBuilder builder = ControlLoopGuardBuilder.Factory.buildControlLoopGuard(new Guard()); - MatchParameters matchParameters = new MatchParameters(yamlParams.get("actor"), yamlParams.get("recipe")); - matchParameters.setControlLoopName(yamlParams.get("clname")); - if(yamlParams.containsKey("targets")){ - String targetString = yamlParams.get("targets"); - List<String> targets = null; - if(targetString!=null && !targetString.isEmpty()){ - if (targetString.contains(",")){ - targets = Arrays.asList(targetString.split(",")); - } - else{ - targets = new ArrayList<>(); - targets.add(targetString); - } - } - matchParameters.setTargets(targets); - } - GuardPolicy policy1 = new GuardPolicy((policyAdapter.getUuid()!=null? policyAdapter.getUuid(): UUID.randomUUID().toString()) ,yamlParams.get(POLICY_NAME), yamlParams.get(DESCRIPTION), matchParameters); - builder = builder.addGuardPolicy(policy1); + }else if (policyAdapter.getData() != null) { + PolicyType decisionPolicy = (PolicyType) policyAdapter.getData(); + + decisionPolicy.setDescription(policyAdapter.getPolicyDescription()); + + decisionPolicy.setRuleCombiningAlgId(policyAdapter.getRuleCombiningAlgId()); + AllOfType allOfOne = new AllOfType(); + String fileName = policyAdapter.getNewFileName(); + String name = fileName.substring(fileName.lastIndexOf('\\') + 1, fileName.length()); + if ((name == null) || ("".equals(name))) { + name = fileName.substring(fileName.lastIndexOf('/') + 1, fileName.length()); + } + allOfOne.getMatch().add(createMatch(POLICY_NAME, name)); + + AllOfType allOf = new AllOfType(); + + // Match for Onap + allOf.getMatch().add(createMatch(ONAPNAME, (policyAdapter.getOnapName()))); + + Map<String, String> dynamicFieldComponentAttributes = policyAdapter.getDynamicFieldConfigAttributes(); + if(policyAdapter.getRuleProvider()!=null && policyAdapter.getRuleProvider().equals(AAFPROVIDER)){ + dynamicFieldComponentAttributes = new HashMap<>(); + } + + // If there is any dynamic field attributes create the matches here + for (String keyField : dynamicFieldComponentAttributes.keySet()) { + String key = keyField; + String value = dynamicFieldComponentAttributes.get(key); + MatchType dynamicMatch = createDynamicMatch(key, value); + allOf.getMatch().add(dynamicMatch); + } + + AnyOfType anyOf = new AnyOfType(); + anyOf.getAllOf().add(allOfOne); + anyOf.getAllOf().add(allOf); + + TargetType target = new TargetType(); + target.getAnyOf().add(anyOf); + decisionPolicy.setTarget(target); + + Map<String, String> dynamicFieldDecisionSettings = policyAdapter.getDynamicSettingsMap(); + if(policyAdapter.getRuleProvider()!=null && (policyAdapter.getRuleProvider().equals(AAFPROVIDER)|| + policyAdapter.getRuleProvider().equals(RAINY_DAY))){ + dynamicFieldDecisionSettings = new HashMap<>(); + } + + // settings are dynamic so check how many rows are added and add all + for (String keyField : dynamicFieldDecisionSettings.keySet()) { + String key = keyField; + String value = dynamicFieldDecisionSettings.get(key); + String dataType = getDataType(key); + VariableDefinitionType dynamicVariable = createDynamicVariable(key, value, dataType); + decisionPolicy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().add(dynamicVariable); + } + + Map<String, String> dynamicFieldTreatmentAttributes = policyAdapter.getRainydayMap(); + if(policyAdapter.getRuleProvider().equals(RAINY_DAY)){ + for(String keyField : dynamicFieldTreatmentAttributes.keySet()) { + String errorcode = keyField; + String treatment = dynamicFieldTreatmentAttributes.get(errorcode); + createRainydayRule(decisionPolicy, errorcode, treatment, true); + } + } else { + createRule(decisionPolicy, true); + createRule(decisionPolicy, false); + } + + } + setPreparedToSave(true); + return true; + } + + public PolicyType getGuardPolicy(Map<String, String> yamlParams, String ruleProvider) throws BuilderException{ + try { + ControlLoopGuardBuilder builder = ControlLoopGuardBuilder.Factory.buildControlLoopGuard(new Guard()); + MatchParameters matchParameters = new MatchParameters(yamlParams.get("actor"), yamlParams.get("recipe")); + matchParameters.setControlLoopName(yamlParams.get("clname")); + if(yamlParams.containsKey("targets")){ + String targetString = yamlParams.get("targets"); + List<String> targets = null; + if(targetString!=null && !targetString.isEmpty()){ + if (targetString.contains(",")){ + targets = Arrays.asList(targetString.split(",")); + } + else{ + targets = new ArrayList<>(); + targets.add(targetString); + } + } + matchParameters.setTargets(targets); + } + GuardPolicy policy1 = new GuardPolicy((policyAdapter.getUuid()!=null? policyAdapter.getUuid(): UUID.randomUUID().toString()) ,yamlParams.get(POLICY_NAME), yamlParams.get(DESCRIPTION), matchParameters); + builder = builder.addGuardPolicy(policy1); Map<String, String> activeTimeRange = new HashMap<>(); activeTimeRange.put("start", yamlParams.get("guardActiveStart")); activeTimeRange.put("end", yamlParams.get("guardActiveEnd")); - String blackListString = yamlParams.get("blackList"); - List<String> blackList = null; + String blackListString = yamlParams.get("blackList"); + List<String> blackList = null; if(blackListString!=null && !blackListString.trim().isEmpty()){ - if (blackListString.contains(",")){ - blackList = Arrays.asList(blackListString.split(",")); - } - else{ - blackList = new ArrayList<>(); - blackList.add(blackListString); - } - } + if (blackListString.contains(",")){ + blackList = Arrays.asList(blackListString.split(",")); + } + else{ + blackList = new ArrayList<>(); + blackList.add(blackListString); + } + } if(yamlParams.containsKey("appendBlackList")){ - String appendBlackListString = yamlParams.get("appendBlackList"); + String appendBlackListString = yamlParams.get("appendBlackList"); List<String> appendBlackList = null; if(appendBlackListString!=null && !appendBlackListString.trim().isEmpty()){ - appendBlackList = Arrays.asList(appendBlackListString.split(",")); - for(int i=0; i<appendBlackList.size();i++){ - blackList.remove(appendBlackList.get(i)); - } + appendBlackList = Arrays.asList(appendBlackListString.split(",")); + for(int i=0; i<appendBlackList.size();i++){ + blackList.remove(appendBlackList.get(i)); + } } } - File templateFile; - Path xacmlTemplatePath; - ClassLoader classLoader = getClass().getClassLoader(); - Constraint cons = new Constraint(); - switch (ruleProvider){ - case GUARD_BL_YAML: - templateFile = new File(classLoader.getResource(XACML_BLGUARD_TEMPLATE).getFile()); - xacmlTemplatePath = templateFile.toPath(); + File templateFile; + Path xacmlTemplatePath; + ClassLoader classLoader = getClass().getClassLoader(); + Constraint cons = new Constraint(); + switch (ruleProvider){ + case GUARD_BL_YAML: + templateFile = new File(classLoader.getResource(XACML_BLGUARD_TEMPLATE).getFile()); + xacmlTemplatePath = templateFile.toPath(); cons.setActive_time_range(activeTimeRange); if(blackList==null || blackList.isEmpty()){ throw new BuilderException("blackList is required"); } cons.setBlacklist(blackList); - break; - default: - templateFile = new File(classLoader.getResource(XACML_GUARD_TEMPLATE).getFile()); - xacmlTemplatePath = templateFile.toPath(); - Map<String,String> timeWindow = new HashMap<>(); - if(!PolicyUtils.isInteger(yamlParams.get("timeWindow"))){ - throw new BuilderException("time window is not in Integer format."); - } - String timeUnits = yamlParams.get("timeUnits"); - if(timeUnits==null || !(timeUnits.equalsIgnoreCase("minute") || timeUnits.equalsIgnoreCase("hour") || timeUnits.equalsIgnoreCase("day") - || timeUnits.equalsIgnoreCase("week") || timeUnits.equalsIgnoreCase("month")||timeUnits.equalsIgnoreCase("year"))){ - throw new BuilderException("time Units is not in proper format."); - } - timeWindow.put("value", yamlParams.get("timeWindow")); - timeWindow.put("units", yamlParams.get("timeUnits")); - cons = new Constraint(Integer.parseInt(yamlParams.get("limit")),timeWindow,activeTimeRange); - break; - } - builder = builder.addLimitConstraint(policy1.getId(), cons); - // Build the specification - Results results = builder.buildSpecification(); - // YAML TO XACML - ControlLoopGuard yamlGuardObject = SafePolicyBuilder.loadYamlGuard(results.getSpecification()); - String xacmlTemplateContent; - try { - xacmlTemplateContent = new String(Files.readAllBytes(xacmlTemplatePath)); - HashMap<String, String> yamlSpecs = new HashMap<>(); - yamlSpecs.put(POLICY_NAME, yamlParams.get(POLICY_NAME)); - yamlSpecs.put(DESCRIPTION, yamlParams.get(DESCRIPTION)); - yamlSpecs.put(ONAPNAME, yamlParams.get(ONAPNAME)); - yamlSpecs.put("actor", yamlGuardObject.getGuards().getFirst().getMatch_parameters().getActor()); - yamlSpecs.put("recipe", yamlGuardObject.getGuards().getFirst().getMatch_parameters().getRecipe()); - yamlSpecs.put("clname", yamlGuardObject.getGuards().getFirst().getMatch_parameters().getControlLoopName()); - if(yamlGuardObject.getGuards().getFirst().getLimit_constraints().getFirst().getFreq_limit_per_target()!=null){ - yamlSpecs.put("limit", yamlGuardObject.getGuards().getFirst().getLimit_constraints().getFirst().getFreq_limit_per_target().toString()); - } - if(yamlGuardObject.getGuards().getFirst().getLimit_constraints().getFirst().getTime_window()!=null){ - yamlSpecs.put("twValue", yamlGuardObject.getGuards().getFirst().getLimit_constraints().getFirst().getTime_window().get("value")); - yamlSpecs.put("twUnits", yamlGuardObject.getGuards().getFirst().getLimit_constraints().getFirst().getTime_window().get("units")); - } - yamlSpecs.put("guardActiveStart", yamlGuardObject.getGuards().getFirst().getLimit_constraints().getFirst().getActive_time_range().get("start")); - yamlSpecs.put("guardActiveEnd", yamlGuardObject.getGuards().getFirst().getLimit_constraints().getFirst().getActive_time_range().get("end")); - String xacmlPolicyContent = SafePolicyBuilder.generateXacmlGuard(xacmlTemplateContent,yamlSpecs, yamlGuardObject.getGuards().getFirst().getLimit_constraints().getFirst().getBlacklist(), yamlGuardObject.getGuards().getFirst().getMatch_parameters().getTargets()); - // Convert the Policy into Stream input to Policy Adapter. - Object policy = XACMLPolicyScanner.readPolicy(new ByteArrayInputStream(xacmlPolicyContent.getBytes(StandardCharsets.UTF_8))); - return (PolicyType) policy; - } catch (IOException e) { - LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + "Error while creating the policy " + e.getMessage() , e); - } - } catch (BuilderException e) { - LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + "Error while creating the policy " + e.getMessage() ,e); - throw e; - } - return null; - } - - private DecisionSettings findDecisionSettingsBySettingId(String settingId) { - DecisionSettings decisionSetting = null; - - EntityManager em = XACMLPapServlet.getEmf().createEntityManager(); - Query getDecisionSettings = em.createNamedQuery("DecisionSettings.findAll"); - List<?> decisionSettingsList = getDecisionSettings.getResultList(); - - for (Object id : decisionSettingsList) { - decisionSetting = (DecisionSettings) id; - if (decisionSetting.getXacmlId().equals(settingId)) { - break; - } - } - return decisionSetting; - } - - private void createRule(PolicyType decisionPolicy, boolean permitRule) { - RuleType rule = new RuleType(); - - rule.setRuleId(policyAdapter.getRuleID()); - - if (permitRule) { - rule.setEffect(EffectType.PERMIT); - } else { - rule.setEffect(EffectType.DENY); - } - rule.setTarget(new TargetType()); - - // Create Target in Rule - AllOfType allOfInRule = new AllOfType(); - - // Creating match for ACCESS in rule target - MatchType accessMatch = new MatchType(); - AttributeValueType accessAttributeValue = new AttributeValueType(); - accessAttributeValue.setDataType(STRING_DATATYPE); - accessAttributeValue.getContent().add("DECIDE"); - accessMatch.setAttributeValue(accessAttributeValue); - AttributeDesignatorType accessAttributeDesignator = new AttributeDesignatorType(); - URI accessURI = null; - try { - accessURI = new URI(ACTION_ID); - } catch (URISyntaxException e) { - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "DecisionPolicy", "Exception creating ACCESS URI"); - } - accessAttributeDesignator.setCategory(CATEGORY_ACTION); - accessAttributeDesignator.setDataType(STRING_DATATYPE); - accessAttributeDesignator.setAttributeId(new IdentifierImpl(accessURI).stringValue()); - accessMatch.setAttributeDesignator(accessAttributeDesignator); - accessMatch.setMatchId(FUNCTION_STRING_EQUAL_IGNORE); - - dynamicLabelRuleAlgorithms = policyAdapter.getDynamicRuleAlgorithmLabels(); - dynamicFieldComboRuleAlgorithms = policyAdapter.getDynamicRuleAlgorithmCombo(); - dynamicFieldOneRuleAlgorithms = policyAdapter.getDynamicRuleAlgorithmField1(); - dynamicFieldTwoRuleAlgorithms = policyAdapter.getDynamicRuleAlgorithmField2(); - - if(policyAdapter.getRuleProvider()!=null && policyAdapter.getRuleProvider().equals(AAFPROVIDER)){ - // Values for AAF Provider are here for XML Creation. - ConditionType condition = new ConditionType(); - ApplyType decisionApply = new ApplyType(); - - AttributeValueType value1 = new AttributeValueType(); - value1.setDataType(BOOLEAN_DATATYPE); - value1.getContent().add("true"); - - AttributeDesignatorType value2 = new AttributeDesignatorType(); - value2.setAttributeId(AAFEngine.AAF_RESULT); - value2.setCategory(CATEGORY_RESOURCE); - value2.setDataType(BOOLEAN_DATATYPE); - value2.setMustBePresent(false); - - ApplyType innerDecisionApply = new ApplyType(); - innerDecisionApply.setFunctionId(FUNCTION_BOOLEAN_ONE_AND_ONLY); - innerDecisionApply.getExpression().add(new ObjectFactory().createAttributeDesignator(value2)); - - decisionApply.setFunctionId(XACML3.ID_FUNCTION_BOOLEAN_EQUAL.stringValue()); - decisionApply.getExpression().add(new ObjectFactory().createAttributeValue(value1)); - decisionApply.getExpression().add(new ObjectFactory().createApply(innerDecisionApply)); - condition.setExpression(new ObjectFactory().createApply(decisionApply)); - if (!permitRule) { - ApplyType notOuterApply = new ApplyType(); - notOuterApply.setFunctionId(FUNCTION_NOT); - notOuterApply.getExpression().add(condition.getExpression()); - condition.setExpression(new ObjectFactory().createApply(notOuterApply)); - } - rule.setCondition(condition); - allOfInRule.getMatch().add(accessMatch); - - AnyOfType anyOfInRule = new AnyOfType(); - anyOfInRule.getAllOf().add(allOfInRule); - - TargetType targetInRule = new TargetType(); - targetInRule.getAnyOf().add(anyOfInRule); - - rule.setTarget(targetInRule); - if(!permitRule){ - AdviceExpressionsType adviceExpressions = new AdviceExpressionsType(); - AdviceExpressionType adviceExpression = new AdviceExpressionType(); - adviceExpression.setAdviceId(AAFPROVIDER); - adviceExpression.setAppliesTo(EffectType.DENY); - AttributeAssignmentExpressionType assignment = new AttributeAssignmentExpressionType(); - assignment.setAttributeId("aaf.response"); - assignment.setCategory(CATEGORY_RESOURCE); - AttributeDesignatorType value = new AttributeDesignatorType(); - value.setAttributeId(AAFEngine.AAF_RESPONSE); - value.setCategory(CATEGORY_RESOURCE); - value.setDataType(STRING_DATATYPE); - value.setMustBePresent(false); - assignment.setExpression(new ObjectFactory().createAttributeDesignator(value)); - adviceExpression.getAttributeAssignmentExpression().add(assignment); - adviceExpressions.getAdviceExpression().add(adviceExpression); - rule.setAdviceExpressions(adviceExpressions); - } - decisionPolicy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().add(rule); - policyAdapter.setPolicyData(decisionPolicy); - - }else if (dynamicLabelRuleAlgorithms != null && !dynamicLabelRuleAlgorithms.isEmpty()) { - boolean isCompound = false; - ConditionType condition = new ConditionType(); - int index = dynamicFieldOneRuleAlgorithms.size() - 1; - - for (String labelAttr : dynamicLabelRuleAlgorithms) { - // if the rule algorithm as a label means it is a compound - if (dynamicFieldOneRuleAlgorithms.get(index).equals(labelAttr)) { - ApplyType decisionApply = new ApplyType(); - - String selectedFunction = dynamicFieldComboRuleAlgorithms.get(index); - String value1 = dynamicFieldOneRuleAlgorithms.get(index); - String value2 = dynamicFieldTwoRuleAlgorithms.get(index); - decisionApply.setFunctionId(getFunctionDefinitionId(selectedFunction)); - decisionApply.getExpression().add(new ObjectFactory().createApply(getInnerDecisionApply(value1))); - decisionApply.getExpression().add(new ObjectFactory().createApply(getInnerDecisionApply(value2))); - condition.setExpression(new ObjectFactory().createApply(decisionApply)); - isCompound = true; - } - - // if rule algorithm not a compound - if (!isCompound) { - condition.setExpression(new ObjectFactory().createApply(getInnerDecisionApply(dynamicLabelRuleAlgorithms.get(index)))); - } - } - if (!permitRule) { - ApplyType notOuterApply = new ApplyType(); - notOuterApply.setFunctionId(FUNCTION_NOT); - notOuterApply.getExpression().add(condition.getExpression()); - condition.setExpression(new ObjectFactory().createApply(notOuterApply)); - } - rule.setCondition(condition); - allOfInRule.getMatch().add(accessMatch); - - AnyOfType anyOfInRule = new AnyOfType(); - anyOfInRule.getAllOf().add(allOfInRule); - - TargetType targetInRule = new TargetType(); - targetInRule.getAnyOf().add(anyOfInRule); - - rule.setTarget(targetInRule); - - decisionPolicy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().add(rule); - policyAdapter.setPolicyData(decisionPolicy); - - } else { - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + "Unsupported data object."+ policyAdapter.getData().getClass().getCanonicalName()); - } - - } - - private void createRainydayRule(PolicyType decisionPolicy, String errorcode, String treatment, boolean permitRule) { - RuleType rule = new RuleType(); - - rule.setRuleId(UUID.randomUUID().toString()); - - if (permitRule) { - rule.setEffect(EffectType.PERMIT); - } else { - rule.setEffect(EffectType.DENY); - } - rule.setTarget(new TargetType()); - - // Create Target in Rule - AllOfType allOfInRule = new AllOfType(); - - // Creating match for DECIDE in rule target - MatchType accessMatch = new MatchType(); - AttributeValueType accessAttributeValue = new AttributeValueType(); - accessAttributeValue.setDataType(STRING_DATATYPE); - accessAttributeValue.getContent().add("DECIDE"); - accessMatch.setAttributeValue(accessAttributeValue); - AttributeDesignatorType accessAttributeDesignator = new AttributeDesignatorType(); - URI accessURI = null; - try { - accessURI = new URI(ACTION_ID); - } catch (URISyntaxException e) { - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "DecisionPolicy", "Exception creating ACCESS URI"); - } - accessAttributeDesignator.setCategory(CATEGORY_ACTION); - accessAttributeDesignator.setDataType(STRING_DATATYPE); - accessAttributeDesignator.setAttributeId(new IdentifierImpl(accessURI).stringValue()); - accessMatch.setAttributeDesignator(accessAttributeDesignator); - accessMatch.setMatchId(FUNCTION_STRING_EQUAL_IGNORE); - - allOfInRule.getMatch().add(accessMatch); - - // Creating match for ErrorCode in rule target - MatchType errorcodeMatch = new MatchType(); - AttributeValueType errorcodeAttributeValue = new AttributeValueType(); - errorcodeAttributeValue.setDataType(STRING_DATATYPE); - errorcodeAttributeValue.getContent().add(errorcode); - errorcodeMatch.setAttributeValue(errorcodeAttributeValue); - AttributeDesignatorType errorcodeAttributeDesignator = new AttributeDesignatorType(); - errorcodeAttributeDesignator.setCategory(CATEGORY_RESOURCE); - errorcodeAttributeDesignator.setDataType(STRING_DATATYPE); - errorcodeAttributeDesignator.setAttributeId("ErrorCode"); - errorcodeMatch.setAttributeDesignator(errorcodeAttributeDesignator); - errorcodeMatch.setMatchId(FUNCTION_STRING_REGEXP_MATCH); - - allOfInRule.getMatch().add(errorcodeMatch); - - AnyOfType anyOfInRule = new AnyOfType(); - anyOfInRule.getAllOf().add(allOfInRule); - - TargetType targetInRule = new TargetType(); - targetInRule.getAnyOf().add(anyOfInRule); - - rule.setTarget(targetInRule); - - AdviceExpressionsType adviceExpressions = new AdviceExpressionsType(); - AdviceExpressionType adviceExpression = new AdviceExpressionType(); - adviceExpression.setAdviceId(RAINY_DAY); - adviceExpression.setAppliesTo(EffectType.PERMIT); - - AttributeAssignmentExpressionType assignment = new AttributeAssignmentExpressionType(); - assignment.setAttributeId("treatment"); - assignment.setCategory(CATEGORY_RESOURCE); - - AttributeValueType treatmentAttributeValue = new AttributeValueType(); - treatmentAttributeValue.setDataType(STRING_DATATYPE); - treatmentAttributeValue.getContent().add(treatment); - assignment.setExpression(new ObjectFactory().createAttributeValue(treatmentAttributeValue)); - - adviceExpression.getAttributeAssignmentExpression().add(assignment); - adviceExpressions.getAdviceExpression().add(adviceExpression); - rule.setAdviceExpressions(adviceExpressions); - decisionPolicy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().add(rule); - policyAdapter.setPolicyData(decisionPolicy); - - } - - // if compound setting the inner apply here - protected ApplyType getInnerDecisionApply(String value1Label) { - ApplyType decisionApply = new ApplyType(); - int index = 0; - // check the index for the label. - for (String labelAttr : dynamicLabelRuleAlgorithms) { - if (labelAttr.equals(value1Label)) { - String value1 = dynamicFieldOneRuleAlgorithms.get(index); - populateDataTypeList(value1); - - // check if the row contains label again - for (String labelValue : dynamicLabelRuleAlgorithms) { - if (labelValue.equals(value1)) { - return getCompoundDecisionApply(index); - } - } - - // Getting the values from the form. - String functionKey = dynamicFieldComboRuleAlgorithms.get(index); - String value2 = 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)); - } 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 != null) { - attributeDesignator.setCategory(CATEGORY_RESOURCE); - attributeDesignator.setAttributeId(attributeId); - } - decisionConditionAttributeValue.getContent().add(attributeValue); - innerDecisionApply.getExpression().add(new ObjectFactory().createAttributeDesignator(attributeDesignator)); - decisionApply.getExpression().add(new ObjectFactory().createAttributeValue(decisionConditionAttributeValue)); - decisionApply.getExpression().add(new ObjectFactory().createApply(innerDecisionApply)); - } else { - value1 = value1.substring(2, value1.length()); - VariableReferenceType variableReferenceType = new VariableReferenceType(); - variableReferenceType.setVariableId(value1); - - String dataType = dataTypeList.get(index); - - AttributeValueType decisionConditionAttributeValue = new AttributeValueType(); - decisionConditionAttributeValue.setDataType(dataType); - decisionConditionAttributeValue.getContent().add(value2); - decisionApply.getExpression().add(new ObjectFactory().createVariableReference(variableReferenceType)); - decisionApply.getExpression().add(new ObjectFactory().createAttributeValue(decisionConditionAttributeValue)); - } - } - } - index++; - } - return decisionApply; - } - - // if the rule algorithm is multiple compound one setting the apply - protected ApplyType getCompoundDecisionApply(int index) { - ApplyType decisionApply = new ApplyType(); - String selectedFunction = dynamicFieldComboRuleAlgorithms.get(index); - String value1 = dynamicFieldOneRuleAlgorithms.get(index); - String value2 = dynamicFieldTwoRuleAlgorithms.get(index); - decisionApply.setFunctionId(getFunctionDefinitionId(selectedFunction)); - decisionApply.getExpression().add(new ObjectFactory().createApply(getInnerDecisionApply(value1))); - decisionApply.getExpression().add(new ObjectFactory().createApply(getInnerDecisionApply(value2))); - return decisionApply; - } - - private VariableDefinitionType createDynamicVariable(String key, String value, String dataType) { - VariableDefinitionType dynamicVariable = new VariableDefinitionType(); - AttributeValueType dynamicAttributeValue = new AttributeValueType(); - - dynamicAttributeValue.setDataType(dataType); - dynamicAttributeValue.getContent().add(value); - - dynamicVariable.setVariableId(key); - dynamicVariable.setExpression(new ObjectFactory().createAttributeValue(dynamicAttributeValue)); - - return dynamicVariable; - - } - - private void populateDataTypeList(String value1) { - String dataType = null; - if(value1.contains("S_")) { - value1 = value1.substring(2, value1.length()); - DecisionSettings decisionSettings = findDecisionSettingsBySettingId(value1.substring(2, value1.length())); - if (decisionSettings != null && "string".equals(decisionSettings.getDatatypeBean().getShortName())) { - dataType = STRING_DATATYPE; - } else if (decisionSettings != null && "boolean".equals(decisionSettings.getDatatypeBean().getShortName())) { - dataType = BOOLEAN_DATATYPE; - } else { - dataType = INTEGER_DATATYPE; - } - } else { - dataType = "OTHER"; - } - - dataTypeList.add(dataType); - } - - - private String getDataType(String key) { - - DecisionSettings decisionSettings = findDecisionSettingsBySettingId(key); - String dataType = null; - - if (decisionSettings != null && "string".equals(decisionSettings.getDatatypeBean().getShortName())) { - dataType = STRING_DATATYPE; - } else if (decisionSettings != null && "boolean".equals(decisionSettings.getDatatypeBean().getShortName())) { - dataType = BOOLEAN_DATATYPE; - } else { - dataType = INTEGER_DATATYPE; - } - - return dataType; - } - - @Override - public Object getCorrectPolicyDataObject() { - return policyAdapter.getData(); - } - - public String getFunctionDefinitionId(String key){ - FunctionDefinition object = (FunctionDefinition) commonClassDao.getDataById(FunctionDefinition.class, "shortname", key); - if(object != null){ - return object.getXacmlid(); - } - return null; + break; + default: + templateFile = new File(classLoader.getResource(XACML_GUARD_TEMPLATE).getFile()); + xacmlTemplatePath = templateFile.toPath(); + Map<String,String> timeWindow = new HashMap<>(); + if(!PolicyUtils.isInteger(yamlParams.get("timeWindow"))){ + throw new BuilderException("time window is not in Integer format."); + } + String timeUnits = yamlParams.get("timeUnits"); + if(timeUnits==null || !(timeUnits.equalsIgnoreCase("minute") || timeUnits.equalsIgnoreCase("hour") || timeUnits.equalsIgnoreCase("day") + || timeUnits.equalsIgnoreCase("week") || timeUnits.equalsIgnoreCase("month")||timeUnits.equalsIgnoreCase("year"))){ + throw new BuilderException("time Units is not in proper format."); + } + timeWindow.put("value", yamlParams.get("timeWindow")); + timeWindow.put("units", yamlParams.get("timeUnits")); + cons = new Constraint(Integer.parseInt(yamlParams.get("limit")),timeWindow,activeTimeRange); + break; + } + builder = builder.addLimitConstraint(policy1.getId(), cons); + // Build the specification + Results results = builder.buildSpecification(); + // YAML TO XACML + ControlLoopGuard yamlGuardObject = SafePolicyBuilder.loadYamlGuard(results.getSpecification()); + String xacmlTemplateContent; + try { + xacmlTemplateContent = new String(Files.readAllBytes(xacmlTemplatePath)); + HashMap<String, String> yamlSpecs = new HashMap<>(); + yamlSpecs.put(POLICY_NAME, yamlParams.get(POLICY_NAME)); + yamlSpecs.put(DESCRIPTION, yamlParams.get(DESCRIPTION)); + yamlSpecs.put(ONAPNAME, yamlParams.get(ONAPNAME)); + yamlSpecs.put("actor", yamlGuardObject.getGuards().getFirst().getMatch_parameters().getActor()); + yamlSpecs.put("recipe", yamlGuardObject.getGuards().getFirst().getMatch_parameters().getRecipe()); + yamlSpecs.put("clname", yamlGuardObject.getGuards().getFirst().getMatch_parameters().getControlLoopName()); + if(yamlGuardObject.getGuards().getFirst().getLimit_constraints().getFirst().getFreq_limit_per_target()!=null){ + yamlSpecs.put("limit", yamlGuardObject.getGuards().getFirst().getLimit_constraints().getFirst().getFreq_limit_per_target().toString()); + } + if(yamlGuardObject.getGuards().getFirst().getLimit_constraints().getFirst().getTime_window()!=null){ + yamlSpecs.put("twValue", yamlGuardObject.getGuards().getFirst().getLimit_constraints().getFirst().getTime_window().get("value")); + yamlSpecs.put("twUnits", yamlGuardObject.getGuards().getFirst().getLimit_constraints().getFirst().getTime_window().get("units")); + } + yamlSpecs.put("guardActiveStart", yamlGuardObject.getGuards().getFirst().getLimit_constraints().getFirst().getActive_time_range().get("start")); + yamlSpecs.put("guardActiveEnd", yamlGuardObject.getGuards().getFirst().getLimit_constraints().getFirst().getActive_time_range().get("end")); + String xacmlPolicyContent = SafePolicyBuilder.generateXacmlGuard(xacmlTemplateContent,yamlSpecs, yamlGuardObject.getGuards().getFirst().getLimit_constraints().getFirst().getBlacklist(), yamlGuardObject.getGuards().getFirst().getMatch_parameters().getTargets()); + // Convert the Policy into Stream input to Policy Adapter. + Object policy = XACMLPolicyScanner.readPolicy(new ByteArrayInputStream(xacmlPolicyContent.getBytes(StandardCharsets.UTF_8))); + return (PolicyType) policy; + } catch (IOException e) { + LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + "Error while creating the policy " + e.getMessage() , e); + } + } catch (BuilderException e) { + LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + "Error while creating the policy " + e.getMessage() ,e); + throw e; + } + return null; + } + + private DecisionSettings findDecisionSettingsBySettingId(String settingId) { + DecisionSettings decisionSetting = null; + + EntityManager em = XACMLPapServlet.getEmf().createEntityManager(); + Query getDecisionSettings = em.createNamedQuery("DecisionSettings.findAll"); + List<?> decisionSettingsList = getDecisionSettings.getResultList(); + + for (Object id : decisionSettingsList) { + decisionSetting = (DecisionSettings) id; + if (decisionSetting.getXacmlId().equals(settingId)) { + break; + } + } + return decisionSetting; + } + + private void createRule(PolicyType decisionPolicy, boolean permitRule) { + RuleType rule = new RuleType(); + + rule.setRuleId(policyAdapter.getRuleID()); + + if (permitRule) { + rule.setEffect(EffectType.PERMIT); + } else { + rule.setEffect(EffectType.DENY); + } + rule.setTarget(new TargetType()); + + // Create Target in Rule + AllOfType allOfInRule = new AllOfType(); + + // Creating match for ACCESS in rule target + MatchType accessMatch = new MatchType(); + AttributeValueType accessAttributeValue = new AttributeValueType(); + accessAttributeValue.setDataType(STRING_DATATYPE); + accessAttributeValue.getContent().add("DECIDE"); + accessMatch.setAttributeValue(accessAttributeValue); + AttributeDesignatorType accessAttributeDesignator = new AttributeDesignatorType(); + URI accessURI = null; + try { + accessURI = new URI(ACTION_ID); + } catch (URISyntaxException e) { + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "DecisionPolicy", "Exception creating ACCESS URI"); + } + accessAttributeDesignator.setCategory(CATEGORY_ACTION); + accessAttributeDesignator.setDataType(STRING_DATATYPE); + accessAttributeDesignator.setAttributeId(new IdentifierImpl(accessURI).stringValue()); + accessMatch.setAttributeDesignator(accessAttributeDesignator); + accessMatch.setMatchId(FUNCTION_STRING_EQUAL_IGNORE); + + dynamicLabelRuleAlgorithms = policyAdapter.getDynamicRuleAlgorithmLabels(); + dynamicFieldComboRuleAlgorithms = policyAdapter.getDynamicRuleAlgorithmCombo(); + dynamicFieldOneRuleAlgorithms = policyAdapter.getDynamicRuleAlgorithmField1(); + dynamicFieldTwoRuleAlgorithms = policyAdapter.getDynamicRuleAlgorithmField2(); + + if(policyAdapter.getRuleProvider()!=null && policyAdapter.getRuleProvider().equals(AAFPROVIDER)){ + // Values for AAF Provider are here for XML Creation. + ConditionType condition = new ConditionType(); + ApplyType decisionApply = new ApplyType(); + + AttributeValueType value1 = new AttributeValueType(); + value1.setDataType(BOOLEAN_DATATYPE); + value1.getContent().add("true"); + + AttributeDesignatorType value2 = new AttributeDesignatorType(); + value2.setAttributeId(AAFEngine.AAF_RESULT); + value2.setCategory(CATEGORY_RESOURCE); + value2.setDataType(BOOLEAN_DATATYPE); + value2.setMustBePresent(false); + + ApplyType innerDecisionApply = new ApplyType(); + innerDecisionApply.setFunctionId(FUNCTION_BOOLEAN_ONE_AND_ONLY); + innerDecisionApply.getExpression().add(new ObjectFactory().createAttributeDesignator(value2)); + + decisionApply.setFunctionId(XACML3.ID_FUNCTION_BOOLEAN_EQUAL.stringValue()); + decisionApply.getExpression().add(new ObjectFactory().createAttributeValue(value1)); + decisionApply.getExpression().add(new ObjectFactory().createApply(innerDecisionApply)); + condition.setExpression(new ObjectFactory().createApply(decisionApply)); + if (!permitRule) { + ApplyType notOuterApply = new ApplyType(); + notOuterApply.setFunctionId(FUNCTION_NOT); + notOuterApply.getExpression().add(condition.getExpression()); + condition.setExpression(new ObjectFactory().createApply(notOuterApply)); + } + rule.setCondition(condition); + allOfInRule.getMatch().add(accessMatch); + + AnyOfType anyOfInRule = new AnyOfType(); + anyOfInRule.getAllOf().add(allOfInRule); + + TargetType targetInRule = new TargetType(); + targetInRule.getAnyOf().add(anyOfInRule); + + rule.setTarget(targetInRule); + if(!permitRule){ + AdviceExpressionsType adviceExpressions = new AdviceExpressionsType(); + AdviceExpressionType adviceExpression = new AdviceExpressionType(); + adviceExpression.setAdviceId(AAFPROVIDER); + adviceExpression.setAppliesTo(EffectType.DENY); + AttributeAssignmentExpressionType assignment = new AttributeAssignmentExpressionType(); + assignment.setAttributeId("aaf.response"); + assignment.setCategory(CATEGORY_RESOURCE); + AttributeDesignatorType value = new AttributeDesignatorType(); + value.setAttributeId(AAFEngine.AAF_RESPONSE); + value.setCategory(CATEGORY_RESOURCE); + value.setDataType(STRING_DATATYPE); + value.setMustBePresent(false); + assignment.setExpression(new ObjectFactory().createAttributeDesignator(value)); + adviceExpression.getAttributeAssignmentExpression().add(assignment); + adviceExpressions.getAdviceExpression().add(adviceExpression); + rule.setAdviceExpressions(adviceExpressions); + } + decisionPolicy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().add(rule); + policyAdapter.setPolicyData(decisionPolicy); + + }else if (dynamicLabelRuleAlgorithms != null && !dynamicLabelRuleAlgorithms.isEmpty()) { + boolean isCompound = false; + ConditionType condition = new ConditionType(); + int index = dynamicFieldOneRuleAlgorithms.size() - 1; + + for (String labelAttr : dynamicLabelRuleAlgorithms) { + // if the rule algorithm as a label means it is a compound + if (dynamicFieldOneRuleAlgorithms.get(index).equals(labelAttr)) { + ApplyType decisionApply = new ApplyType(); + + String selectedFunction = dynamicFieldComboRuleAlgorithms.get(index); + String value1 = dynamicFieldOneRuleAlgorithms.get(index); + String value2 = dynamicFieldTwoRuleAlgorithms.get(index); + decisionApply.setFunctionId(getFunctionDefinitionId(selectedFunction)); + decisionApply.getExpression().add(new ObjectFactory().createApply(getInnerDecisionApply(value1))); + decisionApply.getExpression().add(new ObjectFactory().createApply(getInnerDecisionApply(value2))); + condition.setExpression(new ObjectFactory().createApply(decisionApply)); + isCompound = true; + } + + // if rule algorithm not a compound + if (!isCompound) { + condition.setExpression(new ObjectFactory().createApply(getInnerDecisionApply(dynamicLabelRuleAlgorithms.get(index)))); + } + } + if (!permitRule) { + ApplyType notOuterApply = new ApplyType(); + notOuterApply.setFunctionId(FUNCTION_NOT); + notOuterApply.getExpression().add(condition.getExpression()); + condition.setExpression(new ObjectFactory().createApply(notOuterApply)); + } + rule.setCondition(condition); + allOfInRule.getMatch().add(accessMatch); + + AnyOfType anyOfInRule = new AnyOfType(); + anyOfInRule.getAllOf().add(allOfInRule); + + TargetType targetInRule = new TargetType(); + targetInRule.getAnyOf().add(anyOfInRule); + + rule.setTarget(targetInRule); + + decisionPolicy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().add(rule); + policyAdapter.setPolicyData(decisionPolicy); + + } else { + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + "Unsupported data object."+ policyAdapter.getData().getClass().getCanonicalName()); + } + } - + + private void createRainydayRule(PolicyType decisionPolicy, String errorcode, String treatment, boolean permitRule) { + RuleType rule = new RuleType(); + + rule.setRuleId(UUID.randomUUID().toString()); + + if (permitRule) { + rule.setEffect(EffectType.PERMIT); + } else { + rule.setEffect(EffectType.DENY); + } + rule.setTarget(new TargetType()); + + // Create Target in Rule + AllOfType allOfInRule = new AllOfType(); + + // Creating match for DECIDE in rule target + MatchType accessMatch = new MatchType(); + AttributeValueType accessAttributeValue = new AttributeValueType(); + accessAttributeValue.setDataType(STRING_DATATYPE); + accessAttributeValue.getContent().add("DECIDE"); + accessMatch.setAttributeValue(accessAttributeValue); + AttributeDesignatorType accessAttributeDesignator = new AttributeDesignatorType(); + URI accessURI = null; + try { + accessURI = new URI(ACTION_ID); + } catch (URISyntaxException e) { + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "DecisionPolicy", "Exception creating ACCESS URI"); + } + accessAttributeDesignator.setCategory(CATEGORY_ACTION); + accessAttributeDesignator.setDataType(STRING_DATATYPE); + accessAttributeDesignator.setAttributeId(new IdentifierImpl(accessURI).stringValue()); + accessMatch.setAttributeDesignator(accessAttributeDesignator); + accessMatch.setMatchId(FUNCTION_STRING_EQUAL_IGNORE); + + allOfInRule.getMatch().add(accessMatch); + + // Creating match for ErrorCode in rule target + MatchType errorcodeMatch = new MatchType(); + AttributeValueType errorcodeAttributeValue = new AttributeValueType(); + errorcodeAttributeValue.setDataType(STRING_DATATYPE); + errorcodeAttributeValue.getContent().add(errorcode); + errorcodeMatch.setAttributeValue(errorcodeAttributeValue); + AttributeDesignatorType errorcodeAttributeDesignator = new AttributeDesignatorType(); + errorcodeAttributeDesignator.setCategory(CATEGORY_RESOURCE); + errorcodeAttributeDesignator.setDataType(STRING_DATATYPE); + errorcodeAttributeDesignator.setAttributeId("ErrorCode"); + errorcodeMatch.setAttributeDesignator(errorcodeAttributeDesignator); + errorcodeMatch.setMatchId(FUNCTION_STRING_REGEXP_MATCH); + + allOfInRule.getMatch().add(errorcodeMatch); + + AnyOfType anyOfInRule = new AnyOfType(); + anyOfInRule.getAllOf().add(allOfInRule); + + TargetType targetInRule = new TargetType(); + targetInRule.getAnyOf().add(anyOfInRule); + + rule.setTarget(targetInRule); + + AdviceExpressionsType adviceExpressions = new AdviceExpressionsType(); + AdviceExpressionType adviceExpression = new AdviceExpressionType(); + adviceExpression.setAdviceId(RAINY_DAY); + adviceExpression.setAppliesTo(EffectType.PERMIT); + + AttributeAssignmentExpressionType assignment = new AttributeAssignmentExpressionType(); + assignment.setAttributeId("treatment"); + assignment.setCategory(CATEGORY_RESOURCE); + + AttributeValueType treatmentAttributeValue = new AttributeValueType(); + treatmentAttributeValue.setDataType(STRING_DATATYPE); + treatmentAttributeValue.getContent().add(treatment); + assignment.setExpression(new ObjectFactory().createAttributeValue(treatmentAttributeValue)); + + adviceExpression.getAttributeAssignmentExpression().add(assignment); + adviceExpressions.getAdviceExpression().add(adviceExpression); + rule.setAdviceExpressions(adviceExpressions); + decisionPolicy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().add(rule); + policyAdapter.setPolicyData(decisionPolicy); + + } + + // if compound setting the inner apply here + protected ApplyType getInnerDecisionApply(String value1Label) { + ApplyType decisionApply = new ApplyType(); + int index = 0; + // check the index for the label. + for (String labelAttr : dynamicLabelRuleAlgorithms) { + if (labelAttr.equals(value1Label)) { + String value1 = dynamicFieldOneRuleAlgorithms.get(index); + populateDataTypeList(value1); + + // check if the row contains label again + for (String labelValue : dynamicLabelRuleAlgorithms) { + if (labelValue.equals(value1)) { + return getCompoundDecisionApply(index); + } + } + + // Getting the values from the form. + String functionKey = dynamicFieldComboRuleAlgorithms.get(index); + String value2 = 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)); + } 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 != null) { + attributeDesignator.setCategory(CATEGORY_RESOURCE); + attributeDesignator.setAttributeId(attributeId); + } + decisionConditionAttributeValue.getContent().add(attributeValue); + innerDecisionApply.getExpression().add(new ObjectFactory().createAttributeDesignator(attributeDesignator)); + decisionApply.getExpression().add(new ObjectFactory().createAttributeValue(decisionConditionAttributeValue)); + decisionApply.getExpression().add(new ObjectFactory().createApply(innerDecisionApply)); + } else { + value1 = value1.substring(2, value1.length()); + VariableReferenceType variableReferenceType = new VariableReferenceType(); + variableReferenceType.setVariableId(value1); + + String dataType = dataTypeList.get(index); + + AttributeValueType decisionConditionAttributeValue = new AttributeValueType(); + decisionConditionAttributeValue.setDataType(dataType); + decisionConditionAttributeValue.getContent().add(value2); + decisionApply.getExpression().add(new ObjectFactory().createVariableReference(variableReferenceType)); + decisionApply.getExpression().add(new ObjectFactory().createAttributeValue(decisionConditionAttributeValue)); + } + } + } + index++; + } + return decisionApply; + } + + // if the rule algorithm is multiple compound one setting the apply + protected ApplyType getCompoundDecisionApply(int index) { + ApplyType decisionApply = new ApplyType(); + String selectedFunction = dynamicFieldComboRuleAlgorithms.get(index); + String value1 = dynamicFieldOneRuleAlgorithms.get(index); + String value2 = dynamicFieldTwoRuleAlgorithms.get(index); + decisionApply.setFunctionId(getFunctionDefinitionId(selectedFunction)); + decisionApply.getExpression().add(new ObjectFactory().createApply(getInnerDecisionApply(value1))); + decisionApply.getExpression().add(new ObjectFactory().createApply(getInnerDecisionApply(value2))); + return decisionApply; + } + + private VariableDefinitionType createDynamicVariable(String key, String value, String dataType) { + VariableDefinitionType dynamicVariable = new VariableDefinitionType(); + AttributeValueType dynamicAttributeValue = new AttributeValueType(); + + dynamicAttributeValue.setDataType(dataType); + dynamicAttributeValue.getContent().add(value); + + dynamicVariable.setVariableId(key); + dynamicVariable.setExpression(new ObjectFactory().createAttributeValue(dynamicAttributeValue)); + + return dynamicVariable; + + } + + private void populateDataTypeList(String value1) { + String dataType = null; + if(value1.contains("S_")) { + value1 = value1.substring(2, value1.length()); + DecisionSettings decisionSettings = findDecisionSettingsBySettingId(value1.substring(2, value1.length())); + if (decisionSettings != null && "string".equals(decisionSettings.getDatatypeBean().getShortName())) { + dataType = STRING_DATATYPE; + } else if (decisionSettings != null && "boolean".equals(decisionSettings.getDatatypeBean().getShortName())) { + dataType = BOOLEAN_DATATYPE; + } else { + dataType = INTEGER_DATATYPE; + } + } else { + dataType = "OTHER"; + } + + dataTypeList.add(dataType); + } + + + private String getDataType(String key) { + + DecisionSettings decisionSettings = findDecisionSettingsBySettingId(key); + String dataType = null; + + if (decisionSettings != null && "string".equals(decisionSettings.getDatatypeBean().getShortName())) { + dataType = STRING_DATATYPE; + } else if (decisionSettings != null && "boolean".equals(decisionSettings.getDatatypeBean().getShortName())) { + dataType = BOOLEAN_DATATYPE; + } else { + dataType = INTEGER_DATATYPE; + } + + return dataType; + } + + @Override + public Object getCorrectPolicyDataObject() { + return policyAdapter.getData(); + } + + public String getFunctionDefinitionId(String key){ + FunctionDefinition object = (FunctionDefinition) commonClassDao.getDataById(FunctionDefinition.class, "shortname", key); + if(object != null){ + return object.getXacmlid(); + } + return null; + } + } diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/FirewallConfigPolicy.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/FirewallConfigPolicy.java index e747edb9b..6cadc77a1 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/FirewallConfigPolicy.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/FirewallConfigPolicy.java @@ -84,1211 +84,1211 @@ import oasis.names.tc.xacml._3_0.core.schema.wd_17.TargetType; public class FirewallConfigPolicy extends Policy { - private static final Logger LOGGER = FlexLogger.getLogger(FirewallConfigPolicy.class); + private static final Logger LOGGER = FlexLogger.getLogger(FirewallConfigPolicy.class); - public FirewallConfigPolicy() { - super(); - } + public FirewallConfigPolicy() { + super(); + } - public FirewallConfigPolicy(PolicyRestAdapter policyAdapter) { - this.policyAdapter = policyAdapter; - this.policyAdapter.setConfigType(policyAdapter.getConfigType()); - } + public FirewallConfigPolicy(PolicyRestAdapter policyAdapter) { + this.policyAdapter = policyAdapter; + this.policyAdapter.setConfigType(policyAdapter.getConfigType()); + } - // Saving the Configurations file at server location for config policy. - protected void saveConfigurations(String policyName, String jsonBody) { - String configurationName = policyName; - if(configurationName.endsWith(".xml")){ + // Saving the Configurations file at server location for config policy. + protected void saveConfigurations(String policyName, String jsonBody) { + String configurationName = policyName; + if(configurationName.endsWith(".xml")){ configurationName = configurationName.replace(".xml", ""); - } + } String fileName = CONFIG_HOME + File.separator + configurationName + ".json"; - try(BufferedWriter bw = new BufferedWriter(new FileWriter(fileName))){ - bw.write(jsonBody); - if (LOGGER.isDebugEnabled()) { - LOGGER.debug("Configuration is succesfully saved"); - } - } catch (IOException e) { - LOGGER.error("Save of configuration to file" +fileName+ "failed",e); - } - } - + try(BufferedWriter bw = new BufferedWriter(new FileWriter(fileName))){ + bw.write(jsonBody); + if (LOGGER.isDebugEnabled()) { + LOGGER.debug("Configuration is succesfully saved"); + } + } catch (IOException e) { + LOGGER.error("Save of configuration to file" +fileName+ "failed",e); + } + } + //Utility to read json data from the existing file to a string - static String readFile(String path, Charset encoding) throws IOException { - byte[] encoded = Files.readAllBytes(Paths.get(path)); - return new String(encoded, encoding); - } - - @Override - public Map<String, String> savePolicies() throws PAPException { - Map<String, String> successMap = new HashMap<>(); - if(isPolicyExists()){ - successMap.put("EXISTS", "This Policy already exist on the PAP"); - return successMap; - } - if(!isPreparedToSave()){ - prepareToSave(); - } - - // Until here we prepared the data and here calling the method to create xml. - Path newPolicyPath = null; - newPolicyPath = Paths.get(policyAdapter.getNewFileName()); - Boolean dbIsUpdated = false; - if (policyAdapter.getApiflag() != null && "admin".equalsIgnoreCase(policyAdapter.getApiflag())){ - if (policyAdapter.isEditPolicy()) { - dbIsUpdated = updateFirewallDictionaryData(policyAdapter.getJsonBody(), policyAdapter.getPrevJsonBody()); - } else { - try { + static String readFile(String path, Charset encoding) throws IOException { + byte[] encoded = Files.readAllBytes(Paths.get(path)); + return new String(encoded, encoding); + } + + @Override + public Map<String, String> savePolicies() throws PAPException { + Map<String, String> successMap = new HashMap<>(); + if(isPolicyExists()){ + successMap.put("EXISTS", "This Policy already exist on the PAP"); + return successMap; + } + if(!isPreparedToSave()){ + prepareToSave(); + } + + // Until here we prepared the data and here calling the method to create xml. + Path newPolicyPath = null; + newPolicyPath = Paths.get(policyAdapter.getNewFileName()); + Boolean dbIsUpdated = false; + if (policyAdapter.getApiflag() != null && "admin".equalsIgnoreCase(policyAdapter.getApiflag())){ + if (policyAdapter.isEditPolicy()) { + dbIsUpdated = updateFirewallDictionaryData(policyAdapter.getJsonBody(), policyAdapter.getPrevJsonBody()); + } else { + try { dbIsUpdated = insertFirewallDicionaryData(policyAdapter.getJsonBody()); } catch (SQLException e) { throw new PAPException(e); } - } - } else { - dbIsUpdated = true; - } - - if(dbIsUpdated) { - successMap = createPolicy(newPolicyPath,getCorrectPolicyDataObject()); - } else { - PolicyLogger.error("Failed to Update the Database Dictionary Tables."); - - //remove the new json file - String jsonBody = policyAdapter.getPrevJsonBody(); - if (jsonBody!=null){ - saveConfigurations(policyName, jsonBody); - } else { - saveConfigurations(policyName, ""); - } - successMap.put("fwdberror", "DB UPDATE"); - } - - return successMap; - } - - //This is the method for preparing the policy for saving. We have broken it out - //separately because the fully configured policy is used for multiple things - @Override - public boolean prepareToSave() throws PAPException{ - - if(isPreparedToSave()){ - //we have already done this - return true; - } - - int version = 0; - String policyID = policyAdapter.getPolicyID(); - version = policyAdapter.getHighestVersion(); - - // Create the Instance for pojo, PolicyType object is used in marshaling. - if ("Config".equals(policyAdapter.getPolicyType())) { - PolicyType policyConfig = new PolicyType(); - - policyConfig.setVersion(Integer.toString(version)); - policyConfig.setPolicyId(policyID); - policyConfig.setTarget(new TargetType()); - policyAdapter.setData(policyConfig); - } - policyName = policyAdapter.getNewFileName(); - - //String oldPolicyName = policyName.replace(".xml", ""); - String scope = policyName.substring(0, policyName.indexOf('.')); - String dbPolicyName = policyName.substring(policyName.indexOf('.')+1).replace(".xml", ""); - - int oldversion = Integer.parseInt(dbPolicyName.substring(dbPolicyName.lastIndexOf('.')+1)); - dbPolicyName = dbPolicyName.substring(0, dbPolicyName.lastIndexOf('.')+1); - if(oldversion > 1){ - oldversion = oldversion - 1; - dbPolicyName = dbPolicyName + oldversion + ".xml"; - } - EntityManager em = XACMLPapServlet.getEmf().createEntityManager(); - Query createPolicyQuery = em.createQuery("SELECT p FROM PolicyEntity p WHERE p.scope=:scope AND p.policyName=:policyName"); - createPolicyQuery.setParameter("scope", scope); - createPolicyQuery.setParameter("policyName", dbPolicyName); - List<?> createPolicyQueryList = createPolicyQuery.getResultList(); - if(!createPolicyQueryList.isEmpty()){ - PolicyEntity entitydata = (PolicyEntity) createPolicyQueryList.get(0); - policyAdapter.setPrevJsonBody(entitydata.getConfigurationData().getConfigBody()); - } - em.close(); - if (policyAdapter.getData() != null) { - String jsonBody = policyAdapter.getJsonBody(); - saveConfigurations(policyName, jsonBody); - - // Make sure the filename ends with an extension - if (!policyName.endsWith(".xml")) { - policyName = policyName + ".xml"; - } - - PolicyType configPolicy = (PolicyType) policyAdapter.getData(); - - configPolicy.setDescription(policyAdapter.getPolicyDescription()); - - configPolicy.setRuleCombiningAlgId(policyAdapter.getRuleCombiningAlgId()); - - AllOfType allOfOne = new AllOfType(); - String fileName = policyAdapter.getNewFileName(); - String name = fileName.substring(fileName.lastIndexOf('\\') + 1, fileName.length()); - if ((name == null) || (name.equals(""))) { - name = fileName.substring(fileName.lastIndexOf('/') + 1, fileName.length()); - } - allOfOne.getMatch().add(createMatch("PolicyName", name)); - AllOfType allOf = new AllOfType(); - - // Match for ConfigName - allOf.getMatch().add(createMatch("ConfigName", policyAdapter.getConfigName())); - // Match for riskType - allOf.getMatch().add(createDynamicMatch("RiskType", policyAdapter.getRiskType())); - // Match for riskLevel - allOf.getMatch().add(createDynamicMatch("RiskLevel", String.valueOf(policyAdapter.getRiskLevel()))); - // Match for riskguard - allOf.getMatch().add(createDynamicMatch("guard", policyAdapter.getGuard())); - // Match for ttlDate - allOf.getMatch().add(createDynamicMatch("TTLDate", policyAdapter.getTtlDate())); - AnyOfType anyOf = new AnyOfType(); - anyOf.getAllOf().add(allOfOne); - anyOf.getAllOf().add(allOf); - - TargetType target = new TargetType(); - target.getAnyOf().add(anyOf); - - // Adding the target to the policy element - configPolicy.setTarget((TargetType) target); - - RuleType rule = new RuleType(); - rule.setRuleId(policyAdapter.getRuleID()); - rule.setEffect(EffectType.PERMIT); - - // Create Target in Rule - AllOfType allOfInRule = new AllOfType(); - - // Creating match for ACCESS in rule target - MatchType accessMatch = new MatchType(); - AttributeValueType accessAttributeValue = new AttributeValueType(); - accessAttributeValue.setDataType(STRING_DATATYPE); - accessAttributeValue.getContent().add("ACCESS"); - accessMatch.setAttributeValue(accessAttributeValue); - AttributeDesignatorType accessAttributeDesignator = new AttributeDesignatorType(); - URI accessURI = null; - try { - accessURI = new URI(ACTION_ID); - } catch (URISyntaxException e) { - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "FirewallConfigPolicy", "Exception creating ACCESS URI"); - } - accessAttributeDesignator.setCategory(CATEGORY_ACTION); - accessAttributeDesignator.setDataType(STRING_DATATYPE); - accessAttributeDesignator.setAttributeId(new IdentifierImpl(accessURI).stringValue()); - accessMatch.setAttributeDesignator(accessAttributeDesignator); - accessMatch.setMatchId(FUNCTION_STRING_EQUAL_IGNORE); - - // Creating Config Match in rule Target - MatchType configMatch = new MatchType(); - AttributeValueType configAttributeValue = new AttributeValueType(); - configAttributeValue.setDataType(STRING_DATATYPE); - - configAttributeValue.getContent().add("Config"); - - configMatch.setAttributeValue(configAttributeValue); - AttributeDesignatorType configAttributeDesignator = new AttributeDesignatorType(); - URI configURI = null; - try { - configURI = new URI(RESOURCE_ID); - } catch (URISyntaxException e) { - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "FirewallConfigPolicy", "Exception creating Config URI"); - } - - configAttributeDesignator.setCategory(CATEGORY_RESOURCE); - configAttributeDesignator.setDataType(STRING_DATATYPE); - configAttributeDesignator.setAttributeId(new IdentifierImpl(configURI).stringValue()); - configMatch.setAttributeDesignator(configAttributeDesignator); - configMatch.setMatchId(FUNCTION_STRING_EQUAL_IGNORE); - - allOfInRule.getMatch().add(accessMatch); - allOfInRule.getMatch().add(configMatch); - - AnyOfType anyOfInRule = new AnyOfType(); - anyOfInRule.getAllOf().add(allOfInRule); - - TargetType targetInRule = new TargetType(); - targetInRule.getAnyOf().add(anyOfInRule); - - rule.setTarget(targetInRule); - rule.setAdviceExpressions(getAdviceExpressions(version, policyName)); - - configPolicy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().add(rule); - policyAdapter.setPolicyData(configPolicy); - - } else { - PolicyLogger.error("Unsupported data object." + policyAdapter.getData().getClass().getCanonicalName()); - } - setPreparedToSave(true); - return true; - } - - // Data required for Advice part is setting here. - private AdviceExpressionsType getAdviceExpressions(int version, String fileName) { - - //Firewall Config ID Assignment - AdviceExpressionsType advices = new AdviceExpressionsType(); - AdviceExpressionType advice = new AdviceExpressionType(); - advice.setAdviceId("firewallConfigID"); - advice.setAppliesTo(EffectType.PERMIT); - // For Configuration - AttributeAssignmentExpressionType assignment1 = new AttributeAssignmentExpressionType(); - assignment1.setAttributeId("type"); - assignment1.setCategory(CATEGORY_RESOURCE); - assignment1.setIssuer(""); - AttributeValueType configNameAttributeValue = new AttributeValueType(); - configNameAttributeValue.setDataType(STRING_DATATYPE); - configNameAttributeValue.getContent().add("Configuration"); - assignment1.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue)); - advice.getAttributeAssignmentExpression().add(assignment1); - - // For Config file Url if configurations are provided. - //URL ID Assignment - AttributeAssignmentExpressionType assignment2 = new AttributeAssignmentExpressionType(); - assignment2.setAttributeId("URLID"); - assignment2.setCategory(CATEGORY_RESOURCE); - assignment2.setIssuer(""); - AttributeValueType AttributeValue = new AttributeValueType(); - AttributeValue.setDataType(URI_DATATYPE); - if (policyName.endsWith(".xml")) { - policyName = policyName.substring(0, policyName.lastIndexOf(".xml")); - } - String content = CONFIG_URL + "/Config/" + policyName + ".json"; - - AttributeValue.getContent().add(content); - assignment2.setExpression(new ObjectFactory().createAttributeValue(AttributeValue)); - advice.getAttributeAssignmentExpression().add(assignment2); - - //Policy Name Assignment - AttributeAssignmentExpressionType assignment3 = new AttributeAssignmentExpressionType(); - assignment3.setAttributeId("PolicyName"); - assignment3.setCategory(CATEGORY_RESOURCE); - assignment3.setIssuer(""); - AttributeValueType attributeValue3 = new AttributeValueType(); - attributeValue3.setDataType(STRING_DATATYPE); - fileName = FilenameUtils.removeExtension(fileName); - fileName = fileName + ".xml"; - String name = fileName.substring(fileName.lastIndexOf("\\") + 1, fileName.length()); - if ((name == null) || (name.equals(""))) { - name = fileName.substring(fileName.lastIndexOf("/") + 1, fileName.length()); - } - attributeValue3.getContent().add(name); - assignment3.setExpression(new ObjectFactory().createAttributeValue(attributeValue3)); - advice.getAttributeAssignmentExpression().add(assignment3); - - //Version Number Assignment - AttributeAssignmentExpressionType assignment4 = new AttributeAssignmentExpressionType(); - assignment4.setAttributeId("VersionNumber"); - assignment4.setCategory(CATEGORY_RESOURCE); - assignment4.setIssuer(""); - AttributeValueType configNameAttributeValue4 = new AttributeValueType(); - configNameAttributeValue4.setDataType(STRING_DATATYPE); - configNameAttributeValue4.getContent().add(Integer.toString(version)); - assignment4.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue4)); - advice.getAttributeAssignmentExpression().add(assignment4); - - //Onap Name Assignment - AttributeAssignmentExpressionType assignment5 = new AttributeAssignmentExpressionType(); - assignment5.setAttributeId("matching:" + ONAPID); - assignment5.setCategory(CATEGORY_RESOURCE); - assignment5.setIssuer(""); - AttributeValueType configNameAttributeValue5 = new AttributeValueType(); - configNameAttributeValue5.setDataType(STRING_DATATYPE); - assignment5.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue5)); - advice.getAttributeAssignmentExpression().add(assignment5); - - //Config Name Assignment - AttributeAssignmentExpressionType assignment6 = new AttributeAssignmentExpressionType(); - assignment6.setAttributeId("matching:" + CONFIGID); - assignment6.setCategory(CATEGORY_RESOURCE); - assignment6.setIssuer(""); - AttributeValueType configNameAttributeValue6 = new AttributeValueType(); - configNameAttributeValue6.setDataType(STRING_DATATYPE); - configNameAttributeValue6.getContent().add(policyAdapter.getConfigName()); - assignment6.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue6)); - advice.getAttributeAssignmentExpression().add(assignment6); - - //Risk Attributes - AttributeAssignmentExpressionType assignment7 = new AttributeAssignmentExpressionType(); - assignment7.setAttributeId("RiskType"); - assignment7.setCategory(CATEGORY_RESOURCE); - assignment7.setIssuer(""); - - AttributeValueType configNameAttributeValue7 = new AttributeValueType(); - configNameAttributeValue7.setDataType(STRING_DATATYPE); - configNameAttributeValue7.getContent().add(policyAdapter.getRiskType()); - assignment7.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue7)); - - advice.getAttributeAssignmentExpression().add(assignment7); - - AttributeAssignmentExpressionType assignment8 = new AttributeAssignmentExpressionType(); - assignment8.setAttributeId("RiskLevel"); - assignment8.setCategory(CATEGORY_RESOURCE); - assignment8.setIssuer(""); - - AttributeValueType configNameAttributeValue8 = new AttributeValueType(); - configNameAttributeValue8.setDataType(STRING_DATATYPE); - configNameAttributeValue8.getContent().add(policyAdapter.getRiskLevel()); - assignment8.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue8)); - - advice.getAttributeAssignmentExpression().add(assignment8); - - AttributeAssignmentExpressionType assignment9 = new AttributeAssignmentExpressionType(); - assignment9.setAttributeId("guard"); - assignment9.setCategory(CATEGORY_RESOURCE); - assignment9.setIssuer(""); - - AttributeValueType configNameAttributeValue9 = new AttributeValueType(); - configNameAttributeValue9.setDataType(STRING_DATATYPE); - configNameAttributeValue9.getContent().add(policyAdapter.getGuard()); - assignment9.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue9)); - - advice.getAttributeAssignmentExpression().add(assignment9); - - AttributeAssignmentExpressionType assignment10 = new AttributeAssignmentExpressionType(); - assignment10.setAttributeId("TTLDate"); - assignment10.setCategory(CATEGORY_RESOURCE); - assignment10.setIssuer(""); - - AttributeValueType configNameAttributeValue10 = new AttributeValueType(); - configNameAttributeValue10.setDataType(STRING_DATATYPE); - configNameAttributeValue10.getContent().add(policyAdapter.getTtlDate()); - assignment10.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue10)); - - advice.getAttributeAssignmentExpression().add(assignment10); - advices.getAdviceExpression().add(advice); - return advices; - } - - - private Boolean insertFirewallDicionaryData (String jsonBody) throws SQLException { - CommonClassDaoImpl dbConnection = new CommonClassDaoImpl(); - JsonObject json = null; - if (jsonBody != null) { - - //Read jsonBody to JsonObject - json = stringToJson(jsonBody); - - JsonArray firewallRules = null; - JsonArray serviceGroup = null; - JsonArray addressGroup = null; - //insert data into tables - try { - firewallRules = json.getJsonArray("firewallRuleList"); - serviceGroup = json.getJsonArray("serviceGroups"); - addressGroup = json.getJsonArray("addressGroups"); - /* - * Inserting firewallRuleList data into the Terms, SecurityZone, and Action tables - */ - if (firewallRules != null) { - for(int i = 0;i<firewallRules.size();i++) { - /* - * Populate ArrayLists with values from the JSON - */ - //create the JSON object from the JSON Array for each iteration through the for loop - JsonObject ruleListobj = firewallRules.getJsonObject(i); - - //get values from JSON fields of firewallRulesList Array - String ruleName = ruleListobj.get("ruleName").toString(); - String action = ruleListobj.get("action").toString(); - String description = ruleListobj.get("description").toString(); - List<Object> result = dbConnection.getDataById(TermList.class, "termName", ruleName); - if(result != null && !result.isEmpty()){ - TermList termEntry = (TermList) result.get(0); - dbConnection.delete(termEntry); - } - - //getting fromZone Array field from the firewallRulesList - JsonArray fromZoneArray = ruleListobj.getJsonArray("fromZones"); - String fromZoneString = null; - - for (int fromZoneIndex = 0;fromZoneIndex<fromZoneArray.size(); fromZoneIndex++) { - String value = fromZoneArray.get(fromZoneIndex).toString(); - value = value.replace("\"", ""); - if (fromZoneString != null) { - fromZoneString = fromZoneString.concat(",").concat(value); - } else { - fromZoneString = value; - } - } - String fromZoneInsert = "'"+fromZoneString+"'"; - - //getting toZone Array field from the firewallRulesList - JsonArray toZoneArray = ruleListobj.getJsonArray("toZones"); - String toZoneString = null; - for (int toZoneIndex = 0; toZoneIndex<toZoneArray.size(); toZoneIndex++) { - String value = toZoneArray.get(toZoneIndex).toString(); - value = value.replace("\"", ""); - if (toZoneString != null) { - toZoneString = toZoneString.concat(",").concat(value); - } else { - toZoneString = value; - } - } - String toZoneInsert = "'"+toZoneString+"'"; - - //getting sourceList Array fields from the firewallRulesList - JsonArray srcListArray = ruleListobj.getJsonArray("sourceList"); - String srcListString = null; - for (int srcListIndex = 0; srcListIndex< srcListArray.size(); srcListIndex++) { - JsonObject srcListObj = srcListArray.getJsonObject(srcListIndex); - String type = srcListObj.get("type").toString().replace("\"", ""); - - String value = null; - if(type.equals("REFERENCE")||type.equals("GROUP")){ - value = srcListObj.get("name").toString(); - } else if (type.equalsIgnoreCase("ANY")){ - value = null; - } else { - value = srcListObj.get("value").toString(); - } - - if (value!=null){ - value = value.replace("\"", ""); - } - - if (srcListString != null) { - srcListString = srcListString.concat(",").concat(value); - - } else { - srcListString = value; - } - - } - String srcListInsert = "'"+srcListString+"'"; - - //getting destinationList Array fields from the firewallRulesList - JsonArray destListArray = ruleListobj.getJsonArray("destinationList"); - String destListString = null; - for (int destListIndex = 0; destListIndex <destListArray.size(); destListIndex++) { - JsonObject destListObj = destListArray.getJsonObject(destListIndex); - String type = destListObj.get("type").toString().replace("\"", ""); - - String value = null; - if(type.equals("REFERENCE")||type.equals("GROUP")){ - value = destListObj.get("name").toString(); - } else if (type.equalsIgnoreCase("ANY")){ - value = null; - } else { - value = destListObj.get("value").toString(); - } - - if (value!=null){ - value = value.replace("\"", ""); - } - - if (destListString != null) { - destListString = destListString.concat(",").concat(value); - } else { - destListString = value; - } - } - String destListInsert = "'"+destListString+"'"; - - //getting destServices Array fields from the firewallRulesList - JsonArray destServicesArray = ruleListobj.getJsonArray("destServices"); - String destPortListString = null; - for (int destPortListIndex = 0; destPortListIndex < destServicesArray.size(); destPortListIndex++) { - JsonObject destServicesObj = destServicesArray.getJsonObject(destPortListIndex); - String type = destServicesObj.get("type").toString().replace("\"", ""); - - String value = null; - if(type.equals("REFERENCE")||type.equals("GROUP")){ - value = destServicesObj.get("name").toString(); - } else if (type.equalsIgnoreCase("ANY")){ - value = null; - } else { - value = destServicesObj.get("value").toString(); - } - - if (value!=null){ - value = value.replace("\"", ""); - } - - if (destPortListString != null) { - destPortListString = destPortListString.concat(",").concat(value); - } else { - destPortListString = value; - } - } - String destPortListInsert = "'"+destPortListString+"'"; - - /* - * Create Queries to INSERT data into database tables and execute - */ - UserInfo userInfo = new UserInfo(); - userInfo.setUserLoginId("API"); - userInfo.setUserName("API"); - - TermList termEntry = new TermList(); - termEntry.setTermName(ruleName); - termEntry.setSrcIPList(srcListInsert); - termEntry.setDestIPList(destListInsert); - termEntry.setProtocolList("null"); - termEntry.setPortList("null"); - termEntry.setSrcPortList("null"); - termEntry.setDestPortList(destPortListInsert); - termEntry.setAction(action); - termEntry.setDescription(description); - termEntry.setFromZones(fromZoneInsert); - termEntry.setToZones(toZoneInsert); - termEntry.setUserCreatedBy(userInfo); - dbConnection.save(termEntry); - - ActionList actionEntry = new ActionList(); - actionEntry.setActionName(action); - actionEntry.setDescription(action); - dbConnection.save(actionEntry); - } - } - - /* - * Inserting serviceGroups data into the ServiceGroup, ServiceList, ProtocolList, and PortList tables - */ - if (serviceGroup != null) { - for(int i = 0; i < serviceGroup.size() ; i++) { - /* - * Populate ArrayLists with values from the JSON - */ - //create the JSON object from the JSON Array for each iteration through the for loop - JsonObject svcGroupListobj = serviceGroup.getJsonObject(i); - - String serviceListName = svcGroupListobj.get("name").toString(); - String description = null; - if (svcGroupListobj.containsKey("description")){ - description = svcGroupListobj.get("description").toString(); - } - - //getting members Array from the serviceGroup - JsonArray membersArray = svcGroupListobj.getJsonArray("members"); - - //String type = svcGroupListobj.get("type").toString(); - Boolean isServiceGroup = false; - if (membersArray!=null){ - String membersType = membersArray.getJsonObject(0).get("type").toString(); - if (membersType.contains("REFERENCE")) { - isServiceGroup = true; - } - } - - //Insert values into GROUPSERVICELIST table if name begins with Group - if (isServiceGroup) { - String name = null; - for (int membersIndex = 0; membersIndex< membersArray.size(); membersIndex++) { - JsonObject membersObj = membersArray.getJsonObject(membersIndex); - //String value = membersObj.get("name").toString(); - String type = membersObj.get("type").toString().replace("\"", ""); - - String value = null; - if(type.equals("REFERENCE")||type.equals("GROUP")||type.equals("SERVICE")){ - value = membersObj.get("name").toString(); - } else if (type.equalsIgnoreCase("ANY")){ - value = null; - } else { - value = membersObj.get("value").toString(); - } - - if(value != null){ - value = value.replace("\"", ""); - } - - if (name != null) { - name = name.concat(",").concat(value); - } else { - name = value; - } - } - String nameInsert = "'"+name+"'"; - GroupServiceList groupServiceEntry = new GroupServiceList(); - groupServiceEntry.setGroupName(serviceListName); - groupServiceEntry.setServiceList(nameInsert); - dbConnection.save(groupServiceEntry); - } else { //Insert JSON data serviceList table, protollist table, and portlist table - String type = svcGroupListobj.get("type").toString(); - String transportProtocol = svcGroupListobj.get("transportProtocol").toString(); - String ports = svcGroupListobj.get("ports").toString(); - - /* - * Create Queries to INSERT data into database table and execute - */ - ServiceList serviceListEntry = new ServiceList(); - serviceListEntry.setServiceName(serviceListName); - serviceListEntry.setServiceDescription(description); - serviceListEntry.setServiceType(type); - serviceListEntry.setServiceTransProtocol(transportProtocol); - serviceListEntry.setServiceAppProtocol("null"); - serviceListEntry.setServicePorts(ports); - dbConnection.save(serviceListEntry); - - ProtocolList protocolEntry = new ProtocolList(); - protocolEntry.setProtocolName(transportProtocol); - protocolEntry.setDescription(transportProtocol); - dbConnection.save(protocolEntry); - - PortList portListEntry = new PortList(); - portListEntry.setPortName(ports); - portListEntry.setDescription(ports); - dbConnection.save(portListEntry); - } - } - } - - /* - * Inserting addressGroup data into the ADDRESSGROUP table - */ - if (addressGroup != null) { - for(int i = 0; i < addressGroup.size(); i++) { - /* - * Populate ArrayLists with values from the JSON - */ - //create the JSON object from the JSON Array for each iteration through the for loop - JsonObject addressGroupObj = addressGroup.getJsonObject(i); - - //create JSON array for members - JsonArray membersArray = addressGroupObj.getJsonArray("members"); - String addressGroupName = addressGroupObj.get("name").toString(); - - String description = null; - if (addressGroupObj.containsKey("description")){ - description = addressGroupObj.get("description").toString(); - } - - String prefixIP = null; - String type = null; - for (int membersIndex = 0; membersIndex < membersArray.size(); membersIndex++) { - JsonObject membersObj = membersArray.getJsonObject(membersIndex); - //String value = membersObj.get("value").toString(); - type = membersObj.get("type").toString().replace("\"", ""); - - String value = null; - if(type.equals("REFERENCE")||type.equals("GROUP")||type.equals("SERVICE")){ - value = membersObj.get("name").toString(); - } else if (type.equalsIgnoreCase("ANY")){ - value = null; - } else { - value = membersObj.get("value").toString(); - } - - if(value != null){ - value = value.replace("\"", ""); - } - - if (prefixIP != null) { - prefixIP = prefixIP.concat(",").concat(value); - } else { - prefixIP = value; - } - } - String prefixList = "'"+prefixIP+"'"; - - Boolean isAddressGroup = type.contains("REFERENCE"); - - if (isAddressGroup) { - AddressGroup addressGroupEntry = new AddressGroup(); - addressGroupEntry.setGroupName(addressGroupName); - addressGroupEntry.setDescription(description); - addressGroupEntry.setServiceList(prefixList); - dbConnection.save(addressGroupEntry); - } else { - PrefixList prefixListEntry = new PrefixList(); - prefixListEntry.setPrefixListName(addressGroupName); - prefixListEntry.setDescription(description); - prefixListEntry.setPrefixListValue(prefixList); - dbConnection.save(prefixListEntry); - } - } - } - - /* - * Remove duplicate values from 'lookup' dictionary tables - */ - //ProtocolList Table - String protoDelete = "DELETE FROM protocollist USING protocollist, protocollist p1 " - + "WHERE protocollist.id > p1.id AND protocollist.protocolname = p1.protocolname;"; - dbConnection.updateQuery(protoDelete); - - //PortList Table - String portListDelete = "DELETE FROM portlist USING portlist, portlist p1 " - + "WHERE portlist.id > p1.id AND portlist.portname = p1.portname; "; - dbConnection.updateQuery(portListDelete); - - //PrefixList Table - String prefixListDelete = "DELETE FROM prefixlist USING prefixlist, prefixlist p1 " - + "WHERE prefixlist.id > p1.id AND prefixlist.pl_name = p1.pl_name AND " - + "prefixlist.pl_value = p1.pl_value AND prefixlist.description = p1.description; "; - dbConnection.updateQuery(prefixListDelete); - - //GroupServiceList - String groupServiceDelete = "DELETE FROM groupservicelist USING groupservicelist, groupservicelist g1 " - + "WHERE groupservicelist.id > g1.id AND groupservicelist.name = g1.name AND " - + "groupservicelist.serviceList = g1.serviceList; "; - dbConnection.updateQuery(groupServiceDelete); - }catch (Exception e) { - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "FirewallConfigPolicy", "Exception getting Json values"); - return false; - } - return true; - - } else { - return false; - } - - } - - - private Boolean updateFirewallDictionaryData(String jsonBody, String prevJsonBody) { - CommonClassDaoImpl dbConnection = new CommonClassDaoImpl(); - JsonObject oldJson = null; - JsonObject newJson = null; - - if (jsonBody != null || prevJsonBody != null) { - - oldJson = stringToJson(prevJsonBody); - newJson = stringToJson(jsonBody); - - //if no changes to the json then return true - if (oldJson != null && oldJson.equals(newJson)) { - return true; - } - - JsonArray firewallRules = null; - JsonArray serviceGroup = null; - JsonArray addressGroup = null; - - firewallRules = newJson.getJsonArray("firewallRuleList"); - serviceGroup = newJson.getJsonArray("serviceGroups"); - addressGroup = newJson.getJsonArray("addressGroups"); - - //insert data into tables - try { - JsonNode jsonDiff = createPatch(jsonBody, prevJsonBody); - - for (int i = 0; i<jsonDiff.size(); i++) { - //String path = jsonDiff.get(i).asText(); - String jsonpatch = jsonDiff.get(i).toString(); - - JsonObject patchObj = stringToJson(jsonpatch); - - String path = patchObj.get("path").toString().replace('"', ' ').trim(); - - if (path.contains("firewallRuleList")) { - /* - * Inserting firewallRuleList data into the Terms, SecurityZone, and Action tables - */ - for(int ri = 0; ri < firewallRules.size(); ri++) { - /* - * Populate ArrayLists with values from the JSON - */ - //create the JSON object from the JSON Array for each iteration through the for loop - JsonObject ruleListobj = firewallRules.getJsonObject(ri); - - //get values from JSON fields of firewallRulesList Array - String ruleName = ruleListobj.get("ruleName").toString().replace('"', '\''); - String action = ruleListobj.get("action").toString().replace('"', '\''); - String description = ruleListobj.get("description").toString().replace('"', '\''); - - List<Object> result = dbConnection.getDataById(TermList.class, "termName", ruleName); - if(result != null && !result.isEmpty()){ - TermList termEntry = (TermList) result.get(0); - dbConnection.delete(termEntry); - } - - //getting fromZone Array field from the firewallRulesList - JsonArray fromZoneArray = ruleListobj.getJsonArray("fromZones"); - String fromZoneString = null; - - for (int fromZoneIndex = 0; fromZoneIndex<fromZoneArray.size() ; fromZoneIndex++) { - String value = fromZoneArray.get(fromZoneIndex).toString(); - value = value.replace("\"", ""); - - if (fromZoneString != null) { - fromZoneString = fromZoneString.concat(",").concat(value); - - } else { - fromZoneString = value; - } - - } - String fromZoneInsert = "'"+fromZoneString+"'"; - - //getting toZone Array field from the firewallRulesList - JsonArray toZoneArray = ruleListobj.getJsonArray("toZones"); - String toZoneString = null; - - - for (int toZoneIndex = 0; toZoneIndex < toZoneArray.size(); toZoneIndex++) { - String value = toZoneArray.get(toZoneIndex).toString(); - value = value.replace("\"", ""); - - if (toZoneString != null) { - toZoneString = toZoneString.concat(",").concat(value); - - } else { - toZoneString = value; - } - - } - String toZoneInsert = "'"+toZoneString+"'"; - //getting sourceList Array fields from the firewallRulesList - JsonArray srcListArray = ruleListobj.getJsonArray("sourceList"); - String srcListString = null; - for (int srcListIndex = 0; srcListIndex<srcListArray.size(); srcListIndex++) { - JsonObject srcListObj = srcListArray.getJsonObject(srcListIndex); - String type = srcListObj.get("type").toString().replace("\"", ""); - - String value = null; - if(type.equals("REFERENCE")||type.equals("GROUP")){ - value = srcListObj.get("name").toString(); - } else if (type.equalsIgnoreCase("ANY")){ - value = null; - } else { - value = srcListObj.get("value").toString(); - } - - if(value != null){ - value = value.replace("\"", ""); - } - - if (srcListString != null) { - srcListString = srcListString.concat(",").concat(value); - - } else { - srcListString = value; - } - - } - String srcListInsert = "'"+srcListString+"'"; - - //getting destinationList Array fields from the firewallRulesList - JsonArray destListArray = ruleListobj.getJsonArray("destinationList"); - String destListString = null; - for (int destListIndex = 0; destListIndex<destListArray.size(); destListIndex ++) { - JsonObject destListObj = destListArray.getJsonObject(destListIndex); - String type = destListObj.get("type").toString().replace("\"", ""); - - String value = null; - if(type.equals("REFERENCE")||type.equals("GROUP")){ - value = destListObj.get("name").toString(); - } else if (type.equalsIgnoreCase("ANY")){ - value = null; - } else { - value = destListObj.get("value").toString(); - } - - if(value != null){ - value = value.replace("\"", ""); - } - - if (destListString != null) { - destListString = destListString.concat(",").concat(value); - } else { - destListString = value; - } - } - String destListInsert = "'"+destListString+"'"; - - //getting destServices Array fields from the firewallRulesList - JsonArray destServicesArray = ruleListobj.getJsonArray("destServices"); - String destPortListString = null; - for (int destPortListIndex = 0; destPortListIndex < destServicesArray.size(); destPortListIndex++) { - JsonObject destServicesObj = destServicesArray.getJsonObject(destPortListIndex); - String type = destServicesObj.get("type").toString().replace("\"", ""); - - String value = null; - if(type.equals("REFERENCE")||type.equals("GROUP")){ - value = destServicesObj.get("name").toString(); - } else if (type.equalsIgnoreCase("ANY")){ - value = null; - } else { - value = destServicesObj.get("value").toString(); - } - - if(value != null){ - value = value.replace("\"", ""); - } - - if (destPortListString != null) { - destPortListString = destPortListString.concat(",").concat(value); - } else { - destPortListString = value; - } - } - String destPortListInsert = "'"+destPortListString+"'"; - - /* - * Create Queries to INSERT data into database tables and execute - */ - UserInfo userInfo = new UserInfo(); - userInfo.setUserLoginId("API"); - userInfo.setUserName("API"); - - TermList termEntry = new TermList(); - termEntry.setTermName(ruleName); - termEntry.setSrcIPList(srcListInsert); - termEntry.setDestIPList(destListInsert); - termEntry.setProtocolList("null"); - termEntry.setPortList("null"); - termEntry.setSrcPortList("null"); - termEntry.setDestPortList(destPortListInsert); - termEntry.setAction(action); - termEntry.setDescription(description); - termEntry.setFromZones(fromZoneInsert); - termEntry.setToZones(toZoneInsert); - termEntry.setUserCreatedBy(userInfo); - dbConnection.save(termEntry); - - List<Object> actionResult = dbConnection.getDataById(ActionList.class, "actionName", action); - if(actionResult == null || actionResult.isEmpty()){ - ActionList actionEntry = new ActionList(); - actionEntry.setActionName(action); - actionEntry.setDescription(action); - dbConnection.save(actionEntry); - } - } - } - - if (path.contains("serviceGroups")) { - /* - * Inserting serviceGroups data into the ServiceGroup, ServiceList, ProtocolList, and PortList tables - */ - for(int si = 0; si < serviceGroup.size(); si++) { - /* - * Populate ArrayLists with values from the JSON - */ - //create the JSON object from the JSON Array for each iteration through the for loop - JsonObject svcGroupListobj = serviceGroup.getJsonObject(si); - - String groupName = svcGroupListobj.get("name").toString().replace('"', '\''); - - String description = null; - if (svcGroupListobj.containsKey("description")){ - description = svcGroupListobj.get("description").toString().replace('"', '\''); - } - - JsonArray membersArray = svcGroupListobj.getJsonArray("members"); - - Boolean isServiceGroup = false; - if (membersArray!=null){ - String membersType = membersArray.getJsonObject(0).get("type").toString(); - if (membersType.contains("REFERENCE")) { - isServiceGroup = true; - } - } - - //Insert values into GROUPSERVICELIST table if name begins with Group - if (isServiceGroup) { - List<Object> result = dbConnection.getDataById(GroupServiceList.class, "name", groupName); - if(result != null && !result.isEmpty()){ - GroupServiceList groupEntry = (GroupServiceList) result.get(0); - dbConnection.delete(groupEntry); - } - - String name = null; - for (int membersIndex = 0; membersIndex < membersArray.size(); membersIndex++) { - JsonObject membersObj = membersArray.getJsonObject(membersIndex); - String type = membersObj.get("type").toString().replace("\"", ""); - - String value = null; - if(type.equals("REFERENCE")||type.equals("GROUP")||type.equals("SERVICE")){ - value = membersObj.get("name").toString(); - } else if (type.equalsIgnoreCase("ANY")){ - value = null; - } else { - value = membersObj.get("value").toString(); - } - - if(value != null){ - value = value.replace("\"", ""); - } - - if (name != null) { - name = name.concat(",").concat(value); - } else { - name = value; - } - } - String nameInsert = "'"+name+"'"; - GroupServiceList groupServiceEntry = new GroupServiceList(); - groupServiceEntry.setGroupName(groupName); - groupServiceEntry.setServiceList(nameInsert); - dbConnection.save(groupServiceEntry); - } else { //Insert JSON data serviceGroup table, protocollist table, and portlist table - String type = svcGroupListobj.get("type").toString().replace('"', '\''); - String transportProtocol = svcGroupListobj.get("transportProtocol").toString().replace('"', '\''); - String ports = svcGroupListobj.get("ports").toString().replace('"', '\''); - - List<Object> result = dbConnection.getDataById(ServiceList.class, "name", groupName); - if(result != null && !result.isEmpty()){ - ServiceList serviceEntry = (ServiceList) result.get(0); - dbConnection.delete(serviceEntry); - } - - ServiceList serviceListEntry = new ServiceList(); - serviceListEntry.setServiceName(groupName); - serviceListEntry.setServiceDescription(description); - serviceListEntry.setServiceType(type); - serviceListEntry.setServiceTransProtocol(transportProtocol); - serviceListEntry.setServiceAppProtocol("null"); - serviceListEntry.setServicePorts(ports); - dbConnection.save(serviceListEntry); - - List<Object> protocolResult = dbConnection.getDataById(ProtocolList.class, "protocolName", transportProtocol); - if(protocolResult == null || protocolResult.isEmpty()){ - ProtocolList protocolEntry = new ProtocolList(); - protocolEntry.setProtocolName(transportProtocol); - protocolEntry.setDescription(transportProtocol); - dbConnection.save(protocolEntry); - } - - List<Object> portResult = dbConnection.getDataById(PortList.class, "portName", ports); - if(portResult == null || portResult.isEmpty()){ - PortList portEntry = new PortList(); - portEntry.setPortName(ports); - portEntry.setDescription(ports); - dbConnection.save(portEntry); - } - } - } - } - - if (path.contains("addressGroups")) { - /* - * Inserting addressGroup data into the ADDRESSGROUP table - */ - for(int ai=0; ai < addressGroup.size() ; ai++) { - - /* - * Populate ArrayLists with values from the JSON - */ - //create the JSON object from the JSON Array for each iteration through the for loop - JsonObject addressGroupObj = addressGroup.getJsonObject(ai); - - //create JSON array for members - JsonArray membersArray = addressGroupObj.getJsonArray("members"); - String addressGroupName = addressGroupObj.get("name").toString().replace('"', '\''); - - String description = null; - if (addressGroupObj.containsKey("description")){ - description = addressGroupObj.get("description").toString().replace('"', '\''); - } - - String prefixIP = null; - String type = null; - for (int membersIndex=0; membersIndex < membersArray.size(); membersIndex++) { - JsonObject membersObj = membersArray.getJsonObject(membersIndex); - type = membersObj.get("type").toString().replace("\"", ""); - - String value = null; - if(type.equals("REFERENCE")||type.equals("GROUP")||type.equals("SERVICE")){ - value = membersObj.get("name").toString(); - } else if (type.equalsIgnoreCase("ANY")){ - value = null; - } else { - value = membersObj.get("value").toString(); - } - - if(value != null){ - value = value.replace("\"", ""); - } - - if (prefixIP != null) { - prefixIP = prefixIP.concat(",").concat(value); - } else { - prefixIP = value; - } - } - - String prefixList = "'"+prefixIP+"'"; - Boolean isAddressGroup = type.contains("REFERENCE"); - - if (isAddressGroup) { - List<Object> result = dbConnection.getDataById(AddressGroup.class, "name", addressGroupName); - if(result != null && !result.isEmpty()){ - AddressGroup addressGroupEntry = (AddressGroup) result.get(0); - dbConnection.delete(addressGroupEntry); - } - AddressGroup newAddressGroup = new AddressGroup(); - newAddressGroup.setGroupName(addressGroupName); - newAddressGroup.setDescription(description); - newAddressGroup.setServiceList(prefixList); - dbConnection.save(newAddressGroup); - } else { - List<Object> result = dbConnection.getDataById(PrefixList.class, "prefixListName", addressGroupName); - if(result != null && !result.isEmpty()){ - PrefixList prefixListEntry = (PrefixList) result.get(0); - dbConnection.delete(prefixListEntry); - } - PrefixList newPrefixList = new PrefixList(); - newPrefixList.setPrefixListName(addressGroupName); - newPrefixList.setDescription(description); - newPrefixList.setPrefixListValue(prefixList); - dbConnection.save(newPrefixList); - } - } - } - } - - /* - * Remove duplicate values from 'lookup' dictionary tables - */ - //ProtocolList Table - String protoDelete = "DELETE FROM protocollist USING protocollist, protocollist p1 " - + "WHERE protocollist.id > p1.id AND protocollist.protocolname = p1.protocolname;"; - dbConnection.updateQuery(protoDelete); - - //PortList Table - String portListDelete = "DELETE FROM portlist USING portlist, portlist p1 " - + "WHERE portlist.id > p1.id AND portlist.portname = p1.portname; "; - dbConnection.updateQuery(portListDelete); - - //PrefixList Table - String prefixListDelete = "DELETE FROM prefixlist USING prefixlist, prefixlist p1 " - + "WHERE prefixlist.id > p1.id AND prefixlist.pl_name = p1.pl_name AND " - + "prefixlist.pl_value = p1.pl_value AND prefixlist.description = p1.description; "; - dbConnection.updateQuery(prefixListDelete); - - //GroupServiceList - String groupServiceDelete = "DELETE FROM groupservicelist USING groupservicelist, groupservicelist g1 " - + "WHERE groupservicelist.id > g1.id AND groupservicelist.name = g1.name AND " - + "groupservicelist.serviceList = g1.serviceList; "; - dbConnection.updateQuery(groupServiceDelete); - }catch (Exception e) { - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "FirewallConfigPolicy", "Exception executing Firewall queries"); - return false; - } - return true; - } else { - return false; - } - - } - - private JsonObject stringToJson(String jsonString) { - //Read jsonBody to JsonObject - StringReader in = new StringReader(jsonString); - JsonReader jsonReader = Json.createReader(in); - JsonObject json = jsonReader.readObject(); - jsonReader.close(); - return json; - } - - private JsonNode createPatch(String json, String oldJson) { - JsonNode oldJason = null; - JsonNode updatedJason = null; - - try { - oldJason = JsonLoader.fromString(oldJson); - updatedJason = JsonLoader.fromString(json); - } catch (IOException e) { - LOGGER.error("Exception Occured"+e); - } - return JsonDiff.asJson(oldJason, updatedJason); - } - - @Override - public Object getCorrectPolicyDataObject() { - return policyAdapter.getPolicyData(); - } + } + } else { + dbIsUpdated = true; + } + + if(dbIsUpdated) { + successMap = createPolicy(newPolicyPath,getCorrectPolicyDataObject()); + } else { + PolicyLogger.error("Failed to Update the Database Dictionary Tables."); + + //remove the new json file + String jsonBody = policyAdapter.getPrevJsonBody(); + if (jsonBody!=null){ + saveConfigurations(policyName, jsonBody); + } else { + saveConfigurations(policyName, ""); + } + successMap.put("fwdberror", "DB UPDATE"); + } + + return successMap; + } + + //This is the method for preparing the policy for saving. We have broken it out + //separately because the fully configured policy is used for multiple things + @Override + public boolean prepareToSave() throws PAPException{ + + if(isPreparedToSave()){ + //we have already done this + return true; + } + + int version = 0; + String policyID = policyAdapter.getPolicyID(); + version = policyAdapter.getHighestVersion(); + + // Create the Instance for pojo, PolicyType object is used in marshaling. + if ("Config".equals(policyAdapter.getPolicyType())) { + PolicyType policyConfig = new PolicyType(); + + policyConfig.setVersion(Integer.toString(version)); + policyConfig.setPolicyId(policyID); + policyConfig.setTarget(new TargetType()); + policyAdapter.setData(policyConfig); + } + policyName = policyAdapter.getNewFileName(); + + //String oldPolicyName = policyName.replace(".xml", ""); + String scope = policyName.substring(0, policyName.indexOf('.')); + String dbPolicyName = policyName.substring(policyName.indexOf('.')+1).replace(".xml", ""); + + int oldversion = Integer.parseInt(dbPolicyName.substring(dbPolicyName.lastIndexOf('.')+1)); + dbPolicyName = dbPolicyName.substring(0, dbPolicyName.lastIndexOf('.')+1); + if(oldversion > 1){ + oldversion = oldversion - 1; + dbPolicyName = dbPolicyName + oldversion + ".xml"; + } + EntityManager em = XACMLPapServlet.getEmf().createEntityManager(); + Query createPolicyQuery = em.createQuery("SELECT p FROM PolicyEntity p WHERE p.scope=:scope AND p.policyName=:policyName"); + createPolicyQuery.setParameter("scope", scope); + createPolicyQuery.setParameter("policyName", dbPolicyName); + List<?> createPolicyQueryList = createPolicyQuery.getResultList(); + if(!createPolicyQueryList.isEmpty()){ + PolicyEntity entitydata = (PolicyEntity) createPolicyQueryList.get(0); + policyAdapter.setPrevJsonBody(entitydata.getConfigurationData().getConfigBody()); + } + em.close(); + if (policyAdapter.getData() != null) { + String jsonBody = policyAdapter.getJsonBody(); + saveConfigurations(policyName, jsonBody); + + // Make sure the filename ends with an extension + if (!policyName.endsWith(".xml")) { + policyName = policyName + ".xml"; + } + + PolicyType configPolicy = (PolicyType) policyAdapter.getData(); + + configPolicy.setDescription(policyAdapter.getPolicyDescription()); + + configPolicy.setRuleCombiningAlgId(policyAdapter.getRuleCombiningAlgId()); + + AllOfType allOfOne = new AllOfType(); + String fileName = policyAdapter.getNewFileName(); + String name = fileName.substring(fileName.lastIndexOf('\\') + 1, fileName.length()); + if ((name == null) || (name.equals(""))) { + name = fileName.substring(fileName.lastIndexOf('/') + 1, fileName.length()); + } + allOfOne.getMatch().add(createMatch("PolicyName", name)); + AllOfType allOf = new AllOfType(); + + // Match for ConfigName + allOf.getMatch().add(createMatch("ConfigName", policyAdapter.getConfigName())); + // Match for riskType + allOf.getMatch().add(createDynamicMatch("RiskType", policyAdapter.getRiskType())); + // Match for riskLevel + allOf.getMatch().add(createDynamicMatch("RiskLevel", String.valueOf(policyAdapter.getRiskLevel()))); + // Match for riskguard + allOf.getMatch().add(createDynamicMatch("guard", policyAdapter.getGuard())); + // Match for ttlDate + allOf.getMatch().add(createDynamicMatch("TTLDate", policyAdapter.getTtlDate())); + AnyOfType anyOf = new AnyOfType(); + anyOf.getAllOf().add(allOfOne); + anyOf.getAllOf().add(allOf); + + TargetType target = new TargetType(); + target.getAnyOf().add(anyOf); + + // Adding the target to the policy element + configPolicy.setTarget((TargetType) target); + + RuleType rule = new RuleType(); + rule.setRuleId(policyAdapter.getRuleID()); + rule.setEffect(EffectType.PERMIT); + + // Create Target in Rule + AllOfType allOfInRule = new AllOfType(); + + // Creating match for ACCESS in rule target + MatchType accessMatch = new MatchType(); + AttributeValueType accessAttributeValue = new AttributeValueType(); + accessAttributeValue.setDataType(STRING_DATATYPE); + accessAttributeValue.getContent().add("ACCESS"); + accessMatch.setAttributeValue(accessAttributeValue); + AttributeDesignatorType accessAttributeDesignator = new AttributeDesignatorType(); + URI accessURI = null; + try { + accessURI = new URI(ACTION_ID); + } catch (URISyntaxException e) { + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "FirewallConfigPolicy", "Exception creating ACCESS URI"); + } + accessAttributeDesignator.setCategory(CATEGORY_ACTION); + accessAttributeDesignator.setDataType(STRING_DATATYPE); + accessAttributeDesignator.setAttributeId(new IdentifierImpl(accessURI).stringValue()); + accessMatch.setAttributeDesignator(accessAttributeDesignator); + accessMatch.setMatchId(FUNCTION_STRING_EQUAL_IGNORE); + + // Creating Config Match in rule Target + MatchType configMatch = new MatchType(); + AttributeValueType configAttributeValue = new AttributeValueType(); + configAttributeValue.setDataType(STRING_DATATYPE); + + configAttributeValue.getContent().add("Config"); + + configMatch.setAttributeValue(configAttributeValue); + AttributeDesignatorType configAttributeDesignator = new AttributeDesignatorType(); + URI configURI = null; + try { + configURI = new URI(RESOURCE_ID); + } catch (URISyntaxException e) { + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "FirewallConfigPolicy", "Exception creating Config URI"); + } + + configAttributeDesignator.setCategory(CATEGORY_RESOURCE); + configAttributeDesignator.setDataType(STRING_DATATYPE); + configAttributeDesignator.setAttributeId(new IdentifierImpl(configURI).stringValue()); + configMatch.setAttributeDesignator(configAttributeDesignator); + configMatch.setMatchId(FUNCTION_STRING_EQUAL_IGNORE); + + allOfInRule.getMatch().add(accessMatch); + allOfInRule.getMatch().add(configMatch); + + AnyOfType anyOfInRule = new AnyOfType(); + anyOfInRule.getAllOf().add(allOfInRule); + + TargetType targetInRule = new TargetType(); + targetInRule.getAnyOf().add(anyOfInRule); + + rule.setTarget(targetInRule); + rule.setAdviceExpressions(getAdviceExpressions(version, policyName)); + + configPolicy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().add(rule); + policyAdapter.setPolicyData(configPolicy); + + } else { + PolicyLogger.error("Unsupported data object." + policyAdapter.getData().getClass().getCanonicalName()); + } + setPreparedToSave(true); + return true; + } + + // Data required for Advice part is setting here. + private AdviceExpressionsType getAdviceExpressions(int version, String fileName) { + + //Firewall Config ID Assignment + AdviceExpressionsType advices = new AdviceExpressionsType(); + AdviceExpressionType advice = new AdviceExpressionType(); + advice.setAdviceId("firewallConfigID"); + advice.setAppliesTo(EffectType.PERMIT); + // For Configuration + AttributeAssignmentExpressionType assignment1 = new AttributeAssignmentExpressionType(); + assignment1.setAttributeId("type"); + assignment1.setCategory(CATEGORY_RESOURCE); + assignment1.setIssuer(""); + AttributeValueType configNameAttributeValue = new AttributeValueType(); + configNameAttributeValue.setDataType(STRING_DATATYPE); + configNameAttributeValue.getContent().add("Configuration"); + assignment1.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue)); + advice.getAttributeAssignmentExpression().add(assignment1); + + // For Config file Url if configurations are provided. + //URL ID Assignment + AttributeAssignmentExpressionType assignment2 = new AttributeAssignmentExpressionType(); + assignment2.setAttributeId("URLID"); + assignment2.setCategory(CATEGORY_RESOURCE); + assignment2.setIssuer(""); + AttributeValueType AttributeValue = new AttributeValueType(); + AttributeValue.setDataType(URI_DATATYPE); + if (policyName.endsWith(".xml")) { + policyName = policyName.substring(0, policyName.lastIndexOf(".xml")); + } + String content = CONFIG_URL + "/Config/" + policyName + ".json"; + + AttributeValue.getContent().add(content); + assignment2.setExpression(new ObjectFactory().createAttributeValue(AttributeValue)); + advice.getAttributeAssignmentExpression().add(assignment2); + + //Policy Name Assignment + AttributeAssignmentExpressionType assignment3 = new AttributeAssignmentExpressionType(); + assignment3.setAttributeId("PolicyName"); + assignment3.setCategory(CATEGORY_RESOURCE); + assignment3.setIssuer(""); + AttributeValueType attributeValue3 = new AttributeValueType(); + attributeValue3.setDataType(STRING_DATATYPE); + fileName = FilenameUtils.removeExtension(fileName); + fileName = fileName + ".xml"; + String name = fileName.substring(fileName.lastIndexOf("\\") + 1, fileName.length()); + if ((name == null) || (name.equals(""))) { + name = fileName.substring(fileName.lastIndexOf("/") + 1, fileName.length()); + } + attributeValue3.getContent().add(name); + assignment3.setExpression(new ObjectFactory().createAttributeValue(attributeValue3)); + advice.getAttributeAssignmentExpression().add(assignment3); + + //Version Number Assignment + AttributeAssignmentExpressionType assignment4 = new AttributeAssignmentExpressionType(); + assignment4.setAttributeId("VersionNumber"); + assignment4.setCategory(CATEGORY_RESOURCE); + assignment4.setIssuer(""); + AttributeValueType configNameAttributeValue4 = new AttributeValueType(); + configNameAttributeValue4.setDataType(STRING_DATATYPE); + configNameAttributeValue4.getContent().add(Integer.toString(version)); + assignment4.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue4)); + advice.getAttributeAssignmentExpression().add(assignment4); + + //Onap Name Assignment + AttributeAssignmentExpressionType assignment5 = new AttributeAssignmentExpressionType(); + assignment5.setAttributeId("matching:" + ONAPID); + assignment5.setCategory(CATEGORY_RESOURCE); + assignment5.setIssuer(""); + AttributeValueType configNameAttributeValue5 = new AttributeValueType(); + configNameAttributeValue5.setDataType(STRING_DATATYPE); + assignment5.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue5)); + advice.getAttributeAssignmentExpression().add(assignment5); + + //Config Name Assignment + AttributeAssignmentExpressionType assignment6 = new AttributeAssignmentExpressionType(); + assignment6.setAttributeId("matching:" + CONFIGID); + assignment6.setCategory(CATEGORY_RESOURCE); + assignment6.setIssuer(""); + AttributeValueType configNameAttributeValue6 = new AttributeValueType(); + configNameAttributeValue6.setDataType(STRING_DATATYPE); + configNameAttributeValue6.getContent().add(policyAdapter.getConfigName()); + assignment6.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue6)); + advice.getAttributeAssignmentExpression().add(assignment6); + + //Risk Attributes + AttributeAssignmentExpressionType assignment7 = new AttributeAssignmentExpressionType(); + assignment7.setAttributeId("RiskType"); + assignment7.setCategory(CATEGORY_RESOURCE); + assignment7.setIssuer(""); + + AttributeValueType configNameAttributeValue7 = new AttributeValueType(); + configNameAttributeValue7.setDataType(STRING_DATATYPE); + configNameAttributeValue7.getContent().add(policyAdapter.getRiskType()); + assignment7.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue7)); + + advice.getAttributeAssignmentExpression().add(assignment7); + + AttributeAssignmentExpressionType assignment8 = new AttributeAssignmentExpressionType(); + assignment8.setAttributeId("RiskLevel"); + assignment8.setCategory(CATEGORY_RESOURCE); + assignment8.setIssuer(""); + + AttributeValueType configNameAttributeValue8 = new AttributeValueType(); + configNameAttributeValue8.setDataType(STRING_DATATYPE); + configNameAttributeValue8.getContent().add(policyAdapter.getRiskLevel()); + assignment8.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue8)); + + advice.getAttributeAssignmentExpression().add(assignment8); + + AttributeAssignmentExpressionType assignment9 = new AttributeAssignmentExpressionType(); + assignment9.setAttributeId("guard"); + assignment9.setCategory(CATEGORY_RESOURCE); + assignment9.setIssuer(""); + + AttributeValueType configNameAttributeValue9 = new AttributeValueType(); + configNameAttributeValue9.setDataType(STRING_DATATYPE); + configNameAttributeValue9.getContent().add(policyAdapter.getGuard()); + assignment9.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue9)); + + advice.getAttributeAssignmentExpression().add(assignment9); + + AttributeAssignmentExpressionType assignment10 = new AttributeAssignmentExpressionType(); + assignment10.setAttributeId("TTLDate"); + assignment10.setCategory(CATEGORY_RESOURCE); + assignment10.setIssuer(""); + + AttributeValueType configNameAttributeValue10 = new AttributeValueType(); + configNameAttributeValue10.setDataType(STRING_DATATYPE); + configNameAttributeValue10.getContent().add(policyAdapter.getTtlDate()); + assignment10.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue10)); + + advice.getAttributeAssignmentExpression().add(assignment10); + advices.getAdviceExpression().add(advice); + return advices; + } + + + private Boolean insertFirewallDicionaryData (String jsonBody) throws SQLException { + CommonClassDaoImpl dbConnection = new CommonClassDaoImpl(); + JsonObject json = null; + if (jsonBody != null) { + + //Read jsonBody to JsonObject + json = stringToJson(jsonBody); + + JsonArray firewallRules = null; + JsonArray serviceGroup = null; + JsonArray addressGroup = null; + //insert data into tables + try { + firewallRules = json.getJsonArray("firewallRuleList"); + serviceGroup = json.getJsonArray("serviceGroups"); + addressGroup = json.getJsonArray("addressGroups"); + /* + * Inserting firewallRuleList data into the Terms, SecurityZone, and Action tables + */ + if (firewallRules != null) { + for(int i = 0;i<firewallRules.size();i++) { + /* + * Populate ArrayLists with values from the JSON + */ + //create the JSON object from the JSON Array for each iteration through the for loop + JsonObject ruleListobj = firewallRules.getJsonObject(i); + + //get values from JSON fields of firewallRulesList Array + String ruleName = ruleListobj.get("ruleName").toString(); + String action = ruleListobj.get("action").toString(); + String description = ruleListobj.get("description").toString(); + List<Object> result = dbConnection.getDataById(TermList.class, "termName", ruleName); + if(result != null && !result.isEmpty()){ + TermList termEntry = (TermList) result.get(0); + dbConnection.delete(termEntry); + } + + //getting fromZone Array field from the firewallRulesList + JsonArray fromZoneArray = ruleListobj.getJsonArray("fromZones"); + String fromZoneString = null; + + for (int fromZoneIndex = 0;fromZoneIndex<fromZoneArray.size(); fromZoneIndex++) { + String value = fromZoneArray.get(fromZoneIndex).toString(); + value = value.replace("\"", ""); + if (fromZoneString != null) { + fromZoneString = fromZoneString.concat(",").concat(value); + } else { + fromZoneString = value; + } + } + String fromZoneInsert = "'"+fromZoneString+"'"; + + //getting toZone Array field from the firewallRulesList + JsonArray toZoneArray = ruleListobj.getJsonArray("toZones"); + String toZoneString = null; + for (int toZoneIndex = 0; toZoneIndex<toZoneArray.size(); toZoneIndex++) { + String value = toZoneArray.get(toZoneIndex).toString(); + value = value.replace("\"", ""); + if (toZoneString != null) { + toZoneString = toZoneString.concat(",").concat(value); + } else { + toZoneString = value; + } + } + String toZoneInsert = "'"+toZoneString+"'"; + + //getting sourceList Array fields from the firewallRulesList + JsonArray srcListArray = ruleListobj.getJsonArray("sourceList"); + String srcListString = null; + for (int srcListIndex = 0; srcListIndex< srcListArray.size(); srcListIndex++) { + JsonObject srcListObj = srcListArray.getJsonObject(srcListIndex); + String type = srcListObj.get("type").toString().replace("\"", ""); + + String value = null; + if(type.equals("REFERENCE")||type.equals("GROUP")){ + value = srcListObj.get("name").toString(); + } else if (type.equalsIgnoreCase("ANY")){ + value = null; + } else { + value = srcListObj.get("value").toString(); + } + + if (value!=null){ + value = value.replace("\"", ""); + } + + if (srcListString != null) { + srcListString = srcListString.concat(",").concat(value); + + } else { + srcListString = value; + } + + } + String srcListInsert = "'"+srcListString+"'"; + + //getting destinationList Array fields from the firewallRulesList + JsonArray destListArray = ruleListobj.getJsonArray("destinationList"); + String destListString = null; + for (int destListIndex = 0; destListIndex <destListArray.size(); destListIndex++) { + JsonObject destListObj = destListArray.getJsonObject(destListIndex); + String type = destListObj.get("type").toString().replace("\"", ""); + + String value = null; + if(type.equals("REFERENCE")||type.equals("GROUP")){ + value = destListObj.get("name").toString(); + } else if (type.equalsIgnoreCase("ANY")){ + value = null; + } else { + value = destListObj.get("value").toString(); + } + + if (value!=null){ + value = value.replace("\"", ""); + } + + if (destListString != null) { + destListString = destListString.concat(",").concat(value); + } else { + destListString = value; + } + } + String destListInsert = "'"+destListString+"'"; + + //getting destServices Array fields from the firewallRulesList + JsonArray destServicesArray = ruleListobj.getJsonArray("destServices"); + String destPortListString = null; + for (int destPortListIndex = 0; destPortListIndex < destServicesArray.size(); destPortListIndex++) { + JsonObject destServicesObj = destServicesArray.getJsonObject(destPortListIndex); + String type = destServicesObj.get("type").toString().replace("\"", ""); + + String value = null; + if(type.equals("REFERENCE")||type.equals("GROUP")){ + value = destServicesObj.get("name").toString(); + } else if (type.equalsIgnoreCase("ANY")){ + value = null; + } else { + value = destServicesObj.get("value").toString(); + } + + if (value!=null){ + value = value.replace("\"", ""); + } + + if (destPortListString != null) { + destPortListString = destPortListString.concat(",").concat(value); + } else { + destPortListString = value; + } + } + String destPortListInsert = "'"+destPortListString+"'"; + + /* + * Create Queries to INSERT data into database tables and execute + */ + UserInfo userInfo = new UserInfo(); + userInfo.setUserLoginId("API"); + userInfo.setUserName("API"); + + TermList termEntry = new TermList(); + termEntry.setTermName(ruleName); + termEntry.setSrcIPList(srcListInsert); + termEntry.setDestIPList(destListInsert); + termEntry.setProtocolList("null"); + termEntry.setPortList("null"); + termEntry.setSrcPortList("null"); + termEntry.setDestPortList(destPortListInsert); + termEntry.setAction(action); + termEntry.setDescription(description); + termEntry.setFromZones(fromZoneInsert); + termEntry.setToZones(toZoneInsert); + termEntry.setUserCreatedBy(userInfo); + dbConnection.save(termEntry); + + ActionList actionEntry = new ActionList(); + actionEntry.setActionName(action); + actionEntry.setDescription(action); + dbConnection.save(actionEntry); + } + } + + /* + * Inserting serviceGroups data into the ServiceGroup, ServiceList, ProtocolList, and PortList tables + */ + if (serviceGroup != null) { + for(int i = 0; i < serviceGroup.size() ; i++) { + /* + * Populate ArrayLists with values from the JSON + */ + //create the JSON object from the JSON Array for each iteration through the for loop + JsonObject svcGroupListobj = serviceGroup.getJsonObject(i); + + String serviceListName = svcGroupListobj.get("name").toString(); + String description = null; + if (svcGroupListobj.containsKey("description")){ + description = svcGroupListobj.get("description").toString(); + } + + //getting members Array from the serviceGroup + JsonArray membersArray = svcGroupListobj.getJsonArray("members"); + + //String type = svcGroupListobj.get("type").toString(); + Boolean isServiceGroup = false; + if (membersArray!=null){ + String membersType = membersArray.getJsonObject(0).get("type").toString(); + if (membersType.contains("REFERENCE")) { + isServiceGroup = true; + } + } + + //Insert values into GROUPSERVICELIST table if name begins with Group + if (isServiceGroup) { + String name = null; + for (int membersIndex = 0; membersIndex< membersArray.size(); membersIndex++) { + JsonObject membersObj = membersArray.getJsonObject(membersIndex); + //String value = membersObj.get("name").toString(); + String type = membersObj.get("type").toString().replace("\"", ""); + + String value = null; + if(type.equals("REFERENCE")||type.equals("GROUP")||type.equals("SERVICE")){ + value = membersObj.get("name").toString(); + } else if (type.equalsIgnoreCase("ANY")){ + value = null; + } else { + value = membersObj.get("value").toString(); + } + + if(value != null){ + value = value.replace("\"", ""); + } + + if (name != null) { + name = name.concat(",").concat(value); + } else { + name = value; + } + } + String nameInsert = "'"+name+"'"; + GroupServiceList groupServiceEntry = new GroupServiceList(); + groupServiceEntry.setGroupName(serviceListName); + groupServiceEntry.setServiceList(nameInsert); + dbConnection.save(groupServiceEntry); + } else { //Insert JSON data serviceList table, protollist table, and portlist table + String type = svcGroupListobj.get("type").toString(); + String transportProtocol = svcGroupListobj.get("transportProtocol").toString(); + String ports = svcGroupListobj.get("ports").toString(); + + /* + * Create Queries to INSERT data into database table and execute + */ + ServiceList serviceListEntry = new ServiceList(); + serviceListEntry.setServiceName(serviceListName); + serviceListEntry.setServiceDescription(description); + serviceListEntry.setServiceType(type); + serviceListEntry.setServiceTransProtocol(transportProtocol); + serviceListEntry.setServiceAppProtocol("null"); + serviceListEntry.setServicePorts(ports); + dbConnection.save(serviceListEntry); + + ProtocolList protocolEntry = new ProtocolList(); + protocolEntry.setProtocolName(transportProtocol); + protocolEntry.setDescription(transportProtocol); + dbConnection.save(protocolEntry); + + PortList portListEntry = new PortList(); + portListEntry.setPortName(ports); + portListEntry.setDescription(ports); + dbConnection.save(portListEntry); + } + } + } + + /* + * Inserting addressGroup data into the ADDRESSGROUP table + */ + if (addressGroup != null) { + for(int i = 0; i < addressGroup.size(); i++) { + /* + * Populate ArrayLists with values from the JSON + */ + //create the JSON object from the JSON Array for each iteration through the for loop + JsonObject addressGroupObj = addressGroup.getJsonObject(i); + + //create JSON array for members + JsonArray membersArray = addressGroupObj.getJsonArray("members"); + String addressGroupName = addressGroupObj.get("name").toString(); + + String description = null; + if (addressGroupObj.containsKey("description")){ + description = addressGroupObj.get("description").toString(); + } + + String prefixIP = null; + String type = null; + for (int membersIndex = 0; membersIndex < membersArray.size(); membersIndex++) { + JsonObject membersObj = membersArray.getJsonObject(membersIndex); + //String value = membersObj.get("value").toString(); + type = membersObj.get("type").toString().replace("\"", ""); + + String value = null; + if(type.equals("REFERENCE")||type.equals("GROUP")||type.equals("SERVICE")){ + value = membersObj.get("name").toString(); + } else if (type.equalsIgnoreCase("ANY")){ + value = null; + } else { + value = membersObj.get("value").toString(); + } + + if(value != null){ + value = value.replace("\"", ""); + } + + if (prefixIP != null) { + prefixIP = prefixIP.concat(",").concat(value); + } else { + prefixIP = value; + } + } + String prefixList = "'"+prefixIP+"'"; + + Boolean isAddressGroup = type.contains("REFERENCE"); + + if (isAddressGroup) { + AddressGroup addressGroupEntry = new AddressGroup(); + addressGroupEntry.setGroupName(addressGroupName); + addressGroupEntry.setDescription(description); + addressGroupEntry.setServiceList(prefixList); + dbConnection.save(addressGroupEntry); + } else { + PrefixList prefixListEntry = new PrefixList(); + prefixListEntry.setPrefixListName(addressGroupName); + prefixListEntry.setDescription(description); + prefixListEntry.setPrefixListValue(prefixList); + dbConnection.save(prefixListEntry); + } + } + } + + /* + * Remove duplicate values from 'lookup' dictionary tables + */ + //ProtocolList Table + String protoDelete = "DELETE FROM protocollist USING protocollist, protocollist p1 " + + "WHERE protocollist.id > p1.id AND protocollist.protocolname = p1.protocolname;"; + dbConnection.updateQuery(protoDelete); + + //PortList Table + String portListDelete = "DELETE FROM portlist USING portlist, portlist p1 " + + "WHERE portlist.id > p1.id AND portlist.portname = p1.portname; "; + dbConnection.updateQuery(portListDelete); + + //PrefixList Table + String prefixListDelete = "DELETE FROM prefixlist USING prefixlist, prefixlist p1 " + + "WHERE prefixlist.id > p1.id AND prefixlist.pl_name = p1.pl_name AND " + + "prefixlist.pl_value = p1.pl_value AND prefixlist.description = p1.description; "; + dbConnection.updateQuery(prefixListDelete); + + //GroupServiceList + String groupServiceDelete = "DELETE FROM groupservicelist USING groupservicelist, groupservicelist g1 " + + "WHERE groupservicelist.id > g1.id AND groupservicelist.name = g1.name AND " + + "groupservicelist.serviceList = g1.serviceList; "; + dbConnection.updateQuery(groupServiceDelete); + }catch (Exception e) { + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "FirewallConfigPolicy", "Exception getting Json values"); + return false; + } + return true; + + } else { + return false; + } + + } + + + private Boolean updateFirewallDictionaryData(String jsonBody, String prevJsonBody) { + CommonClassDaoImpl dbConnection = new CommonClassDaoImpl(); + JsonObject oldJson = null; + JsonObject newJson = null; + + if (jsonBody != null || prevJsonBody != null) { + + oldJson = stringToJson(prevJsonBody); + newJson = stringToJson(jsonBody); + + //if no changes to the json then return true + if (oldJson != null && oldJson.equals(newJson)) { + return true; + } + + JsonArray firewallRules = null; + JsonArray serviceGroup = null; + JsonArray addressGroup = null; + + firewallRules = newJson.getJsonArray("firewallRuleList"); + serviceGroup = newJson.getJsonArray("serviceGroups"); + addressGroup = newJson.getJsonArray("addressGroups"); + + //insert data into tables + try { + JsonNode jsonDiff = createPatch(jsonBody, prevJsonBody); + + for (int i = 0; i<jsonDiff.size(); i++) { + //String path = jsonDiff.get(i).asText(); + String jsonpatch = jsonDiff.get(i).toString(); + + JsonObject patchObj = stringToJson(jsonpatch); + + String path = patchObj.get("path").toString().replace('"', ' ').trim(); + + if (path.contains("firewallRuleList")) { + /* + * Inserting firewallRuleList data into the Terms, SecurityZone, and Action tables + */ + for(int ri = 0; ri < firewallRules.size(); ri++) { + /* + * Populate ArrayLists with values from the JSON + */ + //create the JSON object from the JSON Array for each iteration through the for loop + JsonObject ruleListobj = firewallRules.getJsonObject(ri); + + //get values from JSON fields of firewallRulesList Array + String ruleName = ruleListobj.get("ruleName").toString().replace('"', '\''); + String action = ruleListobj.get("action").toString().replace('"', '\''); + String description = ruleListobj.get("description").toString().replace('"', '\''); + + List<Object> result = dbConnection.getDataById(TermList.class, "termName", ruleName); + if(result != null && !result.isEmpty()){ + TermList termEntry = (TermList) result.get(0); + dbConnection.delete(termEntry); + } + + //getting fromZone Array field from the firewallRulesList + JsonArray fromZoneArray = ruleListobj.getJsonArray("fromZones"); + String fromZoneString = null; + + for (int fromZoneIndex = 0; fromZoneIndex<fromZoneArray.size() ; fromZoneIndex++) { + String value = fromZoneArray.get(fromZoneIndex).toString(); + value = value.replace("\"", ""); + + if (fromZoneString != null) { + fromZoneString = fromZoneString.concat(",").concat(value); + + } else { + fromZoneString = value; + } + + } + String fromZoneInsert = "'"+fromZoneString+"'"; + + //getting toZone Array field from the firewallRulesList + JsonArray toZoneArray = ruleListobj.getJsonArray("toZones"); + String toZoneString = null; + + + for (int toZoneIndex = 0; toZoneIndex < toZoneArray.size(); toZoneIndex++) { + String value = toZoneArray.get(toZoneIndex).toString(); + value = value.replace("\"", ""); + + if (toZoneString != null) { + toZoneString = toZoneString.concat(",").concat(value); + + } else { + toZoneString = value; + } + + } + String toZoneInsert = "'"+toZoneString+"'"; + //getting sourceList Array fields from the firewallRulesList + JsonArray srcListArray = ruleListobj.getJsonArray("sourceList"); + String srcListString = null; + for (int srcListIndex = 0; srcListIndex<srcListArray.size(); srcListIndex++) { + JsonObject srcListObj = srcListArray.getJsonObject(srcListIndex); + String type = srcListObj.get("type").toString().replace("\"", ""); + + String value = null; + if(type.equals("REFERENCE")||type.equals("GROUP")){ + value = srcListObj.get("name").toString(); + } else if (type.equalsIgnoreCase("ANY")){ + value = null; + } else { + value = srcListObj.get("value").toString(); + } + + if(value != null){ + value = value.replace("\"", ""); + } + + if (srcListString != null) { + srcListString = srcListString.concat(",").concat(value); + + } else { + srcListString = value; + } + + } + String srcListInsert = "'"+srcListString+"'"; + + //getting destinationList Array fields from the firewallRulesList + JsonArray destListArray = ruleListobj.getJsonArray("destinationList"); + String destListString = null; + for (int destListIndex = 0; destListIndex<destListArray.size(); destListIndex ++) { + JsonObject destListObj = destListArray.getJsonObject(destListIndex); + String type = destListObj.get("type").toString().replace("\"", ""); + + String value = null; + if(type.equals("REFERENCE")||type.equals("GROUP")){ + value = destListObj.get("name").toString(); + } else if (type.equalsIgnoreCase("ANY")){ + value = null; + } else { + value = destListObj.get("value").toString(); + } + + if(value != null){ + value = value.replace("\"", ""); + } + + if (destListString != null) { + destListString = destListString.concat(",").concat(value); + } else { + destListString = value; + } + } + String destListInsert = "'"+destListString+"'"; + + //getting destServices Array fields from the firewallRulesList + JsonArray destServicesArray = ruleListobj.getJsonArray("destServices"); + String destPortListString = null; + for (int destPortListIndex = 0; destPortListIndex < destServicesArray.size(); destPortListIndex++) { + JsonObject destServicesObj = destServicesArray.getJsonObject(destPortListIndex); + String type = destServicesObj.get("type").toString().replace("\"", ""); + + String value = null; + if(type.equals("REFERENCE")||type.equals("GROUP")){ + value = destServicesObj.get("name").toString(); + } else if (type.equalsIgnoreCase("ANY")){ + value = null; + } else { + value = destServicesObj.get("value").toString(); + } + + if(value != null){ + value = value.replace("\"", ""); + } + + if (destPortListString != null) { + destPortListString = destPortListString.concat(",").concat(value); + } else { + destPortListString = value; + } + } + String destPortListInsert = "'"+destPortListString+"'"; + + /* + * Create Queries to INSERT data into database tables and execute + */ + UserInfo userInfo = new UserInfo(); + userInfo.setUserLoginId("API"); + userInfo.setUserName("API"); + + TermList termEntry = new TermList(); + termEntry.setTermName(ruleName); + termEntry.setSrcIPList(srcListInsert); + termEntry.setDestIPList(destListInsert); + termEntry.setProtocolList("null"); + termEntry.setPortList("null"); + termEntry.setSrcPortList("null"); + termEntry.setDestPortList(destPortListInsert); + termEntry.setAction(action); + termEntry.setDescription(description); + termEntry.setFromZones(fromZoneInsert); + termEntry.setToZones(toZoneInsert); + termEntry.setUserCreatedBy(userInfo); + dbConnection.save(termEntry); + + List<Object> actionResult = dbConnection.getDataById(ActionList.class, "actionName", action); + if(actionResult == null || actionResult.isEmpty()){ + ActionList actionEntry = new ActionList(); + actionEntry.setActionName(action); + actionEntry.setDescription(action); + dbConnection.save(actionEntry); + } + } + } + + if (path.contains("serviceGroups")) { + /* + * Inserting serviceGroups data into the ServiceGroup, ServiceList, ProtocolList, and PortList tables + */ + for(int si = 0; si < serviceGroup.size(); si++) { + /* + * Populate ArrayLists with values from the JSON + */ + //create the JSON object from the JSON Array for each iteration through the for loop + JsonObject svcGroupListobj = serviceGroup.getJsonObject(si); + + String groupName = svcGroupListobj.get("name").toString().replace('"', '\''); + + String description = null; + if (svcGroupListobj.containsKey("description")){ + description = svcGroupListobj.get("description").toString().replace('"', '\''); + } + + JsonArray membersArray = svcGroupListobj.getJsonArray("members"); + + Boolean isServiceGroup = false; + if (membersArray!=null){ + String membersType = membersArray.getJsonObject(0).get("type").toString(); + if (membersType.contains("REFERENCE")) { + isServiceGroup = true; + } + } + + //Insert values into GROUPSERVICELIST table if name begins with Group + if (isServiceGroup) { + List<Object> result = dbConnection.getDataById(GroupServiceList.class, "name", groupName); + if(result != null && !result.isEmpty()){ + GroupServiceList groupEntry = (GroupServiceList) result.get(0); + dbConnection.delete(groupEntry); + } + + String name = null; + for (int membersIndex = 0; membersIndex < membersArray.size(); membersIndex++) { + JsonObject membersObj = membersArray.getJsonObject(membersIndex); + String type = membersObj.get("type").toString().replace("\"", ""); + + String value = null; + if(type.equals("REFERENCE")||type.equals("GROUP")||type.equals("SERVICE")){ + value = membersObj.get("name").toString(); + } else if (type.equalsIgnoreCase("ANY")){ + value = null; + } else { + value = membersObj.get("value").toString(); + } + + if(value != null){ + value = value.replace("\"", ""); + } + + if (name != null) { + name = name.concat(",").concat(value); + } else { + name = value; + } + } + String nameInsert = "'"+name+"'"; + GroupServiceList groupServiceEntry = new GroupServiceList(); + groupServiceEntry.setGroupName(groupName); + groupServiceEntry.setServiceList(nameInsert); + dbConnection.save(groupServiceEntry); + } else { //Insert JSON data serviceGroup table, protocollist table, and portlist table + String type = svcGroupListobj.get("type").toString().replace('"', '\''); + String transportProtocol = svcGroupListobj.get("transportProtocol").toString().replace('"', '\''); + String ports = svcGroupListobj.get("ports").toString().replace('"', '\''); + + List<Object> result = dbConnection.getDataById(ServiceList.class, "name", groupName); + if(result != null && !result.isEmpty()){ + ServiceList serviceEntry = (ServiceList) result.get(0); + dbConnection.delete(serviceEntry); + } + + ServiceList serviceListEntry = new ServiceList(); + serviceListEntry.setServiceName(groupName); + serviceListEntry.setServiceDescription(description); + serviceListEntry.setServiceType(type); + serviceListEntry.setServiceTransProtocol(transportProtocol); + serviceListEntry.setServiceAppProtocol("null"); + serviceListEntry.setServicePorts(ports); + dbConnection.save(serviceListEntry); + + List<Object> protocolResult = dbConnection.getDataById(ProtocolList.class, "protocolName", transportProtocol); + if(protocolResult == null || protocolResult.isEmpty()){ + ProtocolList protocolEntry = new ProtocolList(); + protocolEntry.setProtocolName(transportProtocol); + protocolEntry.setDescription(transportProtocol); + dbConnection.save(protocolEntry); + } + + List<Object> portResult = dbConnection.getDataById(PortList.class, "portName", ports); + if(portResult == null || portResult.isEmpty()){ + PortList portEntry = new PortList(); + portEntry.setPortName(ports); + portEntry.setDescription(ports); + dbConnection.save(portEntry); + } + } + } + } + + if (path.contains("addressGroups")) { + /* + * Inserting addressGroup data into the ADDRESSGROUP table + */ + for(int ai=0; ai < addressGroup.size() ; ai++) { + + /* + * Populate ArrayLists with values from the JSON + */ + //create the JSON object from the JSON Array for each iteration through the for loop + JsonObject addressGroupObj = addressGroup.getJsonObject(ai); + + //create JSON array for members + JsonArray membersArray = addressGroupObj.getJsonArray("members"); + String addressGroupName = addressGroupObj.get("name").toString().replace('"', '\''); + + String description = null; + if (addressGroupObj.containsKey("description")){ + description = addressGroupObj.get("description").toString().replace('"', '\''); + } + + String prefixIP = null; + String type = null; + for (int membersIndex=0; membersIndex < membersArray.size(); membersIndex++) { + JsonObject membersObj = membersArray.getJsonObject(membersIndex); + type = membersObj.get("type").toString().replace("\"", ""); + + String value = null; + if(type.equals("REFERENCE")||type.equals("GROUP")||type.equals("SERVICE")){ + value = membersObj.get("name").toString(); + } else if (type.equalsIgnoreCase("ANY")){ + value = null; + } else { + value = membersObj.get("value").toString(); + } + + if(value != null){ + value = value.replace("\"", ""); + } + + if (prefixIP != null) { + prefixIP = prefixIP.concat(",").concat(value); + } else { + prefixIP = value; + } + } + + String prefixList = "'"+prefixIP+"'"; + Boolean isAddressGroup = type.contains("REFERENCE"); + + if (isAddressGroup) { + List<Object> result = dbConnection.getDataById(AddressGroup.class, "name", addressGroupName); + if(result != null && !result.isEmpty()){ + AddressGroup addressGroupEntry = (AddressGroup) result.get(0); + dbConnection.delete(addressGroupEntry); + } + AddressGroup newAddressGroup = new AddressGroup(); + newAddressGroup.setGroupName(addressGroupName); + newAddressGroup.setDescription(description); + newAddressGroup.setServiceList(prefixList); + dbConnection.save(newAddressGroup); + } else { + List<Object> result = dbConnection.getDataById(PrefixList.class, "prefixListName", addressGroupName); + if(result != null && !result.isEmpty()){ + PrefixList prefixListEntry = (PrefixList) result.get(0); + dbConnection.delete(prefixListEntry); + } + PrefixList newPrefixList = new PrefixList(); + newPrefixList.setPrefixListName(addressGroupName); + newPrefixList.setDescription(description); + newPrefixList.setPrefixListValue(prefixList); + dbConnection.save(newPrefixList); + } + } + } + } + + /* + * Remove duplicate values from 'lookup' dictionary tables + */ + //ProtocolList Table + String protoDelete = "DELETE FROM protocollist USING protocollist, protocollist p1 " + + "WHERE protocollist.id > p1.id AND protocollist.protocolname = p1.protocolname;"; + dbConnection.updateQuery(protoDelete); + + //PortList Table + String portListDelete = "DELETE FROM portlist USING portlist, portlist p1 " + + "WHERE portlist.id > p1.id AND portlist.portname = p1.portname; "; + dbConnection.updateQuery(portListDelete); + + //PrefixList Table + String prefixListDelete = "DELETE FROM prefixlist USING prefixlist, prefixlist p1 " + + "WHERE prefixlist.id > p1.id AND prefixlist.pl_name = p1.pl_name AND " + + "prefixlist.pl_value = p1.pl_value AND prefixlist.description = p1.description; "; + dbConnection.updateQuery(prefixListDelete); + + //GroupServiceList + String groupServiceDelete = "DELETE FROM groupservicelist USING groupservicelist, groupservicelist g1 " + + "WHERE groupservicelist.id > g1.id AND groupservicelist.name = g1.name AND " + + "groupservicelist.serviceList = g1.serviceList; "; + dbConnection.updateQuery(groupServiceDelete); + }catch (Exception e) { + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "FirewallConfigPolicy", "Exception executing Firewall queries"); + return false; + } + return true; + } else { + return false; + } + + } + + private JsonObject stringToJson(String jsonString) { + //Read jsonBody to JsonObject + StringReader in = new StringReader(jsonString); + JsonReader jsonReader = Json.createReader(in); + JsonObject json = jsonReader.readObject(); + jsonReader.close(); + return json; + } + + private JsonNode createPatch(String json, String oldJson) { + JsonNode oldJason = null; + JsonNode updatedJason = null; + + try { + oldJason = JsonLoader.fromString(oldJson); + updatedJason = JsonLoader.fromString(json); + } catch (IOException e) { + LOGGER.error("Exception Occured"+e); + } + return JsonDiff.asJson(oldJason, updatedJason); + } + + @Override + public Object getCorrectPolicyDataObject() { + return policyAdapter.getPolicyData(); + } }
\ No newline at end of file diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/MicroServiceConfigPolicy.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/MicroServiceConfigPolicy.java index e02121125..26c7ed834 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/MicroServiceConfigPolicy.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/MicroServiceConfigPolicy.java @@ -64,112 +64,112 @@ import oasis.names.tc.xacml._3_0.core.schema.wd_17.RuleType; import oasis.names.tc.xacml._3_0.core.schema.wd_17.TargetType; public class MicroServiceConfigPolicy extends Policy { - - private static final Logger LOGGER = FlexLogger.getLogger(MicroServiceConfigPolicy.class); - + + private static final Logger LOGGER = FlexLogger.getLogger(MicroServiceConfigPolicy.class); + private static Map<String, String> mapAttribute = new HashMap<>(); private static Map<String, String> mapMatch = new HashMap<>(); - private static synchronized Map<String, String> getMatchMap () { - return mapMatch; - } - - private static synchronized void setMatchMap(Map<String, String> mm) { - mapMatch = mm; - } - - public MicroServiceConfigPolicy() { - super(); - } - - public MicroServiceConfigPolicy(PolicyRestAdapter policyAdapter){ - this.policyAdapter = policyAdapter; - } - - //save configuration of the policy based on the policyname - private void saveConfigurations(String policyName, String jsonBody) { - if(policyName.endsWith(".xml")){ - policyName = policyName.replace(".xml", ""); - } - try (PrintWriter out = new PrintWriter(CONFIG_HOME + File.separator + policyName +".json")){ - out.println(jsonBody); - } catch (Exception e) { - LOGGER.error("Exception Occured While writing Configuration data"+e); - } - } - - - @Override - public Map<String, String> savePolicies() throws PAPException { - - Map<String, String> successMap = new HashMap<>(); - if(isPolicyExists()){ - successMap.put("EXISTS", "This Policy already exist on the PAP"); - return successMap; - } - - if(!isPreparedToSave()){ - //Prep and configure the policy for saving - prepareToSave(); - } - - // Until here we prepared the data and here calling the method to create xml. - Path newPolicyPath = null; - newPolicyPath = Paths.get(policyAdapter.getNewFileName()); - - successMap = createPolicy(newPolicyPath,getCorrectPolicyDataObject()); - - return successMap; - } - - //This is the method for preparing the policy for saving. We have broken it out - //separately because the fully configured policy is used for multiple things - @Override - public boolean prepareToSave() throws PAPException{ - - if(isPreparedToSave()){ - //we have already done this - return true; - } - - int version = 0; - String policyID = policyAdapter.getPolicyID(); - version = policyAdapter.getHighestVersion(); - - // Create the Instance for pojo, PolicyType object is used in marshalling. - if (policyAdapter.getPolicyType().equals("Config")) { - PolicyType policyConfig = new PolicyType(); - - policyConfig.setVersion(Integer.toString(version)); - policyConfig.setPolicyId(policyID); - policyConfig.setTarget(new TargetType()); - policyAdapter.setData(policyConfig); - } - policyName = policyAdapter.getNewFileName(); - if (policyAdapter.getData() != null) { - // Save the Configurations file with the policy name with extention based on selection. - String jsonBody = policyAdapter.getJsonBody(); - saveConfigurations(policyName, jsonBody); - - // Make sure the filename ends with an extension - if (policyName.endsWith(".xml") == false) { - policyName = policyName + ".xml"; - } - - - PolicyType configPolicy = (PolicyType) policyAdapter.getData(); - - configPolicy.setDescription(policyAdapter.getPolicyDescription()); - - configPolicy.setRuleCombiningAlgId(policyAdapter.getRuleCombiningAlgId()); - - AllOfType allOfOne = new AllOfType(); - String fileName = policyAdapter.getNewFileName(); - String name = fileName.substring(fileName.lastIndexOf("\\") + 1, fileName.length()); - if ((name == null) || (name.equals(""))) { - name = fileName.substring(fileName.lastIndexOf("/") + 1, fileName.length()); - } - + private static synchronized Map<String, String> getMatchMap () { + return mapMatch; + } + + private static synchronized void setMatchMap(Map<String, String> mm) { + mapMatch = mm; + } + + public MicroServiceConfigPolicy() { + super(); + } + + public MicroServiceConfigPolicy(PolicyRestAdapter policyAdapter){ + this.policyAdapter = policyAdapter; + } + + //save configuration of the policy based on the policyname + private void saveConfigurations(String policyName, String jsonBody) { + if(policyName.endsWith(".xml")){ + policyName = policyName.replace(".xml", ""); + } + try (PrintWriter out = new PrintWriter(CONFIG_HOME + File.separator + policyName +".json")){ + out.println(jsonBody); + } catch (Exception e) { + LOGGER.error("Exception Occured While writing Configuration data"+e); + } + } + + + @Override + public Map<String, String> savePolicies() throws PAPException { + + Map<String, String> successMap = new HashMap<>(); + if(isPolicyExists()){ + successMap.put("EXISTS", "This Policy already exist on the PAP"); + return successMap; + } + + if(!isPreparedToSave()){ + //Prep and configure the policy for saving + prepareToSave(); + } + + // Until here we prepared the data and here calling the method to create xml. + Path newPolicyPath = null; + newPolicyPath = Paths.get(policyAdapter.getNewFileName()); + + successMap = createPolicy(newPolicyPath,getCorrectPolicyDataObject()); + + return successMap; + } + + //This is the method for preparing the policy for saving. We have broken it out + //separately because the fully configured policy is used for multiple things + @Override + public boolean prepareToSave() throws PAPException{ + + if(isPreparedToSave()){ + //we have already done this + return true; + } + + int version = 0; + String policyID = policyAdapter.getPolicyID(); + version = policyAdapter.getHighestVersion(); + + // Create the Instance for pojo, PolicyType object is used in marshalling. + if (policyAdapter.getPolicyType().equals("Config")) { + PolicyType policyConfig = new PolicyType(); + + policyConfig.setVersion(Integer.toString(version)); + policyConfig.setPolicyId(policyID); + policyConfig.setTarget(new TargetType()); + policyAdapter.setData(policyConfig); + } + policyName = policyAdapter.getNewFileName(); + if (policyAdapter.getData() != null) { + // Save the Configurations file with the policy name with extention based on selection. + String jsonBody = policyAdapter.getJsonBody(); + saveConfigurations(policyName, jsonBody); + + // Make sure the filename ends with an extension + if (policyName.endsWith(".xml") == false) { + policyName = policyName + ".xml"; + } + + + PolicyType configPolicy = (PolicyType) policyAdapter.getData(); + + configPolicy.setDescription(policyAdapter.getPolicyDescription()); + + configPolicy.setRuleCombiningAlgId(policyAdapter.getRuleCombiningAlgId()); + + AllOfType allOfOne = new AllOfType(); + String fileName = policyAdapter.getNewFileName(); + String name = fileName.substring(fileName.lastIndexOf("\\") + 1, fileName.length()); + if ((name == null) || (name.equals(""))) { + name = fileName.substring(fileName.lastIndexOf("/") + 1, fileName.length()); + } + //setup values for pulling out matching attributes ObjectMapper mapper = new ObjectMapper(); String matching = null; @@ -196,124 +196,124 @@ public class MicroServiceConfigPolicy extends Policy { throw new PAPException(e1); } - // Match for policyName - allOfOne.getMatch().add(createMatch("PolicyName", name)); - - AllOfType allOf = new AllOfType(); - - // Adding the matches to AllOfType element Match for Onap - allOf.getMatch().add(createMatch("ONAPName", policyAdapter.getOnapName())); - if (matchMap==null || matchMap.isEmpty()){ - // Match for ConfigName - allOf.getMatch().add(createMatch("ConfigName", policyAdapter.getConfigName())); - // Match for Service - allOf.getMatch().add(createDynamicMatch("service", policyAdapter.getServiceType())); - // Match for uuid - allOf.getMatch().add(createDynamicMatch("uuid", policyAdapter.getUuid())); - // Match for location - allOf.getMatch().add(createDynamicMatch("location", policyAdapter.getLocation())); - }else { - for (Entry<String, String> matchValue : matchMap.entrySet()){ - String value = matchValue.getValue(); - String key = matchValue.getKey().trim(); - if (value.contains("matching-true")){ - if (mapAttribute.containsKey(key)){ - allOf.getMatch().add(createDynamicMatch(key, mapAttribute.get(key))); - } - } - } - } - // Match for riskType - allOf.getMatch().add( - createDynamicMatch("RiskType", policyAdapter.getRiskType())); - // Match for riskLevel - allOf.getMatch().add( - createDynamicMatch("RiskLevel", String.valueOf(policyAdapter.getRiskLevel()))); - // Match for riskguard - allOf.getMatch().add( - createDynamicMatch("guard", policyAdapter.getGuard())); - // Match for ttlDate - allOf.getMatch().add( - createDynamicMatch("TTLDate", policyAdapter.getTtlDate())); - - AnyOfType anyOf = new AnyOfType(); - anyOf.getAllOf().add(allOfOne); - anyOf.getAllOf().add(allOf); - - TargetType target = new TargetType(); - ((TargetType) target).getAnyOf().add(anyOf); - - // Adding the target to the policy element - configPolicy.setTarget((TargetType) target); - - RuleType rule = new RuleType(); - rule.setRuleId(policyAdapter.getRuleID()); - - rule.setEffect(EffectType.PERMIT); - - // Create Target in Rule - AllOfType allOfInRule = new AllOfType(); - - // Creating match for ACCESS in rule target - MatchType accessMatch = new MatchType(); - AttributeValueType accessAttributeValue = new AttributeValueType(); - accessAttributeValue.setDataType(STRING_DATATYPE); - accessAttributeValue.getContent().add("ACCESS"); - accessMatch.setAttributeValue(accessAttributeValue); - AttributeDesignatorType accessAttributeDesignator = new AttributeDesignatorType(); - URI accessURI = null; - try { - accessURI = new URI(ACTION_ID); - } catch (URISyntaxException e) { - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "MicroServiceConfigPolicy", "Exception creating ACCESS URI"); - } - accessAttributeDesignator.setCategory(CATEGORY_ACTION); - accessAttributeDesignator.setDataType(STRING_DATATYPE); - accessAttributeDesignator.setAttributeId(new IdentifierImpl(accessURI).stringValue()); - accessMatch.setAttributeDesignator(accessAttributeDesignator); - accessMatch.setMatchId(FUNCTION_STRING_EQUAL_IGNORE); - - // Creating Config Match in rule Target - MatchType configMatch = new MatchType(); - AttributeValueType configAttributeValue = new AttributeValueType(); - configAttributeValue.setDataType(STRING_DATATYPE); - configAttributeValue.getContent().add("Config"); - configMatch.setAttributeValue(configAttributeValue); - AttributeDesignatorType configAttributeDesignator = new AttributeDesignatorType(); - URI configURI = null; - try { - configURI = new URI(RESOURCE_ID); - } catch (URISyntaxException e) { - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "MicroServiceConfigPolicy", "Exception creating Config URI"); - } - configAttributeDesignator.setCategory(CATEGORY_RESOURCE); - configAttributeDesignator.setDataType(STRING_DATATYPE); - configAttributeDesignator.setAttributeId(new IdentifierImpl(configURI).stringValue()); - configMatch.setAttributeDesignator(configAttributeDesignator); - configMatch.setMatchId(FUNCTION_STRING_EQUAL_IGNORE); - - allOfInRule.getMatch().add(accessMatch); - allOfInRule.getMatch().add(configMatch); - - AnyOfType anyOfInRule = new AnyOfType(); - anyOfInRule.getAllOf().add(allOfInRule); - - TargetType targetInRule = new TargetType(); - targetInRule.getAnyOf().add(anyOfInRule); - - rule.setTarget(targetInRule); - rule.setAdviceExpressions(getAdviceExpressions(version, policyName)); - - configPolicy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().add(rule); - policyAdapter.setPolicyData(configPolicy); - - } else { - PolicyLogger.error("Unsupported data object." + policyAdapter.getData().getClass().getCanonicalName()); - } - setPreparedToSave(true); - return true; - } - + // Match for policyName + allOfOne.getMatch().add(createMatch("PolicyName", name)); + + AllOfType allOf = new AllOfType(); + + // Adding the matches to AllOfType element Match for Onap + allOf.getMatch().add(createMatch("ONAPName", policyAdapter.getOnapName())); + if (matchMap==null || matchMap.isEmpty()){ + // Match for ConfigName + allOf.getMatch().add(createMatch("ConfigName", policyAdapter.getConfigName())); + // Match for Service + allOf.getMatch().add(createDynamicMatch("service", policyAdapter.getServiceType())); + // Match for uuid + allOf.getMatch().add(createDynamicMatch("uuid", policyAdapter.getUuid())); + // Match for location + allOf.getMatch().add(createDynamicMatch("location", policyAdapter.getLocation())); + }else { + for (Entry<String, String> matchValue : matchMap.entrySet()){ + String value = matchValue.getValue(); + String key = matchValue.getKey().trim(); + if (value.contains("matching-true")){ + if (mapAttribute.containsKey(key)){ + allOf.getMatch().add(createDynamicMatch(key, mapAttribute.get(key))); + } + } + } + } + // Match for riskType + allOf.getMatch().add( + createDynamicMatch("RiskType", policyAdapter.getRiskType())); + // Match for riskLevel + allOf.getMatch().add( + createDynamicMatch("RiskLevel", String.valueOf(policyAdapter.getRiskLevel()))); + // Match for riskguard + allOf.getMatch().add( + createDynamicMatch("guard", policyAdapter.getGuard())); + // Match for ttlDate + allOf.getMatch().add( + createDynamicMatch("TTLDate", policyAdapter.getTtlDate())); + + AnyOfType anyOf = new AnyOfType(); + anyOf.getAllOf().add(allOfOne); + anyOf.getAllOf().add(allOf); + + TargetType target = new TargetType(); + ((TargetType) target).getAnyOf().add(anyOf); + + // Adding the target to the policy element + configPolicy.setTarget((TargetType) target); + + RuleType rule = new RuleType(); + rule.setRuleId(policyAdapter.getRuleID()); + + rule.setEffect(EffectType.PERMIT); + + // Create Target in Rule + AllOfType allOfInRule = new AllOfType(); + + // Creating match for ACCESS in rule target + MatchType accessMatch = new MatchType(); + AttributeValueType accessAttributeValue = new AttributeValueType(); + accessAttributeValue.setDataType(STRING_DATATYPE); + accessAttributeValue.getContent().add("ACCESS"); + accessMatch.setAttributeValue(accessAttributeValue); + AttributeDesignatorType accessAttributeDesignator = new AttributeDesignatorType(); + URI accessURI = null; + try { + accessURI = new URI(ACTION_ID); + } catch (URISyntaxException e) { + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "MicroServiceConfigPolicy", "Exception creating ACCESS URI"); + } + accessAttributeDesignator.setCategory(CATEGORY_ACTION); + accessAttributeDesignator.setDataType(STRING_DATATYPE); + accessAttributeDesignator.setAttributeId(new IdentifierImpl(accessURI).stringValue()); + accessMatch.setAttributeDesignator(accessAttributeDesignator); + accessMatch.setMatchId(FUNCTION_STRING_EQUAL_IGNORE); + + // Creating Config Match in rule Target + MatchType configMatch = new MatchType(); + AttributeValueType configAttributeValue = new AttributeValueType(); + configAttributeValue.setDataType(STRING_DATATYPE); + configAttributeValue.getContent().add("Config"); + configMatch.setAttributeValue(configAttributeValue); + AttributeDesignatorType configAttributeDesignator = new AttributeDesignatorType(); + URI configURI = null; + try { + configURI = new URI(RESOURCE_ID); + } catch (URISyntaxException e) { + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "MicroServiceConfigPolicy", "Exception creating Config URI"); + } + configAttributeDesignator.setCategory(CATEGORY_RESOURCE); + configAttributeDesignator.setDataType(STRING_DATATYPE); + configAttributeDesignator.setAttributeId(new IdentifierImpl(configURI).stringValue()); + configMatch.setAttributeDesignator(configAttributeDesignator); + configMatch.setMatchId(FUNCTION_STRING_EQUAL_IGNORE); + + allOfInRule.getMatch().add(accessMatch); + allOfInRule.getMatch().add(configMatch); + + AnyOfType anyOfInRule = new AnyOfType(); + anyOfInRule.getAllOf().add(allOfInRule); + + TargetType targetInRule = new TargetType(); + targetInRule.getAnyOf().add(anyOfInRule); + + rule.setTarget(targetInRule); + rule.setAdviceExpressions(getAdviceExpressions(version, policyName)); + + configPolicy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().add(rule); + policyAdapter.setPolicyData(configPolicy); + + } else { + PolicyLogger.error("Unsupported data object." + policyAdapter.getData().getClass().getCanonicalName()); + } + setPreparedToSave(true); + return true; + } + private void pullMatchValue(JsonNode rootNode) { Iterator<Map.Entry<String, JsonNode>> fieldsIterator = rootNode.fields(); String newValue = null; @@ -339,89 +339,89 @@ public class MicroServiceConfigPolicy extends Policy { CommonClassDaoImpl dbConnection = new CommonClassDaoImpl(); List<Object> result = dbConnection.getDataById(MicroServiceModels.class, "modelName:version", modelName+":"+modelVersion); if(result != null && !result.isEmpty()){ - MicroServiceModels model = (MicroServiceModels) result.get(0); - ruleTemplate = model.getAnnotation(); + MicroServiceModels model = (MicroServiceModels) result.get(0); + ruleTemplate = model.getAnnotation(); } return ruleTemplate; } - // Data required for Advice part is setting here. - private AdviceExpressionsType getAdviceExpressions(int version, String fileName) { - AdviceExpressionsType advices = new AdviceExpressionsType(); - AdviceExpressionType advice = new AdviceExpressionType(); - advice.setAdviceId("MSID"); - advice.setAppliesTo(EffectType.PERMIT); - // For Configuration - AttributeAssignmentExpressionType assignment1 = new AttributeAssignmentExpressionType(); - assignment1.setAttributeId("type"); - assignment1.setCategory(CATEGORY_RESOURCE); - assignment1.setIssuer(""); - - AttributeValueType configNameAttributeValue = new AttributeValueType(); - configNameAttributeValue.setDataType(STRING_DATATYPE); - configNameAttributeValue.getContent().add("Configuration"); - assignment1.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue)); - - advice.getAttributeAssignmentExpression().add(assignment1); - // For Config file Url if configurations are provided. - AttributeAssignmentExpressionType assignment2 = new AttributeAssignmentExpressionType(); - assignment2.setAttributeId("URLID"); - assignment2.setCategory(CATEGORY_RESOURCE); - assignment2.setIssuer(""); - - AttributeValueType AttributeValue = new AttributeValueType(); - AttributeValue.setDataType(URI_DATATYPE); - String configName; - if(policyName.endsWith(".xml")){ - configName = policyName.replace(".xml", ""); - }else{ - configName = policyName; - } - String content = CONFIG_URL +"/Config/" + configName + ".json"; - AttributeValue.getContent().add(content); - assignment2.setExpression(new ObjectFactory().createAttributeValue(AttributeValue)); - - advice.getAttributeAssignmentExpression().add(assignment2); - AttributeAssignmentExpressionType assignment3 = new AttributeAssignmentExpressionType(); - assignment3.setAttributeId("PolicyName"); - assignment3.setCategory(CATEGORY_RESOURCE); - assignment3.setIssuer(""); - - AttributeValueType attributeValue3 = new AttributeValueType(); - attributeValue3.setDataType(STRING_DATATYPE); - fileName = FilenameUtils.removeExtension(fileName); - fileName = fileName + ".xml"; - String name = fileName.substring(fileName.lastIndexOf("\\") + 1, fileName.length()); - if ((name == null) || (name.equals(""))) { - name = fileName.substring(fileName.lastIndexOf("/") + 1, fileName.length()); - } - attributeValue3.getContent().add(name); - assignment3.setExpression(new ObjectFactory().createAttributeValue(attributeValue3)); - advice.getAttributeAssignmentExpression().add(assignment3); - - AttributeAssignmentExpressionType assignment4 = new AttributeAssignmentExpressionType(); - assignment4.setAttributeId("VersionNumber"); - assignment4.setCategory(CATEGORY_RESOURCE); - assignment4.setIssuer(""); - - AttributeValueType configNameAttributeValue4 = new AttributeValueType(); - configNameAttributeValue4.setDataType(STRING_DATATYPE); - configNameAttributeValue4.getContent().add(Integer.toString(version)); - assignment4.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue4)); - - advice.getAttributeAssignmentExpression().add(assignment4); - - AttributeAssignmentExpressionType assignment5 = new AttributeAssignmentExpressionType(); - assignment5.setAttributeId("matching:" + ONAPID); - assignment5.setCategory(CATEGORY_RESOURCE); - assignment5.setIssuer(""); - - AttributeValueType configNameAttributeValue5 = new AttributeValueType(); - configNameAttributeValue5.setDataType(STRING_DATATYPE); - configNameAttributeValue5.getContent().add(policyAdapter.getOnapName()); - assignment5.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue5)); - - advice.getAttributeAssignmentExpression().add(assignment5); + // Data required for Advice part is setting here. + private AdviceExpressionsType getAdviceExpressions(int version, String fileName) { + AdviceExpressionsType advices = new AdviceExpressionsType(); + AdviceExpressionType advice = new AdviceExpressionType(); + advice.setAdviceId("MSID"); + advice.setAppliesTo(EffectType.PERMIT); + // For Configuration + AttributeAssignmentExpressionType assignment1 = new AttributeAssignmentExpressionType(); + assignment1.setAttributeId("type"); + assignment1.setCategory(CATEGORY_RESOURCE); + assignment1.setIssuer(""); + + AttributeValueType configNameAttributeValue = new AttributeValueType(); + configNameAttributeValue.setDataType(STRING_DATATYPE); + configNameAttributeValue.getContent().add("Configuration"); + assignment1.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue)); + + advice.getAttributeAssignmentExpression().add(assignment1); + // For Config file Url if configurations are provided. + AttributeAssignmentExpressionType assignment2 = new AttributeAssignmentExpressionType(); + assignment2.setAttributeId("URLID"); + assignment2.setCategory(CATEGORY_RESOURCE); + assignment2.setIssuer(""); + + AttributeValueType AttributeValue = new AttributeValueType(); + AttributeValue.setDataType(URI_DATATYPE); + String configName; + if(policyName.endsWith(".xml")){ + configName = policyName.replace(".xml", ""); + }else{ + configName = policyName; + } + String content = CONFIG_URL +"/Config/" + configName + ".json"; + AttributeValue.getContent().add(content); + assignment2.setExpression(new ObjectFactory().createAttributeValue(AttributeValue)); + + advice.getAttributeAssignmentExpression().add(assignment2); + AttributeAssignmentExpressionType assignment3 = new AttributeAssignmentExpressionType(); + assignment3.setAttributeId("PolicyName"); + assignment3.setCategory(CATEGORY_RESOURCE); + assignment3.setIssuer(""); + + AttributeValueType attributeValue3 = new AttributeValueType(); + attributeValue3.setDataType(STRING_DATATYPE); + fileName = FilenameUtils.removeExtension(fileName); + fileName = fileName + ".xml"; + String name = fileName.substring(fileName.lastIndexOf("\\") + 1, fileName.length()); + if ((name == null) || (name.equals(""))) { + name = fileName.substring(fileName.lastIndexOf("/") + 1, fileName.length()); + } + attributeValue3.getContent().add(name); + assignment3.setExpression(new ObjectFactory().createAttributeValue(attributeValue3)); + advice.getAttributeAssignmentExpression().add(assignment3); + + AttributeAssignmentExpressionType assignment4 = new AttributeAssignmentExpressionType(); + assignment4.setAttributeId("VersionNumber"); + assignment4.setCategory(CATEGORY_RESOURCE); + assignment4.setIssuer(""); + + AttributeValueType configNameAttributeValue4 = new AttributeValueType(); + configNameAttributeValue4.setDataType(STRING_DATATYPE); + configNameAttributeValue4.getContent().add(Integer.toString(version)); + assignment4.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue4)); + + advice.getAttributeAssignmentExpression().add(assignment4); + + AttributeAssignmentExpressionType assignment5 = new AttributeAssignmentExpressionType(); + assignment5.setAttributeId("matching:" + ONAPID); + assignment5.setCategory(CATEGORY_RESOURCE); + assignment5.setIssuer(""); + + AttributeValueType configNameAttributeValue5 = new AttributeValueType(); + configNameAttributeValue5.setDataType(STRING_DATATYPE); + configNameAttributeValue5.getContent().add(policyAdapter.getOnapName()); + assignment5.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue5)); + + advice.getAttributeAssignmentExpression().add(assignment5); AttributeAssignmentExpressionType assignment7 = new AttributeAssignmentExpressionType(); assignment7.setAttributeId("matching:service"); @@ -437,42 +437,42 @@ public class MicroServiceConfigPolicy extends Policy { Map<String, String> matchMap = getMatchMap(); if (matchMap==null || matchMap.isEmpty()){ - AttributeAssignmentExpressionType assignment6 = new AttributeAssignmentExpressionType(); - assignment6.setAttributeId("matching:" + CONFIGID); - assignment6.setCategory(CATEGORY_RESOURCE); - assignment6.setIssuer(""); + AttributeAssignmentExpressionType assignment6 = new AttributeAssignmentExpressionType(); + assignment6.setAttributeId("matching:" + CONFIGID); + assignment6.setCategory(CATEGORY_RESOURCE); + assignment6.setIssuer(""); - AttributeValueType configNameAttributeValue6 = new AttributeValueType(); - configNameAttributeValue6.setDataType(STRING_DATATYPE); - configNameAttributeValue6.getContent().add(policyAdapter.getConfigName()); - assignment6.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue6)); + AttributeValueType configNameAttributeValue6 = new AttributeValueType(); + configNameAttributeValue6.setDataType(STRING_DATATYPE); + configNameAttributeValue6.getContent().add(policyAdapter.getConfigName()); + assignment6.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue6)); - advice.getAttributeAssignmentExpression().add(assignment6); + advice.getAttributeAssignmentExpression().add(assignment6); - AttributeAssignmentExpressionType assignment8 = new AttributeAssignmentExpressionType(); - assignment8.setAttributeId("matching:uuid"); - assignment8.setCategory(CATEGORY_RESOURCE); - assignment8.setIssuer(""); + AttributeAssignmentExpressionType assignment8 = new AttributeAssignmentExpressionType(); + assignment8.setAttributeId("matching:uuid"); + assignment8.setCategory(CATEGORY_RESOURCE); + assignment8.setIssuer(""); - AttributeValueType configNameAttributeValue8 = new AttributeValueType(); - configNameAttributeValue8.setDataType(STRING_DATATYPE); - configNameAttributeValue8.getContent().add(policyAdapter.getUuid()); - assignment8.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue8)); + AttributeValueType configNameAttributeValue8 = new AttributeValueType(); + configNameAttributeValue8.setDataType(STRING_DATATYPE); + configNameAttributeValue8.getContent().add(policyAdapter.getUuid()); + assignment8.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue8)); - advice.getAttributeAssignmentExpression().add(assignment8); + advice.getAttributeAssignmentExpression().add(assignment8); - AttributeAssignmentExpressionType assignment9 = new AttributeAssignmentExpressionType(); - assignment9.setAttributeId("matching:Location"); - assignment9.setCategory(CATEGORY_RESOURCE); - assignment9.setIssuer(""); + AttributeAssignmentExpressionType assignment9 = new AttributeAssignmentExpressionType(); + assignment9.setAttributeId("matching:Location"); + assignment9.setCategory(CATEGORY_RESOURCE); + assignment9.setIssuer(""); - AttributeValueType configNameAttributeValue9 = new AttributeValueType(); - configNameAttributeValue9.setDataType(STRING_DATATYPE); - configNameAttributeValue9.getContent().add(policyAdapter.getLocation()); - assignment9.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue9)); + AttributeValueType configNameAttributeValue9 = new AttributeValueType(); + configNameAttributeValue9.setDataType(STRING_DATATYPE); + configNameAttributeValue9.getContent().add(policyAdapter.getLocation()); + assignment9.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue9)); - advice.getAttributeAssignmentExpression().add(assignment9); + advice.getAttributeAssignmentExpression().add(assignment9); } else { for (Entry<String, String> matchValue : matchMap.entrySet()){ String value = matchValue.getValue(); @@ -496,73 +496,73 @@ public class MicroServiceConfigPolicy extends Policy { } } - AttributeAssignmentExpressionType assignment10 = new AttributeAssignmentExpressionType(); - assignment10.setAttributeId("Priority"); - assignment10.setCategory(CATEGORY_RESOURCE); - assignment10.setIssuer(""); - - AttributeValueType configNameAttributeValue10 = new AttributeValueType(); - configNameAttributeValue10.setDataType(STRING_DATATYPE); - configNameAttributeValue10.getContent().add(policyAdapter.getPriority()); - assignment10.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue10)); - - advice.getAttributeAssignmentExpression().add(assignment10); - - //Risk Attributes - AttributeAssignmentExpressionType assignment11 = new AttributeAssignmentExpressionType(); - assignment11.setAttributeId("RiskType"); - assignment11.setCategory(CATEGORY_RESOURCE); - assignment11.setIssuer(""); - - AttributeValueType configNameAttributeValue11 = new AttributeValueType(); - configNameAttributeValue11.setDataType(STRING_DATATYPE); - configNameAttributeValue11.getContent().add(policyAdapter.getRiskType()); - assignment11.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue11)); - - advice.getAttributeAssignmentExpression().add(assignment11); - - AttributeAssignmentExpressionType assignment12 = new AttributeAssignmentExpressionType(); - assignment12.setAttributeId("RiskLevel"); - assignment12.setCategory(CATEGORY_RESOURCE); - assignment12.setIssuer(""); - - AttributeValueType configNameAttributeValue12 = new AttributeValueType(); - configNameAttributeValue12.setDataType(STRING_DATATYPE); - configNameAttributeValue12.getContent().add(policyAdapter.getRiskLevel()); - assignment12.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue12)); - - advice.getAttributeAssignmentExpression().add(assignment12); - - AttributeAssignmentExpressionType assignment13 = new AttributeAssignmentExpressionType(); - assignment13.setAttributeId("guard"); - assignment13.setCategory(CATEGORY_RESOURCE); - assignment13.setIssuer(""); - - AttributeValueType configNameAttributeValue13 = new AttributeValueType(); - configNameAttributeValue13.setDataType(STRING_DATATYPE); - configNameAttributeValue13.getContent().add(policyAdapter.getGuard()); - assignment13.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue13)); - - advice.getAttributeAssignmentExpression().add(assignment13); - - AttributeAssignmentExpressionType assignment14 = new AttributeAssignmentExpressionType(); - assignment14.setAttributeId("TTLDate"); - assignment14.setCategory(CATEGORY_RESOURCE); - assignment14.setIssuer(""); - - AttributeValueType configNameAttributeValue14 = new AttributeValueType(); - configNameAttributeValue14.setDataType(STRING_DATATYPE); - configNameAttributeValue14.getContent().add(policyAdapter.getTtlDate()); - assignment14.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue14)); - - advice.getAttributeAssignmentExpression().add(assignment14); - - advices.getAdviceExpression().add(advice); - return advices; - } - - @Override - public Object getCorrectPolicyDataObject() { - return policyAdapter.getPolicyData(); - } + AttributeAssignmentExpressionType assignment10 = new AttributeAssignmentExpressionType(); + assignment10.setAttributeId("Priority"); + assignment10.setCategory(CATEGORY_RESOURCE); + assignment10.setIssuer(""); + + AttributeValueType configNameAttributeValue10 = new AttributeValueType(); + configNameAttributeValue10.setDataType(STRING_DATATYPE); + configNameAttributeValue10.getContent().add(policyAdapter.getPriority()); + assignment10.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue10)); + + advice.getAttributeAssignmentExpression().add(assignment10); + + //Risk Attributes + AttributeAssignmentExpressionType assignment11 = new AttributeAssignmentExpressionType(); + assignment11.setAttributeId("RiskType"); + assignment11.setCategory(CATEGORY_RESOURCE); + assignment11.setIssuer(""); + + AttributeValueType configNameAttributeValue11 = new AttributeValueType(); + configNameAttributeValue11.setDataType(STRING_DATATYPE); + configNameAttributeValue11.getContent().add(policyAdapter.getRiskType()); + assignment11.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue11)); + + advice.getAttributeAssignmentExpression().add(assignment11); + + AttributeAssignmentExpressionType assignment12 = new AttributeAssignmentExpressionType(); + assignment12.setAttributeId("RiskLevel"); + assignment12.setCategory(CATEGORY_RESOURCE); + assignment12.setIssuer(""); + + AttributeValueType configNameAttributeValue12 = new AttributeValueType(); + configNameAttributeValue12.setDataType(STRING_DATATYPE); + configNameAttributeValue12.getContent().add(policyAdapter.getRiskLevel()); + assignment12.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue12)); + + advice.getAttributeAssignmentExpression().add(assignment12); + + AttributeAssignmentExpressionType assignment13 = new AttributeAssignmentExpressionType(); + assignment13.setAttributeId("guard"); + assignment13.setCategory(CATEGORY_RESOURCE); + assignment13.setIssuer(""); + + AttributeValueType configNameAttributeValue13 = new AttributeValueType(); + configNameAttributeValue13.setDataType(STRING_DATATYPE); + configNameAttributeValue13.getContent().add(policyAdapter.getGuard()); + assignment13.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue13)); + + advice.getAttributeAssignmentExpression().add(assignment13); + + AttributeAssignmentExpressionType assignment14 = new AttributeAssignmentExpressionType(); + assignment14.setAttributeId("TTLDate"); + assignment14.setCategory(CATEGORY_RESOURCE); + assignment14.setIssuer(""); + + AttributeValueType configNameAttributeValue14 = new AttributeValueType(); + configNameAttributeValue14.setDataType(STRING_DATATYPE); + configNameAttributeValue14.getContent().add(policyAdapter.getTtlDate()); + assignment14.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue14)); + + advice.getAttributeAssignmentExpression().add(assignment14); + + advices.getAdviceExpression().add(advice); + return advices; + } + + @Override + public Object getCorrectPolicyDataObject() { + return policyAdapter.getPolicyData(); + } } diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/OptimizationConfigPolicy.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/OptimizationConfigPolicy.java index 18d588c8f..2719a155b 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/OptimizationConfigPolicy.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/OptimizationConfigPolicy.java @@ -64,114 +64,114 @@ import oasis.names.tc.xacml._3_0.core.schema.wd_17.RuleType; import oasis.names.tc.xacml._3_0.core.schema.wd_17.TargetType; public class OptimizationConfigPolicy extends Policy { - - private static final Logger LOGGER = FlexLogger.getLogger(OptimizationConfigPolicy.class); - + + private static final Logger LOGGER = FlexLogger.getLogger(OptimizationConfigPolicy.class); + private static Map<String, String> mapAttribute = new HashMap<>(); private static Map<String, String> mapMatch = new HashMap<>(); - private static synchronized Map<String, String> getMatchMap () { - return mapMatch; - } - - private static synchronized void setMatchMap(Map<String, String> mm) { - mapMatch = mm; - } - - public OptimizationConfigPolicy() { - super(); - } - - public OptimizationConfigPolicy(PolicyRestAdapter policyAdapter){ - this.policyAdapter = policyAdapter; - } - - //save configuration of the policy based on the policyname - private void saveConfigurations(String policyName, String jsonBody) { - - if(policyName.endsWith(".xml")){ - policyName = policyName.replace(".xml", ""); - } - - try (PrintWriter out = new PrintWriter(CONFIG_HOME + File.separator + policyName +".json");){ - out.println(jsonBody); - } catch (Exception e) { - LOGGER.error("Exception Occured While writing Configuration data"+e); - } - } - - - @Override - public Map<String, String> savePolicies() throws PAPException { - - Map<String, String> successMap = new HashMap<>(); - if(isPolicyExists()){ - successMap.put("EXISTS", "This Policy already exist on the PAP"); - return successMap; - } - - if(!isPreparedToSave()){ - //Prep and configure the policy for saving - prepareToSave(); - } - - // Until here we prepared the data and here calling the method to create xml. - Path newPolicyPath = null; - newPolicyPath = Paths.get(policyAdapter.getNewFileName()); - - successMap = createPolicy(newPolicyPath,getCorrectPolicyDataObject()); - - return successMap; - } - - //This is the method for preparing the policy for saving. We have broken it out - //separately because the fully configured policy is used for multiple things - @Override - public boolean prepareToSave() throws PAPException{ - - if(isPreparedToSave()){ - //we have already done this - return true; - } - - int version = 0; - String policyID = policyAdapter.getPolicyID(); - version = policyAdapter.getHighestVersion(); - - // Create the Instance for pojo, PolicyType object is used in marshalling. - if (policyAdapter.getPolicyType().equals("Config")) { - PolicyType policyConfig = new PolicyType(); - - policyConfig.setVersion(Integer.toString(version)); - policyConfig.setPolicyId(policyID); - policyConfig.setTarget(new TargetType()); - policyAdapter.setData(policyConfig); - } - policyName = policyAdapter.getNewFileName(); - if (policyAdapter.getData() != null) { - // Save the Configurations file with the policy name with extention based on selection. - String jsonBody = policyAdapter.getJsonBody(); - saveConfigurations(policyName, jsonBody); - - // Make sure the filename ends with an extension - if (!policyName.endsWith(".xml")) { - policyName = policyName + ".xml"; - } - - - PolicyType configPolicy = (PolicyType) policyAdapter.getData(); - - configPolicy.setDescription(policyAdapter.getPolicyDescription()); - - configPolicy.setRuleCombiningAlgId(policyAdapter.getRuleCombiningAlgId()); - - AllOfType allOfOne = new AllOfType(); - String fileName = policyAdapter.getNewFileName(); - String name = fileName.substring(fileName.lastIndexOf('\\') + 1, fileName.length()); - if ((name == null) || (name.equals(""))) { - name = fileName.substring(fileName.lastIndexOf('/') + 1, fileName.length()); - } - + private static synchronized Map<String, String> getMatchMap () { + return mapMatch; + } + + private static synchronized void setMatchMap(Map<String, String> mm) { + mapMatch = mm; + } + + public OptimizationConfigPolicy() { + super(); + } + + public OptimizationConfigPolicy(PolicyRestAdapter policyAdapter){ + this.policyAdapter = policyAdapter; + } + + //save configuration of the policy based on the policyname + private void saveConfigurations(String policyName, String jsonBody) { + + if(policyName.endsWith(".xml")){ + policyName = policyName.replace(".xml", ""); + } + + try (PrintWriter out = new PrintWriter(CONFIG_HOME + File.separator + policyName +".json");){ + out.println(jsonBody); + } catch (Exception e) { + LOGGER.error("Exception Occured While writing Configuration data"+e); + } + } + + + @Override + public Map<String, String> savePolicies() throws PAPException { + + Map<String, String> successMap = new HashMap<>(); + if(isPolicyExists()){ + successMap.put("EXISTS", "This Policy already exist on the PAP"); + return successMap; + } + + if(!isPreparedToSave()){ + //Prep and configure the policy for saving + prepareToSave(); + } + + // Until here we prepared the data and here calling the method to create xml. + Path newPolicyPath = null; + newPolicyPath = Paths.get(policyAdapter.getNewFileName()); + + successMap = createPolicy(newPolicyPath,getCorrectPolicyDataObject()); + + return successMap; + } + + //This is the method for preparing the policy for saving. We have broken it out + //separately because the fully configured policy is used for multiple things + @Override + public boolean prepareToSave() throws PAPException{ + + if(isPreparedToSave()){ + //we have already done this + return true; + } + + int version = 0; + String policyID = policyAdapter.getPolicyID(); + version = policyAdapter.getHighestVersion(); + + // Create the Instance for pojo, PolicyType object is used in marshalling. + if (policyAdapter.getPolicyType().equals("Config")) { + PolicyType policyConfig = new PolicyType(); + + policyConfig.setVersion(Integer.toString(version)); + policyConfig.setPolicyId(policyID); + policyConfig.setTarget(new TargetType()); + policyAdapter.setData(policyConfig); + } + policyName = policyAdapter.getNewFileName(); + if (policyAdapter.getData() != null) { + // Save the Configurations file with the policy name with extention based on selection. + String jsonBody = policyAdapter.getJsonBody(); + saveConfigurations(policyName, jsonBody); + + // Make sure the filename ends with an extension + if (!policyName.endsWith(".xml")) { + policyName = policyName + ".xml"; + } + + + PolicyType configPolicy = (PolicyType) policyAdapter.getData(); + + configPolicy.setDescription(policyAdapter.getPolicyDescription()); + + configPolicy.setRuleCombiningAlgId(policyAdapter.getRuleCombiningAlgId()); + + AllOfType allOfOne = new AllOfType(); + String fileName = policyAdapter.getNewFileName(); + String name = fileName.substring(fileName.lastIndexOf('\\') + 1, fileName.length()); + if ((name == null) || (name.equals(""))) { + name = fileName.substring(fileName.lastIndexOf('/') + 1, fileName.length()); + } + //setup values for pulling out matching attributes ObjectMapper mapper = new ObjectMapper(); String matching = null; @@ -198,114 +198,114 @@ public class OptimizationConfigPolicy extends Policy { throw new PAPException(e1); } - // Match for policyName - allOfOne.getMatch().add(createMatch("PolicyName", name)); - - AllOfType allOf = new AllOfType(); - - // Adding the matches to AllOfType element Match for Onap - allOf.getMatch().add(createMatch("ONAPName", policyAdapter.getOnapName())); - if (matchMap!=null && !matchMap.isEmpty()) { - for (Entry<String, String> matchValue : matchMap.entrySet()){ - String value = matchValue.getValue(); - String key = matchValue.getKey().trim(); - if (value.contains("matching-true") && mapAttribute.containsKey(key)){ - allOf.getMatch().add(createDynamicMatch(key, mapAttribute.get(key))); - } - } - } - - // Match for riskType - allOf.getMatch().add( - createDynamicMatch("RiskType", policyAdapter.getRiskType())); - // Match for riskLevel - allOf.getMatch().add( - createDynamicMatch("RiskLevel", String.valueOf(policyAdapter.getRiskLevel()))); - // Match for riskguard - allOf.getMatch().add( - createDynamicMatch("guard", policyAdapter.getGuard())); - // Match for ttlDate - allOf.getMatch().add( - createDynamicMatch("TTLDate", policyAdapter.getTtlDate())); - - AnyOfType anyOf = new AnyOfType(); - anyOf.getAllOf().add(allOfOne); - anyOf.getAllOf().add(allOf); - - TargetType target = new TargetType(); - target.getAnyOf().add(anyOf); - - // Adding the target to the policy element - configPolicy.setTarget((TargetType) target); - - RuleType rule = new RuleType(); - rule.setRuleId(policyAdapter.getRuleID()); - - rule.setEffect(EffectType.PERMIT); - - // Create Target in Rule - AllOfType allOfInRule = new AllOfType(); - - // Creating match for ACCESS in rule target - MatchType accessMatch = new MatchType(); - AttributeValueType accessAttributeValue = new AttributeValueType(); - accessAttributeValue.setDataType(STRING_DATATYPE); - accessAttributeValue.getContent().add("ACCESS"); - accessMatch.setAttributeValue(accessAttributeValue); - AttributeDesignatorType accessAttributeDesignator = new AttributeDesignatorType(); - URI accessURI = null; - try { - accessURI = new URI(ACTION_ID); - } catch (URISyntaxException e) { - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "OptimizationConfigPolicy", "Exception creating ACCESS URI"); - } - accessAttributeDesignator.setCategory(CATEGORY_ACTION); - accessAttributeDesignator.setDataType(STRING_DATATYPE); - accessAttributeDesignator.setAttributeId(new IdentifierImpl(accessURI).stringValue()); - accessMatch.setAttributeDesignator(accessAttributeDesignator); - accessMatch.setMatchId(FUNCTION_STRING_EQUAL_IGNORE); - - // Creating Config Match in rule Target - MatchType configMatch = new MatchType(); - AttributeValueType configAttributeValue = new AttributeValueType(); - configAttributeValue.setDataType(STRING_DATATYPE); - configAttributeValue.getContent().add("Config"); - configMatch.setAttributeValue(configAttributeValue); - AttributeDesignatorType configAttributeDesignator = new AttributeDesignatorType(); - URI configURI = null; - try { - configURI = new URI(RESOURCE_ID); - } catch (URISyntaxException e) { - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "OptimizationConfigPolicy", "Exception creating Config URI"); - } - configAttributeDesignator.setCategory(CATEGORY_RESOURCE); - configAttributeDesignator.setDataType(STRING_DATATYPE); - configAttributeDesignator.setAttributeId(new IdentifierImpl(configURI).stringValue()); - configMatch.setAttributeDesignator(configAttributeDesignator); - configMatch.setMatchId(FUNCTION_STRING_EQUAL_IGNORE); - - allOfInRule.getMatch().add(accessMatch); - allOfInRule.getMatch().add(configMatch); - - AnyOfType anyOfInRule = new AnyOfType(); - anyOfInRule.getAllOf().add(allOfInRule); - - TargetType targetInRule = new TargetType(); - targetInRule.getAnyOf().add(anyOfInRule); - - rule.setTarget(targetInRule); - rule.setAdviceExpressions(getAdviceExpressions(version, policyName)); - - configPolicy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().add(rule); - policyAdapter.setPolicyData(configPolicy); - - } else { - PolicyLogger.error("Unsupported data object." + policyAdapter.getData().getClass().getCanonicalName()); - } - setPreparedToSave(true); - return true; - } - + // Match for policyName + allOfOne.getMatch().add(createMatch("PolicyName", name)); + + AllOfType allOf = new AllOfType(); + + // Adding the matches to AllOfType element Match for Onap + allOf.getMatch().add(createMatch("ONAPName", policyAdapter.getOnapName())); + if (matchMap!=null && !matchMap.isEmpty()) { + for (Entry<String, String> matchValue : matchMap.entrySet()){ + String value = matchValue.getValue(); + String key = matchValue.getKey().trim(); + if (value.contains("matching-true") && mapAttribute.containsKey(key)){ + allOf.getMatch().add(createDynamicMatch(key, mapAttribute.get(key))); + } + } + } + + // Match for riskType + allOf.getMatch().add( + createDynamicMatch("RiskType", policyAdapter.getRiskType())); + // Match for riskLevel + allOf.getMatch().add( + createDynamicMatch("RiskLevel", String.valueOf(policyAdapter.getRiskLevel()))); + // Match for riskguard + allOf.getMatch().add( + createDynamicMatch("guard", policyAdapter.getGuard())); + // Match for ttlDate + allOf.getMatch().add( + createDynamicMatch("TTLDate", policyAdapter.getTtlDate())); + + AnyOfType anyOf = new AnyOfType(); + anyOf.getAllOf().add(allOfOne); + anyOf.getAllOf().add(allOf); + + TargetType target = new TargetType(); + target.getAnyOf().add(anyOf); + + // Adding the target to the policy element + configPolicy.setTarget((TargetType) target); + + RuleType rule = new RuleType(); + rule.setRuleId(policyAdapter.getRuleID()); + + rule.setEffect(EffectType.PERMIT); + + // Create Target in Rule + AllOfType allOfInRule = new AllOfType(); + + // Creating match for ACCESS in rule target + MatchType accessMatch = new MatchType(); + AttributeValueType accessAttributeValue = new AttributeValueType(); + accessAttributeValue.setDataType(STRING_DATATYPE); + accessAttributeValue.getContent().add("ACCESS"); + accessMatch.setAttributeValue(accessAttributeValue); + AttributeDesignatorType accessAttributeDesignator = new AttributeDesignatorType(); + URI accessURI = null; + try { + accessURI = new URI(ACTION_ID); + } catch (URISyntaxException e) { + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "OptimizationConfigPolicy", "Exception creating ACCESS URI"); + } + accessAttributeDesignator.setCategory(CATEGORY_ACTION); + accessAttributeDesignator.setDataType(STRING_DATATYPE); + accessAttributeDesignator.setAttributeId(new IdentifierImpl(accessURI).stringValue()); + accessMatch.setAttributeDesignator(accessAttributeDesignator); + accessMatch.setMatchId(FUNCTION_STRING_EQUAL_IGNORE); + + // Creating Config Match in rule Target + MatchType configMatch = new MatchType(); + AttributeValueType configAttributeValue = new AttributeValueType(); + configAttributeValue.setDataType(STRING_DATATYPE); + configAttributeValue.getContent().add("Config"); + configMatch.setAttributeValue(configAttributeValue); + AttributeDesignatorType configAttributeDesignator = new AttributeDesignatorType(); + URI configURI = null; + try { + configURI = new URI(RESOURCE_ID); + } catch (URISyntaxException e) { + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "OptimizationConfigPolicy", "Exception creating Config URI"); + } + configAttributeDesignator.setCategory(CATEGORY_RESOURCE); + configAttributeDesignator.setDataType(STRING_DATATYPE); + configAttributeDesignator.setAttributeId(new IdentifierImpl(configURI).stringValue()); + configMatch.setAttributeDesignator(configAttributeDesignator); + configMatch.setMatchId(FUNCTION_STRING_EQUAL_IGNORE); + + allOfInRule.getMatch().add(accessMatch); + allOfInRule.getMatch().add(configMatch); + + AnyOfType anyOfInRule = new AnyOfType(); + anyOfInRule.getAllOf().add(allOfInRule); + + TargetType targetInRule = new TargetType(); + targetInRule.getAnyOf().add(anyOfInRule); + + rule.setTarget(targetInRule); + rule.setAdviceExpressions(getAdviceExpressions(version, policyName)); + + configPolicy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().add(rule); + policyAdapter.setPolicyData(configPolicy); + + } else { + PolicyLogger.error("Unsupported data object." + policyAdapter.getData().getClass().getCanonicalName()); + } + setPreparedToSave(true); + return true; + } + private void pullMatchValue(JsonNode rootNode) { Iterator<Map.Entry<String, JsonNode>> fieldsIterator = rootNode.fields(); String newValue = null; @@ -331,97 +331,97 @@ public class OptimizationConfigPolicy extends Policy { CommonClassDaoImpl dbConnection = new CommonClassDaoImpl(); List<Object> result = dbConnection.getDataById(OptimizationModels.class, "modelName:version", modelName+":"+modelVersion); if(result != null && !result.isEmpty()){ - OptimizationModels model = (OptimizationModels) result.get(0); - ruleTemplate = model.getAnnotation(); + OptimizationModels model = (OptimizationModels) result.get(0); + ruleTemplate = model.getAnnotation(); } return ruleTemplate; } - // Data required for Advice part is setting here. - private AdviceExpressionsType getAdviceExpressions(int version, String fileName) { - AdviceExpressionsType advices = new AdviceExpressionsType(); - AdviceExpressionType advice = new AdviceExpressionType(); - advice.setAdviceId("OptimizationID"); - advice.setAppliesTo(EffectType.PERMIT); - - // For Configuration - AttributeAssignmentExpressionType assignment1 = new AttributeAssignmentExpressionType(); - assignment1.setAttributeId("type"); - assignment1.setCategory(CATEGORY_RESOURCE); - assignment1.setIssuer(""); - - AttributeValueType configNameAttributeValue = new AttributeValueType(); - configNameAttributeValue.setDataType(STRING_DATATYPE); - configNameAttributeValue.getContent().add("Configuration"); - assignment1.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue)); - - advice.getAttributeAssignmentExpression().add(assignment1); - - // For Config file Url if configurations are provided. - AttributeAssignmentExpressionType assignment2 = new AttributeAssignmentExpressionType(); - assignment2.setAttributeId("URLID"); - assignment2.setCategory(CATEGORY_RESOURCE); - assignment2.setIssuer(""); - - AttributeValueType attributeValue = new AttributeValueType(); - attributeValue.setDataType(URI_DATATYPE); - String configName; - if(policyName.endsWith(".xml")){ - configName = policyName.replace(".xml", ""); - }else{ - configName = policyName; - } - String content = CONFIG_URL +"/Config/" + configName + ".json"; - attributeValue.getContent().add(content); - assignment2.setExpression(new ObjectFactory().createAttributeValue(attributeValue)); - - advice.getAttributeAssignmentExpression().add(assignment2); - - //PolicyName Attribute Assignment - AttributeAssignmentExpressionType assignment3 = new AttributeAssignmentExpressionType(); - assignment3.setAttributeId("PolicyName"); - assignment3.setCategory(CATEGORY_RESOURCE); - assignment3.setIssuer(""); - - AttributeValueType attributeValue3 = new AttributeValueType(); - attributeValue3.setDataType(STRING_DATATYPE); - fileName = FilenameUtils.removeExtension(fileName); - fileName = fileName + ".xml"; - String name = fileName.substring(fileName.lastIndexOf('\\') + 1, fileName.length()); - if ((name == null) || (name.equals(""))) { - name = fileName.substring(fileName.lastIndexOf('/') + 1, fileName.length()); - } - attributeValue3.getContent().add(name); - assignment3.setExpression(new ObjectFactory().createAttributeValue(attributeValue3)); - advice.getAttributeAssignmentExpression().add(assignment3); - - //VersionNumber Attribute Assignment - AttributeAssignmentExpressionType assignment4 = new AttributeAssignmentExpressionType(); - assignment4.setAttributeId("VersionNumber"); - assignment4.setCategory(CATEGORY_RESOURCE); - assignment4.setIssuer(""); - - AttributeValueType configNameAttributeValue4 = new AttributeValueType(); - configNameAttributeValue4.setDataType(STRING_DATATYPE); - configNameAttributeValue4.getContent().add(Integer.toString(version)); - assignment4.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue4)); - - advice.getAttributeAssignmentExpression().add(assignment4); - - //OnapName Attribute Assignment - AttributeAssignmentExpressionType assignment5 = new AttributeAssignmentExpressionType(); - assignment5.setAttributeId("matching:" + ONAPID); - assignment5.setCategory(CATEGORY_RESOURCE); - assignment5.setIssuer(""); - - AttributeValueType configNameAttributeValue5 = new AttributeValueType(); - configNameAttributeValue5.setDataType(STRING_DATATYPE); - configNameAttributeValue5.getContent().add(policyAdapter.getOnapName()); - assignment5.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue5)); - - advice.getAttributeAssignmentExpression().add(assignment5); - - //ServiceType Attribute Assignment + // Data required for Advice part is setting here. + private AdviceExpressionsType getAdviceExpressions(int version, String fileName) { + AdviceExpressionsType advices = new AdviceExpressionsType(); + AdviceExpressionType advice = new AdviceExpressionType(); + advice.setAdviceId("OptimizationID"); + advice.setAppliesTo(EffectType.PERMIT); + + // For Configuration + AttributeAssignmentExpressionType assignment1 = new AttributeAssignmentExpressionType(); + assignment1.setAttributeId("type"); + assignment1.setCategory(CATEGORY_RESOURCE); + assignment1.setIssuer(""); + + AttributeValueType configNameAttributeValue = new AttributeValueType(); + configNameAttributeValue.setDataType(STRING_DATATYPE); + configNameAttributeValue.getContent().add("Configuration"); + assignment1.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue)); + + advice.getAttributeAssignmentExpression().add(assignment1); + + // For Config file Url if configurations are provided. + AttributeAssignmentExpressionType assignment2 = new AttributeAssignmentExpressionType(); + assignment2.setAttributeId("URLID"); + assignment2.setCategory(CATEGORY_RESOURCE); + assignment2.setIssuer(""); + + AttributeValueType attributeValue = new AttributeValueType(); + attributeValue.setDataType(URI_DATATYPE); + String configName; + if(policyName.endsWith(".xml")){ + configName = policyName.replace(".xml", ""); + }else{ + configName = policyName; + } + String content = CONFIG_URL +"/Config/" + configName + ".json"; + attributeValue.getContent().add(content); + assignment2.setExpression(new ObjectFactory().createAttributeValue(attributeValue)); + + advice.getAttributeAssignmentExpression().add(assignment2); + + //PolicyName Attribute Assignment + AttributeAssignmentExpressionType assignment3 = new AttributeAssignmentExpressionType(); + assignment3.setAttributeId("PolicyName"); + assignment3.setCategory(CATEGORY_RESOURCE); + assignment3.setIssuer(""); + + AttributeValueType attributeValue3 = new AttributeValueType(); + attributeValue3.setDataType(STRING_DATATYPE); + fileName = FilenameUtils.removeExtension(fileName); + fileName = fileName + ".xml"; + String name = fileName.substring(fileName.lastIndexOf('\\') + 1, fileName.length()); + if ((name == null) || (name.equals(""))) { + name = fileName.substring(fileName.lastIndexOf('/') + 1, fileName.length()); + } + attributeValue3.getContent().add(name); + assignment3.setExpression(new ObjectFactory().createAttributeValue(attributeValue3)); + advice.getAttributeAssignmentExpression().add(assignment3); + + //VersionNumber Attribute Assignment + AttributeAssignmentExpressionType assignment4 = new AttributeAssignmentExpressionType(); + assignment4.setAttributeId("VersionNumber"); + assignment4.setCategory(CATEGORY_RESOURCE); + assignment4.setIssuer(""); + + AttributeValueType configNameAttributeValue4 = new AttributeValueType(); + configNameAttributeValue4.setDataType(STRING_DATATYPE); + configNameAttributeValue4.getContent().add(Integer.toString(version)); + assignment4.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue4)); + + advice.getAttributeAssignmentExpression().add(assignment4); + + //OnapName Attribute Assignment + AttributeAssignmentExpressionType assignment5 = new AttributeAssignmentExpressionType(); + assignment5.setAttributeId("matching:" + ONAPID); + assignment5.setCategory(CATEGORY_RESOURCE); + assignment5.setIssuer(""); + + AttributeValueType configNameAttributeValue5 = new AttributeValueType(); + configNameAttributeValue5.setDataType(STRING_DATATYPE); + configNameAttributeValue5.getContent().add(policyAdapter.getOnapName()); + assignment5.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue5)); + + advice.getAttributeAssignmentExpression().add(assignment5); + + //ServiceType Attribute Assignment AttributeAssignmentExpressionType assignment7 = new AttributeAssignmentExpressionType(); assignment7.setAttributeId("matching:service"); assignment7.setCategory(CATEGORY_RESOURCE); @@ -437,7 +437,7 @@ public class OptimizationConfigPolicy extends Policy { // Add matching attribute assignments if exist Map<String, String> matchMap = getMatchMap(); if (matchMap!=null && !matchMap.isEmpty()) { - for (Entry<String, String> matchValue : matchMap.entrySet()){ + for (Entry<String, String> matchValue : matchMap.entrySet()){ String value = matchValue.getValue(); String key = matchValue.getKey().trim(); if (value.contains("matching-true") && mapAttribute.containsKey(key)){ @@ -457,76 +457,76 @@ public class OptimizationConfigPolicy extends Policy { } // Priority Attribute Assignment - AttributeAssignmentExpressionType assignment10 = new AttributeAssignmentExpressionType(); - assignment10.setAttributeId("Priority"); - assignment10.setCategory(CATEGORY_RESOURCE); - assignment10.setIssuer(""); - - AttributeValueType configNameAttributeValue10 = new AttributeValueType(); - configNameAttributeValue10.setDataType(STRING_DATATYPE); - configNameAttributeValue10.getContent().add(policyAdapter.getPriority()); - assignment10.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue10)); - - advice.getAttributeAssignmentExpression().add(assignment10); - - //RiskType Attribute Assignment - AttributeAssignmentExpressionType assignment11 = new AttributeAssignmentExpressionType(); - assignment11.setAttributeId("RiskType"); - assignment11.setCategory(CATEGORY_RESOURCE); - assignment11.setIssuer(""); - - AttributeValueType configNameAttributeValue11 = new AttributeValueType(); - configNameAttributeValue11.setDataType(STRING_DATATYPE); - configNameAttributeValue11.getContent().add(policyAdapter.getRiskType()); - assignment11.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue11)); - - advice.getAttributeAssignmentExpression().add(assignment11); - - //RiskLevel Attribute Assignment - AttributeAssignmentExpressionType assignment12 = new AttributeAssignmentExpressionType(); - assignment12.setAttributeId("RiskLevel"); - assignment12.setCategory(CATEGORY_RESOURCE); - assignment12.setIssuer(""); - - AttributeValueType configNameAttributeValue12 = new AttributeValueType(); - configNameAttributeValue12.setDataType(STRING_DATATYPE); - configNameAttributeValue12.getContent().add(policyAdapter.getRiskLevel()); - assignment12.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue12)); - - advice.getAttributeAssignmentExpression().add(assignment12); - - //Guard Attribute Assignment - AttributeAssignmentExpressionType assignment13 = new AttributeAssignmentExpressionType(); - assignment13.setAttributeId("guard"); - assignment13.setCategory(CATEGORY_RESOURCE); - assignment13.setIssuer(""); - - AttributeValueType configNameAttributeValue13 = new AttributeValueType(); - configNameAttributeValue13.setDataType(STRING_DATATYPE); - configNameAttributeValue13.getContent().add(policyAdapter.getGuard()); - assignment13.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue13)); - - advice.getAttributeAssignmentExpression().add(assignment13); - - //TTLDate Attribute Assignment - AttributeAssignmentExpressionType assignment14 = new AttributeAssignmentExpressionType(); - assignment14.setAttributeId("TTLDate"); - assignment14.setCategory(CATEGORY_RESOURCE); - assignment14.setIssuer(""); - - AttributeValueType configNameAttributeValue14 = new AttributeValueType(); - configNameAttributeValue14.setDataType(STRING_DATATYPE); - configNameAttributeValue14.getContent().add(policyAdapter.getTtlDate()); - assignment14.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue14)); - - advice.getAttributeAssignmentExpression().add(assignment14); - - advices.getAdviceExpression().add(advice); - return advices; - } - - @Override - public Object getCorrectPolicyDataObject() { - return policyAdapter.getPolicyData(); - } + AttributeAssignmentExpressionType assignment10 = new AttributeAssignmentExpressionType(); + assignment10.setAttributeId("Priority"); + assignment10.setCategory(CATEGORY_RESOURCE); + assignment10.setIssuer(""); + + AttributeValueType configNameAttributeValue10 = new AttributeValueType(); + configNameAttributeValue10.setDataType(STRING_DATATYPE); + configNameAttributeValue10.getContent().add(policyAdapter.getPriority()); + assignment10.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue10)); + + advice.getAttributeAssignmentExpression().add(assignment10); + + //RiskType Attribute Assignment + AttributeAssignmentExpressionType assignment11 = new AttributeAssignmentExpressionType(); + assignment11.setAttributeId("RiskType"); + assignment11.setCategory(CATEGORY_RESOURCE); + assignment11.setIssuer(""); + + AttributeValueType configNameAttributeValue11 = new AttributeValueType(); + configNameAttributeValue11.setDataType(STRING_DATATYPE); + configNameAttributeValue11.getContent().add(policyAdapter.getRiskType()); + assignment11.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue11)); + + advice.getAttributeAssignmentExpression().add(assignment11); + + //RiskLevel Attribute Assignment + AttributeAssignmentExpressionType assignment12 = new AttributeAssignmentExpressionType(); + assignment12.setAttributeId("RiskLevel"); + assignment12.setCategory(CATEGORY_RESOURCE); + assignment12.setIssuer(""); + + AttributeValueType configNameAttributeValue12 = new AttributeValueType(); + configNameAttributeValue12.setDataType(STRING_DATATYPE); + configNameAttributeValue12.getContent().add(policyAdapter.getRiskLevel()); + assignment12.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue12)); + + advice.getAttributeAssignmentExpression().add(assignment12); + + //Guard Attribute Assignment + AttributeAssignmentExpressionType assignment13 = new AttributeAssignmentExpressionType(); + assignment13.setAttributeId("guard"); + assignment13.setCategory(CATEGORY_RESOURCE); + assignment13.setIssuer(""); + + AttributeValueType configNameAttributeValue13 = new AttributeValueType(); + configNameAttributeValue13.setDataType(STRING_DATATYPE); + configNameAttributeValue13.getContent().add(policyAdapter.getGuard()); + assignment13.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue13)); + + advice.getAttributeAssignmentExpression().add(assignment13); + + //TTLDate Attribute Assignment + AttributeAssignmentExpressionType assignment14 = new AttributeAssignmentExpressionType(); + assignment14.setAttributeId("TTLDate"); + assignment14.setCategory(CATEGORY_RESOURCE); + assignment14.setIssuer(""); + + AttributeValueType configNameAttributeValue14 = new AttributeValueType(); + configNameAttributeValue14.setDataType(STRING_DATATYPE); + configNameAttributeValue14.getContent().add(policyAdapter.getTtlDate()); + assignment14.setExpression(new ObjectFactory().createAttributeValue(configNameAttributeValue14)); + + advice.getAttributeAssignmentExpression().add(assignment14); + + advices.getAdviceExpression().add(advice); + return advices; + } + + @Override + public Object getCorrectPolicyDataObject() { + return policyAdapter.getPolicyData(); + } } diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/PolicyDBDaoTransaction.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/PolicyDBDaoTransaction.java index 8bfcab92c..d6ace7cf3 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/PolicyDBDaoTransaction.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/PolicyDBDaoTransaction.java @@ -35,142 +35,142 @@ import com.att.research.xacml.api.pap.PAPException; public interface PolicyDBDaoTransaction { - /** - * Commits (makes permanent) the current transaction. Also, notifies other PolicyDBDao instances on other PAP servers of the update. - * @throws IllegalStateException if the PolicyDBDao transaction has not been used or has been committed already. - * @throws PersistenceException if the commit fails for some reason - */ - public void commitTransaction(); - - /** - * Create or update a policy - * @param policy A Policy object representing the policy to store or update - * @param username A string of the username you want to be stored for doing this operation - * @throws IllegalStateException If a transaction is open that has not yet been committed - * @throws PersistenceException If a database error occurs - * @throws IllegalArgumentException If the Policy's PolicyRestAdapter contains incorrect data. - */ - public void createPolicy(Policy policy, String username) throws PolicyDBException; - - /** - * Check if the PolicyDBDaoTransaction is currently open - * @return False if the PolicyDBDao transaction has not been used or has been committed already, true if it is open. - */ - public boolean isTransactionOpen(); - - /** - * Rollback (undo) the current transaction. - */ - public void rollbackTransaction(); - - /** - * Close the PolicyDBDaoTransaction without rolling back or doing anything. Just used to close the EntityManager - */ - public void close(); - - - /** - * Create a new PDP group in the database - * @param groupID The ID to name the new group (use PolicyDBDao.createNewPDPGroupId) - * @param groupName The name to use for the new group - * @param groupDescription Description of the new group (optional) - * @param username Username of the user performing the operation - * @throws IllegalArgumentException If non-optional parameters are null or empty strings - * @throws IllegalStateException If a transaction is already open - * @throws PersistenceException If a database error occurs - */ - public void createGroup(String groupID, String groupName, String groupDescription, String username) throws PolicyDBException; - - /** - * Updates a group in the database with a new name of description - * @param group The group with updated information. The id must match an existing group, but the name and description can be changed. - * @param username Username of the user performing the operation - * @throws IllegalArgumentException If non-optional parameters are null or empty strings - * @throws IllegalStateException If a transaction is already open - * @throws PersistenceException If a database error occurs or if the group can not be found - */ - public void updateGroup(OnapPDPGroup group, String username) throws PolicyDBException; - - /** - * Updates a PDP in the database with new information - * @param pdp The PDP to update - * @param username Username of the user performing the operation - * @throws IllegalArgumentException If non-optional parameters are null or empty strings - * @throws IllegalStateException If a transaction is already open - * @throws PersistenceException If a database error occurs or if the pdp can not be found - */ - public void updatePdp(OnapPDP pdp, String username) throws PolicyDBException; - - /** - * Change the default group in the database to the group provided. - * @param group The new group which should be set as default in the database - * @param username Username of the user performing the operation - * @throws IllegalArgumentException If non-optional parameters are null or empty strings - * @throws IllegalStateException If a transaction is already open - * @throws PersistenceException If a database error occurs - */ - public void changeDefaultGroup(OnapPDPGroup group, String username) throws PolicyDBException; - - /** - * Moves a PDP to a new group. - * @param pdp The PDP which is to be moved to a new group - * @param group The new group which the PDP should be added to - * @param username Username of the user performing the operation - * @throws IllegalArgumentException If non-optional parameters are null or empty strings - * @throws IllegalStateException If a transaction is already open - * @throws PersistenceException If a database error occurs - */ - public void movePdp(OnapPDP pdp, OnapPDPGroup group, String username) throws PolicyDBException; - - /** - * Add a new PDP to an existing group - * @param pdpID The ID to name the new PDP - * @param groupID The ID of the existing group to add the PDP to - * @param pdpName The name to use for the new PDP - * @param pdpDescription Description of the new PDP (optional) - * @param pdpJmxPort - * @param username Username of the user performing the operation - * @throws IllegalArgumentException If non-optional parameters are null or empty strings - * @throws IllegalStateException If a transaction is already open - * @throws PersistenceException If a database error occurs - */ - public void addPdpToGroup(String pdpID, String groupID, String pdpName, String pdpDescription, int pdpJmxPort, String username) throws PolicyDBException; - - /** - * Add an existing policy to an existing group - * @param group The ID of the existing group to add the policy to - * @param policyID The ID of an existing policy - * @return - * @throws IllegalArgumentException If non-optional parameters are null or empty strings - * @throws IllegalStateException If a transaction is already open - * @throws PersistenceException If a database error occurs - * @throws PolicyDBException - */ - public StdPDPGroup addPolicyToGroup(String group, String policyID, String username) throws PolicyDBException; - - - /** - * Delete an existing PDP groupPolicyDBException - * @param group A PDPGroup object representing the group to delete - * @param moveToGroup A PDPGroup object representing another existing group which PDPs in the group being deleted should be moved to - * @throws IllegalArgumentException If non-optional parameters are null or empty strings - * @throws IllegalStateException If a transaction is already open - * @throws PersistenceException If a database error occurs - * @throws PAPException If an error relating to how groups are handled occurs - */ - public void deleteGroup(OnapPDPGroup group, OnapPDPGroup moveToGroup, String username)throws PolicyDBException; - - /** - * Removes an existing PDP from its group and deletes it. - * @param pdpID The ID of the existing PDP which should be deleted - * @throws IllegalArgumentException If non-optional parameters are null or empty strings - * @throws IllegalStateException If a transaction is already open - * @throws PersistenceException If a database error occurs - */ - public void removePdpFromGroup(String pdpID, String username) throws PolicyDBException; - - public GroupEntity getGroup(long groupKey); - public GroupEntity getGroup(String groupId); - public List<?> getPdpsInGroup(long groupKey); - public PdpEntity getPdp(long pdpKey); + /** + * Commits (makes permanent) the current transaction. Also, notifies other PolicyDBDao instances on other PAP servers of the update. + * @throws IllegalStateException if the PolicyDBDao transaction has not been used or has been committed already. + * @throws PersistenceException if the commit fails for some reason + */ + public void commitTransaction(); + + /** + * Create or update a policy + * @param policy A Policy object representing the policy to store or update + * @param username A string of the username you want to be stored for doing this operation + * @throws IllegalStateException If a transaction is open that has not yet been committed + * @throws PersistenceException If a database error occurs + * @throws IllegalArgumentException If the Policy's PolicyRestAdapter contains incorrect data. + */ + public void createPolicy(Policy policy, String username) throws PolicyDBException; + + /** + * Check if the PolicyDBDaoTransaction is currently open + * @return False if the PolicyDBDao transaction has not been used or has been committed already, true if it is open. + */ + public boolean isTransactionOpen(); + + /** + * Rollback (undo) the current transaction. + */ + public void rollbackTransaction(); + + /** + * Close the PolicyDBDaoTransaction without rolling back or doing anything. Just used to close the EntityManager + */ + public void close(); + + + /** + * Create a new PDP group in the database + * @param groupID The ID to name the new group (use PolicyDBDao.createNewPDPGroupId) + * @param groupName The name to use for the new group + * @param groupDescription Description of the new group (optional) + * @param username Username of the user performing the operation + * @throws IllegalArgumentException If non-optional parameters are null or empty strings + * @throws IllegalStateException If a transaction is already open + * @throws PersistenceException If a database error occurs + */ + public void createGroup(String groupID, String groupName, String groupDescription, String username) throws PolicyDBException; + + /** + * Updates a group in the database with a new name of description + * @param group The group with updated information. The id must match an existing group, but the name and description can be changed. + * @param username Username of the user performing the operation + * @throws IllegalArgumentException If non-optional parameters are null or empty strings + * @throws IllegalStateException If a transaction is already open + * @throws PersistenceException If a database error occurs or if the group can not be found + */ + public void updateGroup(OnapPDPGroup group, String username) throws PolicyDBException; + + /** + * Updates a PDP in the database with new information + * @param pdp The PDP to update + * @param username Username of the user performing the operation + * @throws IllegalArgumentException If non-optional parameters are null or empty strings + * @throws IllegalStateException If a transaction is already open + * @throws PersistenceException If a database error occurs or if the pdp can not be found + */ + public void updatePdp(OnapPDP pdp, String username) throws PolicyDBException; + + /** + * Change the default group in the database to the group provided. + * @param group The new group which should be set as default in the database + * @param username Username of the user performing the operation + * @throws IllegalArgumentException If non-optional parameters are null or empty strings + * @throws IllegalStateException If a transaction is already open + * @throws PersistenceException If a database error occurs + */ + public void changeDefaultGroup(OnapPDPGroup group, String username) throws PolicyDBException; + + /** + * Moves a PDP to a new group. + * @param pdp The PDP which is to be moved to a new group + * @param group The new group which the PDP should be added to + * @param username Username of the user performing the operation + * @throws IllegalArgumentException If non-optional parameters are null or empty strings + * @throws IllegalStateException If a transaction is already open + * @throws PersistenceException If a database error occurs + */ + public void movePdp(OnapPDP pdp, OnapPDPGroup group, String username) throws PolicyDBException; + + /** + * Add a new PDP to an existing group + * @param pdpID The ID to name the new PDP + * @param groupID The ID of the existing group to add the PDP to + * @param pdpName The name to use for the new PDP + * @param pdpDescription Description of the new PDP (optional) + * @param pdpJmxPort + * @param username Username of the user performing the operation + * @throws IllegalArgumentException If non-optional parameters are null or empty strings + * @throws IllegalStateException If a transaction is already open + * @throws PersistenceException If a database error occurs + */ + public void addPdpToGroup(String pdpID, String groupID, String pdpName, String pdpDescription, int pdpJmxPort, String username) throws PolicyDBException; + + /** + * Add an existing policy to an existing group + * @param group The ID of the existing group to add the policy to + * @param policyID The ID of an existing policy + * @return + * @throws IllegalArgumentException If non-optional parameters are null or empty strings + * @throws IllegalStateException If a transaction is already open + * @throws PersistenceException If a database error occurs + * @throws PolicyDBException + */ + public StdPDPGroup addPolicyToGroup(String group, String policyID, String username) throws PolicyDBException; + + + /** + * Delete an existing PDP groupPolicyDBException + * @param group A PDPGroup object representing the group to delete + * @param moveToGroup A PDPGroup object representing another existing group which PDPs in the group being deleted should be moved to + * @throws IllegalArgumentException If non-optional parameters are null or empty strings + * @throws IllegalStateException If a transaction is already open + * @throws PersistenceException If a database error occurs + * @throws PAPException If an error relating to how groups are handled occurs + */ + public void deleteGroup(OnapPDPGroup group, OnapPDPGroup moveToGroup, String username)throws PolicyDBException; + + /** + * Removes an existing PDP from its group and deletes it. + * @param pdpID The ID of the existing PDP which should be deleted + * @throws IllegalArgumentException If non-optional parameters are null or empty strings + * @throws IllegalStateException If a transaction is already open + * @throws PersistenceException If a database error occurs + */ + public void removePdpFromGroup(String pdpID, String username) throws PolicyDBException; + + public GroupEntity getGroup(long groupKey); + public GroupEntity getGroup(String groupId); + public List<?> getPdpsInGroup(long groupKey); + public PdpEntity getPdp(long pdpKey); } diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/SafePolicyBuilder.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/SafePolicyBuilder.java index ba5b0026a..7a0f708d8 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/SafePolicyBuilder.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/SafePolicyBuilder.java @@ -30,57 +30,57 @@ import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.constructor.Constructor; public class SafePolicyBuilder { - - private SafePolicyBuilder(){ - //Private Constructor. - } - public static ControlLoopGuard loadYamlGuard(String specification) { - // - // Read the yaml into our Java Object - // - PolicyLogger.info("Requested YAML to convert : " + specification); - Yaml yaml = new Yaml(new Constructor(ControlLoopGuard.class)); - Object obj = yaml.load(specification); - return (ControlLoopGuard) obj; - } - - public static String generateXacmlGuard(String xacmlFileContent,Map<String, String> generateMap, List<String> blacklist, List<String> targets) { - //Setup default values and Targets. - StringBuilder targetRegex= new StringBuilder(".*|"); - if(targets!=null && !targets.isEmpty()){ - targetRegex = new StringBuilder(); + private SafePolicyBuilder(){ + //Private Constructor. + } + + public static ControlLoopGuard loadYamlGuard(String specification) { + // + // Read the yaml into our Java Object + // + PolicyLogger.info("Requested YAML to convert : " + specification); + Yaml yaml = new Yaml(new Constructor(ControlLoopGuard.class)); + Object obj = yaml.load(specification); + return (ControlLoopGuard) obj; + } + + public static String generateXacmlGuard(String xacmlFileContent,Map<String, String> generateMap, List<String> blacklist, List<String> targets) { + //Setup default values and Targets. + StringBuilder targetRegex= new StringBuilder(".*|"); + if(targets!=null && !targets.isEmpty()){ + targetRegex = new StringBuilder(); for(String t : targets){ - targetRegex.append(t + "|"); + targetRegex.append(t + "|"); + } + } + if(generateMap.get("clname")==null|| generateMap.get("clname").isEmpty()){ + generateMap.put("clname",".*"); + } + generateMap.put("targets", targetRegex.toString().substring(0, targetRegex.length()-1)); + // Replace values. + for(Map.Entry<String,String> map: generateMap.entrySet()){ + Pattern p = Pattern.compile("\\$\\{" +map.getKey() +"\\}"); + Matcher m = p.matcher(xacmlFileContent); + String finalInput = map.getValue(); + if(finalInput.contains("$")){ + finalInput = finalInput.replace("$", "\\$"); + } + xacmlFileContent=m.replaceAll(finalInput); + } + if(blacklist!=null && !blacklist.isEmpty()){ + StringBuilder rule = new StringBuilder(); + for(String blackListName : blacklist){ + if(blackListName.contains("$")){ + blackListName = blackListName.replace("$", "\\$"); + } + rule.append("<AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">"+blackListName+"</AttributeValue>"); } - } - if(generateMap.get("clname")==null|| generateMap.get("clname").isEmpty()){ - generateMap.put("clname",".*"); - } - generateMap.put("targets", targetRegex.toString().substring(0, targetRegex.length()-1)); - // Replace values. - for(Map.Entry<String,String> map: generateMap.entrySet()){ - Pattern p = Pattern.compile("\\$\\{" +map.getKey() +"\\}"); - Matcher m = p.matcher(xacmlFileContent); - String finalInput = map.getValue(); - if(finalInput.contains("$")){ - finalInput = finalInput.replace("$", "\\$"); - } - xacmlFileContent=m.replaceAll(finalInput); - } - if(blacklist!=null && !blacklist.isEmpty()){ - StringBuilder rule = new StringBuilder(); - for(String blackListName : blacklist){ - if(blackListName.contains("$")){ - blackListName = blackListName.replace("$", "\\$"); - } - rule.append("<AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">"+blackListName+"</AttributeValue>"); - } - Pattern p = Pattern.compile("\\$\\{blackListElement\\}"); - Matcher m = p.matcher(xacmlFileContent); - xacmlFileContent=m.replaceAll(rule.toString()); - } - PolicyLogger.info("Generated XACML from the YAML Spec: \n" + xacmlFileContent); - return xacmlFileContent; - } + Pattern p = Pattern.compile("\\$\\{blackListElement\\}"); + Matcher m = p.matcher(xacmlFileContent); + xacmlFileContent=m.replaceAll(rule.toString()); + } + PolicyLogger.info("Generated XACML from the YAML Spec: \n" + xacmlFileContent); + return xacmlFileContent; + } } diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/ActionPolicyDictionaryController.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/ActionPolicyDictionaryController.java index 59a7ed312..8e620408b 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/ActionPolicyDictionaryController.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/ActionPolicyDictionaryController.java @@ -44,116 +44,116 @@ import com.fasterxml.jackson.databind.ObjectMapper; @Controller public class ActionPolicyDictionaryController { - - private static CommonClassDao commonClassDao; - private static String operation = "operation"; - private static String attributeName = "attributeName"; - private static String actionDatas = "actionPolicyDictionaryDatas"; - - @Autowired - public ActionPolicyDictionaryController(CommonClassDao commonClassDao){ - ActionPolicyDictionaryController.commonClassDao = commonClassDao; - } - - public void setCommonClassDao(CommonClassDao commonClassDao){ - ActionPolicyDictionaryController.commonClassDao = commonClassDao; - } - - public ActionPolicyDictionaryController(){ - super(); - } - - private DictionaryUtils getDictionaryUtilsInstance(){ - return DictionaryUtils.getDictionaryUtils(); - } - - @RequestMapping(value={"/get_ActionPolicyDictDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getActionEntitybyName(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getDataByEntity(response, actionDatas, attributeName, ActionPolicyDict.class); - } - - @RequestMapping(value={"/get_ActionPolicyDictData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getActionPolicyDictionaryEntityData(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getData(response, actionDatas, ActionPolicyDict.class); - } - - @RequestMapping(value={"/action_dictionary/save_ActionDict"}, method={RequestMethod.POST}) - public ModelAndView saveActionPolicyDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - DictionaryUtils utils = getDictionaryUtilsInstance(); - try { - boolean fromAPI = utils.isRequestFromAPI(request); - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - JsonNode root = mapper.readTree(request.getReader()); - ActionPolicyDict actionPolicyDict = null; - ActionAdapter adapter = null; - String userId = null; - if(fromAPI){ - actionPolicyDict = mapper.readValue(root.get("dictionaryFields").toString(), ActionPolicyDict.class); - adapter = mapper.readValue(root.get("dictionaryFields").toString(), ActionAdapter.class); - userId = "API"; - }else{ - actionPolicyDict = mapper.readValue(root.get("actionPolicyDictionaryData").toString(), ActionPolicyDict.class); - adapter = mapper.readValue(root.get("actionPolicyDictionaryData").toString(), ActionAdapter.class); - userId = root.get("userid").textValue(); - } - UserInfo userInfo = utils.getUserInfo(userId); - - List<Object> duplicateData = commonClassDao.checkDuplicateEntry(actionPolicyDict.getAttributeName(), attributeName, ActionPolicyDict.class); - boolean duplicateflag = false; - if(!duplicateData.isEmpty()){ - ActionPolicyDict data = (ActionPolicyDict) duplicateData.get(0); - if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ - actionPolicyDict.setId(data.getId()); - }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || - (request.getParameter(operation) == null && (data.getId() != actionPolicyDict.getId()))){ - duplicateflag = true; - } - } - actionPolicyDict.setHeader(utils.appendKeyValue(adapter.getHeaders(), ":", "=")); - - String responseString = null; - if(!duplicateflag){ - actionPolicyDict.setUserModifiedBy(userInfo); - if(actionPolicyDict.getId() == 0){ - actionPolicyDict.setUserCreatedBy(userInfo); - commonClassDao.save(actionPolicyDict); - }else{ - actionPolicyDict.setModifiedDate(new Date()); - commonClassDao.update(actionPolicyDict); - } - responseString = mapper.writeValueAsString(commonClassDao.getData(ActionPolicyDict.class)); - }else{ - responseString = "Duplicate"; - } - if(fromAPI){ - return utils.getResultForApi(responseString); - }else{ - utils.setResponseData(response, actionDatas, responseString); - } - }catch(Exception e){ - utils.setErrorResponseData(response, e); - } - return null; - } - - @RequestMapping(value={"/action_dictionary/remove_actionPolicyDict"}, method={RequestMethod.POST}) - public void removeActionPolicyDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.removeData(request, response, actionDatas, ActionPolicyDict.class); - } + + private static CommonClassDao commonClassDao; + private static String operation = "operation"; + private static String attributeName = "attributeName"; + private static String actionDatas = "actionPolicyDictionaryDatas"; + + @Autowired + public ActionPolicyDictionaryController(CommonClassDao commonClassDao){ + ActionPolicyDictionaryController.commonClassDao = commonClassDao; + } + + public void setCommonClassDao(CommonClassDao commonClassDao){ + ActionPolicyDictionaryController.commonClassDao = commonClassDao; + } + + public ActionPolicyDictionaryController(){ + super(); + } + + private DictionaryUtils getDictionaryUtilsInstance(){ + return DictionaryUtils.getDictionaryUtils(); + } + + @RequestMapping(value={"/get_ActionPolicyDictDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getActionEntitybyName(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getDataByEntity(response, actionDatas, attributeName, ActionPolicyDict.class); + } + + @RequestMapping(value={"/get_ActionPolicyDictData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getActionPolicyDictionaryEntityData(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getData(response, actionDatas, ActionPolicyDict.class); + } + + @RequestMapping(value={"/action_dictionary/save_ActionDict"}, method={RequestMethod.POST}) + public ModelAndView saveActionPolicyDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + DictionaryUtils utils = getDictionaryUtilsInstance(); + try { + boolean fromAPI = utils.isRequestFromAPI(request); + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + JsonNode root = mapper.readTree(request.getReader()); + ActionPolicyDict actionPolicyDict = null; + ActionAdapter adapter = null; + String userId = null; + if(fromAPI){ + actionPolicyDict = mapper.readValue(root.get("dictionaryFields").toString(), ActionPolicyDict.class); + adapter = mapper.readValue(root.get("dictionaryFields").toString(), ActionAdapter.class); + userId = "API"; + }else{ + actionPolicyDict = mapper.readValue(root.get("actionPolicyDictionaryData").toString(), ActionPolicyDict.class); + adapter = mapper.readValue(root.get("actionPolicyDictionaryData").toString(), ActionAdapter.class); + userId = root.get("userid").textValue(); + } + UserInfo userInfo = utils.getUserInfo(userId); + + List<Object> duplicateData = commonClassDao.checkDuplicateEntry(actionPolicyDict.getAttributeName(), attributeName, ActionPolicyDict.class); + boolean duplicateflag = false; + if(!duplicateData.isEmpty()){ + ActionPolicyDict data = (ActionPolicyDict) duplicateData.get(0); + if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ + actionPolicyDict.setId(data.getId()); + }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || + (request.getParameter(operation) == null && (data.getId() != actionPolicyDict.getId()))){ + duplicateflag = true; + } + } + actionPolicyDict.setHeader(utils.appendKeyValue(adapter.getHeaders(), ":", "=")); + + String responseString = null; + if(!duplicateflag){ + actionPolicyDict.setUserModifiedBy(userInfo); + if(actionPolicyDict.getId() == 0){ + actionPolicyDict.setUserCreatedBy(userInfo); + commonClassDao.save(actionPolicyDict); + }else{ + actionPolicyDict.setModifiedDate(new Date()); + commonClassDao.update(actionPolicyDict); + } + responseString = mapper.writeValueAsString(commonClassDao.getData(ActionPolicyDict.class)); + }else{ + responseString = "Duplicate"; + } + if(fromAPI){ + return utils.getResultForApi(responseString); + }else{ + utils.setResponseData(response, actionDatas, responseString); + } + }catch(Exception e){ + utils.setErrorResponseData(response, e); + } + return null; + } + + @RequestMapping(value={"/action_dictionary/remove_actionPolicyDict"}, method={RequestMethod.POST}) + public void removeActionPolicyDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.removeData(request, response, actionDatas, ActionPolicyDict.class); + } } class ActionAdapter{ - private List<Object> headers; + private List<Object> headers; - public List<Object> getHeaders() { - return headers; - } + public List<Object> getHeaders() { + return headers; + } - public void setHeaders(List<Object> headers) { - this.headers = headers; - } + public void setHeaders(List<Object> headers) { + this.headers = headers; + } } diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/BRMSDictionaryController.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/BRMSDictionaryController.java index 0ab5cf935..a0044d26b 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/BRMSDictionaryController.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/BRMSDictionaryController.java @@ -57,321 +57,321 @@ import com.fasterxml.jackson.databind.ObjectMapper; @Controller public class BRMSDictionaryController{ - - private static final Logger LOGGER = FlexLogger.getLogger(BRMSDictionaryController.class); - private static final String VALIDATIONRESPONSE = "Validation"; + private static final Logger LOGGER = FlexLogger.getLogger(BRMSDictionaryController.class); - private static CommonClassDao commonClassDao; - private static String rule; - private static String successMsg = "Success"; - private static String duplicateResponseString = "Duplicate"; - private static String ruleName = "ruleName"; - private static String errorMessage = "Error"; - private static String operation = "operation"; - private static String dictionaryFields ="dictionaryFields"; - private static String userid = "userid"; - private static String dependencyName = "dependencyName"; - private static String controllerName = "controllerName"; - private static String brmsParamDatas = "brmsParamDictionaryDatas"; - private static String brmsDependencyDatas = "brmsDependencyDictionaryDatas"; - private static String brmsControllerDatas = "brmsControllerDictionaryDatas"; - - @Autowired - public BRMSDictionaryController(CommonClassDao commonClassDao){ - BRMSDictionaryController.commonClassDao = commonClassDao; - } - - public static void setCommonClassDao(CommonClassDao commonClassDao2) { - BRMSDictionaryController.commonClassDao = commonClassDao2; - } + private static final String VALIDATIONRESPONSE = "Validation"; - public BRMSDictionaryController() { - super(); - } - - private DictionaryUtils getDictionaryUtilsInstance(){ - return DictionaryUtils.getDictionaryUtils(); - } + private static CommonClassDao commonClassDao; + private static String rule; + private static String successMsg = "Success"; + private static String duplicateResponseString = "Duplicate"; + private static String ruleName = "ruleName"; + private static String errorMessage = "Error"; + private static String operation = "operation"; + private static String dictionaryFields ="dictionaryFields"; + private static String userid = "userid"; + private static String dependencyName = "dependencyName"; + private static String controllerName = "controllerName"; + private static String brmsParamDatas = "brmsParamDictionaryDatas"; + private static String brmsDependencyDatas = "brmsDependencyDictionaryDatas"; + private static String brmsControllerDatas = "brmsControllerDictionaryDatas"; + + @Autowired + public BRMSDictionaryController(CommonClassDao commonClassDao){ + BRMSDictionaryController.commonClassDao = commonClassDao; + } + + public static void setCommonClassDao(CommonClassDao commonClassDao2) { + BRMSDictionaryController.commonClassDao = commonClassDao2; + } + + public BRMSDictionaryController() { + super(); + } + + private DictionaryUtils getDictionaryUtilsInstance(){ + return DictionaryUtils.getDictionaryUtils(); + } + + @RequestMapping(value={"/get_BRMSParamDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getBRMSParamDictionaryByNameEntityData(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getDataByEntity(response, brmsParamDatas, ruleName, BRMSParamTemplate.class); + } + + @RequestMapping(value={"/get_BRMSParamData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getBRMSParamDictionaryEntityData(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getData(response, brmsParamDatas, BRMSParamTemplate.class); + } + + @RequestMapping(value={"/brms_dictionary/set_BRMSParamData"}, method={RequestMethod.POST}) + public static void setRuleData(HttpServletRequest request) throws IOException{ + StringWriter writer = new StringWriter(); + IOUtils.copy(request.getInputStream() , writer, StandardCharsets.UTF_8); + String cleanStreamBoundary = writer.toString().replaceFirst("------(.*)(?s).*octet-stream", ""); + rule = cleanStreamBoundary.substring(0, cleanStreamBoundary.lastIndexOf("end")+4); + } + + @RequestMapping(value={"/brms_dictionary/save_BRMSParam"}, method={RequestMethod.POST}) + public ModelAndView saveBRMSParamDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { + DictionaryUtils utils = getDictionaryUtilsInstance(); + try { + boolean fromAPI = utils.isRequestFromAPI(request); + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + JsonNode root = mapper.readTree(request.getReader()); - @RequestMapping(value={"/get_BRMSParamDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getBRMSParamDictionaryByNameEntityData(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getDataByEntity(response, brmsParamDatas, ruleName, BRMSParamTemplate.class); - } - - @RequestMapping(value={"/get_BRMSParamData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getBRMSParamDictionaryEntityData(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getData(response, brmsParamDatas, BRMSParamTemplate.class); - } - - @RequestMapping(value={"/brms_dictionary/set_BRMSParamData"}, method={RequestMethod.POST}) - public static void setRuleData(HttpServletRequest request) throws IOException{ - StringWriter writer = new StringWriter(); - IOUtils.copy(request.getInputStream() , writer, StandardCharsets.UTF_8); - String cleanStreamBoundary = writer.toString().replaceFirst("------(.*)(?s).*octet-stream", ""); - rule = cleanStreamBoundary.substring(0, cleanStreamBoundary.lastIndexOf("end")+4); - } - - @RequestMapping(value={"/brms_dictionary/save_BRMSParam"}, method={RequestMethod.POST}) - public ModelAndView saveBRMSParamDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { - DictionaryUtils utils = getDictionaryUtilsInstance(); - try { - boolean fromAPI = utils.isRequestFromAPI(request); - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - JsonNode root = mapper.readTree(request.getReader()); - BRMSParamTemplate bRMSParamTemplateData; String userId = null; if(fromAPI){ - bRMSParamTemplateData = mapper.readValue(root.get(dictionaryFields).toString(), BRMSParamTemplate.class); - userId = "API"; - }else{ - bRMSParamTemplateData = mapper.readValue(root.get("brmsParamDictionaryData").toString(), BRMSParamTemplate.class); - userId = root.get(userid).textValue(); - } - UserInfo userInfo = utils.getUserInfo(userId); - - List<Object> duplicateData = commonClassDao.checkDuplicateEntry(bRMSParamTemplateData.getRuleName(), ruleName, BRMSParamTemplate.class); - boolean duplicateflag = false; - if(!duplicateData.isEmpty()){ - BRMSParamTemplate data = (BRMSParamTemplate) duplicateData.get(0); - if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ - bRMSParamTemplateData.setId(data.getId()); - }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || - (request.getParameter(operation) == null && (data.getId() != bRMSParamTemplateData.getId()))){ - duplicateflag = true; - } - } - String responseString = null; + bRMSParamTemplateData = mapper.readValue(root.get(dictionaryFields).toString(), BRMSParamTemplate.class); + userId = "API"; + }else{ + bRMSParamTemplateData = mapper.readValue(root.get("brmsParamDictionaryData").toString(), BRMSParamTemplate.class); + userId = root.get(userid).textValue(); + } + UserInfo userInfo = utils.getUserInfo(userId); + + List<Object> duplicateData = commonClassDao.checkDuplicateEntry(bRMSParamTemplateData.getRuleName(), ruleName, BRMSParamTemplate.class); + boolean duplicateflag = false; + if(!duplicateData.isEmpty()){ + BRMSParamTemplate data = (BRMSParamTemplate) duplicateData.get(0); + if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ + bRMSParamTemplateData.setId(data.getId()); + }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || + (request.getParameter(operation) == null && (data.getId() != bRMSParamTemplateData.getId()))){ + duplicateflag = true; + } + } + String responseString = null; boolean validation = false; if(rule != null && CreateBRMSRuleTemplate.validateRuleParams(rule)){ - bRMSParamTemplateData.setRule(rule); - validation = true; - if(!duplicateflag){ - if(bRMSParamTemplateData.getId() == 0){ - bRMSParamTemplateData.setUserCreatedBy(userInfo); - commonClassDao.save(bRMSParamTemplateData); - }else{ - commonClassDao.update(bRMSParamTemplateData); - } - responseString = mapper.writeValueAsString(commonClassDao.getData(BRMSParamTemplate.class)); - }else{ - responseString = duplicateResponseString; - } + bRMSParamTemplateData.setRule(rule); + validation = true; + if(!duplicateflag){ + if(bRMSParamTemplateData.getId() == 0){ + bRMSParamTemplateData.setUserCreatedBy(userInfo); + commonClassDao.save(bRMSParamTemplateData); + }else{ + commonClassDao.update(bRMSParamTemplateData); + } + responseString = mapper.writeValueAsString(commonClassDao.getData(BRMSParamTemplate.class)); + }else{ + responseString = duplicateResponseString; + } + } + + if(!validation){ + responseString = VALIDATIONRESPONSE; } - - if(!validation){ - responseString = VALIDATIONRESPONSE; - } - if(fromAPI){ - if (responseString!=null && !(duplicateResponseString).equals(responseString) && !VALIDATIONRESPONSE.equals(responseString)) { + if(fromAPI){ + if (responseString!=null && !(duplicateResponseString).equals(responseString) && !VALIDATIONRESPONSE.equals(responseString)) { responseString = successMsg; } ModelAndView result = new ModelAndView(); result.setViewName(responseString); return result; - }else{ - utils.setResponseData(response, brmsParamDatas, responseString); - } - }catch(Exception e){ - utils.setErrorResponseData(response, e); - } - return null; - } + }else{ + utils.setResponseData(response, brmsParamDatas, responseString); + } + }catch(Exception e){ + utils.setErrorResponseData(response, e); + } + return null; + } + + @RequestMapping(value={"/brms_dictionary/remove_brmsParam"}, method={RequestMethod.POST}) + public void removeBRMSParamDictionary(HttpServletRequest request, HttpServletResponse response)throws IOException { + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.removeData(request, response, brmsParamDatas, BRMSParamTemplate.class); + } - @RequestMapping(value={"/brms_dictionary/remove_brmsParam"}, method={RequestMethod.POST}) - public void removeBRMSParamDictionary(HttpServletRequest request, HttpServletResponse response)throws IOException { - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.removeData(request, response, brmsParamDatas, BRMSParamTemplate.class); - } - @RequestMapping(value={"/get_BRMSDependencyDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) public void getBRMSDependencyDictionaryByNameEntityData(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getDataByEntity(response, brmsDependencyDatas, dependencyName, BRMSDependency.class); + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getDataByEntity(response, brmsDependencyDatas, dependencyName, BRMSDependency.class); } @RequestMapping(value={"/get_BRMSDependencyData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) public void getBRMSDependencyDictionaryEntityData(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getData(response, brmsDependencyDatas, BRMSDependency.class); + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getData(response, brmsDependencyDatas, BRMSDependency.class); } @RequestMapping(value={"/brms_dictionary/save_BRMSDependencyData"}, method={RequestMethod.POST}) public ModelAndView saveBRMSDependencyDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { - DictionaryUtils utils = getDictionaryUtilsInstance(); - try { - LOGGER.debug("DictionaryController: saveBRMSDependencyDictionary() is called"); - boolean fromAPI = utils.isRequestFromAPI(request); - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - JsonNode root = mapper.readTree(request.getReader()); + DictionaryUtils utils = getDictionaryUtilsInstance(); + try { + LOGGER.debug("DictionaryController: saveBRMSDependencyDictionary() is called"); + boolean fromAPI = utils.isRequestFromAPI(request); + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + JsonNode root = mapper.readTree(request.getReader()); - BRMSDependency brmsDependency; - String userId = null; - if(fromAPI){ - brmsDependency = mapper.readValue(root.get(dictionaryFields).toString(), BRMSDependency.class); - userId = "API"; - }else{ - brmsDependency = mapper.readValue(root.get("brmsDependencyDictionaryData").toString(), BRMSDependency.class); - userId = root.get(userid).textValue(); - } - UserInfo userInfo = utils.getUserInfo(userId); + BRMSDependency brmsDependency; + String userId = null; + if(fromAPI){ + brmsDependency = mapper.readValue(root.get(dictionaryFields).toString(), BRMSDependency.class); + userId = "API"; + }else{ + brmsDependency = mapper.readValue(root.get("brmsDependencyDictionaryData").toString(), BRMSDependency.class); + userId = root.get(userid).textValue(); + } + UserInfo userInfo = utils.getUserInfo(userId); - List<Object> duplicateData = commonClassDao.checkDuplicateEntry(brmsDependency.getDependencyName(), dependencyName, BRMSDependency.class); - boolean duplicateflag = false; - if(!duplicateData.isEmpty()){ - BRMSDependency data = (BRMSDependency) duplicateData.get(0); - if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ - brmsDependency.setId(data.getId()); - }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || - (request.getParameter(operation) == null && (data.getId() != brmsDependency.getId()))){ - duplicateflag = true; - } - } - LOGGER.audit("the userId from the onap portal is: " + userId); - String responseString = null; - if(brmsDependency.getDependency()!=null && !("").equals(brmsDependency.getDependency().trim())){ - PEDependency dependency = null; - try{ - dependency = PolicyUtils.jsonStringToObject(brmsDependency.getDependency(), PEDependency.class); - }catch(Exception e){ - LOGGER.error(XACMLErrorConstants.ERROR_SCHEMA_INVALID + "wrong data given for BRMS PEDependency Dictionary : " + brmsDependency.getDependency(),e); - } - if(dependency==null){ - responseString = errorMessage; - }else{ - if(!duplicateflag){ - brmsDependency.setUserModifiedBy(userInfo); - if(brmsDependency.getId() == 0){ - brmsDependency.setUserCreatedBy(userInfo); - commonClassDao.save(brmsDependency); - }else{ - brmsDependency.setModifiedDate(new Date()); - commonClassDao.update(brmsDependency); - } - responseString = mapper.writeValueAsString(commonClassDao.getData(BRMSDependency.class)); - }else{ - responseString = duplicateResponseString; - } - } - } + List<Object> duplicateData = commonClassDao.checkDuplicateEntry(brmsDependency.getDependencyName(), dependencyName, BRMSDependency.class); + boolean duplicateflag = false; + if(!duplicateData.isEmpty()){ + BRMSDependency data = (BRMSDependency) duplicateData.get(0); + if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ + brmsDependency.setId(data.getId()); + }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || + (request.getParameter(operation) == null && (data.getId() != brmsDependency.getId()))){ + duplicateflag = true; + } + } + LOGGER.audit("the userId from the onap portal is: " + userId); + String responseString = null; + if(brmsDependency.getDependency()!=null && !("").equals(brmsDependency.getDependency().trim())){ + PEDependency dependency = null; + try{ + dependency = PolicyUtils.jsonStringToObject(brmsDependency.getDependency(), PEDependency.class); + }catch(Exception e){ + LOGGER.error(XACMLErrorConstants.ERROR_SCHEMA_INVALID + "wrong data given for BRMS PEDependency Dictionary : " + brmsDependency.getDependency(),e); + } + if(dependency==null){ + responseString = errorMessage; + }else{ + if(!duplicateflag){ + brmsDependency.setUserModifiedBy(userInfo); + if(brmsDependency.getId() == 0){ + brmsDependency.setUserCreatedBy(userInfo); + commonClassDao.save(brmsDependency); + }else{ + brmsDependency.setModifiedDate(new Date()); + commonClassDao.update(brmsDependency); + } + responseString = mapper.writeValueAsString(commonClassDao.getData(BRMSDependency.class)); + }else{ + responseString = duplicateResponseString; + } + } + } - if(fromAPI){ - if(responseString!=null && !duplicateResponseString.equals(responseString) && !errorMessage.equals(responseString)){ - responseString = successMsg; - } - ModelAndView result = new ModelAndView(); - result.setViewName(responseString); - return result; - }else{ - utils.setResponseData(response, brmsDependencyDatas, responseString); - } - } catch (Exception e){ - utils.setErrorResponseData(response, e); - } - return null; + if(fromAPI){ + if(responseString!=null && !duplicateResponseString.equals(responseString) && !errorMessage.equals(responseString)){ + responseString = successMsg; + } + ModelAndView result = new ModelAndView(); + result.setViewName(responseString); + return result; + }else{ + utils.setResponseData(response, brmsDependencyDatas, responseString); + } + } catch (Exception e){ + utils.setErrorResponseData(response, e); + } + return null; } @RequestMapping(value={"/brms_dictionary/remove_brmsDependency"}, method={RequestMethod.POST}) public void removeBRMSDependencyDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.removeData(request, response, brmsDependencyDatas, BRMSDependency.class); + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.removeData(request, response, brmsDependencyDatas, BRMSDependency.class); } @RequestMapping(value={"/get_BRMSControllerDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) public void getBRMSControllerDictionaryByNameEntityData(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getDataByEntity(response, brmsControllerDatas, controllerName, BRMSController.class); + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getDataByEntity(response, brmsControllerDatas, controllerName, BRMSController.class); } @RequestMapping(value={"/get_BRMSControllerData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) public void getBRMSControllerDictionaryEntityData(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getData(response, brmsControllerDatas, BRMSController.class); + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getData(response, brmsControllerDatas, BRMSController.class); } @RequestMapping(value={"/brms_dictionary/save_BRMSControllerData"}, method={RequestMethod.POST}) public ModelAndView saveBRMSControllerDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - DictionaryUtils utils = getDictionaryUtilsInstance(); - try { - LOGGER.debug("DictionaryController: saveBRMSControllerDictionary() is called"); - boolean fromAPI = utils.isRequestFromAPI(request); - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - JsonNode root = mapper.readTree(request.getReader()); - BRMSController brmsController; - String userId = null; - if(fromAPI){ - brmsController = mapper.readValue(root.get(dictionaryFields).toString(), BRMSController.class); - userId = "API"; - }else{ - brmsController = mapper.readValue(root.get("brmsControllerDictionaryData").toString(), BRMSController.class); - userId = root.get(userid).textValue(); - } - UserInfo userInfo = utils.getUserInfo(userId); + DictionaryUtils utils = getDictionaryUtilsInstance(); + try { + LOGGER.debug("DictionaryController: saveBRMSControllerDictionary() is called"); + boolean fromAPI = utils.isRequestFromAPI(request); + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + JsonNode root = mapper.readTree(request.getReader()); + BRMSController brmsController; + String userId = null; + if(fromAPI){ + brmsController = mapper.readValue(root.get(dictionaryFields).toString(), BRMSController.class); + userId = "API"; + }else{ + brmsController = mapper.readValue(root.get("brmsControllerDictionaryData").toString(), BRMSController.class); + userId = root.get(userid).textValue(); + } + UserInfo userInfo = utils.getUserInfo(userId); - List<Object> duplicateData = commonClassDao.checkDuplicateEntry(brmsController.getControllerName(), controllerName, BRMSController.class); - boolean duplicateflag = false; - if(!duplicateData.isEmpty()){ - BRMSController data = (BRMSController) duplicateData.get(0); - if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ - brmsController.setId(data.getId()); - }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || - (request.getParameter(operation) == null && (data.getId() != brmsController.getId()))){ - duplicateflag = true; - } - } - String responseString = null; - if(brmsController.getController()!=null && !("").equals(brmsController.getController().trim())){ - PEDependency dependency = null; - try{ - dependency = PolicyUtils.jsonStringToObject(brmsController.getController(), PEDependency.class); - }catch(Exception e){ - LOGGER.error(XACMLErrorConstants.ERROR_SCHEMA_INVALID + "wrong data given for BRMS Controller Dictionary : " + brmsController.getController(),e); - } - if(dependency==null){ - responseString = errorMessage; - }else{ - if(!duplicateflag){ - brmsController.setUserModifiedBy(userInfo); - if(brmsController.getId() == 0){ - brmsController.setUserCreatedBy(userInfo); - commonClassDao.save(brmsController); - }else{ - brmsController.setModifiedDate(new Date()); - commonClassDao.update(brmsController); - } - responseString = mapper.writeValueAsString(commonClassDao.getData(OnapName.class)); - }else{ - responseString = duplicateResponseString; - } - } - } - if(fromAPI){ - if (responseString!=null && !(duplicateResponseString).equals(responseString) && !(errorMessage).equals(responseString)) { - responseString = successMsg; - } - ModelAndView result = new ModelAndView(); - result.setViewName(responseString); - return result; - }else{ - utils.setResponseData(response, brmsControllerDatas, responseString); - } - } catch (Exception e){ - utils.setErrorResponseData(response, e); - } - return null; + List<Object> duplicateData = commonClassDao.checkDuplicateEntry(brmsController.getControllerName(), controllerName, BRMSController.class); + boolean duplicateflag = false; + if(!duplicateData.isEmpty()){ + BRMSController data = (BRMSController) duplicateData.get(0); + if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ + brmsController.setId(data.getId()); + }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || + (request.getParameter(operation) == null && (data.getId() != brmsController.getId()))){ + duplicateflag = true; + } + } + String responseString = null; + if(brmsController.getController()!=null && !("").equals(brmsController.getController().trim())){ + PEDependency dependency = null; + try{ + dependency = PolicyUtils.jsonStringToObject(brmsController.getController(), PEDependency.class); + }catch(Exception e){ + LOGGER.error(XACMLErrorConstants.ERROR_SCHEMA_INVALID + "wrong data given for BRMS Controller Dictionary : " + brmsController.getController(),e); + } + if(dependency==null){ + responseString = errorMessage; + }else{ + if(!duplicateflag){ + brmsController.setUserModifiedBy(userInfo); + if(brmsController.getId() == 0){ + brmsController.setUserCreatedBy(userInfo); + commonClassDao.save(brmsController); + }else{ + brmsController.setModifiedDate(new Date()); + commonClassDao.update(brmsController); + } + responseString = mapper.writeValueAsString(commonClassDao.getData(OnapName.class)); + }else{ + responseString = duplicateResponseString; + } + } + } + if(fromAPI){ + if (responseString!=null && !(duplicateResponseString).equals(responseString) && !(errorMessage).equals(responseString)) { + responseString = successMsg; + } + ModelAndView result = new ModelAndView(); + result.setViewName(responseString); + return result; + }else{ + utils.setResponseData(response, brmsControllerDatas, responseString); + } + } catch (Exception e){ + utils.setErrorResponseData(response, e); + } + return null; } @RequestMapping(value={"/brms_dictionary/remove_brmsController"}, method={RequestMethod.POST}) public void removeBRMSControllerDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.removeData(request, response, brmsControllerDatas, BRMSController.class); + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.removeData(request, response, brmsControllerDatas, BRMSController.class); } public BRMSDependency getDependencyDataByID(String dependencyName){ diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/ClosedLoopDictionaryController.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/ClosedLoopDictionaryController.java index 5d28c82e7..5e7113ad8 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/ClosedLoopDictionaryController.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/ClosedLoopDictionaryController.java @@ -53,250 +53,250 @@ import com.fasterxml.jackson.databind.ObjectMapper; @Controller public class ClosedLoopDictionaryController{ - private static CommonClassDao commonClassDao; - private static String vsclaction = "vsclaction"; - private static String operation = "operation"; - private static String vnftype = "vnftype"; - private static String pepName = "pepName"; - private static String varbindName = "varbindName"; - private static String serviceName = "serviceName"; - private static String siteName = "siteName"; - private static String dictionaryFields = "dictionaryFields"; - private static String duplicateResponseString = "Duplicate"; - private static String userid = "userid"; - private static String vsclActionDatas = "vsclActionDictionaryDatas"; - private static String vnfTypeDatas = "vnfTypeDictionaryDatas"; - private static String pepOptionDatas = "pepOptionsDictionaryDatas"; - private static String varbindDatas = "varbindDictionaryDatas"; - private static String closedLoopDatas = "closedLoopServiceDictionaryDatas"; - private static String closedLoopSiteDatas = "closedLoopSiteDictionaryDatas"; - - @Autowired - public ClosedLoopDictionaryController(CommonClassDao commonClassDao){ - ClosedLoopDictionaryController.commonClassDao = commonClassDao; - } - - public void setCommonClassDao(CommonClassDao commonClassDao){ - ClosedLoopDictionaryController.commonClassDao = commonClassDao; - } - - public static void setCommonClassDao(CommonClassDaoImpl commonClassDaoImpl) { + private static CommonClassDao commonClassDao; + private static String vsclaction = "vsclaction"; + private static String operation = "operation"; + private static String vnftype = "vnftype"; + private static String pepName = "pepName"; + private static String varbindName = "varbindName"; + private static String serviceName = "serviceName"; + private static String siteName = "siteName"; + private static String dictionaryFields = "dictionaryFields"; + private static String duplicateResponseString = "Duplicate"; + private static String userid = "userid"; + private static String vsclActionDatas = "vsclActionDictionaryDatas"; + private static String vnfTypeDatas = "vnfTypeDictionaryDatas"; + private static String pepOptionDatas = "pepOptionsDictionaryDatas"; + private static String varbindDatas = "varbindDictionaryDatas"; + private static String closedLoopDatas = "closedLoopServiceDictionaryDatas"; + private static String closedLoopSiteDatas = "closedLoopSiteDictionaryDatas"; + + @Autowired + public ClosedLoopDictionaryController(CommonClassDao commonClassDao){ + ClosedLoopDictionaryController.commonClassDao = commonClassDao; + } + + public void setCommonClassDao(CommonClassDao commonClassDao){ + ClosedLoopDictionaryController.commonClassDao = commonClassDao; + } + + public static void setCommonClassDao(CommonClassDaoImpl commonClassDaoImpl) { commonClassDao = commonClassDaoImpl; } - - public ClosedLoopDictionaryController(){ - super(); - } - - private DictionaryUtils getDictionaryUtilsInstance(){ - return DictionaryUtils.getDictionaryUtils(); - } - - @RequestMapping(value={"/get_VSCLActionDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getVSCLActionDictionaryByNameEntityData(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getDataByEntity(response, vsclActionDatas, vsclaction, VSCLAction.class); - } - - - @RequestMapping(value={"/get_VSCLActionData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getVSCLActionDictionaryEntityData(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getData(response, vsclActionDatas, VSCLAction.class); - } - - @RequestMapping(value={"/get_VNFTypeDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getVNFTypeDictionaryByNameEntityData(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getDataByEntity(response, vnfTypeDatas, vnftype, VNFType.class); - } - - @RequestMapping(value={"/get_VNFTypeData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getVNFTypeDictionaryEntityData(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getData(response, vnfTypeDatas, VNFType.class); - } - - @RequestMapping(value={"/get_PEPOptionsDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getPEPOptionsDictionaryByNameEntityData(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getDataByEntity(response, pepOptionDatas, pepName, PEPOptions.class); - } - - @RequestMapping(value={"/get_PEPOptionsData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getPEPOptionsDictionaryEntityData(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getData(response, pepOptionDatas, PEPOptions.class); - } - - @RequestMapping(value={"/get_VarbindDictionaryDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getVarbindDictionaryByNameEntityData(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getDataByEntity(response, varbindDatas, varbindName, VarbindDictionary.class); - } - - @RequestMapping(value={"/get_VarbindDictionaryData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getVarbindDictionaryEntityData(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getData(response, varbindDatas, VarbindDictionary.class); - } - - @RequestMapping(value={"/get_ClosedLoopServicesDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getClosedLoopServiceDictionaryByNameEntityData(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getDataByEntity(response, closedLoopDatas, serviceName, ClosedLoopD2Services.class); - } - - @RequestMapping(value={"/get_ClosedLoopServicesData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getClosedLoopServiceDictionaryEntityData(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getData(response, closedLoopDatas, ClosedLoopD2Services.class); - } - - @RequestMapping(value={"/get_ClosedLoopSiteDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getClosedLoopSiteDictionaryByNameEntityData(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getDataByEntity(response, closedLoopSiteDatas, siteName, ClosedLoopSite.class); - } - - @RequestMapping(value={"/get_ClosedLoopSiteData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getClosedLoopSiteDictionaryEntityData(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getData(response, closedLoopSiteDatas, ClosedLoopSite.class); - } - - @RequestMapping(value={"/cl_dictionary/save_vsclAction"}, method={RequestMethod.POST}) - public ModelAndView saveVSCLAction(HttpServletRequest request, HttpServletResponse response)throws IOException{ - DictionaryUtils utils = getDictionaryUtilsInstance(); - try { - boolean fromAPI = utils.isRequestFromAPI(request); - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - JsonNode root = mapper.readTree(request.getReader()); - VSCLAction vSCLAction; - String userId = null; - if (fromAPI) { - vSCLAction = mapper.readValue(root.get(dictionaryFields).toString(), VSCLAction.class); - userId = "API"; - } else { - vSCLAction = mapper.readValue(root.get("vsclActionDictionaryData").toString(), VSCLAction.class); - userId = root.get(userid).textValue(); - } - UserInfo userInfo = utils.getUserInfo(userId); - - List<Object> duplicateData = commonClassDao.checkDuplicateEntry(vSCLAction.getVsclaction(), vsclaction, VSCLAction.class); - boolean duplicateflag = false; - if(!duplicateData.isEmpty()){ - VSCLAction data = (VSCLAction) duplicateData.get(0); - if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ - vSCLAction.setId(data.getId()); - }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || - (request.getParameter(operation) == null && (data.getId() != vSCLAction.getId()))){ - duplicateflag = true; - } - } - String responseString = null; - if(!duplicateflag){ - vSCLAction.setUserModifiedBy(userInfo); - if(vSCLAction.getId() == 0){ - vSCLAction.setUserCreatedBy(userInfo); - commonClassDao.save(vSCLAction); - }else{ - vSCLAction.setModifiedDate(new Date()); - commonClassDao.update(vSCLAction); - } - responseString = mapper.writeValueAsString(commonClassDao.getData(VSCLAction.class)); - }else{ - responseString = duplicateResponseString; - } - - if(fromAPI){ - return utils.getResultForApi(responseString); - }else{ - utils.setResponseData(response, vsclActionDatas, responseString); - } - }catch(Exception e){ - utils.setErrorResponseData(response, e); - } - return null; - } - - @RequestMapping(value={"/cl_dictionary/remove_VsclAction"}, method={RequestMethod.POST}) - public void removeVSCLAction(HttpServletRequest request, HttpServletResponse response) throws IOException { - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.removeData(request, response, vsclActionDatas, OnapName.class); - } - - @RequestMapping(value={"/cl_dictionary/save_vnfType"}, method={RequestMethod.POST}) - public ModelAndView saveVnfType(HttpServletRequest request, HttpServletResponse response) throws IOException{ - DictionaryUtils utils = getDictionaryUtilsInstance(); - try { - boolean fromAPI = utils.isRequestFromAPI(request); - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - JsonNode root = mapper.readTree(request.getReader()); - VNFType vNFType; - String userId = null; - if (fromAPI) { - vNFType = mapper.readValue(root.get(dictionaryFields).toString(), VNFType.class); - userId = "API"; - } else { - vNFType = mapper.readValue(root.get("vnfTypeDictionaryData").toString(), VNFType.class); - userId = root.get(userid).textValue(); - } - UserInfo userInfo = utils.getUserInfo(userId); - - List<Object> duplicateData = commonClassDao.checkDuplicateEntry(vNFType.getVnftype(), vnftype, VNFType.class); - boolean duplicateflag = false; - if(!duplicateData.isEmpty()){ - VNFType data = (VNFType) duplicateData.get(0); - if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ - vNFType.setId(data.getId()); - }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || - (request.getParameter(operation) == null && (data.getId() != vNFType.getId()))){ - duplicateflag = true; - } - } - String responseString = null; - if(!duplicateflag){ - vNFType.setUserModifiedBy(userInfo); - if(vNFType.getId() == 0){ - vNFType.setUserCreatedBy(userInfo); - commonClassDao.save(vNFType); - }else{ - vNFType.setModifiedDate(new Date()); - commonClassDao.update(vNFType); - } - responseString = mapper.writeValueAsString(commonClassDao.getData(VNFType.class)); - }else{ - responseString = duplicateResponseString; - } - - if(fromAPI){ - return utils.getResultForApi(responseString); - }else{ - utils.setResponseData(response, vnfTypeDatas, responseString); - } - }catch(Exception e){ - utils.setErrorResponseData(response, e); - } - return null; - } - - @RequestMapping(value={"/cl_dictionary/remove_vnfType"}, method={RequestMethod.POST}) - public void removeVnfType(HttpServletRequest request, HttpServletResponse response) throws IOException { - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.removeData(request, response, vnfTypeDatas, VNFType.class); - } - - @RequestMapping(value={"/cl_dictionary/save_pepOptions"}, method={RequestMethod.POST}) - public ModelAndView savePEPOptions(HttpServletRequest request, HttpServletResponse response) throws IOException{ - DictionaryUtils utils = getDictionaryUtilsInstance(); - try { - boolean fromAPI = utils.isRequestFromAPI(request); - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - JsonNode root = mapper.readTree(request.getReader()); + + public ClosedLoopDictionaryController(){ + super(); + } + + private DictionaryUtils getDictionaryUtilsInstance(){ + return DictionaryUtils.getDictionaryUtils(); + } + + @RequestMapping(value={"/get_VSCLActionDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getVSCLActionDictionaryByNameEntityData(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getDataByEntity(response, vsclActionDatas, vsclaction, VSCLAction.class); + } + + + @RequestMapping(value={"/get_VSCLActionData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getVSCLActionDictionaryEntityData(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getData(response, vsclActionDatas, VSCLAction.class); + } + + @RequestMapping(value={"/get_VNFTypeDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getVNFTypeDictionaryByNameEntityData(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getDataByEntity(response, vnfTypeDatas, vnftype, VNFType.class); + } + + @RequestMapping(value={"/get_VNFTypeData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getVNFTypeDictionaryEntityData(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getData(response, vnfTypeDatas, VNFType.class); + } + + @RequestMapping(value={"/get_PEPOptionsDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getPEPOptionsDictionaryByNameEntityData(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getDataByEntity(response, pepOptionDatas, pepName, PEPOptions.class); + } + + @RequestMapping(value={"/get_PEPOptionsData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getPEPOptionsDictionaryEntityData(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getData(response, pepOptionDatas, PEPOptions.class); + } + + @RequestMapping(value={"/get_VarbindDictionaryDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getVarbindDictionaryByNameEntityData(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getDataByEntity(response, varbindDatas, varbindName, VarbindDictionary.class); + } + + @RequestMapping(value={"/get_VarbindDictionaryData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getVarbindDictionaryEntityData(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getData(response, varbindDatas, VarbindDictionary.class); + } + + @RequestMapping(value={"/get_ClosedLoopServicesDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getClosedLoopServiceDictionaryByNameEntityData(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getDataByEntity(response, closedLoopDatas, serviceName, ClosedLoopD2Services.class); + } + + @RequestMapping(value={"/get_ClosedLoopServicesData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getClosedLoopServiceDictionaryEntityData(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getData(response, closedLoopDatas, ClosedLoopD2Services.class); + } + + @RequestMapping(value={"/get_ClosedLoopSiteDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getClosedLoopSiteDictionaryByNameEntityData(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getDataByEntity(response, closedLoopSiteDatas, siteName, ClosedLoopSite.class); + } + + @RequestMapping(value={"/get_ClosedLoopSiteData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getClosedLoopSiteDictionaryEntityData(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getData(response, closedLoopSiteDatas, ClosedLoopSite.class); + } + + @RequestMapping(value={"/cl_dictionary/save_vsclAction"}, method={RequestMethod.POST}) + public ModelAndView saveVSCLAction(HttpServletRequest request, HttpServletResponse response)throws IOException{ + DictionaryUtils utils = getDictionaryUtilsInstance(); + try { + boolean fromAPI = utils.isRequestFromAPI(request); + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + JsonNode root = mapper.readTree(request.getReader()); + VSCLAction vSCLAction; + String userId = null; + if (fromAPI) { + vSCLAction = mapper.readValue(root.get(dictionaryFields).toString(), VSCLAction.class); + userId = "API"; + } else { + vSCLAction = mapper.readValue(root.get("vsclActionDictionaryData").toString(), VSCLAction.class); + userId = root.get(userid).textValue(); + } + UserInfo userInfo = utils.getUserInfo(userId); + + List<Object> duplicateData = commonClassDao.checkDuplicateEntry(vSCLAction.getVsclaction(), vsclaction, VSCLAction.class); + boolean duplicateflag = false; + if(!duplicateData.isEmpty()){ + VSCLAction data = (VSCLAction) duplicateData.get(0); + if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ + vSCLAction.setId(data.getId()); + }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || + (request.getParameter(operation) == null && (data.getId() != vSCLAction.getId()))){ + duplicateflag = true; + } + } + String responseString = null; + if(!duplicateflag){ + vSCLAction.setUserModifiedBy(userInfo); + if(vSCLAction.getId() == 0){ + vSCLAction.setUserCreatedBy(userInfo); + commonClassDao.save(vSCLAction); + }else{ + vSCLAction.setModifiedDate(new Date()); + commonClassDao.update(vSCLAction); + } + responseString = mapper.writeValueAsString(commonClassDao.getData(VSCLAction.class)); + }else{ + responseString = duplicateResponseString; + } + + if(fromAPI){ + return utils.getResultForApi(responseString); + }else{ + utils.setResponseData(response, vsclActionDatas, responseString); + } + }catch(Exception e){ + utils.setErrorResponseData(response, e); + } + return null; + } + + @RequestMapping(value={"/cl_dictionary/remove_VsclAction"}, method={RequestMethod.POST}) + public void removeVSCLAction(HttpServletRequest request, HttpServletResponse response) throws IOException { + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.removeData(request, response, vsclActionDatas, OnapName.class); + } + + @RequestMapping(value={"/cl_dictionary/save_vnfType"}, method={RequestMethod.POST}) + public ModelAndView saveVnfType(HttpServletRequest request, HttpServletResponse response) throws IOException{ + DictionaryUtils utils = getDictionaryUtilsInstance(); + try { + boolean fromAPI = utils.isRequestFromAPI(request); + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + JsonNode root = mapper.readTree(request.getReader()); + VNFType vNFType; + String userId = null; + if (fromAPI) { + vNFType = mapper.readValue(root.get(dictionaryFields).toString(), VNFType.class); + userId = "API"; + } else { + vNFType = mapper.readValue(root.get("vnfTypeDictionaryData").toString(), VNFType.class); + userId = root.get(userid).textValue(); + } + UserInfo userInfo = utils.getUserInfo(userId); + + List<Object> duplicateData = commonClassDao.checkDuplicateEntry(vNFType.getVnftype(), vnftype, VNFType.class); + boolean duplicateflag = false; + if(!duplicateData.isEmpty()){ + VNFType data = (VNFType) duplicateData.get(0); + if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ + vNFType.setId(data.getId()); + }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || + (request.getParameter(operation) == null && (data.getId() != vNFType.getId()))){ + duplicateflag = true; + } + } + String responseString = null; + if(!duplicateflag){ + vNFType.setUserModifiedBy(userInfo); + if(vNFType.getId() == 0){ + vNFType.setUserCreatedBy(userInfo); + commonClassDao.save(vNFType); + }else{ + vNFType.setModifiedDate(new Date()); + commonClassDao.update(vNFType); + } + responseString = mapper.writeValueAsString(commonClassDao.getData(VNFType.class)); + }else{ + responseString = duplicateResponseString; + } + + if(fromAPI){ + return utils.getResultForApi(responseString); + }else{ + utils.setResponseData(response, vnfTypeDatas, responseString); + } + }catch(Exception e){ + utils.setErrorResponseData(response, e); + } + return null; + } + + @RequestMapping(value={"/cl_dictionary/remove_vnfType"}, method={RequestMethod.POST}) + public void removeVnfType(HttpServletRequest request, HttpServletResponse response) throws IOException { + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.removeData(request, response, vnfTypeDatas, VNFType.class); + } + + @RequestMapping(value={"/cl_dictionary/save_pepOptions"}, method={RequestMethod.POST}) + public ModelAndView savePEPOptions(HttpServletRequest request, HttpServletResponse response) throws IOException{ + DictionaryUtils utils = getDictionaryUtilsInstance(); + try { + boolean fromAPI = utils.isRequestFromAPI(request); + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + JsonNode root = mapper.readTree(request.getReader()); PEPOptions pEPOptions; GridData gridData; String userId = null; @@ -305,240 +305,240 @@ public class ClosedLoopDictionaryController{ gridData = mapper.readValue(root.get(dictionaryFields).toString(), GridData.class); userId = "API"; }else{ - pEPOptions = mapper.readValue(root.get("pepOptionsDictionaryData").toString(), PEPOptions.class); - gridData = mapper.readValue(root.get("pepOptionsDictionaryData").toString(), GridData.class); - userId = root.get(userid).textValue(); + pEPOptions = mapper.readValue(root.get("pepOptionsDictionaryData").toString(), PEPOptions.class); + gridData = mapper.readValue(root.get("pepOptionsDictionaryData").toString(), GridData.class); + userId = root.get(userid).textValue(); } UserInfo userInfo = utils.getUserInfo(userId); - if(!gridData.getAttributes().isEmpty()){ - pEPOptions.setActions(utils.appendKeyValue(gridData.getAttributes(), ":#@", "=#@")); - } - - List<Object> duplicateData = commonClassDao.checkDuplicateEntry(pEPOptions.getPepName(), pepName, PEPOptions.class); - boolean duplicateflag = false; - if(!duplicateData.isEmpty()){ - PEPOptions data = (PEPOptions) duplicateData.get(0); - if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ - pEPOptions.setId(data.getId()); - }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || - (request.getParameter(operation) == null && (data.getId() != pEPOptions.getId()))){ - duplicateflag = true; - } - } - String responseString = null; - if(!duplicateflag){ - pEPOptions.setUserModifiedBy(userInfo); - if(pEPOptions.getId() == 0){ - pEPOptions.setUserCreatedBy(userInfo); - commonClassDao.save(pEPOptions); - }else{ - pEPOptions.setModifiedDate(new Date()); - commonClassDao.update(pEPOptions); - } - responseString = mapper.writeValueAsString(commonClassDao.getData(PEPOptions.class)); - }else{ - responseString = duplicateResponseString; - } - - if(fromAPI){ - return utils.getResultForApi(responseString); - }else{ - utils.setResponseData(response, pepOptionDatas, responseString); - } + if(!gridData.getAttributes().isEmpty()){ + pEPOptions.setActions(utils.appendKeyValue(gridData.getAttributes(), ":#@", "=#@")); + } + + List<Object> duplicateData = commonClassDao.checkDuplicateEntry(pEPOptions.getPepName(), pepName, PEPOptions.class); + boolean duplicateflag = false; + if(!duplicateData.isEmpty()){ + PEPOptions data = (PEPOptions) duplicateData.get(0); + if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ + pEPOptions.setId(data.getId()); + }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || + (request.getParameter(operation) == null && (data.getId() != pEPOptions.getId()))){ + duplicateflag = true; + } + } + String responseString = null; + if(!duplicateflag){ + pEPOptions.setUserModifiedBy(userInfo); + if(pEPOptions.getId() == 0){ + pEPOptions.setUserCreatedBy(userInfo); + commonClassDao.save(pEPOptions); + }else{ + pEPOptions.setModifiedDate(new Date()); + commonClassDao.update(pEPOptions); + } + responseString = mapper.writeValueAsString(commonClassDao.getData(PEPOptions.class)); + }else{ + responseString = duplicateResponseString; + } + + if(fromAPI){ + return utils.getResultForApi(responseString); + }else{ + utils.setResponseData(response, pepOptionDatas, responseString); + } }catch(Exception e){ - utils.setErrorResponseData(response, e); - } - return null; - } - - @RequestMapping(value={"/cl_dictionary/remove_pepOptions"}, method={RequestMethod.POST}) - public void removePEPOptions(HttpServletRequest request, HttpServletResponse response) throws IOException { - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.removeData(request, response, pepOptionDatas, VNFType.class); - } - - @RequestMapping(value={"/cl_dictionary/save_service"}, method={RequestMethod.POST}) - public ModelAndView saveServiceType(HttpServletRequest request, HttpServletResponse response) throws IOException{ - DictionaryUtils utils = getDictionaryUtilsInstance(); - try { - boolean fromAPI = utils.isRequestFromAPI(request); - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - JsonNode root = mapper.readTree(request.getReader()); + utils.setErrorResponseData(response, e); + } + return null; + } + + @RequestMapping(value={"/cl_dictionary/remove_pepOptions"}, method={RequestMethod.POST}) + public void removePEPOptions(HttpServletRequest request, HttpServletResponse response) throws IOException { + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.removeData(request, response, pepOptionDatas, VNFType.class); + } + + @RequestMapping(value={"/cl_dictionary/save_service"}, method={RequestMethod.POST}) + public ModelAndView saveServiceType(HttpServletRequest request, HttpServletResponse response) throws IOException{ + DictionaryUtils utils = getDictionaryUtilsInstance(); + try { + boolean fromAPI = utils.isRequestFromAPI(request); + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + JsonNode root = mapper.readTree(request.getReader()); ClosedLoopD2Services serviceData; String userId = null; if(fromAPI){ serviceData = mapper.readValue(root.get(dictionaryFields).toString(), ClosedLoopD2Services.class); userId = "API"; } else { - serviceData = mapper.readValue(root.get("closedLoopServiceDictionaryData").toString(), ClosedLoopD2Services.class); - userId = root.get(userid).textValue(); + serviceData = mapper.readValue(root.get("closedLoopServiceDictionaryData").toString(), ClosedLoopD2Services.class); + userId = root.get(userid).textValue(); } UserInfo userInfo = utils.getUserInfo(userId); - - List<Object> duplicateData = commonClassDao.checkDuplicateEntry(serviceData.getServiceName(), serviceName, ClosedLoopD2Services.class); - boolean duplicateflag = false; - if(!duplicateData.isEmpty()){ - ClosedLoopD2Services data = (ClosedLoopD2Services) duplicateData.get(0); - if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ - serviceData.setId(data.getId()); - }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || - (request.getParameter(operation) == null && (data.getId() != serviceData.getId()))){ - duplicateflag = true; - } - } - String responseString = null; - if(!duplicateflag){ - serviceData.setUserModifiedBy(userInfo); - if(serviceData.getId() == 0){ - serviceData.setUserCreatedBy(userInfo); - commonClassDao.save(serviceData); - }else{ - serviceData.setModifiedDate(new Date()); - commonClassDao.update(serviceData); - } - responseString = mapper.writeValueAsString(commonClassDao.getData(ClosedLoopD2Services.class)); - }else{ - responseString = duplicateResponseString; - } + + List<Object> duplicateData = commonClassDao.checkDuplicateEntry(serviceData.getServiceName(), serviceName, ClosedLoopD2Services.class); + boolean duplicateflag = false; + if(!duplicateData.isEmpty()){ + ClosedLoopD2Services data = (ClosedLoopD2Services) duplicateData.get(0); + if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ + serviceData.setId(data.getId()); + }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || + (request.getParameter(operation) == null && (data.getId() != serviceData.getId()))){ + duplicateflag = true; + } + } + String responseString = null; + if(!duplicateflag){ + serviceData.setUserModifiedBy(userInfo); + if(serviceData.getId() == 0){ + serviceData.setUserCreatedBy(userInfo); + commonClassDao.save(serviceData); + }else{ + serviceData.setModifiedDate(new Date()); + commonClassDao.update(serviceData); + } + responseString = mapper.writeValueAsString(commonClassDao.getData(ClosedLoopD2Services.class)); + }else{ + responseString = duplicateResponseString; + } if(fromAPI){ - return utils.getResultForApi(responseString); - }else{ - utils.setResponseData(response, closedLoopDatas, responseString); - } + return utils.getResultForApi(responseString); + }else{ + utils.setResponseData(response, closedLoopDatas, responseString); + } }catch(Exception e){ - utils.setErrorResponseData(response, e); - } - return null; - } - - @RequestMapping(value={"/cl_dictionary/remove_Service"}, method={RequestMethod.POST}) - public void removeServiceType(HttpServletRequest request, HttpServletResponse response) throws IOException { - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.removeData(request, response, closedLoopDatas, VNFType.class); - } - - @RequestMapping(value={"/cl_dictionary/save_siteName"}, method={RequestMethod.POST}) - public ModelAndView saveSiteType(HttpServletRequest request, HttpServletResponse response) throws IOException{ - DictionaryUtils utils = getDictionaryUtilsInstance(); - try { - boolean fromAPI = utils.isRequestFromAPI(request); - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - JsonNode root = mapper.readTree(request.getReader()); + utils.setErrorResponseData(response, e); + } + return null; + } + + @RequestMapping(value={"/cl_dictionary/remove_Service"}, method={RequestMethod.POST}) + public void removeServiceType(HttpServletRequest request, HttpServletResponse response) throws IOException { + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.removeData(request, response, closedLoopDatas, VNFType.class); + } + + @RequestMapping(value={"/cl_dictionary/save_siteName"}, method={RequestMethod.POST}) + public ModelAndView saveSiteType(HttpServletRequest request, HttpServletResponse response) throws IOException{ + DictionaryUtils utils = getDictionaryUtilsInstance(); + try { + boolean fromAPI = utils.isRequestFromAPI(request); + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + JsonNode root = mapper.readTree(request.getReader()); ClosedLoopSite siteData; String userId = null; if(fromAPI){ siteData = mapper.readValue(root.get(dictionaryFields).toString(), ClosedLoopSite.class); userId = "API"; }else{ - siteData = mapper.readValue(root.get("closedLoopSiteDictionaryData").toString(), ClosedLoopSite.class); - userId = root.get(userid).textValue(); + siteData = mapper.readValue(root.get("closedLoopSiteDictionaryData").toString(), ClosedLoopSite.class); + userId = root.get(userid).textValue(); } UserInfo userInfo = utils.getUserInfo(userId); List<Object> duplicateData = commonClassDao.checkDuplicateEntry(siteData.getSiteName(), siteName, ClosedLoopSite.class); - boolean duplicateflag = false; - if(!duplicateData.isEmpty()){ - ClosedLoopSite data = (ClosedLoopSite) duplicateData.get(0); - if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ - siteData.setId(data.getId()); - }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || - (request.getParameter(operation) == null && (data.getId() != siteData.getId()))){ - duplicateflag = true; - } - } + boolean duplicateflag = false; + if(!duplicateData.isEmpty()){ + ClosedLoopSite data = (ClosedLoopSite) duplicateData.get(0); + if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ + siteData.setId(data.getId()); + }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || + (request.getParameter(operation) == null && (data.getId() != siteData.getId()))){ + duplicateflag = true; + } + } String responseString = null; - if(!duplicateflag){ - siteData.setUserModifiedBy(userInfo); - if(siteData.getId() == 0){ - siteData.setUserCreatedBy(userInfo); - commonClassDao.save(siteData); - }else{ - siteData.setModifiedDate(new Date()); - commonClassDao.update(siteData); - } - responseString = mapper.writeValueAsString(commonClassDao.getData(ClosedLoopSite.class)); - }else{ - responseString = duplicateResponseString; - } + if(!duplicateflag){ + siteData.setUserModifiedBy(userInfo); + if(siteData.getId() == 0){ + siteData.setUserCreatedBy(userInfo); + commonClassDao.save(siteData); + }else{ + siteData.setModifiedDate(new Date()); + commonClassDao.update(siteData); + } + responseString = mapper.writeValueAsString(commonClassDao.getData(ClosedLoopSite.class)); + }else{ + responseString = duplicateResponseString; + } if(fromAPI){ - return utils.getResultForApi(responseString); - }else{ - utils.setResponseData(response, closedLoopSiteDatas, responseString); - } + return utils.getResultForApi(responseString); + }else{ + utils.setResponseData(response, closedLoopSiteDatas, responseString); + } }catch (Exception e){ - utils.setErrorResponseData(response, e); - } - return null; - } - - @RequestMapping(value={"/cl_dictionary/remove_site"}, method={RequestMethod.POST}) - public void removeSiteType(HttpServletRequest request, HttpServletResponse response) throws IOException { - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.removeData(request, response, closedLoopSiteDatas, VNFType.class); - } - - @RequestMapping(value={"/cl_dictionary/save_varbind"}, method={RequestMethod.POST}) - public ModelAndView saveVarbind(HttpServletRequest request, HttpServletResponse response) throws IOException{ - DictionaryUtils utils = getDictionaryUtilsInstance(); - try { - boolean fromAPI = utils.isRequestFromAPI(request); - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - JsonNode root = mapper.readTree(request.getReader()); + utils.setErrorResponseData(response, e); + } + return null; + } + + @RequestMapping(value={"/cl_dictionary/remove_site"}, method={RequestMethod.POST}) + public void removeSiteType(HttpServletRequest request, HttpServletResponse response) throws IOException { + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.removeData(request, response, closedLoopSiteDatas, VNFType.class); + } + + @RequestMapping(value={"/cl_dictionary/save_varbind"}, method={RequestMethod.POST}) + public ModelAndView saveVarbind(HttpServletRequest request, HttpServletResponse response) throws IOException{ + DictionaryUtils utils = getDictionaryUtilsInstance(); + try { + boolean fromAPI = utils.isRequestFromAPI(request); + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + JsonNode root = mapper.readTree(request.getReader()); VarbindDictionary varbindDictionary; String userId = null; if(fromAPI){ varbindDictionary = mapper.readValue(root.get(dictionaryFields).toString(), VarbindDictionary.class); userId = "API"; }else{ - varbindDictionary = mapper.readValue(root.get("varbindDictionaryData").toString(), VarbindDictionary.class); - userId = root.get(userid).textValue(); + varbindDictionary = mapper.readValue(root.get("varbindDictionaryData").toString(), VarbindDictionary.class); + userId = root.get(userid).textValue(); } UserInfo userInfo = utils.getUserInfo(userId); - - List<Object> duplicateData = commonClassDao.checkDuplicateEntry(varbindDictionary.getVarbindName(), varbindName, VarbindDictionary.class); - boolean duplicateflag = false; - if(!duplicateData.isEmpty()){ - VarbindDictionary data = (VarbindDictionary) duplicateData.get(0); - if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ - varbindDictionary.setId(data.getId()); - }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || - (request.getParameter(operation) == null && (data.getId() != varbindDictionary.getId()))){ - duplicateflag = true; - } - } - - String responseString = null; - if(!duplicateflag){ - varbindDictionary.setUserModifiedBy(userInfo); - if(varbindDictionary.getId() == 0){ - varbindDictionary.setUserCreatedBy(userInfo); - commonClassDao.save(varbindDictionary); - }else{ - varbindDictionary.setModifiedDate(new Date()); - commonClassDao.update(varbindDictionary); - } - responseString = mapper.writeValueAsString(commonClassDao.getData(VarbindDictionary.class)); - }else{ - responseString = duplicateResponseString; - } + + List<Object> duplicateData = commonClassDao.checkDuplicateEntry(varbindDictionary.getVarbindName(), varbindName, VarbindDictionary.class); + boolean duplicateflag = false; + if(!duplicateData.isEmpty()){ + VarbindDictionary data = (VarbindDictionary) duplicateData.get(0); + if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ + varbindDictionary.setId(data.getId()); + }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || + (request.getParameter(operation) == null && (data.getId() != varbindDictionary.getId()))){ + duplicateflag = true; + } + } + + String responseString = null; + if(!duplicateflag){ + varbindDictionary.setUserModifiedBy(userInfo); + if(varbindDictionary.getId() == 0){ + varbindDictionary.setUserCreatedBy(userInfo); + commonClassDao.save(varbindDictionary); + }else{ + varbindDictionary.setModifiedDate(new Date()); + commonClassDao.update(varbindDictionary); + } + responseString = mapper.writeValueAsString(commonClassDao.getData(VarbindDictionary.class)); + }else{ + responseString = duplicateResponseString; + } if(fromAPI){ - return utils.getResultForApi(responseString); - }else{ - utils.setResponseData(response, varbindDatas, responseString); - } + return utils.getResultForApi(responseString); + }else{ + utils.setResponseData(response, varbindDatas, responseString); + } }catch (Exception e){ - utils.setErrorResponseData(response, e); - } - return null; - } - - @RequestMapping(value={"/cl_dictionary/remove_varbindDict"}, method={RequestMethod.POST}) - public void removeVarbind(HttpServletRequest request, HttpServletResponse response) throws IOException{ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.removeData(request, response, varbindDatas, VNFType.class); - } + utils.setErrorResponseData(response, e); + } + return null; + } + + @RequestMapping(value={"/cl_dictionary/remove_varbindDict"}, method={RequestMethod.POST}) + public void removeVarbind(HttpServletRequest request, HttpServletResponse response) throws IOException{ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.removeData(request, response, varbindDatas, VNFType.class); + } }
\ No newline at end of file diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/DecisionPolicyDictionaryController.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/DecisionPolicyDictionaryController.java index 6e68d78d9..738a808f6 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/DecisionPolicyDictionaryController.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/DecisionPolicyDictionaryController.java @@ -46,187 +46,187 @@ import com.fasterxml.jackson.databind.ObjectMapper; @Controller public class DecisionPolicyDictionaryController { - - private static CommonClassDao commonClassDao; - private static String xacmlId = "xacmlId"; - private static String bbID = "bbid"; - private static String operation = "operation"; - private static String duplicateResponseString = "Duplicate"; - private static String settingDatas = "settingsDictionaryDatas"; - private static String rainDayDatas = "rainyDayDictionaryDatas"; - private static String dictionaryFields ="dictionaryFields"; - - @Autowired - public DecisionPolicyDictionaryController(CommonClassDao commonClassDao){ - DecisionPolicyDictionaryController.commonClassDao = commonClassDao; - } - - public DecisionPolicyDictionaryController(){ - super(); - } - - private DictionaryUtils getDictionaryUtilsInstance(){ - return DictionaryUtils.getDictionaryUtils(); - } - - @RequestMapping(value={"/get_SettingsDictionaryDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getSettingsDictionaryByNameEntityData(HttpServletRequest request, HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getDataByEntity(response, settingDatas, xacmlId, DecisionSettings.class); - } - - - @RequestMapping(value={"/get_SettingsDictionaryData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getSettingsDictionaryEntityData(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getData(response, settingDatas, DecisionSettings.class); - } - - @RequestMapping(value={"/decision_dictionary/save_Settings"}, method={RequestMethod.POST}) - public ModelAndView saveSettingsDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - DictionaryUtils utils = getDictionaryUtilsInstance(); - try { - boolean fromAPI = utils.isRequestFromAPI(request); - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - JsonNode root = mapper.readTree(request.getReader()); - DecisionSettings decisionSettings; - String userId = null; - - if(fromAPI){ - decisionSettings = mapper.readValue(root.get(dictionaryFields).toString(), DecisionSettings.class); - userId = "API"; - }else{ - decisionSettings = mapper.readValue(root.get("settingsDictionaryData").toString(), DecisionSettings.class); - userId = root.get("userid").textValue(); - } - UserInfo userInfo = utils.getUserInfo(userId); - List<Object> duplicateData = commonClassDao.checkDuplicateEntry(decisionSettings.getXacmlId(), xacmlId, DecisionSettings.class); - boolean duplicateflag = false; - if(!duplicateData.isEmpty()){ - DecisionSettings data = (DecisionSettings) duplicateData.get(0); - if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ - decisionSettings.setId(data.getId()); - }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || - (request.getParameter(operation) == null && (data.getId() != decisionSettings.getId()))){ - duplicateflag = true; - } - } - if(decisionSettings.getDatatypeBean().getShortName() != null){ - String datatype = decisionSettings.getDatatypeBean().getShortName(); - decisionSettings.setDatatypeBean(utils.getDataType(datatype)); - } - String responseString = null; - if(!duplicateflag){ - decisionSettings.setUserModifiedBy(userInfo); - if(decisionSettings.getId() == 0){ - decisionSettings.setUserCreatedBy(userInfo); - commonClassDao.save(decisionSettings); - }else{ - decisionSettings.setModifiedDate(new Date()); - commonClassDao.update(decisionSettings); - } - responseString = mapper.writeValueAsString(commonClassDao.getData(DecisionSettings.class)); - }else{ - responseString = duplicateResponseString; - } - if(fromAPI){ - return utils.getResultForApi(responseString); - }else{ - utils.setResponseData(response, settingDatas, responseString); - } - }catch (Exception e){ - utils.setErrorResponseData(response, e); - } - return null; - } - - @RequestMapping(value={"/settings_dictionary/remove_settings"}, method={RequestMethod.POST}) - public void removeSettingsDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.removeData(request, response, settingDatas, DecisionSettings.class); - } - - @RequestMapping(value={"/get_RainyDayDictionaryDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getRainyDayDictionaryByNameEntityData(HttpServletRequest request, HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getDataByEntity(response, rainDayDatas, bbID, RainyDayTreatments.class); - } - - @RequestMapping(value={"/get_RainyDayDictionaryData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getRainyDayDictionaryEntityData(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getData(response, rainDayDatas, RainyDayTreatments.class); - } - - @RequestMapping(value={"/decision_dictionary/save_RainyDay"}, method={RequestMethod.POST}) - public ModelAndView saveRainyDayDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - DictionaryUtils utils = getDictionaryUtilsInstance(); - try { - boolean fromAPI = utils.isRequestFromAPI(request); - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - JsonNode root = mapper.readTree(request.getReader()); - RainyDayTreatments decisionRainyDay; + + private static CommonClassDao commonClassDao; + private static String xacmlId = "xacmlId"; + private static String bbID = "bbid"; + private static String operation = "operation"; + private static String duplicateResponseString = "Duplicate"; + private static String settingDatas = "settingsDictionaryDatas"; + private static String rainDayDatas = "rainyDayDictionaryDatas"; + private static String dictionaryFields ="dictionaryFields"; + + @Autowired + public DecisionPolicyDictionaryController(CommonClassDao commonClassDao){ + DecisionPolicyDictionaryController.commonClassDao = commonClassDao; + } + + public DecisionPolicyDictionaryController(){ + super(); + } + + private DictionaryUtils getDictionaryUtilsInstance(){ + return DictionaryUtils.getDictionaryUtils(); + } + + @RequestMapping(value={"/get_SettingsDictionaryDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getSettingsDictionaryByNameEntityData(HttpServletRequest request, HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getDataByEntity(response, settingDatas, xacmlId, DecisionSettings.class); + } + + + @RequestMapping(value={"/get_SettingsDictionaryData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getSettingsDictionaryEntityData(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getData(response, settingDatas, DecisionSettings.class); + } + + @RequestMapping(value={"/decision_dictionary/save_Settings"}, method={RequestMethod.POST}) + public ModelAndView saveSettingsDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + DictionaryUtils utils = getDictionaryUtilsInstance(); + try { + boolean fromAPI = utils.isRequestFromAPI(request); + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + JsonNode root = mapper.readTree(request.getReader()); + DecisionSettings decisionSettings; + String userId = null; + + if(fromAPI){ + decisionSettings = mapper.readValue(root.get(dictionaryFields).toString(), DecisionSettings.class); + userId = "API"; + }else{ + decisionSettings = mapper.readValue(root.get("settingsDictionaryData").toString(), DecisionSettings.class); + userId = root.get("userid").textValue(); + } + UserInfo userInfo = utils.getUserInfo(userId); + List<Object> duplicateData = commonClassDao.checkDuplicateEntry(decisionSettings.getXacmlId(), xacmlId, DecisionSettings.class); + boolean duplicateflag = false; + if(!duplicateData.isEmpty()){ + DecisionSettings data = (DecisionSettings) duplicateData.get(0); + if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ + decisionSettings.setId(data.getId()); + }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || + (request.getParameter(operation) == null && (data.getId() != decisionSettings.getId()))){ + duplicateflag = true; + } + } + if(decisionSettings.getDatatypeBean().getShortName() != null){ + String datatype = decisionSettings.getDatatypeBean().getShortName(); + decisionSettings.setDatatypeBean(utils.getDataType(datatype)); + } + String responseString = null; + if(!duplicateflag){ + decisionSettings.setUserModifiedBy(userInfo); + if(decisionSettings.getId() == 0){ + decisionSettings.setUserCreatedBy(userInfo); + commonClassDao.save(decisionSettings); + }else{ + decisionSettings.setModifiedDate(new Date()); + commonClassDao.update(decisionSettings); + } + responseString = mapper.writeValueAsString(commonClassDao.getData(DecisionSettings.class)); + }else{ + responseString = duplicateResponseString; + } + if(fromAPI){ + return utils.getResultForApi(responseString); + }else{ + utils.setResponseData(response, settingDatas, responseString); + } + }catch (Exception e){ + utils.setErrorResponseData(response, e); + } + return null; + } + + @RequestMapping(value={"/settings_dictionary/remove_settings"}, method={RequestMethod.POST}) + public void removeSettingsDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.removeData(request, response, settingDatas, DecisionSettings.class); + } + + @RequestMapping(value={"/get_RainyDayDictionaryDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getRainyDayDictionaryByNameEntityData(HttpServletRequest request, HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getDataByEntity(response, rainDayDatas, bbID, RainyDayTreatments.class); + } + + @RequestMapping(value={"/get_RainyDayDictionaryData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getRainyDayDictionaryEntityData(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getData(response, rainDayDatas, RainyDayTreatments.class); + } + + @RequestMapping(value={"/decision_dictionary/save_RainyDay"}, method={RequestMethod.POST}) + public ModelAndView saveRainyDayDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + DictionaryUtils utils = getDictionaryUtilsInstance(); + try { + boolean fromAPI = utils.isRequestFromAPI(request); + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + JsonNode root = mapper.readTree(request.getReader()); + RainyDayTreatments decisionRainyDay; TreatmentValues treatmentsData = null; if(fromAPI){ - decisionRainyDay = mapper.readValue(root.get(dictionaryFields).toString(), RainyDayTreatments.class); - treatmentsData = mapper.readValue(root.get(dictionaryFields).toString(), TreatmentValues.class); + decisionRainyDay = mapper.readValue(root.get(dictionaryFields).toString(), RainyDayTreatments.class); + treatmentsData = mapper.readValue(root.get(dictionaryFields).toString(), TreatmentValues.class); + }else{ + decisionRainyDay = mapper.readValue(root.get("rainyDayDictionaryData").toString(), RainyDayTreatments.class); + treatmentsData = mapper.readValue(root.get("rainyDayDictionaryData").toString(), TreatmentValues.class); + } + decisionRainyDay.setTreatments(utils.appendKey(treatmentsData.getUserDataTypeValues(), "treatment", ",")); + + List<Object> duplicateData = commonClassDao.checkDuplicateEntry(decisionRainyDay.getBbid()+":"+decisionRainyDay.getWorkstep(), "bbid:workstep", RainyDayTreatments.class); + boolean duplicateflag = false; + if(!duplicateData.isEmpty()){ + RainyDayTreatments data = (RainyDayTreatments) duplicateData.get(0); + if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ + decisionRainyDay.setId(data.getId()); + }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || + (request.getParameter(operation) == null && (data.getId() != decisionRainyDay.getId()))){ + duplicateflag = true; + } + } + String responseString = null; + if(!duplicateflag){ + if(decisionRainyDay.getId() == 0){ + commonClassDao.save(decisionRainyDay); + }else{ + commonClassDao.update(decisionRainyDay); + } + responseString = mapper.writeValueAsString(commonClassDao.getData(RainyDayTreatments.class)); + }else{ + responseString = duplicateResponseString; + } + if(fromAPI){ + return utils.getResultForApi(responseString); }else{ - decisionRainyDay = mapper.readValue(root.get("rainyDayDictionaryData").toString(), RainyDayTreatments.class); - treatmentsData = mapper.readValue(root.get("rainyDayDictionaryData").toString(), TreatmentValues.class); + utils.setResponseData(response, rainDayDatas, responseString); } - decisionRainyDay.setTreatments(utils.appendKey(treatmentsData.getUserDataTypeValues(), "treatment", ",")); - - List<Object> duplicateData = commonClassDao.checkDuplicateEntry(decisionRainyDay.getBbid()+":"+decisionRainyDay.getWorkstep(), "bbid:workstep", RainyDayTreatments.class); - boolean duplicateflag = false; - if(!duplicateData.isEmpty()){ - RainyDayTreatments data = (RainyDayTreatments) duplicateData.get(0); - if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ - decisionRainyDay.setId(data.getId()); - }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || - (request.getParameter(operation) == null && (data.getId() != decisionRainyDay.getId()))){ - duplicateflag = true; - } - } - String responseString = null; - if(!duplicateflag){ - if(decisionRainyDay.getId() == 0){ - commonClassDao.save(decisionRainyDay); - }else{ - commonClassDao.update(decisionRainyDay); - } - responseString = mapper.writeValueAsString(commonClassDao.getData(RainyDayTreatments.class)); - }else{ - responseString = duplicateResponseString; - } - if(fromAPI){ - return utils.getResultForApi(responseString); - }else{ - utils.setResponseData(response, rainDayDatas, responseString); - } }catch (Exception e){ - utils.setErrorResponseData(response, e); - } - return null; - } - - @RequestMapping(value={"/decision_dictionary/remove_rainyDay"}, method={RequestMethod.POST}) - public void removeRainyDayDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.removeData(request, response, rainDayDatas, RainyDayTreatments.class); - } - + utils.setErrorResponseData(response, e); + } + return null; + } + + @RequestMapping(value={"/decision_dictionary/remove_rainyDay"}, method={RequestMethod.POST}) + public void removeRainyDayDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.removeData(request, response, rainDayDatas, RainyDayTreatments.class); + } + } class TreatmentValues { - private List<Object> userDataTypeValues = new ArrayList<>(); + private List<Object> userDataTypeValues = new ArrayList<>(); - public List<Object> getUserDataTypeValues() { - return userDataTypeValues; - } + public List<Object> getUserDataTypeValues() { + return userDataTypeValues; + } - public void setUserDataTypeValues(List<Object> userDataTypeValues) { - this.userDataTypeValues = userDataTypeValues; - } + public void setUserDataTypeValues(List<Object> userDataTypeValues) { + this.userDataTypeValues = userDataTypeValues; + } } diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/DescriptiveDictionaryController.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/DescriptiveDictionaryController.java index db710961f..a1d1bc8ff 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/DescriptiveDictionaryController.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/DescriptiveDictionaryController.java @@ -45,102 +45,102 @@ import com.fasterxml.jackson.databind.ObjectMapper; @Controller public class DescriptiveDictionaryController { - - private static CommonClassDao commonClassDao; - private static String operation = "operation"; - private static String dScopeName = "descriptiveScopeName"; - private static String descriptiveDatas = "descriptiveScopeDictionaryDatas"; - - @Autowired - public DescriptiveDictionaryController(CommonClassDao commonClassDao){ - DescriptiveDictionaryController.commonClassDao = commonClassDao; - } - - public void setCommonClassDao(CommonClassDao commonClassDao){ - DescriptiveDictionaryController.commonClassDao = commonClassDao; - } - - public DescriptiveDictionaryController(){ - super(); - } - private DictionaryUtils getDictionaryUtilsInstance(){ - return DictionaryUtils.getDictionaryUtils(); - } - - @RequestMapping(value={"/get_DescriptiveScopeByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getDescriptiveDictionaryByNameEntityData(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getDataByEntity(response, descriptiveDatas, dScopeName, DescriptiveScope.class); - } - - @RequestMapping(value={"/get_DescriptiveScope"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getDescriptiveDictionaryEntityData(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getData(response, descriptiveDatas, DescriptiveScope.class); - } - - @RequestMapping(value={"/descriptive_dictionary/save_descriptive"}, method={RequestMethod.POST}) - public ModelAndView saveDescriptiveDictionary(HttpServletRequest request, HttpServletResponse response)throws IOException{ - DictionaryUtils utils = getDictionaryUtilsInstance(); - try { - boolean fromAPI = utils.isRequestFromAPI(request); - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - JsonNode root = mapper.readTree(request.getReader()); - DescriptiveScope descriptiveScope; - GridData data; - String userId = null; - if(fromAPI){ - descriptiveScope = mapper.readValue(root.get("dictionaryFields").toString(), DescriptiveScope.class); - data = mapper.readValue(root.get("dictionaryFields").toString(), GridData.class); - userId = "API"; - }else{ - descriptiveScope = mapper.readValue(root.get("descriptiveScopeDictionaryData").toString(), DescriptiveScope.class); - data = mapper.readValue(root.get("descriptiveScopeDictionaryData").toString(), GridData.class); - userId = root.get("userid").textValue(); - } - descriptiveScope.setSearch(utils.appendKeyValue(data.getAttributes(), "AND", ":")); - UserInfo userInfo = utils.getUserInfo(userId); - List<Object> duplicateData = commonClassDao.checkDuplicateEntry(descriptiveScope.getScopeName(), dScopeName, DescriptiveScope.class); - boolean duplicateflag = false; - if(!duplicateData.isEmpty()){ - DescriptiveScope data1 = (DescriptiveScope) duplicateData.get(0); - if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ - descriptiveScope.setId(data1.getId()); - }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || - (request.getParameter(operation) == null && (data1.getId() != descriptiveScope.getId()))){ - duplicateflag = true; - } - } - String responseString = null; - if(!duplicateflag){ - descriptiveScope.setUserModifiedBy(userInfo); - if(descriptiveScope.getId() == 0){ - descriptiveScope.setUserCreatedBy(userInfo); - commonClassDao.save(descriptiveScope); - }else{ - descriptiveScope.setModifiedDate(new Date()); - commonClassDao.update(descriptiveScope); - } - responseString = mapper.writeValueAsString(commonClassDao.getData(DescriptiveScope.class)); - }else{ - responseString = "Duplicate"; - } - if(fromAPI){ - return utils.getResultForApi(responseString); - }else{ - utils.setResponseData(response, descriptiveDatas, responseString); - } - }catch (Exception e){ - utils.setErrorResponseData(response, e); - } - return null; - } + private static CommonClassDao commonClassDao; + private static String operation = "operation"; + private static String dScopeName = "descriptiveScopeName"; + private static String descriptiveDatas = "descriptiveScopeDictionaryDatas"; - @RequestMapping(value={"/descriptive_dictionary/remove_descriptiveScope"}, method={RequestMethod.POST}) - public void removeDescriptiveDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.removeData(request, response, descriptiveDatas, DescriptiveScope.class); - } + @Autowired + public DescriptiveDictionaryController(CommonClassDao commonClassDao){ + DescriptiveDictionaryController.commonClassDao = commonClassDao; + } + + public void setCommonClassDao(CommonClassDao commonClassDao){ + DescriptiveDictionaryController.commonClassDao = commonClassDao; + } + + public DescriptiveDictionaryController(){ + super(); + } + + private DictionaryUtils getDictionaryUtilsInstance(){ + return DictionaryUtils.getDictionaryUtils(); + } + + @RequestMapping(value={"/get_DescriptiveScopeByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getDescriptiveDictionaryByNameEntityData(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getDataByEntity(response, descriptiveDatas, dScopeName, DescriptiveScope.class); + } + + @RequestMapping(value={"/get_DescriptiveScope"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getDescriptiveDictionaryEntityData(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getData(response, descriptiveDatas, DescriptiveScope.class); + } + + @RequestMapping(value={"/descriptive_dictionary/save_descriptive"}, method={RequestMethod.POST}) + public ModelAndView saveDescriptiveDictionary(HttpServletRequest request, HttpServletResponse response)throws IOException{ + DictionaryUtils utils = getDictionaryUtilsInstance(); + try { + boolean fromAPI = utils.isRequestFromAPI(request); + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + JsonNode root = mapper.readTree(request.getReader()); + DescriptiveScope descriptiveScope; + GridData data; + String userId = null; + if(fromAPI){ + descriptiveScope = mapper.readValue(root.get("dictionaryFields").toString(), DescriptiveScope.class); + data = mapper.readValue(root.get("dictionaryFields").toString(), GridData.class); + userId = "API"; + }else{ + descriptiveScope = mapper.readValue(root.get("descriptiveScopeDictionaryData").toString(), DescriptiveScope.class); + data = mapper.readValue(root.get("descriptiveScopeDictionaryData").toString(), GridData.class); + userId = root.get("userid").textValue(); + } + descriptiveScope.setSearch(utils.appendKeyValue(data.getAttributes(), "AND", ":")); + UserInfo userInfo = utils.getUserInfo(userId); + List<Object> duplicateData = commonClassDao.checkDuplicateEntry(descriptiveScope.getScopeName(), dScopeName, DescriptiveScope.class); + boolean duplicateflag = false; + if(!duplicateData.isEmpty()){ + DescriptiveScope data1 = (DescriptiveScope) duplicateData.get(0); + if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ + descriptiveScope.setId(data1.getId()); + }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || + (request.getParameter(operation) == null && (data1.getId() != descriptiveScope.getId()))){ + duplicateflag = true; + } + } + String responseString = null; + if(!duplicateflag){ + descriptiveScope.setUserModifiedBy(userInfo); + if(descriptiveScope.getId() == 0){ + descriptiveScope.setUserCreatedBy(userInfo); + commonClassDao.save(descriptiveScope); + }else{ + descriptiveScope.setModifiedDate(new Date()); + commonClassDao.update(descriptiveScope); + } + responseString = mapper.writeValueAsString(commonClassDao.getData(DescriptiveScope.class)); + }else{ + responseString = "Duplicate"; + } + if(fromAPI){ + return utils.getResultForApi(responseString); + }else{ + utils.setResponseData(response, descriptiveDatas, responseString); + } + }catch (Exception e){ + utils.setErrorResponseData(response, e); + } + return null; + } + + @RequestMapping(value={"/descriptive_dictionary/remove_descriptiveScope"}, method={RequestMethod.POST}) + public void removeDescriptiveDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.removeData(request, response, descriptiveDatas, DescriptiveScope.class); + } }
\ No newline at end of file diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/DictionaryController.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/DictionaryController.java index 0b7693c6f..72539880c 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/DictionaryController.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/DictionaryController.java @@ -47,201 +47,201 @@ import com.fasterxml.jackson.databind.ObjectMapper; @Controller public class DictionaryController { - - private static final Log LOGGER = LogFactory.getLog(DictionaryController.class); - - private static CommonClassDao commonClassDao; - private static String xacmlId = "xacmlId"; - private static String operation = "operation"; - private static String dictionaryFields ="dictionaryFields"; - private static String duplicateResponseString = "Duplicate"; - private static String onapName = "onapName"; - private static String attributeDatas = "attributeDictionaryDatas"; - private static String onapNameDatas = "onapNameDictionaryDatas"; - - @Autowired - public DictionaryController(CommonClassDao commonClassDao){ - DictionaryController.commonClassDao = commonClassDao; - } - - public DictionaryController(){ - super(); - } - - private DictionaryUtils getDictionaryUtilsInstance(){ - return DictionaryUtils.getDictionaryUtils(); - } - - @RequestMapping(value={"/get_AttributeDatabyAttributeName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getAttributeDictionaryEntityDatabyAttributeName(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getDataByEntity(response, attributeDatas, xacmlId, Attribute.class); - } - - //Attribute Dictionary - @RequestMapping(value="/get_AttributeData", method= RequestMethod.GET , produces=MediaType.APPLICATION_JSON_VALUE) - public void getAttributeDictionaryEntityData(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getData(response, attributeDatas, Attribute.class); - } - - @RequestMapping(value={"/attribute_dictionary/save_attribute"}, method={RequestMethod.POST}) - public ModelAndView saveAttributeDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - DictionaryUtils utils = getDictionaryUtilsInstance(); - try { - boolean fromAPI = utils.isRequestFromAPI(request); - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - JsonNode root = mapper.readTree(request.getReader()); - Attribute attributeData = null; - AttributeValues attributeValueData = null; - String userId = null; - if(fromAPI){ - attributeData = mapper.readValue(root.get(dictionaryFields).toString(), Attribute.class); - attributeValueData = mapper.readValue(root.get(dictionaryFields).toString(), AttributeValues.class); - userId = "API"; - }else{ - attributeData = mapper.readValue(root.get("attributeDictionaryData").toString(), Attribute.class); - attributeValueData = mapper.readValue(root.get("attributeDictionaryData").toString(), AttributeValues.class); - userId = root.get("userid").textValue(); - } - UserInfo userInfo = utils.getUserInfo(userId); - List<Object> duplicateData = commonClassDao.checkDuplicateEntry(attributeData.getXacmlId(), xacmlId, Attribute.class); - boolean duplicateflag = false; - if(!duplicateData.isEmpty()){ - Attribute data = (Attribute) duplicateData.get(0); - if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ - attributeData.setId(data.getId()); - }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || - (request.getParameter(operation) == null && (data.getId() != attributeData.getId()))){ - duplicateflag = true; - } - } - if(attributeValueData.getUserDataTypeValues() != null && !attributeValueData.getUserDataTypeValues().isEmpty()){ - attributeData.setAttributeValue(utils.appendKey(attributeValueData.getUserDataTypeValues(), "attributeValues", ",")); - } - - if(attributeData.getDatatypeBean().getShortName() != null){ - String datatype = attributeData.getDatatypeBean().getShortName(); - attributeData.setDatatypeBean(utils.getDataType(datatype)); - } - - String responseString = null; - if(!duplicateflag){ - attributeData.setUserModifiedBy(userInfo); - if(attributeData.getId() == 0){ - attributeData.setCategoryBean(utils.getCategory()); - attributeData.setUserCreatedBy(userInfo); - commonClassDao.save(attributeData); - }else{ - attributeData.setModifiedDate(new Date()); - commonClassDao.update(attributeData); - } - responseString = mapper.writeValueAsString(commonClassDao.getData(Attribute.class)); - }else{ - responseString = duplicateResponseString; - } - if(fromAPI){ - return utils.getResultForApi(responseString); - }else{ - utils.setResponseData(response, attributeDatas, responseString); - } - }catch (Exception e){ - utils.setErrorResponseData(response, e); - } - return null; - } - - @RequestMapping(value={"/attribute_dictionary/remove_attribute"}, method={RequestMethod.POST}) - public void removeAttributeDictionary(HttpServletRequest request, HttpServletResponse response)throws IOException { - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.removeData(request, response, attributeDatas, Attribute.class); - } - - //OnapName Dictionary - @RequestMapping(value={"/get_OnapNameDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getOnapNameDictionaryByNameEntityData(HttpServletResponse response){ - LOGGER.info("get_OnapNameDataByName is called"); - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getDataByEntity(response, onapNameDatas, onapName, OnapName.class); - } - - @RequestMapping(value={"/get_OnapNameData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getOnapNameDictionaryEntityData(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getData(response, onapNameDatas, OnapName.class); - } - - @RequestMapping(value={"/onap_dictionary/save_onapName"}, method={RequestMethod.POST}) - public ModelAndView saveOnapDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - DictionaryUtils utils = getDictionaryUtilsInstance(); - try { - boolean fromAPI = utils.isRequestFromAPI(request); - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - JsonNode root = mapper.readTree(request.getReader()); - OnapName onapData; - String userId = null; - if(fromAPI){ - onapData = mapper.readValue(root.get(dictionaryFields).toString(), OnapName.class); - userId = "API"; - }else{ - onapData = mapper.readValue(root.get("onapNameDictionaryData").toString(), OnapName.class); - userId = root.get("userid").textValue(); - } - UserInfo userInfo = utils.getUserInfo(userId); - - List<Object> duplicateData = commonClassDao.checkDuplicateEntry(onapData.getOnapName(), onapName, OnapName.class); - boolean duplicateflag = false; - if(!duplicateData.isEmpty()){ - OnapName data = (OnapName) duplicateData.get(0); - if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ - onapData.setId(data.getId()); - }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || - (request.getParameter(operation) == null && (data.getId() != onapData.getId()))){ - duplicateflag = true; - } - } - String responseString = null; - if(!duplicateflag){ - onapData.setUserModifiedBy(userInfo); - if(onapData.getId() == 0){ - onapData.setUserCreatedBy(userInfo); - commonClassDao.save(onapData); - }else{ - onapData.setModifiedDate(new Date()); - commonClassDao.update(onapData); - } - responseString = mapper.writeValueAsString(commonClassDao.getData(OnapName.class)); - }else{ - responseString = duplicateResponseString; - } - if(fromAPI){ - return utils.getResultForApi(responseString); - }else{ - utils.setResponseData(response, onapNameDatas, responseString); - } - }catch (Exception e){ - utils.setErrorResponseData(response, e); - } - return null; - } - - @RequestMapping(value={"/onap_dictionary/remove_onap"}, method={RequestMethod.POST}) - public void removeOnapDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.removeData(request, response, onapNameDatas, OnapName.class); - } + + private static final Log LOGGER = LogFactory.getLog(DictionaryController.class); + + private static CommonClassDao commonClassDao; + private static String xacmlId = "xacmlId"; + private static String operation = "operation"; + private static String dictionaryFields ="dictionaryFields"; + private static String duplicateResponseString = "Duplicate"; + private static String onapName = "onapName"; + private static String attributeDatas = "attributeDictionaryDatas"; + private static String onapNameDatas = "onapNameDictionaryDatas"; + + @Autowired + public DictionaryController(CommonClassDao commonClassDao){ + DictionaryController.commonClassDao = commonClassDao; + } + + public DictionaryController(){ + super(); + } + + private DictionaryUtils getDictionaryUtilsInstance(){ + return DictionaryUtils.getDictionaryUtils(); + } + + @RequestMapping(value={"/get_AttributeDatabyAttributeName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getAttributeDictionaryEntityDatabyAttributeName(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getDataByEntity(response, attributeDatas, xacmlId, Attribute.class); + } + + //Attribute Dictionary + @RequestMapping(value="/get_AttributeData", method= RequestMethod.GET , produces=MediaType.APPLICATION_JSON_VALUE) + public void getAttributeDictionaryEntityData(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getData(response, attributeDatas, Attribute.class); + } + + @RequestMapping(value={"/attribute_dictionary/save_attribute"}, method={RequestMethod.POST}) + public ModelAndView saveAttributeDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + DictionaryUtils utils = getDictionaryUtilsInstance(); + try { + boolean fromAPI = utils.isRequestFromAPI(request); + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + JsonNode root = mapper.readTree(request.getReader()); + Attribute attributeData = null; + AttributeValues attributeValueData = null; + String userId = null; + if(fromAPI){ + attributeData = mapper.readValue(root.get(dictionaryFields).toString(), Attribute.class); + attributeValueData = mapper.readValue(root.get(dictionaryFields).toString(), AttributeValues.class); + userId = "API"; + }else{ + attributeData = mapper.readValue(root.get("attributeDictionaryData").toString(), Attribute.class); + attributeValueData = mapper.readValue(root.get("attributeDictionaryData").toString(), AttributeValues.class); + userId = root.get("userid").textValue(); + } + UserInfo userInfo = utils.getUserInfo(userId); + List<Object> duplicateData = commonClassDao.checkDuplicateEntry(attributeData.getXacmlId(), xacmlId, Attribute.class); + boolean duplicateflag = false; + if(!duplicateData.isEmpty()){ + Attribute data = (Attribute) duplicateData.get(0); + if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ + attributeData.setId(data.getId()); + }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || + (request.getParameter(operation) == null && (data.getId() != attributeData.getId()))){ + duplicateflag = true; + } + } + if(attributeValueData.getUserDataTypeValues() != null && !attributeValueData.getUserDataTypeValues().isEmpty()){ + attributeData.setAttributeValue(utils.appendKey(attributeValueData.getUserDataTypeValues(), "attributeValues", ",")); + } + + if(attributeData.getDatatypeBean().getShortName() != null){ + String datatype = attributeData.getDatatypeBean().getShortName(); + attributeData.setDatatypeBean(utils.getDataType(datatype)); + } + + String responseString = null; + if(!duplicateflag){ + attributeData.setUserModifiedBy(userInfo); + if(attributeData.getId() == 0){ + attributeData.setCategoryBean(utils.getCategory()); + attributeData.setUserCreatedBy(userInfo); + commonClassDao.save(attributeData); + }else{ + attributeData.setModifiedDate(new Date()); + commonClassDao.update(attributeData); + } + responseString = mapper.writeValueAsString(commonClassDao.getData(Attribute.class)); + }else{ + responseString = duplicateResponseString; + } + if(fromAPI){ + return utils.getResultForApi(responseString); + }else{ + utils.setResponseData(response, attributeDatas, responseString); + } + }catch (Exception e){ + utils.setErrorResponseData(response, e); + } + return null; + } + + @RequestMapping(value={"/attribute_dictionary/remove_attribute"}, method={RequestMethod.POST}) + public void removeAttributeDictionary(HttpServletRequest request, HttpServletResponse response)throws IOException { + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.removeData(request, response, attributeDatas, Attribute.class); + } + + //OnapName Dictionary + @RequestMapping(value={"/get_OnapNameDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getOnapNameDictionaryByNameEntityData(HttpServletResponse response){ + LOGGER.info("get_OnapNameDataByName is called"); + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getDataByEntity(response, onapNameDatas, onapName, OnapName.class); + } + + @RequestMapping(value={"/get_OnapNameData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getOnapNameDictionaryEntityData(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getData(response, onapNameDatas, OnapName.class); + } + + @RequestMapping(value={"/onap_dictionary/save_onapName"}, method={RequestMethod.POST}) + public ModelAndView saveOnapDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + DictionaryUtils utils = getDictionaryUtilsInstance(); + try { + boolean fromAPI = utils.isRequestFromAPI(request); + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + JsonNode root = mapper.readTree(request.getReader()); + OnapName onapData; + String userId = null; + if(fromAPI){ + onapData = mapper.readValue(root.get(dictionaryFields).toString(), OnapName.class); + userId = "API"; + }else{ + onapData = mapper.readValue(root.get("onapNameDictionaryData").toString(), OnapName.class); + userId = root.get("userid").textValue(); + } + UserInfo userInfo = utils.getUserInfo(userId); + + List<Object> duplicateData = commonClassDao.checkDuplicateEntry(onapData.getOnapName(), onapName, OnapName.class); + boolean duplicateflag = false; + if(!duplicateData.isEmpty()){ + OnapName data = (OnapName) duplicateData.get(0); + if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ + onapData.setId(data.getId()); + }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || + (request.getParameter(operation) == null && (data.getId() != onapData.getId()))){ + duplicateflag = true; + } + } + String responseString = null; + if(!duplicateflag){ + onapData.setUserModifiedBy(userInfo); + if(onapData.getId() == 0){ + onapData.setUserCreatedBy(userInfo); + commonClassDao.save(onapData); + }else{ + onapData.setModifiedDate(new Date()); + commonClassDao.update(onapData); + } + responseString = mapper.writeValueAsString(commonClassDao.getData(OnapName.class)); + }else{ + responseString = duplicateResponseString; + } + if(fromAPI){ + return utils.getResultForApi(responseString); + }else{ + utils.setResponseData(response, onapNameDatas, responseString); + } + }catch (Exception e){ + utils.setErrorResponseData(response, e); + } + return null; + } + + @RequestMapping(value={"/onap_dictionary/remove_onap"}, method={RequestMethod.POST}) + public void removeOnapDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.removeData(request, response, onapNameDatas, OnapName.class); + } } class AttributeValues{ - private List<Object> userDataTypeValues; + private List<Object> userDataTypeValues; - public List<Object> getUserDataTypeValues() { - return userDataTypeValues; - } + public List<Object> getUserDataTypeValues() { + return userDataTypeValues; + } - public void setUserDataTypeValues(List<Object> userDataTypeValues) { - this.userDataTypeValues = userDataTypeValues; - } + public void setUserDataTypeValues(List<Object> userDataTypeValues) { + this.userDataTypeValues = userDataTypeValues; + } }
\ No newline at end of file diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/DictionaryImportController.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/DictionaryImportController.java index 9423017c3..7093cd514 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/DictionaryImportController.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/DictionaryImportController.java @@ -75,704 +75,704 @@ import au.com.bytecode.opencsv.CSVReader; @Controller public class DictionaryImportController { - private static final Logger LOGGER = FlexLogger.getLogger(DictionaryImportController.class); - - private static CommonClassDao commonClassDao; - private static final String DESCRIPTION= "description"; - private static final String ERROR= "Error"; - private static final String DEPENDENCY= "dependency"; - - @Autowired - public DictionaryImportController(CommonClassDao commonClassDao){ - setCommonClassDao(commonClassDao); - } - - public static void setCommonClassDao(CommonClassDao commonClassDao) { - DictionaryImportController.commonClassDao = commonClassDao; - } - - public DictionaryImportController(){ - super(); - } + private static final Logger LOGGER = FlexLogger.getLogger(DictionaryImportController.class); - @RequestMapping(value={"/dictionary/import_dictionary"}, method={RequestMethod.POST}) - public void importDictionaryData(HttpServletRequest request, HttpServletResponse response) throws IOException{ - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - String userId = request.getParameter("userId"); - String dictionaryName = request.getParameter("dictionaryName"); - - if(dictionaryName == null || dictionaryName.isEmpty()){ - LOGGER.error("dictionaryName is null/empty"); - response.setStatus(HttpServletResponse.SC_BAD_REQUEST); - response.getWriter().write(ERROR); - return; - } - - // fix Fortify Path Manipulation issue - if(!isValidDictionaryName(dictionaryName)){ - LOGGER.error("dictionaryName is invalid"); - response.setStatus(HttpServletResponse.SC_BAD_REQUEST); - response.getWriter().write(ERROR); - return; - } - File file = new File(dictionaryName); - try(OutputStream outputStream = new FileOutputStream(file); FileReader fileReader = new FileReader(file.toString())){ - IOUtils.copy(request.getInputStream(), outputStream); - CSVReader csvReader = new CSVReader(fileReader); - List<String[]> dictSheet = csvReader.readAll(); - if(dictionaryName.startsWith("Attribute")){ - for(int i = 1; i< dictSheet.size(); i++){ - Attribute attribute = new Attribute(""); - UserInfo userinfo = new UserInfo(); - userinfo.setUserLoginId(userId); - attribute.setUserCreatedBy(userinfo); - attribute.setUserModifiedBy(userinfo); - String[] rows = dictSheet.get(i); - for (int j=0 ; j<rows.length; j++ ){ - if("xacml_id".equalsIgnoreCase(dictSheet.get(0)[j]) || "Attribute ID".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setXacmlId(rows[j]); - } - if(DESCRIPTION.equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setDescription(rows[j]); - } - if("priority".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setPriority(rows[j]); - } - if("datatype".equalsIgnoreCase(dictSheet.get(0)[j]) || "Data Type".equalsIgnoreCase(dictSheet.get(0)[j])){ - Datatype dataType = new Datatype(); - if("string".equalsIgnoreCase(rows[j])){ - dataType.setId(26); - }else if("integer".equalsIgnoreCase(rows[j])){ - dataType.setId(12); - }else if("double".equalsIgnoreCase(rows[j])){ - dataType.setId(25); - }else if("boolean".equalsIgnoreCase(rows[j])){ - dataType.setId(18); - }else if("user".equalsIgnoreCase(rows[j])){ - dataType.setId(29); - } - attribute.setDatatypeBean(dataType); - Category category = new Category(); - category.setId(5); - attribute.setCategoryBean(category); - } - if("attribute_value".equalsIgnoreCase(dictSheet.get(0)[j]) || "Attribute Value".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setAttributeValue(rows[j]); - } - } - commonClassDao.save(attribute); - } - } - if(dictionaryName.startsWith("ActionPolicyDictionary")){ - for(int i = 1; i< dictSheet.size(); i++){ - ActionPolicyDict attribute = new ActionPolicyDict(); - UserInfo userinfo = new UserInfo(); - userinfo.setUserLoginId(userId); - attribute.setUserCreatedBy(userinfo); - attribute.setUserModifiedBy(userinfo); - String[] rows = dictSheet.get(i); - for (int j=0 ; j<rows.length; j++ ){ - if("attribute_name".equalsIgnoreCase(dictSheet.get(0)[j]) || "Attribute Name".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setAttributeName(rows[j]); - } - if("body".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setBody(rows[j]); - } - if(DESCRIPTION.equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setDescription(rows[j]); - } - if("headers".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setHeader(rows[j]); - } - if("method".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setMethod(rows[j]); - } - if("type".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setType(rows[j]); - } - if("url".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setUrl(rows[j]); - } - } - commonClassDao.save(attribute); - } - } - if(dictionaryName.startsWith("OnapName")){ - for(int i = 1; i< dictSheet.size(); i++){ - OnapName attribute = new OnapName(); - UserInfo userinfo = new UserInfo(); - userinfo.setUserLoginId(userId); - attribute.setUserCreatedBy(userinfo); - attribute.setUserModifiedBy(userinfo); - String[] rows = dictSheet.get(i); - for (int j=0 ; j<rows.length; j++ ){ - if("onap_name".equalsIgnoreCase(dictSheet.get(0)[j]) || "Onap Name".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setOnapName(rows[j]); - } - if(DESCRIPTION.equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setDescription(rows[j]); - } - } - commonClassDao.save(attribute); - } - } + private static CommonClassDao commonClassDao; + private static final String DESCRIPTION= "description"; + private static final String ERROR= "Error"; + private static final String DEPENDENCY= "dependency"; - if(dictionaryName.startsWith("MSPolicyDictionary")){ - for(int i = 1; i< dictSheet.size(); i++){ - MicroServiceModels attribute = new MicroServiceModels(); - UserInfo userinfo = new UserInfo(); - userinfo.setUserLoginId(userId); - attribute.setUserCreatedBy(userinfo); - String[] rows = dictSheet.get(i); - for (int j=0 ; j<rows.length; j++ ){ - if("modelName".equalsIgnoreCase(dictSheet.get(0)[j]) || "Micro Service Model".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setModelName(rows[j]); - } - if("version".equalsIgnoreCase(dictSheet.get(0)[j]) || "Model Version".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setVersion(rows[j]); - } - if(DESCRIPTION.equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setDescription(rows[j]); - } - if(DEPENDENCY.equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setDependency(rows[j]); - } - if("attributes".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setAttributes(rows[j]); - } - if("enumValues".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setEnumValues(rows[j]); - } - if("Ref Attributes".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setRef_attributes(rows[j]); - } - if("Sub Attributes".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setSub_attributes(rows[j]); - } - if("annotations".equalsIgnoreCase(dictSheet.get(0)[j])) { - attribute.setAnnotation(rows[j]); - } - } + @Autowired + public DictionaryImportController(CommonClassDao commonClassDao){ + setCommonClassDao(commonClassDao); + } - commonClassDao.save(attribute); - } - } + public static void setCommonClassDao(CommonClassDao commonClassDao) { + DictionaryImportController.commonClassDao = commonClassDao; + } - if(dictionaryName.startsWith("OptimizationPolicyDictionary")){ - for(int i = 1; i< dictSheet.size(); i++){ - MicroServiceModels attribute = new MicroServiceModels(); - UserInfo userinfo = new UserInfo(); - userinfo.setUserLoginId(userId); - attribute.setUserCreatedBy(userinfo); - String[] rows = dictSheet.get(i); - for (int j=0 ; j<rows.length; j++ ){ - if("modelName".equalsIgnoreCase(dictSheet.get(0)[j]) || "Optimization Service Model".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setModelName(rows[j]); - } - if("version".equalsIgnoreCase(dictSheet.get(0)[j]) || "Model Version".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setVersion(rows[j]); - } - if(DESCRIPTION.equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setDescription(rows[j]); - } - if(DEPENDENCY.equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setDependency(rows[j]); - } - if("attributes".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setAttributes(rows[j]); - } - if("enumValues".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setEnumValues(rows[j]); - } - if("Ref Attributes".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setRef_attributes(rows[j]); - } - if("Sub Attributes".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setSub_attributes(rows[j]); - } - if("annotations".equalsIgnoreCase(dictSheet.get(0)[j])) { - attribute.setAnnotation(rows[j]); - } - } + public DictionaryImportController(){ + super(); + } - commonClassDao.save(attribute); - } - } + @RequestMapping(value={"/dictionary/import_dictionary"}, method={RequestMethod.POST}) + public void importDictionaryData(HttpServletRequest request, HttpServletResponse response) throws IOException{ + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + String userId = request.getParameter("userId"); + String dictionaryName = request.getParameter("dictionaryName"); - if(dictionaryName.startsWith("VNFType")){ - for(int i = 1; i< dictSheet.size(); i++){ - VNFType attribute = new VNFType(); - UserInfo userinfo = new UserInfo(); - userinfo.setUserLoginId(userId); - attribute.setUserCreatedBy(userinfo); - attribute.setUserModifiedBy(userinfo); - String[] rows = dictSheet.get(i); - for (int j=0 ; j<rows.length; j++ ){ - if("vnf_type".equalsIgnoreCase(dictSheet.get(0)[j]) || "VNF Type".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setVnftype(rows[j]); - } - if(DESCRIPTION.equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setDescription(rows[j]); - } - } - commonClassDao.save(attribute); - } - } - if(dictionaryName.startsWith("VSCLAction")){ - for(int i = 1; i< dictSheet.size(); i++){ - VSCLAction attribute = new VSCLAction(); - UserInfo userinfo = new UserInfo(); - userinfo.setUserLoginId(userId); - attribute.setUserCreatedBy(userinfo); - attribute.setUserModifiedBy(userinfo); - String[] rows = dictSheet.get(i); - for (int j=0 ; j<rows.length; j++ ){ - if("vscl_action".equalsIgnoreCase(dictSheet.get(0)[j]) || "VSCL Action".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setVsclaction(rows[j]); - } - if(DESCRIPTION.equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setDescription(rows[j]); - } - } - commonClassDao.save(attribute); - } - } - if(dictionaryName.startsWith("ClosedLoopService")){ - for(int i = 1; i< dictSheet.size(); i++){ - ClosedLoopD2Services attribute = new ClosedLoopD2Services(); - UserInfo userinfo = new UserInfo(); - userinfo.setUserLoginId(userId); - attribute.setUserCreatedBy(userinfo); - attribute.setUserModifiedBy(userinfo); - String[] rows = dictSheet.get(i); - for (int j=0 ; j<rows.length; j++ ){ - if("serviceName".equalsIgnoreCase(dictSheet.get(0)[j]) || "Service Name".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setServiceName(rows[j]); - } - if(DESCRIPTION.equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setDescription(rows[j]); - } - } - commonClassDao.save(attribute); - } - } - if(dictionaryName.startsWith("ClosedLoopSite")){ - for(int i = 1; i< dictSheet.size(); i++){ - ClosedLoopSite attribute = new ClosedLoopSite(); - UserInfo userinfo = new UserInfo(); - userinfo.setUserLoginId(userId); - attribute.setUserCreatedBy(userinfo); - attribute.setUserModifiedBy(userinfo); - String[] rows = dictSheet.get(i); - for (int j=0 ; j<rows.length; j++ ){ - if("siteName".equalsIgnoreCase(dictSheet.get(0)[j]) || "Site Name".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setSiteName(rows[j]); - } - if(DESCRIPTION.equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setDescription(rows[j]); - } - } - commonClassDao.save(attribute); - } - } - if(dictionaryName.startsWith("PEPOptions")){ - for(int i = 1; i< dictSheet.size(); i++){ - PEPOptions attribute = new PEPOptions(); - UserInfo userinfo = new UserInfo(); - userinfo.setUserLoginId(userId); - attribute.setUserCreatedBy(userinfo); - attribute.setUserModifiedBy(userinfo); - String[] rows = dictSheet.get(i); - for (int j=0 ; j<rows.length; j++ ){ - if("PEP_NAME".equalsIgnoreCase(dictSheet.get(0)[j]) || "PEP Name".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setPepName(rows[j]); - } - if(DESCRIPTION.equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setDescription(rows[j]); - } - if("Actions".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setActions(rows[j]); - } - } - commonClassDao.save(attribute); - } - } - if(dictionaryName.startsWith("VarbindDictionary")){ - for(int i = 1; i< dictSheet.size(); i++){ - VarbindDictionary attribute = new VarbindDictionary(); - UserInfo userinfo = new UserInfo(); - userinfo.setUserLoginId(userId); - attribute.setUserCreatedBy(userinfo); - attribute.setUserModifiedBy(userinfo); - String[] rows = dictSheet.get(i); - for (int j=0 ; j<rows.length; j++ ){ - if("varbind_Name".equalsIgnoreCase(dictSheet.get(0)[j]) || "Varbind Name".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setVarbindName(rows[j]); - } - if("varbind_Description".equalsIgnoreCase(dictSheet.get(0)[j]) || "Varbind Description".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setVarbindDescription(rows[j]); - } - if("varbind_oid".equalsIgnoreCase(dictSheet.get(0)[j]) || "Varbind OID".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setVarbindOID(rows[j]); - } - } - commonClassDao.save(attribute); - } - } - if(dictionaryName.startsWith("BRMSParamDictionary")){ - for(int i = 1; i< dictSheet.size(); i++){ - BRMSParamTemplate attribute = new BRMSParamTemplate(); - UserInfo userinfo = new UserInfo(); - userinfo.setUserLoginId(userId); - attribute.setUserCreatedBy(userinfo); - String[] rows = dictSheet.get(i); - for (int j=0 ; j<rows.length; j++ ){ - if("param_template_name".equalsIgnoreCase(dictSheet.get(0)[j]) || "Rule Name".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setRuleName(rows[j]); - } - if(DESCRIPTION.equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setDescription(rows[j]); - } - if("rule".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setRule(rows[j]); - } - } - commonClassDao.save(attribute); - } - } - if(dictionaryName.startsWith("BRMSControllerDictionary")){ - for(int i = 1; i< dictSheet.size(); i++){ - BRMSController attribute = new BRMSController(); - UserInfo userinfo = new UserInfo(); - userinfo.setUserLoginId(userId); - attribute.setUserCreatedBy(userinfo); - String[] rows = dictSheet.get(i); - for (int j=0 ; j<rows.length; j++ ){ - if("controllerName".equalsIgnoreCase(dictSheet.get(0)[j]) || "Controller Name".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setControllerName(rows[j]); - } - if(DESCRIPTION.equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setDescription(rows[j]); - } - if("controller".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setController(rows[j]); - } - } - commonClassDao.save(attribute); - } - } - if(dictionaryName.startsWith("BRMSDependencyDictionary")){ - for(int i = 1; i< dictSheet.size(); i++){ - BRMSDependency attribute = new BRMSDependency(); - UserInfo userinfo = new UserInfo(); - userinfo.setUserLoginId(userId); - attribute.setUserCreatedBy(userinfo); - String[] rows = dictSheet.get(i); - for (int j=0 ; j<rows.length; j++ ){ - if("dependencyName".equalsIgnoreCase(dictSheet.get(0)[j]) || "Dependency Name".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setDependencyName(rows[j]); - } - if(DESCRIPTION.equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setDescription(rows[j]); - } - if(DEPENDENCY.equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setDependency(rows[j]); - } - } - commonClassDao.save(attribute); - } - } - if(dictionaryName.startsWith("Settings")){ - for(int i = 1; i< dictSheet.size(); i++){ - DecisionSettings attribute = new DecisionSettings(); - UserInfo userinfo = new UserInfo(); - userinfo.setUserLoginId(userId); - attribute.setUserCreatedBy(userinfo); - attribute.setUserModifiedBy(userinfo); - String[] rows = dictSheet.get(i); - for (int j=0 ; j<rows.length; j++ ){ - if("xacml_id".equalsIgnoreCase(dictSheet.get(0)[j]) || "Settings ID".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setXacmlId(rows[j]); - } - if(DESCRIPTION.equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setDescription(rows[j]); - } - if("priority".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setPriority(rows[j]); - } - if("datatype".equalsIgnoreCase(dictSheet.get(0)[j]) || "Data Type".equalsIgnoreCase(dictSheet.get(0)[j])){ - Datatype dataType = new Datatype(); - if("string".equalsIgnoreCase(rows[j])){ - dataType.setId(26); - }else if("integer".equalsIgnoreCase(rows[j])){ - dataType.setId(12); - }else if("double".equalsIgnoreCase(rows[j])){ - dataType.setId(25); - }else if("boolean".equalsIgnoreCase(rows[j])){ - dataType.setId(18); - }else if("user".equalsIgnoreCase(rows[j])){ - dataType.setId(29); - } - attribute.setDatatypeBean(dataType); - } - } - commonClassDao.save(attribute); - } - } - if(dictionaryName.startsWith("PrefixList")){ - for(int i = 1; i< dictSheet.size(); i++){ - PrefixList attribute = new PrefixList(); - String[] rows = dictSheet.get(i); - for (int j=0 ; j<rows.length; j++ ){ - if("prefixListName".equalsIgnoreCase(dictSheet.get(0)[j]) || "PrefixList Name".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setPrefixListName(rows[j]); - } - if(DESCRIPTION.equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setPrefixListValue(rows[j]); - } - if("prefixListValue".equalsIgnoreCase(dictSheet.get(0)[j]) || "PrefixList Value".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setDescription(rows[j]); - } - } - commonClassDao.save(attribute); - } - } - if(dictionaryName.startsWith("SecurityZone")){ - for(int i = 1; i< dictSheet.size(); i++){ - SecurityZone attribute = new SecurityZone(); - String[] rows = dictSheet.get(i); - for (int j=0 ; j<rows.length; j++ ){ - if("zoneName".equalsIgnoreCase(dictSheet.get(0)[j]) || "Zone Name".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setZoneName(rows[j]); - } - if("zoneValue".equalsIgnoreCase(dictSheet.get(0)[j]) || "Zone Value".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setZoneValue(rows[j]); - } - } - commonClassDao.save(attribute); - } - } - if(dictionaryName.startsWith("Zone")){ - for(int i = 1; i< dictSheet.size(); i++){ - Zone attribute = new Zone(); - String[] rows = dictSheet.get(i); - for (int j=0 ; j<rows.length; j++ ){ - if("zoneName".equalsIgnoreCase(dictSheet.get(0)[j]) || "Zone Name".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setZoneName(rows[j]); - } - if("zoneValue".equalsIgnoreCase(dictSheet.get(0)[j]) || "Zone Value".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setZoneValue(rows[j]); - } - } - commonClassDao.save(attribute); - } - } - if(dictionaryName.startsWith("ServiceList")){ - for(int i = 1; i< dictSheet.size(); i++){ - ServiceList attribute = new ServiceList(); - String[] rows = dictSheet.get(i); - for (int j=0 ; j<rows.length; j++ ){ - if("serviceName".equalsIgnoreCase(dictSheet.get(0)[j]) || "Service Name".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setServiceName(rows[j]); - } - if("serviceDesc".equalsIgnoreCase(dictSheet.get(0)[j]) || DESCRIPTION.equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setServiceDescription(rows[j]); - } - if("serviceType".equalsIgnoreCase(dictSheet.get(0)[j]) || "Service Type".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setServiceType(rows[j]); - } - if("serviceTrasProtocol".equalsIgnoreCase(dictSheet.get(0)[j]) || "Transport Protocol".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setServiceTransProtocol(rows[j]); - } - if("serviceAppProtocol".equalsIgnoreCase(dictSheet.get(0)[j]) || "APP Protocol".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setServiceAppProtocol(rows[j]); - } - if("servicePorts".equalsIgnoreCase(dictSheet.get(0)[j]) || "Ports".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setServicePorts(rows[j]); - } - } - commonClassDao.save(attribute); - } - } - if(dictionaryName.startsWith("ServiceGroup")){ - for(int i = 1; i< dictSheet.size(); i++){ - GroupServiceList attribute = new GroupServiceList(); - String[] rows = dictSheet.get(i); - for (int j=0 ; j<rows.length; j++ ){ - if("name".equalsIgnoreCase(dictSheet.get(0)[j]) || "Group Name".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setGroupName(rows[j]); - } - if("serviceList".equalsIgnoreCase(dictSheet.get(0)[j]) || "Service List".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setServiceList(rows[j]); - } - } - commonClassDao.save(attribute); - } - } - if(dictionaryName.startsWith("AddressGroup")){ - for(int i = 1; i< dictSheet.size(); i++){ - AddressGroup attribute = new AddressGroup(); - String[] rows = dictSheet.get(i); - for (int j=0 ; j<rows.length; j++ ){ - if("name".equalsIgnoreCase(dictSheet.get(0)[j]) || "Group Name".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setGroupName(rows[j]); - } - if("serviceList".equalsIgnoreCase(dictSheet.get(0)[j]) || "Prefix List".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setServiceList(rows[j]); - } - if(DESCRIPTION.equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setDescription(rows[j]); - } - } - commonClassDao.save(attribute); - } - } - if(dictionaryName.startsWith("ProtocolList")){ - for(int i = 1; i< dictSheet.size(); i++){ - ProtocolList attribute = new ProtocolList(); - String[] rows = dictSheet.get(i); - for (int j=0 ; j<rows.length; j++ ){ - if("protocolName".equalsIgnoreCase(dictSheet.get(0)[j]) || "Protocol Name".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setProtocolName(rows[j]); - } - if(DESCRIPTION.equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setDescription(rows[j]); - } - } - commonClassDao.save(attribute); - } - } - if(dictionaryName.startsWith("ActionList")){ - for(int i = 1; i< dictSheet.size(); i++){ - ActionList attribute = new ActionList(); - String[] rows = dictSheet.get(i); - for (int j=0 ; j<rows.length; j++ ){ - if("actionName".equalsIgnoreCase(dictSheet.get(0)[j]) || "Action Name".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setActionName(rows[j]); - } - if(DESCRIPTION.equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setDescription(rows[j]); - } - } - commonClassDao.save(attribute); - } - } - if(dictionaryName.startsWith("TermList")){ - for(int i = 1; i< dictSheet.size(); i++){ - TermList attribute = new TermList(); - UserInfo userinfo = new UserInfo(); - userinfo.setUserLoginId(userId); - attribute.setUserCreatedBy(userinfo); - attribute.setUserModifiedBy(userinfo); - String[] rows = dictSheet.get(i); - for (int j=0 ; j<rows.length; j++ ){ - if("termName".equalsIgnoreCase(dictSheet.get(0)[j]) || "Term-Name".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setTermName(rows[j]); - } - if("Term-Description".equalsIgnoreCase(dictSheet.get(0)[j]) || "termDescription".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setDescription(rows[j]); - } - if("fromZone".equalsIgnoreCase(dictSheet.get(0)[j]) || "From Zone".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setFromZones(rows[j]); - } - if("toZone".equalsIgnoreCase(dictSheet.get(0)[j]) || "To Zone".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setToZones(rows[j]); - } - if("srcIPList".equalsIgnoreCase(dictSheet.get(0)[j]) || "Source-IP-List".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setSrcIPList(rows[j]); - } - if("destIPList".equalsIgnoreCase(dictSheet.get(0)[j]) || "Destination-IP-List".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setDestIPList(rows[j]); - } - if("srcPortList".equalsIgnoreCase(dictSheet.get(0)[j]) || "Source-Port-List".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setSrcPortList(rows[j]); - } - if("destPortList".equalsIgnoreCase(dictSheet.get(0)[j]) || "Destination-Port-List".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setDestPortList(rows[j]); - } - if("action".equalsIgnoreCase(dictSheet.get(0)[j]) || "Action List".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setAction(rows[j]); - } - } - commonClassDao.save(attribute); - } - } - if(dictionaryName.startsWith("SearchCriteria")){ - for(int i = 1; i< dictSheet.size(); i++){ - DescriptiveScope attribute = new DescriptiveScope(); - UserInfo userinfo = new UserInfo(); - userinfo.setUserLoginId(userId); - attribute.setUserCreatedBy(userinfo); - attribute.setUserModifiedBy(userinfo); - String[] rows = dictSheet.get(i); - for (int j=0 ; j<rows.length; j++ ){ - if("descriptiveScopeName".equalsIgnoreCase(dictSheet.get(0)[j]) || "Descriptive Scope Name".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setScopeName(rows[j]); - } - if(DESCRIPTION.equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setDescription(rows[j]); - } - if("search".equalsIgnoreCase(dictSheet.get(0)[j]) || "Search Criteria".equalsIgnoreCase(dictSheet.get(0)[j])){ - attribute.setSearch(rows[j]); - } - } - commonClassDao.save(attribute); - } - } - csvReader.close(); - response.setStatus(HttpServletResponse.SC_OK); - response.getWriter().write("Success"); - }catch(Exception e){ - LOGGER.error("Exception Occured while importing dictionary"+e); - response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); - response.getWriter().write(ERROR); - }finally{ - if(file != null && file.exists()){ - boolean deleted = file.delete(); - LOGGER.error("Imported File has been deleted: "+deleted); - } - } - } - - public boolean isValidDictionaryName(String dictionaryName){ - - String nameCheck = dictionaryName.replace(".csv", ""); - try{ - DictionaryNames mode = DictionaryNames.valueOf(nameCheck); - switch (mode){ - case Attribute: - case ActionPolicyDictionary: - case OnapName: - case MSPolicyDictionary: - case OptimizationPolicyDictionary: - case VNFType: - case VSCLAction: - case ClosedLoopService: - case ClosedLoopSite: - case PEPOptions: - case VarbindDictionary: - case BRMSParamDictionary: - case BRMSControllerDictionary: - case BRMSDependencyDictionary: - case Settings: - case PrefixList: - case SecurityZone: - case Zone: - case ServiceList: - case ServiceGroup: - case AddressGroup: - case ProtocolList: - case ActionList: - case TermList: - case SearchCriteria: - return true; - default: - return false; - } - }catch(Exception e){ - LOGGER.error("Dictionary not exits: " +dictionaryName +e); - return false; - } - } + if(dictionaryName == null || dictionaryName.isEmpty()){ + LOGGER.error("dictionaryName is null/empty"); + response.setStatus(HttpServletResponse.SC_BAD_REQUEST); + response.getWriter().write(ERROR); + return; + } + + // fix Fortify Path Manipulation issue + if(!isValidDictionaryName(dictionaryName)){ + LOGGER.error("dictionaryName is invalid"); + response.setStatus(HttpServletResponse.SC_BAD_REQUEST); + response.getWriter().write(ERROR); + return; + } + File file = new File(dictionaryName); + try(OutputStream outputStream = new FileOutputStream(file); FileReader fileReader = new FileReader(file.toString())){ + IOUtils.copy(request.getInputStream(), outputStream); + CSVReader csvReader = new CSVReader(fileReader); + List<String[]> dictSheet = csvReader.readAll(); + if(dictionaryName.startsWith("Attribute")){ + for(int i = 1; i< dictSheet.size(); i++){ + Attribute attribute = new Attribute(""); + UserInfo userinfo = new UserInfo(); + userinfo.setUserLoginId(userId); + attribute.setUserCreatedBy(userinfo); + attribute.setUserModifiedBy(userinfo); + String[] rows = dictSheet.get(i); + for (int j=0 ; j<rows.length; j++ ){ + if("xacml_id".equalsIgnoreCase(dictSheet.get(0)[j]) || "Attribute ID".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setXacmlId(rows[j]); + } + if(DESCRIPTION.equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setDescription(rows[j]); + } + if("priority".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setPriority(rows[j]); + } + if("datatype".equalsIgnoreCase(dictSheet.get(0)[j]) || "Data Type".equalsIgnoreCase(dictSheet.get(0)[j])){ + Datatype dataType = new Datatype(); + if("string".equalsIgnoreCase(rows[j])){ + dataType.setId(26); + }else if("integer".equalsIgnoreCase(rows[j])){ + dataType.setId(12); + }else if("double".equalsIgnoreCase(rows[j])){ + dataType.setId(25); + }else if("boolean".equalsIgnoreCase(rows[j])){ + dataType.setId(18); + }else if("user".equalsIgnoreCase(rows[j])){ + dataType.setId(29); + } + attribute.setDatatypeBean(dataType); + Category category = new Category(); + category.setId(5); + attribute.setCategoryBean(category); + } + if("attribute_value".equalsIgnoreCase(dictSheet.get(0)[j]) || "Attribute Value".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setAttributeValue(rows[j]); + } + } + commonClassDao.save(attribute); + } + } + if(dictionaryName.startsWith("ActionPolicyDictionary")){ + for(int i = 1; i< dictSheet.size(); i++){ + ActionPolicyDict attribute = new ActionPolicyDict(); + UserInfo userinfo = new UserInfo(); + userinfo.setUserLoginId(userId); + attribute.setUserCreatedBy(userinfo); + attribute.setUserModifiedBy(userinfo); + String[] rows = dictSheet.get(i); + for (int j=0 ; j<rows.length; j++ ){ + if("attribute_name".equalsIgnoreCase(dictSheet.get(0)[j]) || "Attribute Name".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setAttributeName(rows[j]); + } + if("body".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setBody(rows[j]); + } + if(DESCRIPTION.equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setDescription(rows[j]); + } + if("headers".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setHeader(rows[j]); + } + if("method".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setMethod(rows[j]); + } + if("type".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setType(rows[j]); + } + if("url".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setUrl(rows[j]); + } + } + commonClassDao.save(attribute); + } + } + if(dictionaryName.startsWith("OnapName")){ + for(int i = 1; i< dictSheet.size(); i++){ + OnapName attribute = new OnapName(); + UserInfo userinfo = new UserInfo(); + userinfo.setUserLoginId(userId); + attribute.setUserCreatedBy(userinfo); + attribute.setUserModifiedBy(userinfo); + String[] rows = dictSheet.get(i); + for (int j=0 ; j<rows.length; j++ ){ + if("onap_name".equalsIgnoreCase(dictSheet.get(0)[j]) || "Onap Name".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setOnapName(rows[j]); + } + if(DESCRIPTION.equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setDescription(rows[j]); + } + } + commonClassDao.save(attribute); + } + } + + if(dictionaryName.startsWith("MSPolicyDictionary")){ + for(int i = 1; i< dictSheet.size(); i++){ + MicroServiceModels attribute = new MicroServiceModels(); + UserInfo userinfo = new UserInfo(); + userinfo.setUserLoginId(userId); + attribute.setUserCreatedBy(userinfo); + String[] rows = dictSheet.get(i); + for (int j=0 ; j<rows.length; j++ ){ + if("modelName".equalsIgnoreCase(dictSheet.get(0)[j]) || "Micro Service Model".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setModelName(rows[j]); + } + if("version".equalsIgnoreCase(dictSheet.get(0)[j]) || "Model Version".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setVersion(rows[j]); + } + if(DESCRIPTION.equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setDescription(rows[j]); + } + if(DEPENDENCY.equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setDependency(rows[j]); + } + if("attributes".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setAttributes(rows[j]); + } + if("enumValues".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setEnumValues(rows[j]); + } + if("Ref Attributes".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setRef_attributes(rows[j]); + } + if("Sub Attributes".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setSub_attributes(rows[j]); + } + if("annotations".equalsIgnoreCase(dictSheet.get(0)[j])) { + attribute.setAnnotation(rows[j]); + } + } + + commonClassDao.save(attribute); + } + } + + if(dictionaryName.startsWith("OptimizationPolicyDictionary")){ + for(int i = 1; i< dictSheet.size(); i++){ + MicroServiceModels attribute = new MicroServiceModels(); + UserInfo userinfo = new UserInfo(); + userinfo.setUserLoginId(userId); + attribute.setUserCreatedBy(userinfo); + String[] rows = dictSheet.get(i); + for (int j=0 ; j<rows.length; j++ ){ + if("modelName".equalsIgnoreCase(dictSheet.get(0)[j]) || "Optimization Service Model".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setModelName(rows[j]); + } + if("version".equalsIgnoreCase(dictSheet.get(0)[j]) || "Model Version".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setVersion(rows[j]); + } + if(DESCRIPTION.equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setDescription(rows[j]); + } + if(DEPENDENCY.equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setDependency(rows[j]); + } + if("attributes".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setAttributes(rows[j]); + } + if("enumValues".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setEnumValues(rows[j]); + } + if("Ref Attributes".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setRef_attributes(rows[j]); + } + if("Sub Attributes".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setSub_attributes(rows[j]); + } + if("annotations".equalsIgnoreCase(dictSheet.get(0)[j])) { + attribute.setAnnotation(rows[j]); + } + } + + commonClassDao.save(attribute); + } + } + + if(dictionaryName.startsWith("VNFType")){ + for(int i = 1; i< dictSheet.size(); i++){ + VNFType attribute = new VNFType(); + UserInfo userinfo = new UserInfo(); + userinfo.setUserLoginId(userId); + attribute.setUserCreatedBy(userinfo); + attribute.setUserModifiedBy(userinfo); + String[] rows = dictSheet.get(i); + for (int j=0 ; j<rows.length; j++ ){ + if("vnf_type".equalsIgnoreCase(dictSheet.get(0)[j]) || "VNF Type".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setVnftype(rows[j]); + } + if(DESCRIPTION.equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setDescription(rows[j]); + } + } + commonClassDao.save(attribute); + } + } + if(dictionaryName.startsWith("VSCLAction")){ + for(int i = 1; i< dictSheet.size(); i++){ + VSCLAction attribute = new VSCLAction(); + UserInfo userinfo = new UserInfo(); + userinfo.setUserLoginId(userId); + attribute.setUserCreatedBy(userinfo); + attribute.setUserModifiedBy(userinfo); + String[] rows = dictSheet.get(i); + for (int j=0 ; j<rows.length; j++ ){ + if("vscl_action".equalsIgnoreCase(dictSheet.get(0)[j]) || "VSCL Action".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setVsclaction(rows[j]); + } + if(DESCRIPTION.equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setDescription(rows[j]); + } + } + commonClassDao.save(attribute); + } + } + if(dictionaryName.startsWith("ClosedLoopService")){ + for(int i = 1; i< dictSheet.size(); i++){ + ClosedLoopD2Services attribute = new ClosedLoopD2Services(); + UserInfo userinfo = new UserInfo(); + userinfo.setUserLoginId(userId); + attribute.setUserCreatedBy(userinfo); + attribute.setUserModifiedBy(userinfo); + String[] rows = dictSheet.get(i); + for (int j=0 ; j<rows.length; j++ ){ + if("serviceName".equalsIgnoreCase(dictSheet.get(0)[j]) || "Service Name".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setServiceName(rows[j]); + } + if(DESCRIPTION.equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setDescription(rows[j]); + } + } + commonClassDao.save(attribute); + } + } + if(dictionaryName.startsWith("ClosedLoopSite")){ + for(int i = 1; i< dictSheet.size(); i++){ + ClosedLoopSite attribute = new ClosedLoopSite(); + UserInfo userinfo = new UserInfo(); + userinfo.setUserLoginId(userId); + attribute.setUserCreatedBy(userinfo); + attribute.setUserModifiedBy(userinfo); + String[] rows = dictSheet.get(i); + for (int j=0 ; j<rows.length; j++ ){ + if("siteName".equalsIgnoreCase(dictSheet.get(0)[j]) || "Site Name".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setSiteName(rows[j]); + } + if(DESCRIPTION.equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setDescription(rows[j]); + } + } + commonClassDao.save(attribute); + } + } + if(dictionaryName.startsWith("PEPOptions")){ + for(int i = 1; i< dictSheet.size(); i++){ + PEPOptions attribute = new PEPOptions(); + UserInfo userinfo = new UserInfo(); + userinfo.setUserLoginId(userId); + attribute.setUserCreatedBy(userinfo); + attribute.setUserModifiedBy(userinfo); + String[] rows = dictSheet.get(i); + for (int j=0 ; j<rows.length; j++ ){ + if("PEP_NAME".equalsIgnoreCase(dictSheet.get(0)[j]) || "PEP Name".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setPepName(rows[j]); + } + if(DESCRIPTION.equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setDescription(rows[j]); + } + if("Actions".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setActions(rows[j]); + } + } + commonClassDao.save(attribute); + } + } + if(dictionaryName.startsWith("VarbindDictionary")){ + for(int i = 1; i< dictSheet.size(); i++){ + VarbindDictionary attribute = new VarbindDictionary(); + UserInfo userinfo = new UserInfo(); + userinfo.setUserLoginId(userId); + attribute.setUserCreatedBy(userinfo); + attribute.setUserModifiedBy(userinfo); + String[] rows = dictSheet.get(i); + for (int j=0 ; j<rows.length; j++ ){ + if("varbind_Name".equalsIgnoreCase(dictSheet.get(0)[j]) || "Varbind Name".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setVarbindName(rows[j]); + } + if("varbind_Description".equalsIgnoreCase(dictSheet.get(0)[j]) || "Varbind Description".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setVarbindDescription(rows[j]); + } + if("varbind_oid".equalsIgnoreCase(dictSheet.get(0)[j]) || "Varbind OID".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setVarbindOID(rows[j]); + } + } + commonClassDao.save(attribute); + } + } + if(dictionaryName.startsWith("BRMSParamDictionary")){ + for(int i = 1; i< dictSheet.size(); i++){ + BRMSParamTemplate attribute = new BRMSParamTemplate(); + UserInfo userinfo = new UserInfo(); + userinfo.setUserLoginId(userId); + attribute.setUserCreatedBy(userinfo); + String[] rows = dictSheet.get(i); + for (int j=0 ; j<rows.length; j++ ){ + if("param_template_name".equalsIgnoreCase(dictSheet.get(0)[j]) || "Rule Name".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setRuleName(rows[j]); + } + if(DESCRIPTION.equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setDescription(rows[j]); + } + if("rule".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setRule(rows[j]); + } + } + commonClassDao.save(attribute); + } + } + if(dictionaryName.startsWith("BRMSControllerDictionary")){ + for(int i = 1; i< dictSheet.size(); i++){ + BRMSController attribute = new BRMSController(); + UserInfo userinfo = new UserInfo(); + userinfo.setUserLoginId(userId); + attribute.setUserCreatedBy(userinfo); + String[] rows = dictSheet.get(i); + for (int j=0 ; j<rows.length; j++ ){ + if("controllerName".equalsIgnoreCase(dictSheet.get(0)[j]) || "Controller Name".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setControllerName(rows[j]); + } + if(DESCRIPTION.equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setDescription(rows[j]); + } + if("controller".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setController(rows[j]); + } + } + commonClassDao.save(attribute); + } + } + if(dictionaryName.startsWith("BRMSDependencyDictionary")){ + for(int i = 1; i< dictSheet.size(); i++){ + BRMSDependency attribute = new BRMSDependency(); + UserInfo userinfo = new UserInfo(); + userinfo.setUserLoginId(userId); + attribute.setUserCreatedBy(userinfo); + String[] rows = dictSheet.get(i); + for (int j=0 ; j<rows.length; j++ ){ + if("dependencyName".equalsIgnoreCase(dictSheet.get(0)[j]) || "Dependency Name".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setDependencyName(rows[j]); + } + if(DESCRIPTION.equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setDescription(rows[j]); + } + if(DEPENDENCY.equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setDependency(rows[j]); + } + } + commonClassDao.save(attribute); + } + } + if(dictionaryName.startsWith("Settings")){ + for(int i = 1; i< dictSheet.size(); i++){ + DecisionSettings attribute = new DecisionSettings(); + UserInfo userinfo = new UserInfo(); + userinfo.setUserLoginId(userId); + attribute.setUserCreatedBy(userinfo); + attribute.setUserModifiedBy(userinfo); + String[] rows = dictSheet.get(i); + for (int j=0 ; j<rows.length; j++ ){ + if("xacml_id".equalsIgnoreCase(dictSheet.get(0)[j]) || "Settings ID".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setXacmlId(rows[j]); + } + if(DESCRIPTION.equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setDescription(rows[j]); + } + if("priority".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setPriority(rows[j]); + } + if("datatype".equalsIgnoreCase(dictSheet.get(0)[j]) || "Data Type".equalsIgnoreCase(dictSheet.get(0)[j])){ + Datatype dataType = new Datatype(); + if("string".equalsIgnoreCase(rows[j])){ + dataType.setId(26); + }else if("integer".equalsIgnoreCase(rows[j])){ + dataType.setId(12); + }else if("double".equalsIgnoreCase(rows[j])){ + dataType.setId(25); + }else if("boolean".equalsIgnoreCase(rows[j])){ + dataType.setId(18); + }else if("user".equalsIgnoreCase(rows[j])){ + dataType.setId(29); + } + attribute.setDatatypeBean(dataType); + } + } + commonClassDao.save(attribute); + } + } + if(dictionaryName.startsWith("PrefixList")){ + for(int i = 1; i< dictSheet.size(); i++){ + PrefixList attribute = new PrefixList(); + String[] rows = dictSheet.get(i); + for (int j=0 ; j<rows.length; j++ ){ + if("prefixListName".equalsIgnoreCase(dictSheet.get(0)[j]) || "PrefixList Name".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setPrefixListName(rows[j]); + } + if(DESCRIPTION.equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setPrefixListValue(rows[j]); + } + if("prefixListValue".equalsIgnoreCase(dictSheet.get(0)[j]) || "PrefixList Value".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setDescription(rows[j]); + } + } + commonClassDao.save(attribute); + } + } + if(dictionaryName.startsWith("SecurityZone")){ + for(int i = 1; i< dictSheet.size(); i++){ + SecurityZone attribute = new SecurityZone(); + String[] rows = dictSheet.get(i); + for (int j=0 ; j<rows.length; j++ ){ + if("zoneName".equalsIgnoreCase(dictSheet.get(0)[j]) || "Zone Name".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setZoneName(rows[j]); + } + if("zoneValue".equalsIgnoreCase(dictSheet.get(0)[j]) || "Zone Value".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setZoneValue(rows[j]); + } + } + commonClassDao.save(attribute); + } + } + if(dictionaryName.startsWith("Zone")){ + for(int i = 1; i< dictSheet.size(); i++){ + Zone attribute = new Zone(); + String[] rows = dictSheet.get(i); + for (int j=0 ; j<rows.length; j++ ){ + if("zoneName".equalsIgnoreCase(dictSheet.get(0)[j]) || "Zone Name".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setZoneName(rows[j]); + } + if("zoneValue".equalsIgnoreCase(dictSheet.get(0)[j]) || "Zone Value".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setZoneValue(rows[j]); + } + } + commonClassDao.save(attribute); + } + } + if(dictionaryName.startsWith("ServiceList")){ + for(int i = 1; i< dictSheet.size(); i++){ + ServiceList attribute = new ServiceList(); + String[] rows = dictSheet.get(i); + for (int j=0 ; j<rows.length; j++ ){ + if("serviceName".equalsIgnoreCase(dictSheet.get(0)[j]) || "Service Name".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setServiceName(rows[j]); + } + if("serviceDesc".equalsIgnoreCase(dictSheet.get(0)[j]) || DESCRIPTION.equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setServiceDescription(rows[j]); + } + if("serviceType".equalsIgnoreCase(dictSheet.get(0)[j]) || "Service Type".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setServiceType(rows[j]); + } + if("serviceTrasProtocol".equalsIgnoreCase(dictSheet.get(0)[j]) || "Transport Protocol".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setServiceTransProtocol(rows[j]); + } + if("serviceAppProtocol".equalsIgnoreCase(dictSheet.get(0)[j]) || "APP Protocol".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setServiceAppProtocol(rows[j]); + } + if("servicePorts".equalsIgnoreCase(dictSheet.get(0)[j]) || "Ports".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setServicePorts(rows[j]); + } + } + commonClassDao.save(attribute); + } + } + if(dictionaryName.startsWith("ServiceGroup")){ + for(int i = 1; i< dictSheet.size(); i++){ + GroupServiceList attribute = new GroupServiceList(); + String[] rows = dictSheet.get(i); + for (int j=0 ; j<rows.length; j++ ){ + if("name".equalsIgnoreCase(dictSheet.get(0)[j]) || "Group Name".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setGroupName(rows[j]); + } + if("serviceList".equalsIgnoreCase(dictSheet.get(0)[j]) || "Service List".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setServiceList(rows[j]); + } + } + commonClassDao.save(attribute); + } + } + if(dictionaryName.startsWith("AddressGroup")){ + for(int i = 1; i< dictSheet.size(); i++){ + AddressGroup attribute = new AddressGroup(); + String[] rows = dictSheet.get(i); + for (int j=0 ; j<rows.length; j++ ){ + if("name".equalsIgnoreCase(dictSheet.get(0)[j]) || "Group Name".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setGroupName(rows[j]); + } + if("serviceList".equalsIgnoreCase(dictSheet.get(0)[j]) || "Prefix List".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setServiceList(rows[j]); + } + if(DESCRIPTION.equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setDescription(rows[j]); + } + } + commonClassDao.save(attribute); + } + } + if(dictionaryName.startsWith("ProtocolList")){ + for(int i = 1; i< dictSheet.size(); i++){ + ProtocolList attribute = new ProtocolList(); + String[] rows = dictSheet.get(i); + for (int j=0 ; j<rows.length; j++ ){ + if("protocolName".equalsIgnoreCase(dictSheet.get(0)[j]) || "Protocol Name".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setProtocolName(rows[j]); + } + if(DESCRIPTION.equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setDescription(rows[j]); + } + } + commonClassDao.save(attribute); + } + } + if(dictionaryName.startsWith("ActionList")){ + for(int i = 1; i< dictSheet.size(); i++){ + ActionList attribute = new ActionList(); + String[] rows = dictSheet.get(i); + for (int j=0 ; j<rows.length; j++ ){ + if("actionName".equalsIgnoreCase(dictSheet.get(0)[j]) || "Action Name".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setActionName(rows[j]); + } + if(DESCRIPTION.equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setDescription(rows[j]); + } + } + commonClassDao.save(attribute); + } + } + if(dictionaryName.startsWith("TermList")){ + for(int i = 1; i< dictSheet.size(); i++){ + TermList attribute = new TermList(); + UserInfo userinfo = new UserInfo(); + userinfo.setUserLoginId(userId); + attribute.setUserCreatedBy(userinfo); + attribute.setUserModifiedBy(userinfo); + String[] rows = dictSheet.get(i); + for (int j=0 ; j<rows.length; j++ ){ + if("termName".equalsIgnoreCase(dictSheet.get(0)[j]) || "Term-Name".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setTermName(rows[j]); + } + if("Term-Description".equalsIgnoreCase(dictSheet.get(0)[j]) || "termDescription".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setDescription(rows[j]); + } + if("fromZone".equalsIgnoreCase(dictSheet.get(0)[j]) || "From Zone".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setFromZones(rows[j]); + } + if("toZone".equalsIgnoreCase(dictSheet.get(0)[j]) || "To Zone".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setToZones(rows[j]); + } + if("srcIPList".equalsIgnoreCase(dictSheet.get(0)[j]) || "Source-IP-List".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setSrcIPList(rows[j]); + } + if("destIPList".equalsIgnoreCase(dictSheet.get(0)[j]) || "Destination-IP-List".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setDestIPList(rows[j]); + } + if("srcPortList".equalsIgnoreCase(dictSheet.get(0)[j]) || "Source-Port-List".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setSrcPortList(rows[j]); + } + if("destPortList".equalsIgnoreCase(dictSheet.get(0)[j]) || "Destination-Port-List".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setDestPortList(rows[j]); + } + if("action".equalsIgnoreCase(dictSheet.get(0)[j]) || "Action List".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setAction(rows[j]); + } + } + commonClassDao.save(attribute); + } + } + if(dictionaryName.startsWith("SearchCriteria")){ + for(int i = 1; i< dictSheet.size(); i++){ + DescriptiveScope attribute = new DescriptiveScope(); + UserInfo userinfo = new UserInfo(); + userinfo.setUserLoginId(userId); + attribute.setUserCreatedBy(userinfo); + attribute.setUserModifiedBy(userinfo); + String[] rows = dictSheet.get(i); + for (int j=0 ; j<rows.length; j++ ){ + if("descriptiveScopeName".equalsIgnoreCase(dictSheet.get(0)[j]) || "Descriptive Scope Name".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setScopeName(rows[j]); + } + if(DESCRIPTION.equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setDescription(rows[j]); + } + if("search".equalsIgnoreCase(dictSheet.get(0)[j]) || "Search Criteria".equalsIgnoreCase(dictSheet.get(0)[j])){ + attribute.setSearch(rows[j]); + } + } + commonClassDao.save(attribute); + } + } + csvReader.close(); + response.setStatus(HttpServletResponse.SC_OK); + response.getWriter().write("Success"); + }catch(Exception e){ + LOGGER.error("Exception Occured while importing dictionary"+e); + response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); + response.getWriter().write(ERROR); + }finally{ + if(file != null && file.exists()){ + boolean deleted = file.delete(); + LOGGER.error("Imported File has been deleted: "+deleted); + } + } + } + + public boolean isValidDictionaryName(String dictionaryName){ + + String nameCheck = dictionaryName.replace(".csv", ""); + try{ + DictionaryNames mode = DictionaryNames.valueOf(nameCheck); + switch (mode){ + case Attribute: + case ActionPolicyDictionary: + case OnapName: + case MSPolicyDictionary: + case OptimizationPolicyDictionary: + case VNFType: + case VSCLAction: + case ClosedLoopService: + case ClosedLoopSite: + case PEPOptions: + case VarbindDictionary: + case BRMSParamDictionary: + case BRMSControllerDictionary: + case BRMSDependencyDictionary: + case Settings: + case PrefixList: + case SecurityZone: + case Zone: + case ServiceList: + case ServiceGroup: + case AddressGroup: + case ProtocolList: + case ActionList: + case TermList: + case SearchCriteria: + return true; + default: + return false; + } + }catch(Exception e){ + LOGGER.error("Dictionary not exits: " +dictionaryName +e); + return false; + } + } }
\ No newline at end of file diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/FirewallDictionaryController.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/FirewallDictionaryController.java index 4cf9a71ee..891787fa0 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/FirewallDictionaryController.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/FirewallDictionaryController.java @@ -65,1078 +65,1078 @@ import com.fasterxml.jackson.databind.ObjectMapper; @Controller public class FirewallDictionaryController { - private static final Logger LOGGER = FlexLogger.getLogger(FirewallDictionaryController.class); - - private static CommonClassDao commonClassDao; - private static String prefixListName = "prefixListName"; - private static String successMessage = "success"; - private static String operation = "operation"; - private static String errorMsg = "error"; - private static String dictionaryFields ="dictionaryFields"; - private static String duplicateResponseString = "Duplicate"; - private static String utf8 = "UTF-8"; - private static String applicationJsonContentType = "application / json"; - private static String protocolName = "protocolName"; - private static String groupNameStart = "Group_"; - private static String option = "option"; - private static String zoneName = "zoneName"; - private static String serviceName = "serviceName"; - private static String termName = "termName"; - private static String userid = "userid"; - private static String tagPickerName = "tagPickerName"; - private static String pfListDatas = "prefixListDictionaryDatas"; - private static String portListDatas = "portListDictionaryDatas"; - private static String protocolListDatas = "protocolListDictionaryDatas"; - private static String addressGroupDatas = "addressGroupDictionaryDatas"; - private static String actionListDatas = "actionListDictionaryDatas"; - private static String serviceGroupDatas = "serviceGroupDictionaryDatas"; - private static String securityZoneDatas = "securityZoneDictionaryDatas"; - private static String serviceListDatas = "serviceListDictionaryDatas"; - private static String zoneDatas = "zoneDictionaryDatas"; - private static String termListDictDatas = "termListDictionaryDatas"; - private static String fwDictListDatas = "fwDictListDictionaryDatas"; - private static String fwTagPickerDatas = "fwTagPickerDictionaryDatas"; - private static String fwTagDatas = "fwTagDictionaryDatas"; - - - @Autowired - public FirewallDictionaryController(CommonClassDao commonClassDao){ - FirewallDictionaryController.commonClassDao = commonClassDao; - } - - public static void setCommonClassDao(CommonClassDao clDao){ - commonClassDao = clDao; - } - - public FirewallDictionaryController(){ - super(); - } - - private DictionaryUtils getDictionaryUtilsInstance(){ - return DictionaryUtils.getDictionaryUtils(); - } - - @RequestMapping(value={"/get_PrefixListDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getPrefixListDictionaryEntityDataByName(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getDataByEntity(response, pfListDatas, prefixListName, PrefixList.class); - } - - @RequestMapping(value={"/get_PrefixListData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getPrefixListDictionaryEntityData(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getData(response, pfListDatas, PrefixList.class); - } - - @RequestMapping(value={"/fw_dictionary/save_prefixList"}, method={RequestMethod.POST}) - public ModelAndView savePrefixListDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - DictionaryUtils utils = getDictionaryUtilsInstance(); - try { - boolean fromAPI = utils.isRequestFromAPI(request); - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - JsonNode root = mapper.readTree(request.getReader()); - PrefixList prefixList; - if (fromAPI) { - prefixList = mapper.readValue(root.get(dictionaryFields).toString(), PrefixList.class); - } else { - prefixList = mapper.readValue(root.get("prefixListDictionaryData").toString(), PrefixList.class); - } - - List<Object> duplicateData = commonClassDao.checkDuplicateEntry(prefixList.getPrefixListName(), prefixListName, PrefixList.class); - boolean duplicateflag = false; - if(!duplicateData.isEmpty()){ - PrefixList data = (PrefixList) duplicateData.get(0); - if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ - prefixList.setId(data.getId()); - }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || - (request.getParameter(operation) == null && (data.getId() != prefixList.getId()))){ - duplicateflag = true; - } - } - String responseString = null; - if(!duplicateflag){ - if(prefixList.getId() == 0){ - commonClassDao.save(prefixList); - }else{ - commonClassDao.update(prefixList); - } - responseString = mapper.writeValueAsString(commonClassDao.getData(PrefixList.class)); - }else{ - responseString = duplicateResponseString; - } - if(fromAPI){ - return utils.getResultForApi(responseString); - }else{ - utils.setResponseData(response, pfListDatas, responseString); - } - }catch (Exception e){ - utils.setErrorResponseData(response, e); - } - return null; - } - - @RequestMapping(value={"/fw_dictionary/remove_PrefixList"}, method={RequestMethod.POST}) - public void removePrefixListDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.removeData(request, response, pfListDatas, PrefixList.class); - } - - @RequestMapping(value={"/fw_dictionary/validate_prefixList"}, method={RequestMethod.POST}) - public void validatePrefixListDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - DictionaryUtils utils = getDictionaryUtilsInstance(); - try { - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - JsonNode root = mapper.readTree(request.getReader()); - PrefixList prefixList = mapper.readValue(root.get("prefixListDictionaryData").toString(), PrefixList.class); - String responseValidation = successMessage; - try{ - CIDR.newCIDR(prefixList.getPrefixListValue()); - }catch(UnknownHostException e){ - LOGGER.error(e); - responseValidation = errorMsg; - } - response.setCharacterEncoding(utf8); - response.setContentType(applicationJsonContentType); - request.setCharacterEncoding(utf8); - - PrintWriter out = response.getWriter(); - JSONObject j = new JSONObject("{result: " + responseValidation + "}"); - out.write(j.toString()); - } - catch (Exception e){ - utils.setErrorResponseData(response, e); - } - } - - @RequestMapping(value={"/get_PortListData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getPortListDictionaryEntityData(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getData(response, portListDatas, PortList.class); - } - - @RequestMapping(value={"/fw_dictionary/save_portName"}, method={RequestMethod.POST}) - public ModelAndView savePortListDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - DictionaryUtils utils = getDictionaryUtilsInstance(); - try { - boolean fromAPI = utils.isRequestFromAPI(request); - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - JsonNode root = mapper.readTree(request.getReader()); - PortList portList; - if(fromAPI){ - portList = mapper.readValue(root.get(dictionaryFields).toString(), PortList.class); - }else{ - portList = mapper.readValue(root.get("portListDictionaryData").toString(), PortList.class); - } - List<Object> duplicateData = commonClassDao.checkDuplicateEntry(portList.getPortName(), "portName", PortList.class); - boolean duplicateflag = false; - if(!duplicateData.isEmpty()){ - PortList data = (PortList) duplicateData.get(0); - if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ - portList.setId(data.getId()); - }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || - (request.getParameter(operation) == null && (data.getId() != portList.getId()))){ - duplicateflag = true; - } - } - String responseString = null; - if(!duplicateflag){ - if(portList.getId() == 0){ - commonClassDao.save(portList); - }else{ - commonClassDao.update(portList); - } - responseString = mapper.writeValueAsString(commonClassDao.getData(PortList.class)); - }else{ - responseString = duplicateResponseString; - } - if(fromAPI){ - return utils.getResultForApi(responseString); - }else{ - utils.setResponseData(response, portListDatas, responseString); - } - }catch (Exception e){ - utils.setErrorResponseData(response, e); - } - return null; - } - - @RequestMapping(value={"/fw_dictionary/remove_PortList"}, method={RequestMethod.POST}) - public void removePortListDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.removeData(request, response, portListDatas, PortList.class); - } - - @RequestMapping(value={"/get_ProtocolListData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getProtocolListDictionaryEntityData(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getData(response, protocolListDatas, ProtocolList.class); - } - - @RequestMapping(value={"/get_ProtocolListDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getProtocolListDictionaryEntityDataByName(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getDataByEntity(response, protocolListDatas, protocolName, ProtocolList.class); - } - - @RequestMapping(value={"/fw_dictionary/save_protocolList"}, method={RequestMethod.POST}) - public ModelAndView saveProtocolListDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - DictionaryUtils utils = getDictionaryUtilsInstance(); - try { - boolean fromAPI = utils.isRequestFromAPI(request); - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - JsonNode root = mapper.readTree(request.getReader()); - ProtocolList protocolList; - if(fromAPI){ - protocolList = mapper.readValue(root.get(dictionaryFields).toString(), ProtocolList.class); - }else{ - protocolList = mapper.readValue(root.get("protocolListDictionaryData").toString(), ProtocolList.class); - } - List<Object> duplicateData = commonClassDao.checkDuplicateEntry(protocolList.getProtocolName(), protocolName, ProtocolList.class); - boolean duplicateflag = false; - if(!duplicateData.isEmpty()){ - ProtocolList data = (ProtocolList) duplicateData.get(0); - if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ - protocolList.setId(data.getId()); - }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || - (request.getParameter(operation) == null && (data.getId() != protocolList.getId()))){ - duplicateflag = true; - } - } - String responseString = null; - if(!duplicateflag){ - if(protocolList.getId() == 0){ - commonClassDao.save(protocolList); - }else{ - commonClassDao.update(protocolList); - } - responseString = mapper.writeValueAsString(commonClassDao.getData(ProtocolList.class)); - }else{ - responseString = duplicateResponseString; - } - if(fromAPI){ - return utils.getResultForApi(responseString); - }else{ - utils.setResponseData(response, protocolListDatas, responseString); - } - }catch (Exception e){ - utils.setErrorResponseData(response, e); - } - return null; - } - - @RequestMapping(value={"/fw_dictionary/remove_protocol"}, method={RequestMethod.POST}) - public void removeProtocolListDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.removeData(request, response, protocolListDatas, ProtocolList.class); - } - - @RequestMapping(value={"/get_AddressGroupDictionaryDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getAddressGroupDictionaryEntityDataByName(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getDataByEntity(response, addressGroupDatas, "name", AddressGroup.class); - } - - @RequestMapping(value={"/get_AddressGroupData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getAddressGroupDictionaryEntityData(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getData(response, addressGroupDatas, AddressGroup.class); - } - - @RequestMapping(value={"/fw_dictionary/save_addressGroup"}, method={RequestMethod.POST}) - public ModelAndView saveAddressGroupDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - DictionaryUtils utils = getDictionaryUtilsInstance(); - try { - boolean fromAPI = utils.isRequestFromAPI(request); - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - JsonNode root = mapper.readTree(request.getReader()); - AddressGroup addressGroup; - GridData gridData; - if(fromAPI){ - addressGroup = mapper.readValue(root.get(dictionaryFields).toString(), AddressGroup.class); - gridData = mapper.readValue(root.get(dictionaryFields).toString(), GridData.class); - }else{ - addressGroup = mapper.readValue(root.get("addressGroupDictionaryData").toString(), AddressGroup.class); - gridData = mapper.readValue(root.get("addressGroupDictionaryData").toString(), GridData.class); - } - if(!addressGroup.getGroupName().startsWith(groupNameStart)){ - String groupName = groupNameStart+addressGroup.getGroupName(); - addressGroup.setGroupName(groupName); - } - addressGroup.setServiceList(utils.appendKey(gridData.getAttributes(), option, ",")); - List<Object> duplicateData = commonClassDao.checkDuplicateEntry(addressGroup.getGroupName(), "name", AddressGroup.class); - boolean duplicateflag = false; - if(!duplicateData.isEmpty()){ - AddressGroup data = (AddressGroup) duplicateData.get(0); - if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ - addressGroup.setId(data.getId()); - }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || - (request.getParameter(operation) == null && (data.getId() != addressGroup.getId()))){ - duplicateflag = true; - } - } - String responseString = null; - if(!duplicateflag){ - if(addressGroup.getId() == 0){ - commonClassDao.save(addressGroup); - }else{ - commonClassDao.update(addressGroup); - } - responseString = mapper.writeValueAsString(commonClassDao.getData(AddressGroup.class)); - }else{ - responseString = duplicateResponseString; - } - if(fromAPI){ - return utils.getResultForApi(responseString); - }else{ - utils.setResponseData(response, addressGroupDatas, responseString); - } - }catch (Exception e){ - utils.setErrorResponseData(response, e); - } - return null; - } - - @RequestMapping(value={"/fw_dictionary/remove_AddressGroup"}, method={RequestMethod.POST}) - public void removeAddressGroupDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.removeData(request, response, addressGroupDatas, AddressGroup.class); - } - - @RequestMapping(value={"/get_ActionListDictionaryDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getActionListDictionaryEntityDataByName(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getDataByEntity(response, actionListDatas, "actionName", ActionList.class); - } - - @RequestMapping(value={"/get_ActionListData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getActionListDictionaryEntityData(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getData(response, actionListDatas, ActionList.class); - } - - @RequestMapping(value={"/fw_dictionary/save_ActionList"}, method={RequestMethod.POST}) - public ModelAndView saveActionListDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - DictionaryUtils utils = getDictionaryUtilsInstance(); - try { - boolean fromAPI = utils.isRequestFromAPI(request); - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - JsonNode root = mapper.readTree(request.getReader()); - ActionList actionList; - if (fromAPI) { - actionList = mapper.readValue(root.get(dictionaryFields).toString(), ActionList.class); - } else { - actionList = mapper.readValue(root.get("actionListDictionaryData").toString(), ActionList.class); - } - List<Object> duplicateData = commonClassDao.checkDuplicateEntry(actionList.getActionName(), "actionName", ActionList.class); - boolean duplicateflag = false; - if(!duplicateData.isEmpty()){ - ActionList data = (ActionList) duplicateData.get(0); - if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ - actionList.setId(data.getId()); - }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || - (request.getParameter(operation) == null && (data.getId() != actionList.getId()))){ - duplicateflag = true; - } - } - String responseString = null; - if(!duplicateflag){ - if(actionList.getId() == 0){ - commonClassDao.save(actionList); - }else{ - commonClassDao.update(actionList); - } - responseString = mapper.writeValueAsString(commonClassDao.getData(ActionList.class)); - }else{ - responseString = duplicateResponseString; - } - if(fromAPI){ - return utils.getResultForApi(responseString); - }else{ - utils.setResponseData(response, actionListDatas, responseString); - } - }catch (Exception e){ - utils.setErrorResponseData(response, e); - } - return null; - } - - @RequestMapping(value={"/fw_dictionary/remove_ActionList"}, method={RequestMethod.POST}) - public void removeActionListDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.removeData(request, response, actionListDatas, ActionList.class); - } - - @RequestMapping(value={"/get_ServiceGroupData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getServiceGroupDictionaryEntityData(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getData(response, serviceGroupDatas, GroupServiceList.class); - } - - @RequestMapping(value={"/get_ServiceGroupDictionaryDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getServiceGroupDictionaryEntityDataByName(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getDataByEntity(response, serviceGroupDatas, "name", GroupServiceList.class); - } - - @RequestMapping(value={"/fw_dictionary/save_serviceGroup"}, method={RequestMethod.POST}) - public ModelAndView saveServiceGroupDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - DictionaryUtils utils = getDictionaryUtilsInstance(); - try { - boolean fromAPI = utils.isRequestFromAPI(request); - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - JsonNode root = mapper.readTree(request.getReader()); - GroupServiceList groupServiceList; - GridData gridData; - if(fromAPI){ - groupServiceList = mapper.readValue(root.get(dictionaryFields).toString(), GroupServiceList.class); - gridData = mapper.readValue(root.get(dictionaryFields).toString(), GridData.class); - }else{ - groupServiceList = mapper.readValue(root.get("serviceGroupDictionaryData").toString(), GroupServiceList.class); - gridData = mapper.readValue(root.get("serviceGroupDictionaryData").toString(), GridData.class); - } - if(!groupServiceList.getGroupName().startsWith(groupNameStart)){ - String groupName = groupNameStart+groupServiceList.getGroupName(); - groupServiceList.setGroupName(groupName); - } - groupServiceList.setServiceList(utils.appendKey(gridData.getAttributes(), option, ",")); - List<Object> duplicateData = commonClassDao.checkDuplicateEntry(groupServiceList.getGroupName(), "name", GroupServiceList.class); - boolean duplicateflag = false; - if(!duplicateData.isEmpty()){ - GroupServiceList data = (GroupServiceList) duplicateData.get(0); - if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ - groupServiceList.setId(data.getId()); - }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || - (request.getParameter(operation) == null && (data.getId() != groupServiceList.getId()))){ - duplicateflag = true; - } - } - String responseString = null; - if(!duplicateflag){ - if(groupServiceList.getId() == 0){ - commonClassDao.save(groupServiceList); - }else{ - commonClassDao.update(groupServiceList); - } - responseString = mapper.writeValueAsString(commonClassDao.getData(GroupServiceList.class)); - }else{ - responseString = duplicateResponseString; - } - if(fromAPI){ - return utils.getResultForApi(responseString); - }else{ - utils.setResponseData(response, serviceGroupDatas, responseString); - } - }catch (Exception e){ - utils.setErrorResponseData(response, e); - } - return null; - } - - @RequestMapping(value={"/fw_dictionary/remove_serviceGroup"}, method={RequestMethod.POST}) - public void removeServiceGroupDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.removeData(request, response, serviceGroupDatas, GroupServiceList.class); - } - - @RequestMapping(value={"/get_SecurityZoneDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getSecurityZoneDictionaryEntityDataByName(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getDataByEntity(response, securityZoneDatas, zoneName, SecurityZone.class); - } - - @RequestMapping(value={"/get_SecurityZoneData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getSecurityZoneDictionaryEntityData(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getData(response, securityZoneDatas, SecurityZone.class); - } - - @RequestMapping(value={"/fw_dictionary/save_securityZone"}, method={RequestMethod.POST}) - public ModelAndView saveSecurityZoneDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - DictionaryUtils utils = getDictionaryUtilsInstance(); - try { - boolean fromAPI = utils.isRequestFromAPI(request); - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - JsonNode root = mapper.readTree(request.getReader()); - SecurityZone securityZone; - if(fromAPI){ - securityZone = mapper.readValue(root.get(dictionaryFields).toString(), SecurityZone.class); - }else{ - securityZone = mapper.readValue(root.get("securityZoneDictionaryData").toString(), SecurityZone.class); - } - List<Object> duplicateData = commonClassDao.checkDuplicateEntry(securityZone.getZoneName(), zoneName, SecurityZone.class); - boolean duplicateflag = false; - if(!duplicateData.isEmpty()){ - SecurityZone data = (SecurityZone) duplicateData.get(0); - if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ - securityZone.setId(data.getId()); - }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || - (request.getParameter(operation) == null && (data.getId() != securityZone.getId()))){ - duplicateflag = true; - } - } - String responseString = null; - if(!duplicateflag){ - if(securityZone.getId() == 0){ - commonClassDao.save(securityZone); - }else{ - commonClassDao.update(securityZone); - } - responseString = mapper.writeValueAsString(commonClassDao.getData(SecurityZone.class)); - }else{ - responseString = duplicateResponseString; - } - if(fromAPI){ - return utils.getResultForApi(responseString); - }else{ - utils.setResponseData(response, securityZoneDatas, responseString); - } - }catch (Exception e){ - utils.setErrorResponseData(response, e); - } - return null; - } - - @RequestMapping(value={"/fw_dictionary/remove_securityZone"}, method={RequestMethod.POST}) - public void removeSecurityZoneDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.removeData(request, response, securityZoneDatas, SecurityZone.class); - } - - - @RequestMapping(value={"/get_ServiceListData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getServiceListDictionaryEntityData(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getData(response, serviceListDatas, ServiceList.class); - } - - @RequestMapping(value={"/get_ServiceListDictionaryDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getServiceListDictionaryEntityDataByName(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getDataByEntity(response, serviceListDatas, serviceName, ServiceList.class); - } - - @RequestMapping(value={"/fw_dictionary/save_serviceList"}, method={RequestMethod.POST}) - public ModelAndView saveServiceListDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - DictionaryUtils utils = getDictionaryUtilsInstance(); - try { - boolean fromAPI = utils.isRequestFromAPI(request); - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - JsonNode root = mapper.readTree(request.getReader()); - ServiceList serviceList; - GridData serviceListGridData; - if(fromAPI){ - serviceList = mapper.readValue(root.get(dictionaryFields).toString(), ServiceList.class); - serviceListGridData = mapper.readValue(root.get(dictionaryFields).toString(), GridData.class); - }else{ - serviceList = mapper.readValue(root.get("serviceListDictionaryData").toString(), ServiceList.class); - serviceListGridData = mapper.readValue(root.get("serviceListDictionaryData").toString(), GridData.class); - } - serviceList.setServiceTransProtocol(utils.appendKey(serviceListGridData.getTransportProtocols(), option, ",")); - serviceList.setServiceAppProtocol(utils.appendKey(serviceListGridData.getAppProtocols(), option, ",")); - serviceList.setServiceType("SERVICE"); - List<Object> duplicateData = commonClassDao.checkDuplicateEntry(serviceList.getServiceName(), serviceName, ServiceList.class); - boolean duplicateflag = false; - if(!duplicateData.isEmpty()){ - ServiceList data = (ServiceList) duplicateData.get(0); - if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ - serviceList.setId(data.getId()); - }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || - (request.getParameter(operation) == null && (data.getId() != serviceList.getId()))){ - duplicateflag = true; - } - } - String responseString = null; - if(!duplicateflag){ - if(serviceList.getId() == 0){ - commonClassDao.save(serviceList); - }else{ - commonClassDao.update(serviceList); - } - responseString = mapper.writeValueAsString(commonClassDao.getData(ServiceList.class)); - }else{ - responseString = duplicateResponseString; - } - if(fromAPI){ - return utils.getResultForApi(responseString); - }else{ - utils.setResponseData(response, serviceListDatas, responseString); - } - }catch (Exception e){ - utils.setErrorResponseData(response, e); - } - return null; - } - - @RequestMapping(value={"/fw_dictionary/remove_serviceList"}, method={RequestMethod.POST}) - public void removeServiceListDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.removeData(request, response, serviceListDatas, ServiceList.class); - } - - @RequestMapping(value={"/get_ZoneData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getZoneDictionaryEntityData(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getData(response, zoneDatas, Zone.class); - } - - @RequestMapping(value={"/get_ZoneDictionaryDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getZoneDictionaryEntityDataByName(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getDataByEntity(response, zoneDatas, zoneName, Zone.class); - } - - @RequestMapping(value={"/fw_dictionary/save_zoneName"}, method={RequestMethod.POST}) - public ModelAndView saveZoneDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - DictionaryUtils utils = getDictionaryUtilsInstance(); - try { - boolean fromAPI = utils.isRequestFromAPI(request); - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - JsonNode root = mapper.readTree(request.getReader()); - Zone zone; - if (fromAPI) { - zone = mapper.readValue(root.get(dictionaryFields).toString(), Zone.class); - } else { - zone = mapper.readValue(root.get("zoneDictionaryData").toString(), Zone.class); - } - List<Object> duplicateData = commonClassDao.checkDuplicateEntry(zone.getZoneName(), zoneName, Zone.class); - boolean duplicateflag = false; - if(!duplicateData.isEmpty()){ - Zone data = (Zone) duplicateData.get(0); - if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ - zone.setId(data.getId()); - }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || - (request.getParameter(operation) == null && (data.getId() != zone.getId()))){ - duplicateflag = true; - } - } - String responseString = null; - if(!duplicateflag){ - if(zone.getId() == 0){ - commonClassDao.save(zone); - }else{ - commonClassDao.update(zone); - } - responseString = mapper.writeValueAsString(commonClassDao.getData(Zone.class)); - }else{ - responseString = duplicateResponseString; - } - if(fromAPI){ - return utils.getResultForApi(responseString); - }else{ - utils.setResponseData(response, zoneDatas, responseString); - } - }catch (Exception e){ - utils.setErrorResponseData(response, e); - } - return null; - } - - @RequestMapping(value={"/fw_dictionary/remove_zone"}, method={RequestMethod.POST}) - public void removeZoneDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.removeData(request, response, zoneDatas, Zone.class); - } - - @RequestMapping(value={"/get_TermListDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getTermListDictionaryEntityDataByName(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getDataByEntity(response, termListDictDatas, termName, TermList.class); - } - - @RequestMapping(value={"/get_TermListData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getTermListDictionaryEntityData(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getData(response, termListDictDatas, TermList.class); - } - - @RequestMapping(value={"/fw_dictionary/save_termList"}, method={RequestMethod.POST}) - public ModelAndView saveTermListDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - DictionaryUtils utils = getDictionaryUtilsInstance(); - try { - boolean fromAPI = utils.isRequestFromAPI(request); - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - JsonNode root = mapper.readTree(request.getReader()); - TermList termList; - TermListData termListDatas; - String userId = null; - if(fromAPI){ - termList = mapper.readValue(root.get(dictionaryFields).toString(), TermList.class); - termListDatas = mapper.readValue(root.get(dictionaryFields).toString(), TermListData.class); - userId = "API"; - }else{ - termList = mapper.readValue(root.get("termListDictionaryData").toString(), TermList.class); - termListDatas = mapper.readValue(root.get("termListDictionaryData").toString(), TermListData.class); - userId = root.get(userid).textValue(); - } - - termList.setFromZones(utils.appendKey(termListDatas.getFromZoneDatas(), option, ",")); - termList.setToZones(utils.appendKey(termListDatas.getToZoneDatas(), option, ",")); - termList.setSrcIPList(utils.appendKey(termListDatas.getSourceListDatas(), option, ",")); - termList.setDestIPList(utils.appendKey(termListDatas.getDestinationListDatas(), option, ",")); - termList.setSrcPortList(utils.appendKey(termListDatas.getSourceServiceDatas(), option, ",")); - termList.setDestPortList(utils.appendKey(termListDatas.getDestinationServiceDatas(), option, ",")); - termList.setAction(utils.appendKey(termListDatas.getActionListDatas(), option, ",")); - - UserInfo userInfo = utils.getUserInfo(userId); - List<Object> duplicateData = commonClassDao.checkDuplicateEntry(termList.getTermName(), termName, TermList.class); - boolean duplicateflag = false; - if(!duplicateData.isEmpty()){ - TermList data = (TermList) duplicateData.get(0); - if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ - termList.setId(data.getId()); - }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || - (request.getParameter(operation) == null && (data.getId() != termList.getId()))){ - duplicateflag = true; - } - } - String responseString = null; - if(!duplicateflag){ - termList.setUserModifiedBy(userInfo); - if(termList.getId() == 0){ - termList.setUserCreatedBy(userInfo); - commonClassDao.save(termList); - }else{ - termList.setModifiedDate(new Date()); - commonClassDao.update(termList); - } - responseString = mapper.writeValueAsString(commonClassDao.getData(TermList.class)); - }else{ - responseString = duplicateResponseString; - } - if(fromAPI){ - return utils.getResultForApi(responseString); - }else{ - utils.setResponseData(response, termListDictDatas, responseString); - } - }catch (Exception e){ - utils.setErrorResponseData(response, e); - } - return null; - } - - @RequestMapping(value={"/fw_dictionary/remove_termList"}, method={RequestMethod.POST}) - public void removeTermListDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.removeData(request, response, termListDictDatas, TermList.class); - } - - //ParentList Dictionary Data - @RequestMapping(value={"/get_FWDictionaryListDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getFWDictListDictionaryEntityDataByName(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getDataByEntity(response, fwDictListDatas, "parentItemName", FirewallDictionaryList.class); - } - - @RequestMapping(value={"/get_FWDictionaryListData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getFWDictionaryListEntityData(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getData(response, fwDictListDatas, FirewallDictionaryList.class); - } - - @RequestMapping(value={"/fw_dictionary/save_FWDictionaryList"}, method={RequestMethod.POST}) - public ModelAndView saveFWDictionaryList(HttpServletRequest request, HttpServletResponse response) throws IOException{ - DictionaryUtils utils = getDictionaryUtilsInstance(); - try { - boolean fromAPI = utils.isRequestFromAPI(request); - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - JsonNode root = mapper.readTree(request.getReader()); - FirewallDictionaryList fwDictList; - GridData gridData; - if (fromAPI) { - fwDictList = mapper.readValue(root.get(dictionaryFields).toString(), FirewallDictionaryList.class); - gridData = mapper.readValue(root.get(dictionaryFields).toString(), GridData.class); - } else { - fwDictList = mapper.readValue(root.get("fwDictListDictionaryData").toString(), FirewallDictionaryList.class); - gridData = mapper.readValue(root.get("fwDictListDictionaryData").toString(), GridData.class); - } - - fwDictList.setServiceList(utils.appendKey(gridData.getAttributes(), option, ",")); - fwDictList.setAddressList(utils.appendKey(gridData.getAlAttributes(), option, ",")); - - List<Object> duplicateData = commonClassDao.checkDuplicateEntry(fwDictList.getParentItemName(), "parentItemName", FirewallDictionaryList.class); - boolean duplicateflag = false; - if(!duplicateData.isEmpty()){ - FirewallDictionaryList data = (FirewallDictionaryList) duplicateData.get(0); - if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ - fwDictList.setId(data.getId()); - }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || - (request.getParameter(operation) == null && (data.getId() != fwDictList.getId()))){ - duplicateflag = true; - } - } - String responseString = null; - if(!duplicateflag){ - if(fwDictList.getId() == 0){ - commonClassDao.save(fwDictList); - }else{ - commonClassDao.update(fwDictList); - } - responseString = mapper.writeValueAsString(commonClassDao.getData(FirewallDictionaryList.class)); - }else{ - responseString = duplicateResponseString; - } - if(fromAPI){ - return utils.getResultForApi(responseString); - }else{ - utils.setResponseData(response, fwDictListDatas, responseString); - } - } - catch (Exception e){ - utils.setErrorResponseData(response, e); - } - return null; - } - - @RequestMapping(value={"/fw_dictionary/remove_FWDictionaryList"}, method={RequestMethod.POST}) - public void removeFWDictionaryList(HttpServletRequest request, HttpServletResponse response) throws IOException { - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.removeData(request, response, fwDictListDatas, FirewallDictionaryList.class); - } - - - @RequestMapping(value={"/get_TagPickerNameByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getTagPickerNameEntityDataByName(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getDataByEntity(response, fwTagPickerDatas, tagPickerName, FWTagPicker.class); - } - - @RequestMapping(value={"/get_TagPickerListData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getTagPickerDictionaryEntityData(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getData(response, fwTagPickerDatas, FWTagPicker.class); - } - - @RequestMapping(value={"/fw_dictionary/save_fwTagPicker"}, method={RequestMethod.POST}) - public ModelAndView saveFirewallTagPickerDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - DictionaryUtils utils = getDictionaryUtilsInstance(); - try { - boolean fromAPI = utils.isRequestFromAPI(request); - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - JsonNode root = mapper.readTree(request.getReader()); - FWTagPicker fwTagPicker; - TagGridValues data; - String userId = ""; - if (fromAPI) { - fwTagPicker = mapper.readValue(root.get(dictionaryFields).toString(), FWTagPicker.class); - data = mapper.readValue(root.get(dictionaryFields).toString(), TagGridValues.class); - userId = "API"; - } else { - fwTagPicker = mapper.readValue(root.get("fwTagPickerDictionaryData").toString(), FWTagPicker.class); - data = mapper.readValue(root.get("fwTagPickerDictionaryData").toString(), TagGridValues.class); - userId = root.get(userid).textValue(); - } - fwTagPicker.setTagValues(utils.appendKeyValue(data.getTags(), "#", ":")); - - UserInfo userInfo = utils.getUserInfo(userId); - - List<Object> duplicateData = commonClassDao.checkDuplicateEntry(fwTagPicker.getTagPickerName(), tagPickerName, FWTagPicker.class); - boolean duplicateflag = false; - if(!duplicateData.isEmpty()){ - FWTagPicker data1 = (FWTagPicker) duplicateData.get(0); - if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ - fwTagPicker.setId(data1.getId()); - }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || - (request.getParameter(operation) == null && (data1.getId() != fwTagPicker.getId()))){ - duplicateflag = true; - } - } - String responseString = null; - if(!duplicateflag){ - fwTagPicker.setUserModifiedBy(userInfo); - if(fwTagPicker.getId() == 0){ - fwTagPicker.setUserCreatedBy(userInfo); - commonClassDao.save(fwTagPicker); - }else{ - fwTagPicker.setModifiedDate(new Date()); - commonClassDao.update(fwTagPicker); - } - responseString = mapper.writeValueAsString(commonClassDao.getData(FWTagPicker.class)); - }else{ - responseString = duplicateResponseString; - } - if(fromAPI){ - return utils.getResultForApi(responseString); - }else{ - utils.setResponseData(response, fwTagPickerDatas, responseString); - } - } - catch (Exception e){ - utils.setErrorResponseData(response, e); - } - return null; - } - - @RequestMapping(value={"/fw_dictionary/remove_tagPicker"}, method={RequestMethod.POST}) - public void removeFirewallTagPickerDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.removeData(request, response, fwTagPickerDatas, FWTagPicker.class); - } - - @RequestMapping(value={"/get_TagListData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getTagDictionaryEntityData(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getData(response, fwTagDatas, FWTag.class); - } - - @RequestMapping(value={"/get_TagNameByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getTagNameEntityDataByName(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getDataByEntity(response, fwTagDatas, "fwTagName", FWTag.class); - } - - - @RequestMapping(value={"/fw_dictionary/save_fwTag"}, method={RequestMethod.POST}) - public ModelAndView saveFirewallTagDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - DictionaryUtils utils = getDictionaryUtilsInstance(); - try { - boolean fromAPI = utils.isRequestFromAPI(request); - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - JsonNode root = mapper.readTree(request.getReader()); - FWTag fwTag; - TagGridValues tagGridValues; - String userId=""; - if(fromAPI){ - fwTag = mapper.readValue(root.get(dictionaryFields).toString(), FWTag.class); - tagGridValues = mapper.readValue(root.get(dictionaryFields).toString(), TagGridValues.class); - userId = "API"; - }else{ - fwTag = mapper.readValue(root.get("fwTagDictionaryData").toString(), FWTag.class); - tagGridValues = mapper.readValue(root.get("fwTagDictionaryData").toString(), TagGridValues.class); - userId = root.get(userid).textValue(); - } - fwTag.setTagValues(utils.appendKey(tagGridValues.getTags(), "tags", ",")); - - UserInfo userInfo = utils.getUserInfo(userId); - List<Object> duplicateData = commonClassDao.checkDuplicateEntry(fwTag.getFwTagName(), "fwTagName", FWTag.class); - boolean duplicateflag = false; - if(!duplicateData.isEmpty()){ - FWTag data = (FWTag) duplicateData.get(0); - if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ - fwTag.setId(data.getId()); - }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || - (request.getParameter(operation) == null && (data.getId() != fwTag.getId()))){ - duplicateflag = true; - } - } - String responseString = null; - if(!duplicateflag){ - fwTag.setUserModifiedBy(userInfo); - if(fwTag.getId() == 0){ - fwTag.setUserCreatedBy(userInfo); - commonClassDao.save(fwTag); - }else{ - fwTag.setModifiedDate(new Date()); - commonClassDao.update(fwTag); - } - responseString = mapper.writeValueAsString(commonClassDao.getData(FWTag.class)); - }else{ - responseString = duplicateResponseString; - } - if(fromAPI){ - return utils.getResultForApi(responseString); - }else{ - utils.setResponseData(response, fwTagDatas, responseString); - } - } - catch (Exception e){ - utils.setErrorResponseData(response, e); - } - return null; - } - - @RequestMapping(value={"/fw_dictionary/remove_tagList"}, method={RequestMethod.POST}) - public void removeFirewallTagDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.removeData(request, response, fwTagDatas, FWTag.class); - } + private static final Logger LOGGER = FlexLogger.getLogger(FirewallDictionaryController.class); + + private static CommonClassDao commonClassDao; + private static String prefixListName = "prefixListName"; + private static String successMessage = "success"; + private static String operation = "operation"; + private static String errorMsg = "error"; + private static String dictionaryFields ="dictionaryFields"; + private static String duplicateResponseString = "Duplicate"; + private static String utf8 = "UTF-8"; + private static String applicationJsonContentType = "application / json"; + private static String protocolName = "protocolName"; + private static String groupNameStart = "Group_"; + private static String option = "option"; + private static String zoneName = "zoneName"; + private static String serviceName = "serviceName"; + private static String termName = "termName"; + private static String userid = "userid"; + private static String tagPickerName = "tagPickerName"; + private static String pfListDatas = "prefixListDictionaryDatas"; + private static String portListDatas = "portListDictionaryDatas"; + private static String protocolListDatas = "protocolListDictionaryDatas"; + private static String addressGroupDatas = "addressGroupDictionaryDatas"; + private static String actionListDatas = "actionListDictionaryDatas"; + private static String serviceGroupDatas = "serviceGroupDictionaryDatas"; + private static String securityZoneDatas = "securityZoneDictionaryDatas"; + private static String serviceListDatas = "serviceListDictionaryDatas"; + private static String zoneDatas = "zoneDictionaryDatas"; + private static String termListDictDatas = "termListDictionaryDatas"; + private static String fwDictListDatas = "fwDictListDictionaryDatas"; + private static String fwTagPickerDatas = "fwTagPickerDictionaryDatas"; + private static String fwTagDatas = "fwTagDictionaryDatas"; + + + @Autowired + public FirewallDictionaryController(CommonClassDao commonClassDao){ + FirewallDictionaryController.commonClassDao = commonClassDao; + } + + public static void setCommonClassDao(CommonClassDao clDao){ + commonClassDao = clDao; + } + + public FirewallDictionaryController(){ + super(); + } + + private DictionaryUtils getDictionaryUtilsInstance(){ + return DictionaryUtils.getDictionaryUtils(); + } + + @RequestMapping(value={"/get_PrefixListDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getPrefixListDictionaryEntityDataByName(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getDataByEntity(response, pfListDatas, prefixListName, PrefixList.class); + } + + @RequestMapping(value={"/get_PrefixListData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getPrefixListDictionaryEntityData(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getData(response, pfListDatas, PrefixList.class); + } + + @RequestMapping(value={"/fw_dictionary/save_prefixList"}, method={RequestMethod.POST}) + public ModelAndView savePrefixListDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + DictionaryUtils utils = getDictionaryUtilsInstance(); + try { + boolean fromAPI = utils.isRequestFromAPI(request); + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + JsonNode root = mapper.readTree(request.getReader()); + PrefixList prefixList; + if (fromAPI) { + prefixList = mapper.readValue(root.get(dictionaryFields).toString(), PrefixList.class); + } else { + prefixList = mapper.readValue(root.get("prefixListDictionaryData").toString(), PrefixList.class); + } + + List<Object> duplicateData = commonClassDao.checkDuplicateEntry(prefixList.getPrefixListName(), prefixListName, PrefixList.class); + boolean duplicateflag = false; + if(!duplicateData.isEmpty()){ + PrefixList data = (PrefixList) duplicateData.get(0); + if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ + prefixList.setId(data.getId()); + }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || + (request.getParameter(operation) == null && (data.getId() != prefixList.getId()))){ + duplicateflag = true; + } + } + String responseString = null; + if(!duplicateflag){ + if(prefixList.getId() == 0){ + commonClassDao.save(prefixList); + }else{ + commonClassDao.update(prefixList); + } + responseString = mapper.writeValueAsString(commonClassDao.getData(PrefixList.class)); + }else{ + responseString = duplicateResponseString; + } + if(fromAPI){ + return utils.getResultForApi(responseString); + }else{ + utils.setResponseData(response, pfListDatas, responseString); + } + }catch (Exception e){ + utils.setErrorResponseData(response, e); + } + return null; + } + + @RequestMapping(value={"/fw_dictionary/remove_PrefixList"}, method={RequestMethod.POST}) + public void removePrefixListDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.removeData(request, response, pfListDatas, PrefixList.class); + } + + @RequestMapping(value={"/fw_dictionary/validate_prefixList"}, method={RequestMethod.POST}) + public void validatePrefixListDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + DictionaryUtils utils = getDictionaryUtilsInstance(); + try { + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + JsonNode root = mapper.readTree(request.getReader()); + PrefixList prefixList = mapper.readValue(root.get("prefixListDictionaryData").toString(), PrefixList.class); + String responseValidation = successMessage; + try{ + CIDR.newCIDR(prefixList.getPrefixListValue()); + }catch(UnknownHostException e){ + LOGGER.error(e); + responseValidation = errorMsg; + } + response.setCharacterEncoding(utf8); + response.setContentType(applicationJsonContentType); + request.setCharacterEncoding(utf8); + + PrintWriter out = response.getWriter(); + JSONObject j = new JSONObject("{result: " + responseValidation + "}"); + out.write(j.toString()); + } + catch (Exception e){ + utils.setErrorResponseData(response, e); + } + } + + @RequestMapping(value={"/get_PortListData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getPortListDictionaryEntityData(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getData(response, portListDatas, PortList.class); + } + + @RequestMapping(value={"/fw_dictionary/save_portName"}, method={RequestMethod.POST}) + public ModelAndView savePortListDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + DictionaryUtils utils = getDictionaryUtilsInstance(); + try { + boolean fromAPI = utils.isRequestFromAPI(request); + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + JsonNode root = mapper.readTree(request.getReader()); + PortList portList; + if(fromAPI){ + portList = mapper.readValue(root.get(dictionaryFields).toString(), PortList.class); + }else{ + portList = mapper.readValue(root.get("portListDictionaryData").toString(), PortList.class); + } + List<Object> duplicateData = commonClassDao.checkDuplicateEntry(portList.getPortName(), "portName", PortList.class); + boolean duplicateflag = false; + if(!duplicateData.isEmpty()){ + PortList data = (PortList) duplicateData.get(0); + if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ + portList.setId(data.getId()); + }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || + (request.getParameter(operation) == null && (data.getId() != portList.getId()))){ + duplicateflag = true; + } + } + String responseString = null; + if(!duplicateflag){ + if(portList.getId() == 0){ + commonClassDao.save(portList); + }else{ + commonClassDao.update(portList); + } + responseString = mapper.writeValueAsString(commonClassDao.getData(PortList.class)); + }else{ + responseString = duplicateResponseString; + } + if(fromAPI){ + return utils.getResultForApi(responseString); + }else{ + utils.setResponseData(response, portListDatas, responseString); + } + }catch (Exception e){ + utils.setErrorResponseData(response, e); + } + return null; + } + + @RequestMapping(value={"/fw_dictionary/remove_PortList"}, method={RequestMethod.POST}) + public void removePortListDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.removeData(request, response, portListDatas, PortList.class); + } + + @RequestMapping(value={"/get_ProtocolListData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getProtocolListDictionaryEntityData(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getData(response, protocolListDatas, ProtocolList.class); + } + + @RequestMapping(value={"/get_ProtocolListDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getProtocolListDictionaryEntityDataByName(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getDataByEntity(response, protocolListDatas, protocolName, ProtocolList.class); + } + + @RequestMapping(value={"/fw_dictionary/save_protocolList"}, method={RequestMethod.POST}) + public ModelAndView saveProtocolListDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + DictionaryUtils utils = getDictionaryUtilsInstance(); + try { + boolean fromAPI = utils.isRequestFromAPI(request); + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + JsonNode root = mapper.readTree(request.getReader()); + ProtocolList protocolList; + if(fromAPI){ + protocolList = mapper.readValue(root.get(dictionaryFields).toString(), ProtocolList.class); + }else{ + protocolList = mapper.readValue(root.get("protocolListDictionaryData").toString(), ProtocolList.class); + } + List<Object> duplicateData = commonClassDao.checkDuplicateEntry(protocolList.getProtocolName(), protocolName, ProtocolList.class); + boolean duplicateflag = false; + if(!duplicateData.isEmpty()){ + ProtocolList data = (ProtocolList) duplicateData.get(0); + if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ + protocolList.setId(data.getId()); + }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || + (request.getParameter(operation) == null && (data.getId() != protocolList.getId()))){ + duplicateflag = true; + } + } + String responseString = null; + if(!duplicateflag){ + if(protocolList.getId() == 0){ + commonClassDao.save(protocolList); + }else{ + commonClassDao.update(protocolList); + } + responseString = mapper.writeValueAsString(commonClassDao.getData(ProtocolList.class)); + }else{ + responseString = duplicateResponseString; + } + if(fromAPI){ + return utils.getResultForApi(responseString); + }else{ + utils.setResponseData(response, protocolListDatas, responseString); + } + }catch (Exception e){ + utils.setErrorResponseData(response, e); + } + return null; + } + + @RequestMapping(value={"/fw_dictionary/remove_protocol"}, method={RequestMethod.POST}) + public void removeProtocolListDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.removeData(request, response, protocolListDatas, ProtocolList.class); + } + + @RequestMapping(value={"/get_AddressGroupDictionaryDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getAddressGroupDictionaryEntityDataByName(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getDataByEntity(response, addressGroupDatas, "name", AddressGroup.class); + } + + @RequestMapping(value={"/get_AddressGroupData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getAddressGroupDictionaryEntityData(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getData(response, addressGroupDatas, AddressGroup.class); + } + + @RequestMapping(value={"/fw_dictionary/save_addressGroup"}, method={RequestMethod.POST}) + public ModelAndView saveAddressGroupDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + DictionaryUtils utils = getDictionaryUtilsInstance(); + try { + boolean fromAPI = utils.isRequestFromAPI(request); + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + JsonNode root = mapper.readTree(request.getReader()); + AddressGroup addressGroup; + GridData gridData; + if(fromAPI){ + addressGroup = mapper.readValue(root.get(dictionaryFields).toString(), AddressGroup.class); + gridData = mapper.readValue(root.get(dictionaryFields).toString(), GridData.class); + }else{ + addressGroup = mapper.readValue(root.get("addressGroupDictionaryData").toString(), AddressGroup.class); + gridData = mapper.readValue(root.get("addressGroupDictionaryData").toString(), GridData.class); + } + if(!addressGroup.getGroupName().startsWith(groupNameStart)){ + String groupName = groupNameStart+addressGroup.getGroupName(); + addressGroup.setGroupName(groupName); + } + addressGroup.setServiceList(utils.appendKey(gridData.getAttributes(), option, ",")); + List<Object> duplicateData = commonClassDao.checkDuplicateEntry(addressGroup.getGroupName(), "name", AddressGroup.class); + boolean duplicateflag = false; + if(!duplicateData.isEmpty()){ + AddressGroup data = (AddressGroup) duplicateData.get(0); + if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ + addressGroup.setId(data.getId()); + }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || + (request.getParameter(operation) == null && (data.getId() != addressGroup.getId()))){ + duplicateflag = true; + } + } + String responseString = null; + if(!duplicateflag){ + if(addressGroup.getId() == 0){ + commonClassDao.save(addressGroup); + }else{ + commonClassDao.update(addressGroup); + } + responseString = mapper.writeValueAsString(commonClassDao.getData(AddressGroup.class)); + }else{ + responseString = duplicateResponseString; + } + if(fromAPI){ + return utils.getResultForApi(responseString); + }else{ + utils.setResponseData(response, addressGroupDatas, responseString); + } + }catch (Exception e){ + utils.setErrorResponseData(response, e); + } + return null; + } + + @RequestMapping(value={"/fw_dictionary/remove_AddressGroup"}, method={RequestMethod.POST}) + public void removeAddressGroupDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.removeData(request, response, addressGroupDatas, AddressGroup.class); + } + + @RequestMapping(value={"/get_ActionListDictionaryDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getActionListDictionaryEntityDataByName(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getDataByEntity(response, actionListDatas, "actionName", ActionList.class); + } + + @RequestMapping(value={"/get_ActionListData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getActionListDictionaryEntityData(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getData(response, actionListDatas, ActionList.class); + } + + @RequestMapping(value={"/fw_dictionary/save_ActionList"}, method={RequestMethod.POST}) + public ModelAndView saveActionListDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + DictionaryUtils utils = getDictionaryUtilsInstance(); + try { + boolean fromAPI = utils.isRequestFromAPI(request); + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + JsonNode root = mapper.readTree(request.getReader()); + ActionList actionList; + if (fromAPI) { + actionList = mapper.readValue(root.get(dictionaryFields).toString(), ActionList.class); + } else { + actionList = mapper.readValue(root.get("actionListDictionaryData").toString(), ActionList.class); + } + List<Object> duplicateData = commonClassDao.checkDuplicateEntry(actionList.getActionName(), "actionName", ActionList.class); + boolean duplicateflag = false; + if(!duplicateData.isEmpty()){ + ActionList data = (ActionList) duplicateData.get(0); + if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ + actionList.setId(data.getId()); + }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || + (request.getParameter(operation) == null && (data.getId() != actionList.getId()))){ + duplicateflag = true; + } + } + String responseString = null; + if(!duplicateflag){ + if(actionList.getId() == 0){ + commonClassDao.save(actionList); + }else{ + commonClassDao.update(actionList); + } + responseString = mapper.writeValueAsString(commonClassDao.getData(ActionList.class)); + }else{ + responseString = duplicateResponseString; + } + if(fromAPI){ + return utils.getResultForApi(responseString); + }else{ + utils.setResponseData(response, actionListDatas, responseString); + } + }catch (Exception e){ + utils.setErrorResponseData(response, e); + } + return null; + } + + @RequestMapping(value={"/fw_dictionary/remove_ActionList"}, method={RequestMethod.POST}) + public void removeActionListDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.removeData(request, response, actionListDatas, ActionList.class); + } + + @RequestMapping(value={"/get_ServiceGroupData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getServiceGroupDictionaryEntityData(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getData(response, serviceGroupDatas, GroupServiceList.class); + } + + @RequestMapping(value={"/get_ServiceGroupDictionaryDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getServiceGroupDictionaryEntityDataByName(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getDataByEntity(response, serviceGroupDatas, "name", GroupServiceList.class); + } + + @RequestMapping(value={"/fw_dictionary/save_serviceGroup"}, method={RequestMethod.POST}) + public ModelAndView saveServiceGroupDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + DictionaryUtils utils = getDictionaryUtilsInstance(); + try { + boolean fromAPI = utils.isRequestFromAPI(request); + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + JsonNode root = mapper.readTree(request.getReader()); + GroupServiceList groupServiceList; + GridData gridData; + if(fromAPI){ + groupServiceList = mapper.readValue(root.get(dictionaryFields).toString(), GroupServiceList.class); + gridData = mapper.readValue(root.get(dictionaryFields).toString(), GridData.class); + }else{ + groupServiceList = mapper.readValue(root.get("serviceGroupDictionaryData").toString(), GroupServiceList.class); + gridData = mapper.readValue(root.get("serviceGroupDictionaryData").toString(), GridData.class); + } + if(!groupServiceList.getGroupName().startsWith(groupNameStart)){ + String groupName = groupNameStart+groupServiceList.getGroupName(); + groupServiceList.setGroupName(groupName); + } + groupServiceList.setServiceList(utils.appendKey(gridData.getAttributes(), option, ",")); + List<Object> duplicateData = commonClassDao.checkDuplicateEntry(groupServiceList.getGroupName(), "name", GroupServiceList.class); + boolean duplicateflag = false; + if(!duplicateData.isEmpty()){ + GroupServiceList data = (GroupServiceList) duplicateData.get(0); + if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ + groupServiceList.setId(data.getId()); + }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || + (request.getParameter(operation) == null && (data.getId() != groupServiceList.getId()))){ + duplicateflag = true; + } + } + String responseString = null; + if(!duplicateflag){ + if(groupServiceList.getId() == 0){ + commonClassDao.save(groupServiceList); + }else{ + commonClassDao.update(groupServiceList); + } + responseString = mapper.writeValueAsString(commonClassDao.getData(GroupServiceList.class)); + }else{ + responseString = duplicateResponseString; + } + if(fromAPI){ + return utils.getResultForApi(responseString); + }else{ + utils.setResponseData(response, serviceGroupDatas, responseString); + } + }catch (Exception e){ + utils.setErrorResponseData(response, e); + } + return null; + } + + @RequestMapping(value={"/fw_dictionary/remove_serviceGroup"}, method={RequestMethod.POST}) + public void removeServiceGroupDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.removeData(request, response, serviceGroupDatas, GroupServiceList.class); + } + + @RequestMapping(value={"/get_SecurityZoneDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getSecurityZoneDictionaryEntityDataByName(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getDataByEntity(response, securityZoneDatas, zoneName, SecurityZone.class); + } + + @RequestMapping(value={"/get_SecurityZoneData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getSecurityZoneDictionaryEntityData(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getData(response, securityZoneDatas, SecurityZone.class); + } + + @RequestMapping(value={"/fw_dictionary/save_securityZone"}, method={RequestMethod.POST}) + public ModelAndView saveSecurityZoneDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + DictionaryUtils utils = getDictionaryUtilsInstance(); + try { + boolean fromAPI = utils.isRequestFromAPI(request); + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + JsonNode root = mapper.readTree(request.getReader()); + SecurityZone securityZone; + if(fromAPI){ + securityZone = mapper.readValue(root.get(dictionaryFields).toString(), SecurityZone.class); + }else{ + securityZone = mapper.readValue(root.get("securityZoneDictionaryData").toString(), SecurityZone.class); + } + List<Object> duplicateData = commonClassDao.checkDuplicateEntry(securityZone.getZoneName(), zoneName, SecurityZone.class); + boolean duplicateflag = false; + if(!duplicateData.isEmpty()){ + SecurityZone data = (SecurityZone) duplicateData.get(0); + if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ + securityZone.setId(data.getId()); + }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || + (request.getParameter(operation) == null && (data.getId() != securityZone.getId()))){ + duplicateflag = true; + } + } + String responseString = null; + if(!duplicateflag){ + if(securityZone.getId() == 0){ + commonClassDao.save(securityZone); + }else{ + commonClassDao.update(securityZone); + } + responseString = mapper.writeValueAsString(commonClassDao.getData(SecurityZone.class)); + }else{ + responseString = duplicateResponseString; + } + if(fromAPI){ + return utils.getResultForApi(responseString); + }else{ + utils.setResponseData(response, securityZoneDatas, responseString); + } + }catch (Exception e){ + utils.setErrorResponseData(response, e); + } + return null; + } + + @RequestMapping(value={"/fw_dictionary/remove_securityZone"}, method={RequestMethod.POST}) + public void removeSecurityZoneDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.removeData(request, response, securityZoneDatas, SecurityZone.class); + } + + + @RequestMapping(value={"/get_ServiceListData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getServiceListDictionaryEntityData(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getData(response, serviceListDatas, ServiceList.class); + } + + @RequestMapping(value={"/get_ServiceListDictionaryDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getServiceListDictionaryEntityDataByName(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getDataByEntity(response, serviceListDatas, serviceName, ServiceList.class); + } + + @RequestMapping(value={"/fw_dictionary/save_serviceList"}, method={RequestMethod.POST}) + public ModelAndView saveServiceListDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + DictionaryUtils utils = getDictionaryUtilsInstance(); + try { + boolean fromAPI = utils.isRequestFromAPI(request); + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + JsonNode root = mapper.readTree(request.getReader()); + ServiceList serviceList; + GridData serviceListGridData; + if(fromAPI){ + serviceList = mapper.readValue(root.get(dictionaryFields).toString(), ServiceList.class); + serviceListGridData = mapper.readValue(root.get(dictionaryFields).toString(), GridData.class); + }else{ + serviceList = mapper.readValue(root.get("serviceListDictionaryData").toString(), ServiceList.class); + serviceListGridData = mapper.readValue(root.get("serviceListDictionaryData").toString(), GridData.class); + } + serviceList.setServiceTransProtocol(utils.appendKey(serviceListGridData.getTransportProtocols(), option, ",")); + serviceList.setServiceAppProtocol(utils.appendKey(serviceListGridData.getAppProtocols(), option, ",")); + serviceList.setServiceType("SERVICE"); + List<Object> duplicateData = commonClassDao.checkDuplicateEntry(serviceList.getServiceName(), serviceName, ServiceList.class); + boolean duplicateflag = false; + if(!duplicateData.isEmpty()){ + ServiceList data = (ServiceList) duplicateData.get(0); + if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ + serviceList.setId(data.getId()); + }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || + (request.getParameter(operation) == null && (data.getId() != serviceList.getId()))){ + duplicateflag = true; + } + } + String responseString = null; + if(!duplicateflag){ + if(serviceList.getId() == 0){ + commonClassDao.save(serviceList); + }else{ + commonClassDao.update(serviceList); + } + responseString = mapper.writeValueAsString(commonClassDao.getData(ServiceList.class)); + }else{ + responseString = duplicateResponseString; + } + if(fromAPI){ + return utils.getResultForApi(responseString); + }else{ + utils.setResponseData(response, serviceListDatas, responseString); + } + }catch (Exception e){ + utils.setErrorResponseData(response, e); + } + return null; + } + + @RequestMapping(value={"/fw_dictionary/remove_serviceList"}, method={RequestMethod.POST}) + public void removeServiceListDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.removeData(request, response, serviceListDatas, ServiceList.class); + } + + @RequestMapping(value={"/get_ZoneData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getZoneDictionaryEntityData(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getData(response, zoneDatas, Zone.class); + } + + @RequestMapping(value={"/get_ZoneDictionaryDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getZoneDictionaryEntityDataByName(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getDataByEntity(response, zoneDatas, zoneName, Zone.class); + } + + @RequestMapping(value={"/fw_dictionary/save_zoneName"}, method={RequestMethod.POST}) + public ModelAndView saveZoneDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + DictionaryUtils utils = getDictionaryUtilsInstance(); + try { + boolean fromAPI = utils.isRequestFromAPI(request); + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + JsonNode root = mapper.readTree(request.getReader()); + Zone zone; + if (fromAPI) { + zone = mapper.readValue(root.get(dictionaryFields).toString(), Zone.class); + } else { + zone = mapper.readValue(root.get("zoneDictionaryData").toString(), Zone.class); + } + List<Object> duplicateData = commonClassDao.checkDuplicateEntry(zone.getZoneName(), zoneName, Zone.class); + boolean duplicateflag = false; + if(!duplicateData.isEmpty()){ + Zone data = (Zone) duplicateData.get(0); + if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ + zone.setId(data.getId()); + }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || + (request.getParameter(operation) == null && (data.getId() != zone.getId()))){ + duplicateflag = true; + } + } + String responseString = null; + if(!duplicateflag){ + if(zone.getId() == 0){ + commonClassDao.save(zone); + }else{ + commonClassDao.update(zone); + } + responseString = mapper.writeValueAsString(commonClassDao.getData(Zone.class)); + }else{ + responseString = duplicateResponseString; + } + if(fromAPI){ + return utils.getResultForApi(responseString); + }else{ + utils.setResponseData(response, zoneDatas, responseString); + } + }catch (Exception e){ + utils.setErrorResponseData(response, e); + } + return null; + } + + @RequestMapping(value={"/fw_dictionary/remove_zone"}, method={RequestMethod.POST}) + public void removeZoneDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.removeData(request, response, zoneDatas, Zone.class); + } + + @RequestMapping(value={"/get_TermListDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getTermListDictionaryEntityDataByName(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getDataByEntity(response, termListDictDatas, termName, TermList.class); + } + + @RequestMapping(value={"/get_TermListData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getTermListDictionaryEntityData(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getData(response, termListDictDatas, TermList.class); + } + + @RequestMapping(value={"/fw_dictionary/save_termList"}, method={RequestMethod.POST}) + public ModelAndView saveTermListDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + DictionaryUtils utils = getDictionaryUtilsInstance(); + try { + boolean fromAPI = utils.isRequestFromAPI(request); + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + JsonNode root = mapper.readTree(request.getReader()); + TermList termList; + TermListData termListDatas; + String userId = null; + if(fromAPI){ + termList = mapper.readValue(root.get(dictionaryFields).toString(), TermList.class); + termListDatas = mapper.readValue(root.get(dictionaryFields).toString(), TermListData.class); + userId = "API"; + }else{ + termList = mapper.readValue(root.get("termListDictionaryData").toString(), TermList.class); + termListDatas = mapper.readValue(root.get("termListDictionaryData").toString(), TermListData.class); + userId = root.get(userid).textValue(); + } + + termList.setFromZones(utils.appendKey(termListDatas.getFromZoneDatas(), option, ",")); + termList.setToZones(utils.appendKey(termListDatas.getToZoneDatas(), option, ",")); + termList.setSrcIPList(utils.appendKey(termListDatas.getSourceListDatas(), option, ",")); + termList.setDestIPList(utils.appendKey(termListDatas.getDestinationListDatas(), option, ",")); + termList.setSrcPortList(utils.appendKey(termListDatas.getSourceServiceDatas(), option, ",")); + termList.setDestPortList(utils.appendKey(termListDatas.getDestinationServiceDatas(), option, ",")); + termList.setAction(utils.appendKey(termListDatas.getActionListDatas(), option, ",")); + + UserInfo userInfo = utils.getUserInfo(userId); + List<Object> duplicateData = commonClassDao.checkDuplicateEntry(termList.getTermName(), termName, TermList.class); + boolean duplicateflag = false; + if(!duplicateData.isEmpty()){ + TermList data = (TermList) duplicateData.get(0); + if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ + termList.setId(data.getId()); + }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || + (request.getParameter(operation) == null && (data.getId() != termList.getId()))){ + duplicateflag = true; + } + } + String responseString = null; + if(!duplicateflag){ + termList.setUserModifiedBy(userInfo); + if(termList.getId() == 0){ + termList.setUserCreatedBy(userInfo); + commonClassDao.save(termList); + }else{ + termList.setModifiedDate(new Date()); + commonClassDao.update(termList); + } + responseString = mapper.writeValueAsString(commonClassDao.getData(TermList.class)); + }else{ + responseString = duplicateResponseString; + } + if(fromAPI){ + return utils.getResultForApi(responseString); + }else{ + utils.setResponseData(response, termListDictDatas, responseString); + } + }catch (Exception e){ + utils.setErrorResponseData(response, e); + } + return null; + } + + @RequestMapping(value={"/fw_dictionary/remove_termList"}, method={RequestMethod.POST}) + public void removeTermListDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.removeData(request, response, termListDictDatas, TermList.class); + } + + //ParentList Dictionary Data + @RequestMapping(value={"/get_FWDictionaryListDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getFWDictListDictionaryEntityDataByName(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getDataByEntity(response, fwDictListDatas, "parentItemName", FirewallDictionaryList.class); + } + + @RequestMapping(value={"/get_FWDictionaryListData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getFWDictionaryListEntityData(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getData(response, fwDictListDatas, FirewallDictionaryList.class); + } + + @RequestMapping(value={"/fw_dictionary/save_FWDictionaryList"}, method={RequestMethod.POST}) + public ModelAndView saveFWDictionaryList(HttpServletRequest request, HttpServletResponse response) throws IOException{ + DictionaryUtils utils = getDictionaryUtilsInstance(); + try { + boolean fromAPI = utils.isRequestFromAPI(request); + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + JsonNode root = mapper.readTree(request.getReader()); + FirewallDictionaryList fwDictList; + GridData gridData; + if (fromAPI) { + fwDictList = mapper.readValue(root.get(dictionaryFields).toString(), FirewallDictionaryList.class); + gridData = mapper.readValue(root.get(dictionaryFields).toString(), GridData.class); + } else { + fwDictList = mapper.readValue(root.get("fwDictListDictionaryData").toString(), FirewallDictionaryList.class); + gridData = mapper.readValue(root.get("fwDictListDictionaryData").toString(), GridData.class); + } + + fwDictList.setServiceList(utils.appendKey(gridData.getAttributes(), option, ",")); + fwDictList.setAddressList(utils.appendKey(gridData.getAlAttributes(), option, ",")); + + List<Object> duplicateData = commonClassDao.checkDuplicateEntry(fwDictList.getParentItemName(), "parentItemName", FirewallDictionaryList.class); + boolean duplicateflag = false; + if(!duplicateData.isEmpty()){ + FirewallDictionaryList data = (FirewallDictionaryList) duplicateData.get(0); + if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ + fwDictList.setId(data.getId()); + }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || + (request.getParameter(operation) == null && (data.getId() != fwDictList.getId()))){ + duplicateflag = true; + } + } + String responseString = null; + if(!duplicateflag){ + if(fwDictList.getId() == 0){ + commonClassDao.save(fwDictList); + }else{ + commonClassDao.update(fwDictList); + } + responseString = mapper.writeValueAsString(commonClassDao.getData(FirewallDictionaryList.class)); + }else{ + responseString = duplicateResponseString; + } + if(fromAPI){ + return utils.getResultForApi(responseString); + }else{ + utils.setResponseData(response, fwDictListDatas, responseString); + } + } + catch (Exception e){ + utils.setErrorResponseData(response, e); + } + return null; + } + + @RequestMapping(value={"/fw_dictionary/remove_FWDictionaryList"}, method={RequestMethod.POST}) + public void removeFWDictionaryList(HttpServletRequest request, HttpServletResponse response) throws IOException { + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.removeData(request, response, fwDictListDatas, FirewallDictionaryList.class); + } + + + @RequestMapping(value={"/get_TagPickerNameByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getTagPickerNameEntityDataByName(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getDataByEntity(response, fwTagPickerDatas, tagPickerName, FWTagPicker.class); + } + + @RequestMapping(value={"/get_TagPickerListData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getTagPickerDictionaryEntityData(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getData(response, fwTagPickerDatas, FWTagPicker.class); + } + + @RequestMapping(value={"/fw_dictionary/save_fwTagPicker"}, method={RequestMethod.POST}) + public ModelAndView saveFirewallTagPickerDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + DictionaryUtils utils = getDictionaryUtilsInstance(); + try { + boolean fromAPI = utils.isRequestFromAPI(request); + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + JsonNode root = mapper.readTree(request.getReader()); + FWTagPicker fwTagPicker; + TagGridValues data; + String userId = ""; + if (fromAPI) { + fwTagPicker = mapper.readValue(root.get(dictionaryFields).toString(), FWTagPicker.class); + data = mapper.readValue(root.get(dictionaryFields).toString(), TagGridValues.class); + userId = "API"; + } else { + fwTagPicker = mapper.readValue(root.get("fwTagPickerDictionaryData").toString(), FWTagPicker.class); + data = mapper.readValue(root.get("fwTagPickerDictionaryData").toString(), TagGridValues.class); + userId = root.get(userid).textValue(); + } + fwTagPicker.setTagValues(utils.appendKeyValue(data.getTags(), "#", ":")); + + UserInfo userInfo = utils.getUserInfo(userId); + + List<Object> duplicateData = commonClassDao.checkDuplicateEntry(fwTagPicker.getTagPickerName(), tagPickerName, FWTagPicker.class); + boolean duplicateflag = false; + if(!duplicateData.isEmpty()){ + FWTagPicker data1 = (FWTagPicker) duplicateData.get(0); + if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ + fwTagPicker.setId(data1.getId()); + }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || + (request.getParameter(operation) == null && (data1.getId() != fwTagPicker.getId()))){ + duplicateflag = true; + } + } + String responseString = null; + if(!duplicateflag){ + fwTagPicker.setUserModifiedBy(userInfo); + if(fwTagPicker.getId() == 0){ + fwTagPicker.setUserCreatedBy(userInfo); + commonClassDao.save(fwTagPicker); + }else{ + fwTagPicker.setModifiedDate(new Date()); + commonClassDao.update(fwTagPicker); + } + responseString = mapper.writeValueAsString(commonClassDao.getData(FWTagPicker.class)); + }else{ + responseString = duplicateResponseString; + } + if(fromAPI){ + return utils.getResultForApi(responseString); + }else{ + utils.setResponseData(response, fwTagPickerDatas, responseString); + } + } + catch (Exception e){ + utils.setErrorResponseData(response, e); + } + return null; + } + + @RequestMapping(value={"/fw_dictionary/remove_tagPicker"}, method={RequestMethod.POST}) + public void removeFirewallTagPickerDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.removeData(request, response, fwTagPickerDatas, FWTagPicker.class); + } + + @RequestMapping(value={"/get_TagListData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getTagDictionaryEntityData(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getData(response, fwTagDatas, FWTag.class); + } + + @RequestMapping(value={"/get_TagNameByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getTagNameEntityDataByName(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getDataByEntity(response, fwTagDatas, "fwTagName", FWTag.class); + } + + + @RequestMapping(value={"/fw_dictionary/save_fwTag"}, method={RequestMethod.POST}) + public ModelAndView saveFirewallTagDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + DictionaryUtils utils = getDictionaryUtilsInstance(); + try { + boolean fromAPI = utils.isRequestFromAPI(request); + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + JsonNode root = mapper.readTree(request.getReader()); + FWTag fwTag; + TagGridValues tagGridValues; + String userId=""; + if(fromAPI){ + fwTag = mapper.readValue(root.get(dictionaryFields).toString(), FWTag.class); + tagGridValues = mapper.readValue(root.get(dictionaryFields).toString(), TagGridValues.class); + userId = "API"; + }else{ + fwTag = mapper.readValue(root.get("fwTagDictionaryData").toString(), FWTag.class); + tagGridValues = mapper.readValue(root.get("fwTagDictionaryData").toString(), TagGridValues.class); + userId = root.get(userid).textValue(); + } + fwTag.setTagValues(utils.appendKey(tagGridValues.getTags(), "tags", ",")); + + UserInfo userInfo = utils.getUserInfo(userId); + List<Object> duplicateData = commonClassDao.checkDuplicateEntry(fwTag.getFwTagName(), "fwTagName", FWTag.class); + boolean duplicateflag = false; + if(!duplicateData.isEmpty()){ + FWTag data = (FWTag) duplicateData.get(0); + if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ + fwTag.setId(data.getId()); + }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || + (request.getParameter(operation) == null && (data.getId() != fwTag.getId()))){ + duplicateflag = true; + } + } + String responseString = null; + if(!duplicateflag){ + fwTag.setUserModifiedBy(userInfo); + if(fwTag.getId() == 0){ + fwTag.setUserCreatedBy(userInfo); + commonClassDao.save(fwTag); + }else{ + fwTag.setModifiedDate(new Date()); + commonClassDao.update(fwTag); + } + responseString = mapper.writeValueAsString(commonClassDao.getData(FWTag.class)); + }else{ + responseString = duplicateResponseString; + } + if(fromAPI){ + return utils.getResultForApi(responseString); + }else{ + utils.setResponseData(response, fwTagDatas, responseString); + } + } + catch (Exception e){ + utils.setErrorResponseData(response, e); + } + return null; + } + + @RequestMapping(value={"/fw_dictionary/remove_tagList"}, method={RequestMethod.POST}) + public void removeFirewallTagDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.removeData(request, response, fwTagDatas, FWTag.class); + } } class TagGridValues{ - private List<Object> tags; + private List<Object> tags; - public List<Object> getTags() { - return tags; - } + public List<Object> getTags() { + return tags; + } - public void setTags(List<Object> tags) { - this.tags = tags; - } + public void setTags(List<Object> tags) { + this.tags = tags; + } } class AGGridData{ - private List<Object> attributes; + private List<Object> attributes; - public List<Object> getAttributes() { - return attributes; - } + public List<Object> getAttributes() { + return attributes; + } - public void setAttributes(List<Object> attributes) { - this.attributes = attributes; - } + public void setAttributes(List<Object> attributes) { + this.attributes = attributes; + } } class TermListData{ - private List<Object> fromZoneDatas; - private List<Object> toZoneDatas; - private List<Object> sourceListDatas; - private List<Object> destinationListDatas; - private List<Object> sourceServiceDatas; - private List<Object> destinationServiceDatas; - private List<Object> actionListDatas; - public List<Object> getFromZoneDatas() { - return fromZoneDatas; - } - public void setFromZoneDatas(List<Object> fromZoneDatas) { - this.fromZoneDatas = fromZoneDatas; - } - public List<Object> getToZoneDatas() { - return toZoneDatas; - } - public void setToZoneDatas(List<Object> toZoneDatas) { - this.toZoneDatas = toZoneDatas; - } - public List<Object> getSourceListDatas() { - return sourceListDatas; - } - public void setSourceListDatas(List<Object> sourceListDatas) { - this.sourceListDatas = sourceListDatas; - } - public List<Object> getDestinationListDatas() { - return destinationListDatas; - } - public void setDestinationListDatas(List<Object> destinationListDatas) { - this.destinationListDatas = destinationListDatas; - } - public List<Object> getSourceServiceDatas() { - return sourceServiceDatas; - } - public void setSourceServiceDatas(List<Object> sourceServiceDatas) { - this.sourceServiceDatas = sourceServiceDatas; - } - public List<Object> getDestinationServiceDatas() { - return destinationServiceDatas; - } - public void setDestinationServiceDatas(List<Object> destinationServiceDatas) { - this.destinationServiceDatas = destinationServiceDatas; - } - public List<Object> getActionListDatas() { - return actionListDatas; - } - public void setActionListDatas(List<Object> actionListDatas) { - this.actionListDatas = actionListDatas; - } + private List<Object> fromZoneDatas; + private List<Object> toZoneDatas; + private List<Object> sourceListDatas; + private List<Object> destinationListDatas; + private List<Object> sourceServiceDatas; + private List<Object> destinationServiceDatas; + private List<Object> actionListDatas; + public List<Object> getFromZoneDatas() { + return fromZoneDatas; + } + public void setFromZoneDatas(List<Object> fromZoneDatas) { + this.fromZoneDatas = fromZoneDatas; + } + public List<Object> getToZoneDatas() { + return toZoneDatas; + } + public void setToZoneDatas(List<Object> toZoneDatas) { + this.toZoneDatas = toZoneDatas; + } + public List<Object> getSourceListDatas() { + return sourceListDatas; + } + public void setSourceListDatas(List<Object> sourceListDatas) { + this.sourceListDatas = sourceListDatas; + } + public List<Object> getDestinationListDatas() { + return destinationListDatas; + } + public void setDestinationListDatas(List<Object> destinationListDatas) { + this.destinationListDatas = destinationListDatas; + } + public List<Object> getSourceServiceDatas() { + return sourceServiceDatas; + } + public void setSourceServiceDatas(List<Object> sourceServiceDatas) { + this.sourceServiceDatas = sourceServiceDatas; + } + public List<Object> getDestinationServiceDatas() { + return destinationServiceDatas; + } + public void setDestinationServiceDatas(List<Object> destinationServiceDatas) { + this.destinationServiceDatas = destinationServiceDatas; + } + public List<Object> getActionListDatas() { + return actionListDatas; + } + public void setActionListDatas(List<Object> actionListDatas) { + this.actionListDatas = actionListDatas; + } }
\ No newline at end of file diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/MicroServiceDictionaryController.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/MicroServiceDictionaryController.java index 6acae3fbd..1f1eca5bd 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/MicroServiceDictionaryController.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/MicroServiceDictionaryController.java @@ -64,10 +64,10 @@ import com.google.gson.Gson; @Controller public class MicroServiceDictionaryController { - private static final Logger LOGGER = FlexLogger.getLogger(MicroServiceDictionaryController.class); + private static final Logger LOGGER = FlexLogger.getLogger(MicroServiceDictionaryController.class); + + private static CommonClassDao commonClassDao; - private static CommonClassDao commonClassDao; - private static String successMapKey= "successMapKey"; private static String successMsg = "success"; private static String operation = "operation"; @@ -77,255 +77,255 @@ public class MicroServiceDictionaryController { private LinkedHashMap<String,MSAttributeObject > classMap; private List<String> modelList = new ArrayList<>(); private static String apiflag = "apiflag"; - private static String dictionaryFields ="dictionaryFields"; - private static String update = "update"; - private static String duplicateResponseString = "Duplicate"; - private static String microServiceModelsDictionaryDatas = "microServiceModelsDictionaryDatas"; - private static String modelName = "modelName"; - private static String microServiceModelsDictionaryData = "microServiceModelsDictionaryData"; - private static String description = "description"; - private static String version = "version"; - private static String classMapData = "classMap"; - private static String dcaeUUIDDatas = "dcaeUUIDDictionaryDatas"; - private static String microServiceConfigNameDatas = "microServiceConfigNameDictionaryDatas"; - private static String microServiceLocationDatas = "microServiceLocationDictionaryDatas"; - private static String microServiceAttributeDatas = "microServiceAttributeDictionaryDatas"; - private static String microServiceHeaderDefaultDatas = "microServiceHeaderDefaultDatas"; + private static String dictionaryFields ="dictionaryFields"; + private static String update = "update"; + private static String duplicateResponseString = "Duplicate"; + private static String microServiceModelsDictionaryDatas = "microServiceModelsDictionaryDatas"; + private static String modelName = "modelName"; + private static String microServiceModelsDictionaryData = "microServiceModelsDictionaryData"; + private static String description = "description"; + private static String version = "version"; + private static String classMapData = "classMap"; + private static String dcaeUUIDDatas = "dcaeUUIDDictionaryDatas"; + private static String microServiceConfigNameDatas = "microServiceConfigNameDictionaryDatas"; + private static String microServiceLocationDatas = "microServiceLocationDictionaryDatas"; + private static String microServiceAttributeDatas = "microServiceAttributeDictionaryDatas"; + private static String microServiceHeaderDefaultDatas = "microServiceHeaderDefaultDatas"; public MicroServiceDictionaryController(){ - super(); + super(); } - + private DictionaryUtils getDictionaryUtilsInstance(){ - return DictionaryUtils.getDictionaryUtils(); - } + return DictionaryUtils.getDictionaryUtils(); + } - @Autowired - public MicroServiceDictionaryController(CommonClassDao commonClassDao){ - MicroServiceDictionaryController.commonClassDao = commonClassDao; - } - public static void setCommonClassDao(CommonClassDao commonClassDao) { - MicroServiceDictionaryController.commonClassDao = commonClassDao; - } - - MSModelUtils utils = new MSModelUtils(XACMLPapServlet.getMsOnapName(), XACMLPapServlet.getMsPolicyName()); - - private MicroServiceModels newModel; - - @RequestMapping(value={"/get_DCAEUUIDDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getDCAEUUIDDictionaryByNameEntityData(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getDataByEntity(response, dcaeUUIDDatas, "name", DCAEuuid.class); - } - - @RequestMapping(value={"/get_DCAEUUIDData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getDCAEUUIDDictionaryEntityData(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getData(response, dcaeUUIDDatas, DCAEuuid.class); - } - - @RequestMapping(value={"/ms_dictionary/save_dcaeUUID"}, method={RequestMethod.POST}) - public ModelAndView saveDCAEUUIDDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - DictionaryUtils utils = getDictionaryUtilsInstance(); - try { - boolean fromAPI = utils.isRequestFromAPI(request); - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - JsonNode root = mapper.readTree(request.getReader()); + @Autowired + public MicroServiceDictionaryController(CommonClassDao commonClassDao){ + MicroServiceDictionaryController.commonClassDao = commonClassDao; + } + public static void setCommonClassDao(CommonClassDao commonClassDao) { + MicroServiceDictionaryController.commonClassDao = commonClassDao; + } + + MSModelUtils utils = new MSModelUtils(XACMLPapServlet.getMsOnapName(), XACMLPapServlet.getMsPolicyName()); + + private MicroServiceModels newModel; + + @RequestMapping(value={"/get_DCAEUUIDDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getDCAEUUIDDictionaryByNameEntityData(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getDataByEntity(response, dcaeUUIDDatas, "name", DCAEuuid.class); + } + + @RequestMapping(value={"/get_DCAEUUIDData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getDCAEUUIDDictionaryEntityData(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getData(response, dcaeUUIDDatas, DCAEuuid.class); + } + + @RequestMapping(value={"/ms_dictionary/save_dcaeUUID"}, method={RequestMethod.POST}) + public ModelAndView saveDCAEUUIDDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + DictionaryUtils utils = getDictionaryUtilsInstance(); + try { + boolean fromAPI = utils.isRequestFromAPI(request); + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + JsonNode root = mapper.readTree(request.getReader()); DCAEuuid dCAEuuid; if(fromAPI){ dCAEuuid = mapper.readValue(root.get(dictionaryFields).toString(), DCAEuuid.class); }else{ - dCAEuuid = mapper.readValue(root.get("dcaeUUIDDictionaryData").toString(), DCAEuuid.class); + dCAEuuid = mapper.readValue(root.get("dcaeUUIDDictionaryData").toString(), DCAEuuid.class); } List<Object> duplicateData = commonClassDao.checkDuplicateEntry(dCAEuuid.getName(), "name", DCAEuuid.class); - boolean duplicateflag = false; - if(duplicateData != null && !duplicateData.isEmpty()){ - DCAEuuid data = (DCAEuuid) duplicateData.get(0); - if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ - dCAEuuid.setId(data.getId()); - }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || - (request.getParameter(operation) == null && (data.getId() != dCAEuuid.getId()))){ - duplicateflag = true; - } - } - String responseString = null; - if(!duplicateflag){ - if(dCAEuuid.getId() == 0){ - commonClassDao.save(dCAEuuid); - }else{ - commonClassDao.update(dCAEuuid); - } - responseString = mapper.writeValueAsString(commonClassDao.getData(DCAEuuid.class)); - }else{ - responseString = duplicateResponseString; - } - if(fromAPI){ - return utils.getResultForApi(responseString); - }else{ - utils.setResponseData(response, dcaeUUIDDatas, responseString); - } + boolean duplicateflag = false; + if(duplicateData != null && !duplicateData.isEmpty()){ + DCAEuuid data = (DCAEuuid) duplicateData.get(0); + if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ + dCAEuuid.setId(data.getId()); + }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || + (request.getParameter(operation) == null && (data.getId() != dCAEuuid.getId()))){ + duplicateflag = true; + } + } + String responseString = null; + if(!duplicateflag){ + if(dCAEuuid.getId() == 0){ + commonClassDao.save(dCAEuuid); + }else{ + commonClassDao.update(dCAEuuid); + } + responseString = mapper.writeValueAsString(commonClassDao.getData(DCAEuuid.class)); + }else{ + responseString = duplicateResponseString; + } + if(fromAPI){ + return utils.getResultForApi(responseString); + }else{ + utils.setResponseData(response, dcaeUUIDDatas, responseString); + } }catch (Exception e){ - utils.setErrorResponseData(response, e); - } - return null; - } - - @RequestMapping(value={"/ms_dictionary/remove_dcaeuuid"}, method={RequestMethod.POST}) - public void removeDCAEUUIDDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.removeData(request, response, dcaeUUIDDatas, DCAEuuid.class); - } - - @RequestMapping(value={"/get_MicroServiceConfigNameDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getMicroServiceConfigNameByNameDictionaryEntityData(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getDataByEntity(response, microServiceConfigNameDatas, "name", MicroServiceConfigName.class); - } - - @RequestMapping(value={"/get_MicroServiceConfigNameData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getMicroServiceConfigNameDictionaryEntityData(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getData(response, microServiceConfigNameDatas, MicroServiceConfigName.class); - } - - @RequestMapping(value={"/ms_dictionary/save_configName"}, method={RequestMethod.POST}) - public ModelAndView saveMicroServiceConfigNameDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - DictionaryUtils utils = getDictionaryUtilsInstance(); - try { - boolean fromAPI = utils.isRequestFromAPI(request); - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - JsonNode root = mapper.readTree(request.getReader()); + utils.setErrorResponseData(response, e); + } + return null; + } + + @RequestMapping(value={"/ms_dictionary/remove_dcaeuuid"}, method={RequestMethod.POST}) + public void removeDCAEUUIDDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.removeData(request, response, dcaeUUIDDatas, DCAEuuid.class); + } + + @RequestMapping(value={"/get_MicroServiceConfigNameDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getMicroServiceConfigNameByNameDictionaryEntityData(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getDataByEntity(response, microServiceConfigNameDatas, "name", MicroServiceConfigName.class); + } + + @RequestMapping(value={"/get_MicroServiceConfigNameData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getMicroServiceConfigNameDictionaryEntityData(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getData(response, microServiceConfigNameDatas, MicroServiceConfigName.class); + } + + @RequestMapping(value={"/ms_dictionary/save_configName"}, method={RequestMethod.POST}) + public ModelAndView saveMicroServiceConfigNameDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + DictionaryUtils utils = getDictionaryUtilsInstance(); + try { + boolean fromAPI = utils.isRequestFromAPI(request); + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + JsonNode root = mapper.readTree(request.getReader()); MicroServiceConfigName microServiceConfigName; if(fromAPI){ microServiceConfigName = mapper.readValue(root.get(dictionaryFields).toString(), MicroServiceConfigName.class); }else{ - microServiceConfigName = mapper.readValue(root.get("microServiceConfigNameDictionaryData").toString(), MicroServiceConfigName.class); + microServiceConfigName = mapper.readValue(root.get("microServiceConfigNameDictionaryData").toString(), MicroServiceConfigName.class); } List<Object> duplicateData = commonClassDao.checkDuplicateEntry(microServiceConfigName.getName(), "name", MicroServiceConfigName.class); - boolean duplicateflag = false; - if(duplicateData != null && !duplicateData.isEmpty()){ - MicroServiceConfigName data = (MicroServiceConfigName) duplicateData.get(0); - if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ - microServiceConfigName.setId(data.getId()); - }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || - (request.getParameter(operation) == null && (data.getId() != microServiceConfigName.getId()))){ - duplicateflag = true; - } - } - String responseString = null; - if(!duplicateflag){ - if(microServiceConfigName.getId() == 0){ - commonClassDao.save(microServiceConfigName); - }else{ - commonClassDao.update(microServiceConfigName); - } - responseString = mapper.writeValueAsString(commonClassDao.getData(MicroServiceConfigName.class)); - }else{ - responseString = duplicateResponseString; - } - if(fromAPI){ - return utils.getResultForApi(responseString); - }else{ - utils.setResponseData(response, microServiceConfigNameDatas, responseString); - } + boolean duplicateflag = false; + if(duplicateData != null && !duplicateData.isEmpty()){ + MicroServiceConfigName data = (MicroServiceConfigName) duplicateData.get(0); + if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ + microServiceConfigName.setId(data.getId()); + }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || + (request.getParameter(operation) == null && (data.getId() != microServiceConfigName.getId()))){ + duplicateflag = true; + } + } + String responseString = null; + if(!duplicateflag){ + if(microServiceConfigName.getId() == 0){ + commonClassDao.save(microServiceConfigName); + }else{ + commonClassDao.update(microServiceConfigName); + } + responseString = mapper.writeValueAsString(commonClassDao.getData(MicroServiceConfigName.class)); + }else{ + responseString = duplicateResponseString; + } + if(fromAPI){ + return utils.getResultForApi(responseString); + }else{ + utils.setResponseData(response, microServiceConfigNameDatas, responseString); + } }catch (Exception e){ - utils.setErrorResponseData(response, e); - } - return null; - } - - @RequestMapping(value={"/ms_dictionary/remove_msConfigName"}, method={RequestMethod.POST}) - public void removeMicroServiceConfigNameDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.removeData(request, response, microServiceConfigNameDatas, MicroServiceConfigName.class); - } - - @RequestMapping(value={"/get_MicroServiceLocationDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getMicroServiceLocationByNameDictionaryEntityData(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getDataByEntity(response, microServiceLocationDatas, "name", MicroServiceLocation.class); - } - - @RequestMapping(value={"/get_MicroServiceLocationData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getMicroServiceLocationDictionaryEntityData(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getData(response, microServiceLocationDatas, MicroServiceLocation.class); - } - - @RequestMapping(value={"/ms_dictionary/save_location"}, method={RequestMethod.POST}) - public ModelAndView saveMicroServiceLocationDictionary(HttpServletRequest request, HttpServletResponse response)throws IOException{ - DictionaryUtils utils = getDictionaryUtilsInstance(); - try { - boolean fromAPI = utils.isRequestFromAPI(request); - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - JsonNode root = mapper.readTree(request.getReader()); + utils.setErrorResponseData(response, e); + } + return null; + } + + @RequestMapping(value={"/ms_dictionary/remove_msConfigName"}, method={RequestMethod.POST}) + public void removeMicroServiceConfigNameDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.removeData(request, response, microServiceConfigNameDatas, MicroServiceConfigName.class); + } + + @RequestMapping(value={"/get_MicroServiceLocationDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getMicroServiceLocationByNameDictionaryEntityData(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getDataByEntity(response, microServiceLocationDatas, "name", MicroServiceLocation.class); + } + + @RequestMapping(value={"/get_MicroServiceLocationData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getMicroServiceLocationDictionaryEntityData(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getData(response, microServiceLocationDatas, MicroServiceLocation.class); + } + + @RequestMapping(value={"/ms_dictionary/save_location"}, method={RequestMethod.POST}) + public ModelAndView saveMicroServiceLocationDictionary(HttpServletRequest request, HttpServletResponse response)throws IOException{ + DictionaryUtils utils = getDictionaryUtilsInstance(); + try { + boolean fromAPI = utils.isRequestFromAPI(request); + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + JsonNode root = mapper.readTree(request.getReader()); MicroServiceLocation microServiceLocation; if(fromAPI){ microServiceLocation = mapper.readValue(root.get(dictionaryFields).toString(), MicroServiceLocation.class); }else{ - microServiceLocation = mapper.readValue(root.get("microServiceLocationDictionaryData").toString(), MicroServiceLocation.class); + microServiceLocation = mapper.readValue(root.get("microServiceLocationDictionaryData").toString(), MicroServiceLocation.class); } List<Object> duplicateData = commonClassDao.checkDuplicateEntry(microServiceLocation.getName(), "name", MicroServiceLocation.class); - boolean duplicateflag = false; - if(duplicateData != null && !duplicateData.isEmpty()){ - MicroServiceLocation data = (MicroServiceLocation) duplicateData.get(0); - if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ - microServiceLocation.setId(data.getId()); - }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || - (request.getParameter(operation) == null && (data.getId() != microServiceLocation.getId()))){ - duplicateflag = true; - } - } - String responseString = null; - if(!duplicateflag){ - if(microServiceLocation.getId() == 0){ - commonClassDao.save(microServiceLocation); - }else{ - commonClassDao.update(microServiceLocation); - } - responseString = mapper.writeValueAsString(commonClassDao.getData(MicroServiceLocation.class)); - }else{ - responseString = duplicateResponseString; - } - if(fromAPI){ - return utils.getResultForApi(responseString); - }else{ - utils.setResponseData(response, microServiceLocationDatas, responseString); - } - }catch (Exception e){ - utils.setErrorResponseData(response, e); - } - return null; - } - - @RequestMapping(value={"/ms_dictionary/remove_msLocation"}, method={RequestMethod.POST}) - public void removeMicroServiceLocationDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.removeData(request, response, microServiceLocationDatas, MicroServiceLocation.class); - } - + boolean duplicateflag = false; + if(duplicateData != null && !duplicateData.isEmpty()){ + MicroServiceLocation data = (MicroServiceLocation) duplicateData.get(0); + if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ + microServiceLocation.setId(data.getId()); + }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || + (request.getParameter(operation) == null && (data.getId() != microServiceLocation.getId()))){ + duplicateflag = true; + } + } + String responseString = null; + if(!duplicateflag){ + if(microServiceLocation.getId() == 0){ + commonClassDao.save(microServiceLocation); + }else{ + commonClassDao.update(microServiceLocation); + } + responseString = mapper.writeValueAsString(commonClassDao.getData(MicroServiceLocation.class)); + }else{ + responseString = duplicateResponseString; + } + if(fromAPI){ + return utils.getResultForApi(responseString); + }else{ + utils.setResponseData(response, microServiceLocationDatas, responseString); + } + }catch (Exception e){ + utils.setErrorResponseData(response, e); + } + return null; + } + + @RequestMapping(value={"/ms_dictionary/remove_msLocation"}, method={RequestMethod.POST}) + public void removeMicroServiceLocationDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.removeData(request, response, microServiceLocationDatas, MicroServiceLocation.class); + } + @RequestMapping(value={"/get_MicroServiceAttributeDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) public void getMicroServiceAttributeByNameDictionaryEntityData(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getDataByEntity(response, microServiceAttributeDatas, "name", MicroServiceAttribute.class); + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getDataByEntity(response, microServiceAttributeDatas, "name", MicroServiceAttribute.class); } @RequestMapping(value={"/get_MicroServiceAttributeData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) public void getMicroServiceAttributeDictionaryEntityData(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getData(response, microServiceAttributeDatas, MicroServiceAttribute.class); + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getData(response, microServiceAttributeDatas, MicroServiceAttribute.class); } @RequestMapping(value={"/ms_dictionary/save_modelAttribute"}, method={RequestMethod.POST}) public ModelAndView saveMicroServiceAttributeDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - DictionaryUtils utils = getDictionaryUtilsInstance(); + DictionaryUtils utils = getDictionaryUtilsInstance(); try { - boolean fromAPI = utils.isRequestFromAPI(request); + boolean fromAPI = utils.isRequestFromAPI(request); ObjectMapper mapper = new ObjectMapper(); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); JsonNode root = mapper.readTree(request.getReader()); @@ -339,52 +339,52 @@ public class MicroServiceDictionaryController { } checkValue = microServiceAttribute.getName() + ":" + microServiceAttribute.getValue() + ":" + microServiceAttribute.getModelName(); List<Object> duplicateData = commonClassDao.checkDuplicateEntry(checkValue, "name:value:modelName", MicroServiceAttribute.class); - boolean duplicateflag = false; - if(duplicateData != null && !duplicateData.isEmpty()){ - MicroServiceAttribute data = (MicroServiceAttribute) duplicateData.get(0); - if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ - microServiceAttribute.setId(data.getId()); - }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || - (request.getParameter(operation) == null && (data.getId() != microServiceAttribute.getId()))){ - duplicateflag = true; - } - } - String responseString = null; - if(!duplicateflag){ - if(microServiceAttribute.getId() == 0){ - commonClassDao.save(microServiceAttribute); - }else{ - commonClassDao.update(microServiceAttribute); - } - responseString = mapper.writeValueAsString(commonClassDao.getData(MicroServiceAttribute.class)); - }else{ - responseString = duplicateResponseString; - } - if(fromAPI){ - return utils.getResultForApi(responseString); - }else{ - utils.setResponseData(response, microServiceAttributeDatas, responseString); - } + boolean duplicateflag = false; + if(duplicateData != null && !duplicateData.isEmpty()){ + MicroServiceAttribute data = (MicroServiceAttribute) duplicateData.get(0); + if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ + microServiceAttribute.setId(data.getId()); + }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || + (request.getParameter(operation) == null && (data.getId() != microServiceAttribute.getId()))){ + duplicateflag = true; + } + } + String responseString = null; + if(!duplicateflag){ + if(microServiceAttribute.getId() == 0){ + commonClassDao.save(microServiceAttribute); + }else{ + commonClassDao.update(microServiceAttribute); + } + responseString = mapper.writeValueAsString(commonClassDao.getData(MicroServiceAttribute.class)); + }else{ + responseString = duplicateResponseString; + } + if(fromAPI){ + return utils.getResultForApi(responseString); + }else{ + utils.setResponseData(response, microServiceAttributeDatas, responseString); + } } catch (Exception e){ - utils.setErrorResponseData(response, e); + utils.setErrorResponseData(response, e); } return null; } @RequestMapping(value={"/ms_dictionary/remove_modelAttribute"}, method={RequestMethod.POST}) public void removeMicroServiceAttributeDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.removeData(request, response, microServiceAttributeDatas, MicroServiceAttribute.class); + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.removeData(request, response, microServiceAttributeDatas, MicroServiceAttribute.class); } - - @RequestMapping(value={"/get_MicroServiceModelsDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getMicroServiceModelsDictionaryByNameEntityData(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getDataByEntity(response, microServiceModelsDictionaryDatas, modelName, MicroServiceModels.class); - } - + + @RequestMapping(value={"/get_MicroServiceModelsDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getMicroServiceModelsDictionaryByNameEntityData(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getDataByEntity(response, microServiceModelsDictionaryDatas, modelName, MicroServiceModels.class); + } + @RequestMapping(value={"/get_MicroServiceModelsDataByVersion"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) public void getMicroServiceModelsDictionaryByVersionEntityData(HttpServletRequest request, HttpServletResponse response){ try{ @@ -409,12 +409,12 @@ public class MicroServiceDictionaryController { } } - @RequestMapping(value={"/get_MicroServiceModelsData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getMicroServiceModelsDictionaryEntityData(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getData(response, microServiceModelsDictionaryDatas, MicroServiceModels.class); - } - + @RequestMapping(value={"/get_MicroServiceModelsData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getMicroServiceModelsDictionaryEntityData(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getData(response, microServiceModelsDictionaryDatas, MicroServiceModels.class); + } + @RequestMapping(value={"/get_MicroServiceModelsDataServiceVersion"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) public void getMicroServiceModelsDictionaryEntityDataServiceVersion(HttpServletResponse response){ try{ @@ -423,9 +423,9 @@ public class MicroServiceDictionaryController { List<String> data = new ArrayList<>(); List<Object> datas = commonClassDao.getData(MicroServiceModels.class); for(int i = 0; i < datas.size(); i++){ - MicroServiceModels msmodel = (MicroServiceModels) datas.get(i); + MicroServiceModels msmodel = (MicroServiceModels) datas.get(i); if (!data.contains(msmodel.getModelName())){ - data.add(msmodel.getModelName() + "-v" + msmodel.getVersion()); + data.add(msmodel.getModelName() + "-v" + msmodel.getVersion()); } } model.put(microServiceModelsDictionaryDatas, mapper.writeValueAsString(data)); @@ -463,287 +463,287 @@ public class MicroServiceDictionaryController { } } - @RequestMapping(value={"/ms_dictionary/save_model"}, method={RequestMethod.POST}) - public ModelAndView saveMicroServiceModelsDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - DictionaryUtils utils = getDictionaryUtilsInstance(); - try { - this.newModel = new MicroServiceModels(); - boolean fromAPI = utils.isRequestFromAPI(request); - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - JsonNode root = mapper.readTree(request.getReader()); - MicroServiceModels microServiceModels = new MicroServiceModels(); - String userId = null; - - String dataOrderInfo = null; - if(root.has("dataOrderInfo")){ - dataOrderInfo = root.get("dataOrderInfo").toString(); - } - - if(root.has("modelType")){ - JsonNode dataType = root.get("modelType"); - String modelType= dataType.toString(); - if(modelType.contains("yml")){ - if (root.has(microServiceModelsDictionaryData)){ - if (root.get(microServiceModelsDictionaryData).has(description)){ - microServiceModels.setDescription(root.get(microServiceModelsDictionaryData).get(description).asText().replace("\"", "")); - } - if (root.get(microServiceModelsDictionaryData).has(modelName)){ - microServiceModels.setModelName(root.get(microServiceModelsDictionaryData).get(modelName).asText().replace("\"", "")); - this.newModel.setModelName(microServiceModels.getModelName()); - } - if (root.get(microServiceModelsDictionaryData).has(version)){ - microServiceModels.setVersion(root.get(microServiceModelsDictionaryData).get(version).asText().replace("\"", "")); - this.newModel.setVersion(microServiceModels.getVersion()); - } - } - - classMap = new LinkedHashMap<>(); - JsonNode data = root.get(classMapData); - ObjectMapper mapper1 = new ObjectMapper(); - String data1 = data.toString().substring(1, data.toString().length()-1); - data1 = data1.replace("\\", ""); - data1=data1.replace("\"{","{"); - data1=data1.replace("}\"","}"); - JSONObject jsonObject = new JSONObject(data1); - Set<String> keys = jsonObject.keySet(); - for(String key : keys){ - String value = jsonObject.get(key).toString(); - MSAttributeObject msAttributeObject = mapper1.readValue(value, MSAttributeObject.class); - classMap.put(key, msAttributeObject); - } - - userId = root.get("userid").textValue(); - MSAttributeObject mainClass = classMap.get(this.newModel.getModelName()); - this.newModel.setDependency("[]"); - String value = new Gson().toJson(mainClass.getSubClass()); - this.newModel.setSub_attributes(value); - String attributes= mainClass.getAttribute().toString().replace("{", "").replace("}", ""); - int equalsIndexForAttributes= attributes.indexOf('='); - String atttributesAfterFirstEquals= attributes.substring(equalsIndexForAttributes+1); - this.newModel.setAttributes(atttributesAfterFirstEquals); - String refAttributes= mainClass.getRefAttribute().toString().replace("{", "").replace("}", ""); - int equalsIndex= refAttributes.indexOf("="); - String refAttributesAfterFirstEquals= refAttributes.substring(equalsIndex+1); - this.newModel.setRef_attributes(refAttributesAfterFirstEquals); - this.newModel.setEnumValues(mainClass.getEnumType().toString().replace("{", "").replace("}", "")); - this.newModel.setAnnotation(mainClass.getMatchingSet().toString().replace("{", "").replace("}", "")); - - }else{ - if (fromAPI) { - microServiceModels = mapper.readValue(root.get(dictionaryFields).toString(), MicroServiceModels.class); - userId = "API"; - } else { - if (root.has(microServiceModelsDictionaryData)){ - if (root.get(microServiceModelsDictionaryData).has(description)){ - microServiceModels.setDescription(root.get(microServiceModelsDictionaryData).get(description).asText().replace("\"", "")); - } - if (root.get(microServiceModelsDictionaryData).has(modelName)){ - microServiceModels.setModelName(root.get(microServiceModelsDictionaryData).get(modelName).asText().replace("\"", "")); - this.newModel.setModelName(microServiceModels.getModelName()); - } - if (root.get(microServiceModelsDictionaryData).has(version)){ - microServiceModels.setVersion(root.get(microServiceModelsDictionaryData).get(version).asText().replace("\"", "")); - this.newModel.setVersion(microServiceModels.getVersion()); - } - } - if(root.has(classMapData)){ - classMap = new LinkedHashMap<>(); - JsonNode data = root.get(classMapData); - ObjectMapper mapper1 = new ObjectMapper(); - String data1 = data.toString().substring(1, data.toString().length()-1); - data1 = data1.replace("\\", ""); - JSONObject jsonObject = new JSONObject(data1); - Set<String> keys = jsonObject.keySet(); - for(String key : keys){ - String value = jsonObject.get(key).toString(); - MSAttributeObject msAttributeObject = mapper1.readValue(value, MSAttributeObject.class); - classMap.put(key, msAttributeObject); - } - } - userId = root.get("userid").textValue(); - addValuesToNewModel(classMap); - } - } - } - microServiceModels.setAttributes(this.newModel.getAttributes()); - microServiceModels.setRef_attributes(this.newModel.getRef_attributes()); - microServiceModels.setDependency(this.newModel.getDependency()); - microServiceModels.setModelName(this.newModel.getModelName()); - microServiceModels.setSub_attributes(this.newModel.getSub_attributes()); - microServiceModels.setVersion(this.newModel.getVersion()); - microServiceModels.setEnumValues(this.newModel.getEnumValues()); - microServiceModels.setAnnotation(this.newModel.getAnnotation()); - if(dataOrderInfo != null){ - microServiceModels.setDataOrderInfo(dataOrderInfo); - } - String checkName = microServiceModels.getModelName() + ":" + microServiceModels.getVersion(); - List<Object> duplicateData = commonClassDao.checkDuplicateEntry(checkName, "modelName:version", MicroServiceModels.class); - boolean duplicateflag = false; - if(duplicateData != null && !duplicateData.isEmpty()){ - MicroServiceModels data = (MicroServiceModels) duplicateData.get(0); - if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ - microServiceModels.setId(data.getId()); - }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || - (request.getParameter(operation) == null && (data.getId() != microServiceModels.getId()))){ - duplicateflag = true; - } - } - UserInfo userInfo = utils.getUserInfo(userId); - - String responseString = null; - if(!duplicateflag){ - microServiceModels.setUserCreatedBy(userInfo); - if(microServiceModels.getId() == 0){ - commonClassDao.save(microServiceModels); - }else{ - commonClassDao.update(microServiceModels); - } - responseString = mapper.writeValueAsString(commonClassDao.getData(PrefixList.class)); - }else{ - responseString = duplicateResponseString; - } - if(fromAPI){ - return utils.getResultForApi(responseString); - }else{ - utils.setResponseData(response, microServiceModelsDictionaryDatas, responseString); - } - }catch (Exception e){ - utils.setErrorResponseData(response, e); - } - return null; - } - - @RequestMapping(value={"/ms_dictionary/remove_msModel"}, method={RequestMethod.POST}) - public void removeMicroServiceModelsDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.removeData(request, response, microServiceModelsDictionaryDatas, MicroServiceModels.class); - } - - private void addValuesToNewModel(HashMap<String,MSAttributeObject > classMap) { - //Loop through the classmap and pull out the required info for the new file. - String subAttribute = null; - - MSAttributeObject mainClass = classMap.get(this.newModel.getModelName()); - - if (mainClass !=null){ - String dependTemp = StringUtils.replaceEach(mainClass.getDependency(), new String[]{"[", "]", " "}, new String[]{"", "", ""}); - ArrayList<String> dependency = new ArrayList<>(Arrays.asList(dependTemp.split(","))); - dependency = getFullDependencyList(dependency); - for (String element : dependency){ - MSAttributeObject temp = classMap.get(element); - if (temp!=null){ - mainClass.addAllRefAttribute(temp.getRefAttribute()); - mainClass.addAllAttribute(temp.getAttribute()); - } - } - subAttribute = utils.createSubAttributes(dependency, classMap, this.newModel.getModelName()); - }else{ - subAttribute = "{}"; - this.newModel.setDependency(""); - } - - if (mainClass != null && mainClass.getDependency()==null){ - mainClass.setDependency(""); - } - if(mainClass != null){ - this.newModel.setDependency(mainClass.getDependency()); - this.newModel.setSub_attributes(subAttribute); - this.newModel.setAttributes(mainClass.getAttribute().toString().replace("{", "").replace("}", "")); - this.newModel.setRef_attributes(mainClass.getRefAttribute().toString().replace("{", "").replace("}", "")); - this.newModel.setEnumValues(mainClass.getEnumType().toString().replace("{", "").replace("}", "")); - this.newModel.setAnnotation(mainClass.getMatchingSet().toString().replace("{", "").replace("}", "")); - } - } - - private ArrayList<String> getFullDependencyList(ArrayList<String> dependency) { - ArrayList<String> returnList = new ArrayList<>(); - ArrayList<String> workingList = new ArrayList<>(); - returnList.addAll(dependency); - for (String element : dependency ){ - if (classMap.containsKey(element)){ - MSAttributeObject value = classMap.get(element); - String rawValue = StringUtils.replaceEach(value.getDependency(), new String[]{"[", "]"}, new String[]{"", ""}); - workingList = new ArrayList<>(Arrays.asList(rawValue.split(","))); - for(String depend : workingList){ - if (!returnList.contains(depend) && !depend.isEmpty()){ - returnList.add(depend.trim()); - //getFullDepedency(workingList) - } - } - } - } - - return returnList; - } - - @RequestMapping(value={"/get_MicroServiceHeaderDefaultsDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getMicroServiceHeaderDefaultsEntityDataByName(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getDataByEntity(response, microServiceHeaderDefaultDatas, "modelName", MicroserviceHeaderdeFaults.class); - } - + @RequestMapping(value={"/ms_dictionary/save_model"}, method={RequestMethod.POST}) + public ModelAndView saveMicroServiceModelsDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + DictionaryUtils utils = getDictionaryUtilsInstance(); + try { + this.newModel = new MicroServiceModels(); + boolean fromAPI = utils.isRequestFromAPI(request); + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + JsonNode root = mapper.readTree(request.getReader()); + MicroServiceModels microServiceModels = new MicroServiceModels(); + String userId = null; + + String dataOrderInfo = null; + if(root.has("dataOrderInfo")){ + dataOrderInfo = root.get("dataOrderInfo").toString(); + } + + if(root.has("modelType")){ + JsonNode dataType = root.get("modelType"); + String modelType= dataType.toString(); + if(modelType.contains("yml")){ + if (root.has(microServiceModelsDictionaryData)){ + if (root.get(microServiceModelsDictionaryData).has(description)){ + microServiceModels.setDescription(root.get(microServiceModelsDictionaryData).get(description).asText().replace("\"", "")); + } + if (root.get(microServiceModelsDictionaryData).has(modelName)){ + microServiceModels.setModelName(root.get(microServiceModelsDictionaryData).get(modelName).asText().replace("\"", "")); + this.newModel.setModelName(microServiceModels.getModelName()); + } + if (root.get(microServiceModelsDictionaryData).has(version)){ + microServiceModels.setVersion(root.get(microServiceModelsDictionaryData).get(version).asText().replace("\"", "")); + this.newModel.setVersion(microServiceModels.getVersion()); + } + } + + classMap = new LinkedHashMap<>(); + JsonNode data = root.get(classMapData); + ObjectMapper mapper1 = new ObjectMapper(); + String data1 = data.toString().substring(1, data.toString().length()-1); + data1 = data1.replace("\\", ""); + data1=data1.replace("\"{","{"); + data1=data1.replace("}\"","}"); + JSONObject jsonObject = new JSONObject(data1); + Set<String> keys = jsonObject.keySet(); + for(String key : keys){ + String value = jsonObject.get(key).toString(); + MSAttributeObject msAttributeObject = mapper1.readValue(value, MSAttributeObject.class); + classMap.put(key, msAttributeObject); + } + + userId = root.get("userid").textValue(); + MSAttributeObject mainClass = classMap.get(this.newModel.getModelName()); + this.newModel.setDependency("[]"); + String value = new Gson().toJson(mainClass.getSubClass()); + this.newModel.setSub_attributes(value); + String attributes= mainClass.getAttribute().toString().replace("{", "").replace("}", ""); + int equalsIndexForAttributes= attributes.indexOf('='); + String atttributesAfterFirstEquals= attributes.substring(equalsIndexForAttributes+1); + this.newModel.setAttributes(atttributesAfterFirstEquals); + String refAttributes= mainClass.getRefAttribute().toString().replace("{", "").replace("}", ""); + int equalsIndex= refAttributes.indexOf("="); + String refAttributesAfterFirstEquals= refAttributes.substring(equalsIndex+1); + this.newModel.setRef_attributes(refAttributesAfterFirstEquals); + this.newModel.setEnumValues(mainClass.getEnumType().toString().replace("{", "").replace("}", "")); + this.newModel.setAnnotation(mainClass.getMatchingSet().toString().replace("{", "").replace("}", "")); + + }else{ + if (fromAPI) { + microServiceModels = mapper.readValue(root.get(dictionaryFields).toString(), MicroServiceModels.class); + userId = "API"; + } else { + if (root.has(microServiceModelsDictionaryData)){ + if (root.get(microServiceModelsDictionaryData).has(description)){ + microServiceModels.setDescription(root.get(microServiceModelsDictionaryData).get(description).asText().replace("\"", "")); + } + if (root.get(microServiceModelsDictionaryData).has(modelName)){ + microServiceModels.setModelName(root.get(microServiceModelsDictionaryData).get(modelName).asText().replace("\"", "")); + this.newModel.setModelName(microServiceModels.getModelName()); + } + if (root.get(microServiceModelsDictionaryData).has(version)){ + microServiceModels.setVersion(root.get(microServiceModelsDictionaryData).get(version).asText().replace("\"", "")); + this.newModel.setVersion(microServiceModels.getVersion()); + } + } + if(root.has(classMapData)){ + classMap = new LinkedHashMap<>(); + JsonNode data = root.get(classMapData); + ObjectMapper mapper1 = new ObjectMapper(); + String data1 = data.toString().substring(1, data.toString().length()-1); + data1 = data1.replace("\\", ""); + JSONObject jsonObject = new JSONObject(data1); + Set<String> keys = jsonObject.keySet(); + for(String key : keys){ + String value = jsonObject.get(key).toString(); + MSAttributeObject msAttributeObject = mapper1.readValue(value, MSAttributeObject.class); + classMap.put(key, msAttributeObject); + } + } + userId = root.get("userid").textValue(); + addValuesToNewModel(classMap); + } + } + } + microServiceModels.setAttributes(this.newModel.getAttributes()); + microServiceModels.setRef_attributes(this.newModel.getRef_attributes()); + microServiceModels.setDependency(this.newModel.getDependency()); + microServiceModels.setModelName(this.newModel.getModelName()); + microServiceModels.setSub_attributes(this.newModel.getSub_attributes()); + microServiceModels.setVersion(this.newModel.getVersion()); + microServiceModels.setEnumValues(this.newModel.getEnumValues()); + microServiceModels.setAnnotation(this.newModel.getAnnotation()); + if(dataOrderInfo != null){ + microServiceModels.setDataOrderInfo(dataOrderInfo); + } + String checkName = microServiceModels.getModelName() + ":" + microServiceModels.getVersion(); + List<Object> duplicateData = commonClassDao.checkDuplicateEntry(checkName, "modelName:version", MicroServiceModels.class); + boolean duplicateflag = false; + if(duplicateData != null && !duplicateData.isEmpty()){ + MicroServiceModels data = (MicroServiceModels) duplicateData.get(0); + if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ + microServiceModels.setId(data.getId()); + }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || + (request.getParameter(operation) == null && (data.getId() != microServiceModels.getId()))){ + duplicateflag = true; + } + } + UserInfo userInfo = utils.getUserInfo(userId); + + String responseString = null; + if(!duplicateflag){ + microServiceModels.setUserCreatedBy(userInfo); + if(microServiceModels.getId() == 0){ + commonClassDao.save(microServiceModels); + }else{ + commonClassDao.update(microServiceModels); + } + responseString = mapper.writeValueAsString(commonClassDao.getData(PrefixList.class)); + }else{ + responseString = duplicateResponseString; + } + if(fromAPI){ + return utils.getResultForApi(responseString); + }else{ + utils.setResponseData(response, microServiceModelsDictionaryDatas, responseString); + } + }catch (Exception e){ + utils.setErrorResponseData(response, e); + } + return null; + } + + @RequestMapping(value={"/ms_dictionary/remove_msModel"}, method={RequestMethod.POST}) + public void removeMicroServiceModelsDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.removeData(request, response, microServiceModelsDictionaryDatas, MicroServiceModels.class); + } + + private void addValuesToNewModel(HashMap<String,MSAttributeObject > classMap) { + //Loop through the classmap and pull out the required info for the new file. + String subAttribute = null; + + MSAttributeObject mainClass = classMap.get(this.newModel.getModelName()); + + if (mainClass !=null){ + String dependTemp = StringUtils.replaceEach(mainClass.getDependency(), new String[]{"[", "]", " "}, new String[]{"", "", ""}); + ArrayList<String> dependency = new ArrayList<>(Arrays.asList(dependTemp.split(","))); + dependency = getFullDependencyList(dependency); + for (String element : dependency){ + MSAttributeObject temp = classMap.get(element); + if (temp!=null){ + mainClass.addAllRefAttribute(temp.getRefAttribute()); + mainClass.addAllAttribute(temp.getAttribute()); + } + } + subAttribute = utils.createSubAttributes(dependency, classMap, this.newModel.getModelName()); + }else{ + subAttribute = "{}"; + this.newModel.setDependency(""); + } + + if (mainClass != null && mainClass.getDependency()==null){ + mainClass.setDependency(""); + } + if(mainClass != null){ + this.newModel.setDependency(mainClass.getDependency()); + this.newModel.setSub_attributes(subAttribute); + this.newModel.setAttributes(mainClass.getAttribute().toString().replace("{", "").replace("}", "")); + this.newModel.setRef_attributes(mainClass.getRefAttribute().toString().replace("{", "").replace("}", "")); + this.newModel.setEnumValues(mainClass.getEnumType().toString().replace("{", "").replace("}", "")); + this.newModel.setAnnotation(mainClass.getMatchingSet().toString().replace("{", "").replace("}", "")); + } + } + + private ArrayList<String> getFullDependencyList(ArrayList<String> dependency) { + ArrayList<String> returnList = new ArrayList<>(); + ArrayList<String> workingList = new ArrayList<>(); + returnList.addAll(dependency); + for (String element : dependency ){ + if (classMap.containsKey(element)){ + MSAttributeObject value = classMap.get(element); + String rawValue = StringUtils.replaceEach(value.getDependency(), new String[]{"[", "]"}, new String[]{"", ""}); + workingList = new ArrayList<>(Arrays.asList(rawValue.split(","))); + for(String depend : workingList){ + if (!returnList.contains(depend) && !depend.isEmpty()){ + returnList.add(depend.trim()); + //getFullDepedency(workingList) + } + } + } + } + + return returnList; + } + + @RequestMapping(value={"/get_MicroServiceHeaderDefaultsDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getMicroServiceHeaderDefaultsEntityDataByName(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getDataByEntity(response, microServiceHeaderDefaultDatas, "modelName", MicroserviceHeaderdeFaults.class); + } + @RequestMapping(value={"/get_MicroServiceHeaderDefaultsData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) public void getMicroServiceHeaderDefaultsEntityData(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getData(response, microServiceHeaderDefaultDatas, MicroserviceHeaderdeFaults.class); + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getData(response, microServiceHeaderDefaultDatas, MicroserviceHeaderdeFaults.class); } @RequestMapping(value={"/ms_dictionary/save_headerDefaults"}, method={RequestMethod.POST}) public ModelAndView saveMicroServiceHeaderDefaultValues(HttpServletRequest request, HttpServletResponse response) throws IOException{ - DictionaryUtils utils = getDictionaryUtilsInstance(); + DictionaryUtils utils = getDictionaryUtilsInstance(); try { - boolean fromAPI = utils.isRequestFromAPI(request); - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - JsonNode root = mapper.readTree(request.getReader()); + boolean fromAPI = utils.isRequestFromAPI(request); + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + JsonNode root = mapper.readTree(request.getReader()); MicroserviceHeaderdeFaults msHeaderdeFaults; if(fromAPI){ - msHeaderdeFaults = mapper.readValue(root.get(dictionaryFields).toString(), MicroserviceHeaderdeFaults.class); + msHeaderdeFaults = mapper.readValue(root.get(dictionaryFields).toString(), MicroserviceHeaderdeFaults.class); }else{ - msHeaderdeFaults = mapper.readValue(root.get("modelAttributeDictionaryData").toString(), MicroserviceHeaderdeFaults.class); + msHeaderdeFaults = mapper.readValue(root.get("modelAttributeDictionaryData").toString(), MicroserviceHeaderdeFaults.class); } List<Object> duplicateData = commonClassDao.checkDuplicateEntry(msHeaderdeFaults.getModelName(), "modelName", MicroserviceHeaderdeFaults.class); - boolean duplicateflag = false; - if(duplicateData != null && !duplicateData.isEmpty()){ - MicroserviceHeaderdeFaults data = (MicroserviceHeaderdeFaults) duplicateData.get(0); - if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ - msHeaderdeFaults.setId(data.getId()); - }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || - (request.getParameter(operation) == null && (data.getId() != msHeaderdeFaults.getId()))){ - duplicateflag = true; - } - } + boolean duplicateflag = false; + if(duplicateData != null && !duplicateData.isEmpty()){ + MicroserviceHeaderdeFaults data = (MicroserviceHeaderdeFaults) duplicateData.get(0); + if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ + msHeaderdeFaults.setId(data.getId()); + }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || + (request.getParameter(operation) == null && (data.getId() != msHeaderdeFaults.getId()))){ + duplicateflag = true; + } + } - String responseString = null; - if(!duplicateflag){ - if(msHeaderdeFaults.getId() == 0){ - commonClassDao.save(msHeaderdeFaults); - }else{ - commonClassDao.update(msHeaderdeFaults); - } - responseString = mapper.writeValueAsString(commonClassDao.getData(MicroserviceHeaderdeFaults.class)); - }else{ - responseString = duplicateResponseString; - } - if(fromAPI){ - return utils.getResultForApi(responseString); - }else{ - utils.setResponseData(response, microServiceHeaderDefaultDatas, responseString); - } + String responseString = null; + if(!duplicateflag){ + if(msHeaderdeFaults.getId() == 0){ + commonClassDao.save(msHeaderdeFaults); + }else{ + commonClassDao.update(msHeaderdeFaults); + } + responseString = mapper.writeValueAsString(commonClassDao.getData(MicroserviceHeaderdeFaults.class)); + }else{ + responseString = duplicateResponseString; + } + if(fromAPI){ + return utils.getResultForApi(responseString); + }else{ + utils.setResponseData(response, microServiceHeaderDefaultDatas, responseString); + } } catch (Exception e){ - utils.setErrorResponseData(response, e); + utils.setErrorResponseData(response, e); } return null; } @RequestMapping(value={"/ms_dictionary/remove_headerDefaults"}, method={RequestMethod.POST}) public void removeMicroServiceHeaderDefaults(HttpServletRequest request, HttpServletResponse response) throws IOException{ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.removeData(request, response, microServiceHeaderDefaultDatas, MicroserviceHeaderdeFaults.class); + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.removeData(request, response, microServiceHeaderDefaultDatas, MicroserviceHeaderdeFaults.class); } }
\ No newline at end of file diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/OptimizationDictionaryController.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/OptimizationDictionaryController.java index acb5a2afe..3d1dba905 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/OptimizationDictionaryController.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/OptimizationDictionaryController.java @@ -53,266 +53,266 @@ import com.google.gson.Gson; @Controller public class OptimizationDictionaryController { - private static CommonClassDao commonClassDao; - + private static CommonClassDao commonClassDao; + private static String operation = "operation"; private LinkedHashMap<String,MSAttributeObject > classMap; - private static String dictionaryFields ="dictionaryFields"; - private static String duplicateResponseString = "Duplicate"; - private static String optimizationModelsDictionaryDatas = "optimizationModelsDictionaryDatas"; - private static String modelName = "modelName"; - private static String optimizationModelsDictionaryData = "optimizationModelsDictionaryData"; - private static String description = "description"; - private static String version = "version"; - private static String classMapData = "classMap"; - private static final String UPDATE = "update"; + private static String dictionaryFields ="dictionaryFields"; + private static String duplicateResponseString = "Duplicate"; + private static String optimizationModelsDictionaryDatas = "optimizationModelsDictionaryDatas"; + private static String modelName = "modelName"; + private static String optimizationModelsDictionaryData = "optimizationModelsDictionaryData"; + private static String description = "description"; + private static String version = "version"; + private static String classMapData = "classMap"; + private static final String UPDATE = "update"; public OptimizationDictionaryController(){ - super(); + super(); } - + private DictionaryUtils getDictionaryUtilsInstance(){ - return DictionaryUtils.getDictionaryUtils(); - } + return DictionaryUtils.getDictionaryUtils(); + } - @Autowired - public OptimizationDictionaryController(CommonClassDao commonClassDao){ - setCommonClassDao(commonClassDao); - } - public static void setCommonClassDao(CommonClassDao commonClassDao) { - OptimizationDictionaryController.commonClassDao = commonClassDao; - } + @Autowired + public OptimizationDictionaryController(CommonClassDao commonClassDao){ + setCommonClassDao(commonClassDao); + } + public static void setCommonClassDao(CommonClassDao commonClassDao) { + OptimizationDictionaryController.commonClassDao = commonClassDao; + } + + MSModelUtils utils = new MSModelUtils(XACMLPapServlet.getMsOnapName(), XACMLPapServlet.getMsPolicyName()); + + private OptimizationModels newModel; + + @RequestMapping(value={"/get_OptimizationModelsData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getOptimizationModelsDictionaryEntityData(HttpServletResponse response){ + DictionaryUtils dUtils = getDictionaryUtilsInstance(); + dUtils.getData(response, optimizationModelsDictionaryDatas, OptimizationModels.class); + } + + @RequestMapping(value={"/get_OptimizationModelsDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getOptimizationModelsDictionaryByNameEntityData(HttpServletResponse response){ + DictionaryUtils dUtils = getDictionaryUtilsInstance(); + dUtils.getDataByEntity(response, optimizationModelsDictionaryDatas, modelName, OptimizationModels.class); + } + + @RequestMapping(value={"/oof_dictionary/save_model"}, method={RequestMethod.POST}) + public ModelAndView saveOptimizationModelsDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + DictionaryUtils dUtils = getDictionaryUtilsInstance(); + try { + this.newModel = new OptimizationModels(); + boolean fromAPI = dUtils.isRequestFromAPI(request); + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + JsonNode root = mapper.readTree(request.getReader()); + OptimizationModels optimizationModels = new OptimizationModels(); + String userId = null; + + String dataOrderInfo = null; + if(root.has("dataOrderInfo")){ + dataOrderInfo = root.get("dataOrderInfo").toString(); + } + + if(root.has("modelType")){ + JsonNode dataType = root.get("modelType"); + String modelType= dataType.toString(); + if(modelType.contains("yml")){ + if (root.has(optimizationModelsDictionaryData)){ + if (root.get(optimizationModelsDictionaryData).has(description)){ + optimizationModels.setDescription(root.get(optimizationModelsDictionaryData).get(description).asText().replace("\"", "")); + } + if (root.get(optimizationModelsDictionaryData).has(modelName)){ + optimizationModels.setModelName(root.get(optimizationModelsDictionaryData).get(modelName).asText().replace("\"", "")); + this.newModel.setModelName(optimizationModels.getModelName()); + } + if (root.get(optimizationModelsDictionaryData).has(version)){ + optimizationModels.setVersion(root.get(optimizationModelsDictionaryData).get(version).asText().replace("\"", "")); + this.newModel.setVersion(optimizationModels.getVersion()); + } + } + + classMap = new LinkedHashMap<>(); + JsonNode data = root.get(classMapData); + ObjectMapper mapper1 = new ObjectMapper(); + String data1 = data.toString().substring(1, data.toString().length()-1); + data1 = data1.replace("\\", ""); + data1=data1.replace("\"{","{"); + data1=data1.replace("}\"","}"); + JSONObject jsonObject = new JSONObject(data1); + Set<String> keys = jsonObject.keySet(); + for(String key : keys){ + String value = jsonObject.get(key).toString(); + MSAttributeObject msAttributeObject = mapper1.readValue(value, MSAttributeObject.class); + classMap.put(key, msAttributeObject); + } + + userId = root.get("userid").textValue(); + MSAttributeObject mainClass = classMap.get(this.newModel.getModelName()); + this.newModel.setDependency("[]"); + String value = new Gson().toJson(mainClass.getSubClass()); + this.newModel.setSubattributes(value); + String attributes= mainClass.getAttribute().toString().replace("{", "").replace("}", ""); + int equalsIndexForAttributes= attributes.indexOf('='); + String atttributesAfterFirstEquals= attributes.substring(equalsIndexForAttributes+1, attributes.length()-1); + this.newModel.setAttributes(atttributesAfterFirstEquals); + String refAttributes= mainClass.getRefAttribute().toString().replace("{", "").replace("}", ""); + int equalsIndex= refAttributes.indexOf('='); + String refAttributesAfterFirstEquals= refAttributes.substring(equalsIndex+1, refAttributes.length()-1); + this.newModel.setRefattributes(refAttributesAfterFirstEquals); + this.newModel.setEnumValues(mainClass.getEnumType().toString().replace("{", "").replace("}", "")); + this.newModel.setAnnotation(mainClass.getMatchingSet().toString().replace("{", "").replace("}", "")); + + }else{ + if (fromAPI) { + optimizationModels = mapper.readValue(root.get(dictionaryFields).toString(), OptimizationModels.class); + userId = "API"; + } else { + if (root.has(optimizationModelsDictionaryData)){ + if (root.get(optimizationModelsDictionaryData).has(description)){ + optimizationModels.setDescription(root.get(optimizationModelsDictionaryData).get(description).asText().replace("\"", "")); + } + if (root.get(optimizationModelsDictionaryData).has(modelName)){ + optimizationModels.setModelName(root.get(optimizationModelsDictionaryData).get(modelName).asText().replace("\"", "")); + this.newModel.setModelName(optimizationModels.getModelName()); + } + if (root.get(optimizationModelsDictionaryData).has(version)){ + optimizationModels.setVersion(root.get(optimizationModelsDictionaryData).get(version).asText().replace("\"", "")); + this.newModel.setVersion(optimizationModels.getVersion()); + } + } + if(root.has(classMapData)){ + classMap = new LinkedHashMap<>(); + JsonNode data = root.get(classMapData); + ObjectMapper mapper1 = new ObjectMapper(); + String data1 = data.toString().substring(1, data.toString().length()-1); + data1 = data1.replace("\\", ""); + JSONObject jsonObject = new JSONObject(data1); + Set<String> keys = jsonObject.keySet(); + for(String key : keys){ + String value = jsonObject.get(key).toString(); + MSAttributeObject msAttributeObject = mapper1.readValue(value, MSAttributeObject.class); + classMap.put(key, msAttributeObject); + } + } + userId = root.get("userid").textValue(); + addValuesToNewModel(classMap); + } + } + } + optimizationModels.setAttributes(this.newModel.getAttributes()); + optimizationModels.setRefattributes(this.newModel.getRefattributes()); + optimizationModels.setDependency(this.newModel.getDependency()); + optimizationModels.setModelName(this.newModel.getModelName()); + optimizationModels.setSubattributes(this.newModel.getSubattributes()); + optimizationModels.setVersion(this.newModel.getVersion()); + optimizationModels.setEnumValues(this.newModel.getEnumValues()); + optimizationModels.setAnnotation(this.newModel.getAnnotation()); + + if(dataOrderInfo != null){ + optimizationModels.setDataOrderInfo(dataOrderInfo); + } + + String checkName = optimizationModels.getModelName() + ":" + optimizationModels.getVersion(); + List<Object> duplicateData = commonClassDao.checkDuplicateEntry(checkName, "modelName:version", OptimizationModels.class); + boolean duplicateflag = false; + if(duplicateData!=null && !duplicateData.isEmpty()){ + OptimizationModels data = (OptimizationModels) duplicateData.get(0); + if(request.getParameter(operation) != null && UPDATE.equals(request.getParameter(operation))){ + optimizationModels.setId(data.getId()); + }else if((request.getParameter(operation) != null && !UPDATE.equals(request.getParameter(operation))) || + (request.getParameter(operation) == null && (data.getId() != optimizationModels.getId()))){ + duplicateflag = true; + } + } + UserInfo userInfo = dUtils.getUserInfo(userId); + + String responseString = null; + if(!duplicateflag){ + optimizationModels.setUserCreatedBy(userInfo); + if(optimizationModels.getId() == 0){ + commonClassDao.save(optimizationModels); + }else{ + commonClassDao.update(optimizationModels); + } + responseString = mapper.writeValueAsString(commonClassDao.getData(OptimizationModels.class)); + }else{ + responseString = duplicateResponseString; + } + if(fromAPI){ + return dUtils.getResultForApi(responseString); + }else{ + dUtils.setResponseData(response, optimizationModelsDictionaryDatas, responseString); + } + }catch (Exception e){ + dUtils.setErrorResponseData(response, e); + } + return null; + } - MSModelUtils utils = new MSModelUtils(XACMLPapServlet.getMsOnapName(), XACMLPapServlet.getMsPolicyName()); - - private OptimizationModels newModel; - - @RequestMapping(value={"/get_OptimizationModelsData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getOptimizationModelsDictionaryEntityData(HttpServletResponse response){ - DictionaryUtils dUtils = getDictionaryUtilsInstance(); - dUtils.getData(response, optimizationModelsDictionaryDatas, OptimizationModels.class); - } - - @RequestMapping(value={"/get_OptimizationModelsDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getOptimizationModelsDictionaryByNameEntityData(HttpServletResponse response){ - DictionaryUtils dUtils = getDictionaryUtilsInstance(); - dUtils.getDataByEntity(response, optimizationModelsDictionaryDatas, modelName, OptimizationModels.class); - } - - @RequestMapping(value={"/oof_dictionary/save_model"}, method={RequestMethod.POST}) - public ModelAndView saveOptimizationModelsDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - DictionaryUtils dUtils = getDictionaryUtilsInstance(); - try { - this.newModel = new OptimizationModels(); - boolean fromAPI = dUtils.isRequestFromAPI(request); - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - JsonNode root = mapper.readTree(request.getReader()); - OptimizationModels optimizationModels = new OptimizationModels(); - String userId = null; - - String dataOrderInfo = null; - if(root.has("dataOrderInfo")){ - dataOrderInfo = root.get("dataOrderInfo").toString(); - } + @RequestMapping(value={"/oof_dictionary/remove_model"}, method={RequestMethod.POST}) + public void removeOptimizationModelsDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { + DictionaryUtils dUtils = getDictionaryUtilsInstance(); + dUtils.removeData(request, response, optimizationModelsDictionaryDatas, OptimizationModels.class); + } - if(root.has("modelType")){ - JsonNode dataType = root.get("modelType"); - String modelType= dataType.toString(); - if(modelType.contains("yml")){ - if (root.has(optimizationModelsDictionaryData)){ - if (root.get(optimizationModelsDictionaryData).has(description)){ - optimizationModels.setDescription(root.get(optimizationModelsDictionaryData).get(description).asText().replace("\"", "")); - } - if (root.get(optimizationModelsDictionaryData).has(modelName)){ - optimizationModels.setModelName(root.get(optimizationModelsDictionaryData).get(modelName).asText().replace("\"", "")); - this.newModel.setModelName(optimizationModels.getModelName()); - } - if (root.get(optimizationModelsDictionaryData).has(version)){ - optimizationModels.setVersion(root.get(optimizationModelsDictionaryData).get(version).asText().replace("\"", "")); - this.newModel.setVersion(optimizationModels.getVersion()); - } - } + private void addValuesToNewModel(HashMap<String,MSAttributeObject > classMap) { + //Loop through the classmap and pull out the required info for the new file. + String subAttribute = null; - classMap = new LinkedHashMap<>(); - JsonNode data = root.get(classMapData); - ObjectMapper mapper1 = new ObjectMapper(); - String data1 = data.toString().substring(1, data.toString().length()-1); - data1 = data1.replace("\\", ""); - data1=data1.replace("\"{","{"); - data1=data1.replace("}\"","}"); - JSONObject jsonObject = new JSONObject(data1); - Set<String> keys = jsonObject.keySet(); - for(String key : keys){ - String value = jsonObject.get(key).toString(); - MSAttributeObject msAttributeObject = mapper1.readValue(value, MSAttributeObject.class); - classMap.put(key, msAttributeObject); - } + MSAttributeObject mainClass = classMap.get(this.newModel.getModelName()); - userId = root.get("userid").textValue(); - MSAttributeObject mainClass = classMap.get(this.newModel.getModelName()); - this.newModel.setDependency("[]"); - String value = new Gson().toJson(mainClass.getSubClass()); - this.newModel.setSubattributes(value); - String attributes= mainClass.getAttribute().toString().replace("{", "").replace("}", ""); - int equalsIndexForAttributes= attributes.indexOf('='); - String atttributesAfterFirstEquals= attributes.substring(equalsIndexForAttributes+1, attributes.length()-1); - this.newModel.setAttributes(atttributesAfterFirstEquals); - String refAttributes= mainClass.getRefAttribute().toString().replace("{", "").replace("}", ""); - int equalsIndex= refAttributes.indexOf('='); - String refAttributesAfterFirstEquals= refAttributes.substring(equalsIndex+1, refAttributes.length()-1); - this.newModel.setRefattributes(refAttributesAfterFirstEquals); - this.newModel.setEnumValues(mainClass.getEnumType().toString().replace("{", "").replace("}", "")); - this.newModel.setAnnotation(mainClass.getMatchingSet().toString().replace("{", "").replace("}", "")); + if (mainClass !=null){ + String dependTemp = StringUtils.replaceEach(mainClass.getDependency(), new String[]{"[", "]", " "}, new String[]{"", "", ""}); + ArrayList<String> dependency = new ArrayList<>(Arrays.asList(dependTemp.split(","))); + dependency = getFullDependencyList(dependency); + for (String element : dependency){ + MSAttributeObject temp = classMap.get(element); + if (temp!=null){ + mainClass.addAllRefAttribute(temp.getRefAttribute()); + mainClass.addAllAttribute(temp.getAttribute()); + } + } + subAttribute = utils.createSubAttributes(dependency, classMap, this.newModel.getModelName()); + }else{ + subAttribute = "{}"; + this.newModel.setDependency(""); + } - }else{ - if (fromAPI) { - optimizationModels = mapper.readValue(root.get(dictionaryFields).toString(), OptimizationModels.class); - userId = "API"; - } else { - if (root.has(optimizationModelsDictionaryData)){ - if (root.get(optimizationModelsDictionaryData).has(description)){ - optimizationModels.setDescription(root.get(optimizationModelsDictionaryData).get(description).asText().replace("\"", "")); - } - if (root.get(optimizationModelsDictionaryData).has(modelName)){ - optimizationModels.setModelName(root.get(optimizationModelsDictionaryData).get(modelName).asText().replace("\"", "")); - this.newModel.setModelName(optimizationModels.getModelName()); - } - if (root.get(optimizationModelsDictionaryData).has(version)){ - optimizationModels.setVersion(root.get(optimizationModelsDictionaryData).get(version).asText().replace("\"", "")); - this.newModel.setVersion(optimizationModels.getVersion()); - } - } - if(root.has(classMapData)){ - classMap = new LinkedHashMap<>(); - JsonNode data = root.get(classMapData); - ObjectMapper mapper1 = new ObjectMapper(); - String data1 = data.toString().substring(1, data.toString().length()-1); - data1 = data1.replace("\\", ""); - JSONObject jsonObject = new JSONObject(data1); - Set<String> keys = jsonObject.keySet(); - for(String key : keys){ - String value = jsonObject.get(key).toString(); - MSAttributeObject msAttributeObject = mapper1.readValue(value, MSAttributeObject.class); - classMap.put(key, msAttributeObject); - } - } - userId = root.get("userid").textValue(); - addValuesToNewModel(classMap); - } - } - } - optimizationModels.setAttributes(this.newModel.getAttributes()); - optimizationModels.setRefattributes(this.newModel.getRefattributes()); - optimizationModels.setDependency(this.newModel.getDependency()); - optimizationModels.setModelName(this.newModel.getModelName()); - optimizationModels.setSubattributes(this.newModel.getSubattributes()); - optimizationModels.setVersion(this.newModel.getVersion()); - optimizationModels.setEnumValues(this.newModel.getEnumValues()); - optimizationModels.setAnnotation(this.newModel.getAnnotation()); - - if(dataOrderInfo != null){ - optimizationModels.setDataOrderInfo(dataOrderInfo); - } - - String checkName = optimizationModels.getModelName() + ":" + optimizationModels.getVersion(); - List<Object> duplicateData = commonClassDao.checkDuplicateEntry(checkName, "modelName:version", OptimizationModels.class); - boolean duplicateflag = false; - if(duplicateData!=null && !duplicateData.isEmpty()){ - OptimizationModels data = (OptimizationModels) duplicateData.get(0); - if(request.getParameter(operation) != null && UPDATE.equals(request.getParameter(operation))){ - optimizationModels.setId(data.getId()); - }else if((request.getParameter(operation) != null && !UPDATE.equals(request.getParameter(operation))) || - (request.getParameter(operation) == null && (data.getId() != optimizationModels.getId()))){ - duplicateflag = true; - } - } - UserInfo userInfo = dUtils.getUserInfo(userId); - - String responseString = null; - if(!duplicateflag){ - optimizationModels.setUserCreatedBy(userInfo); - if(optimizationModels.getId() == 0){ - commonClassDao.save(optimizationModels); - }else{ - commonClassDao.update(optimizationModels); - } - responseString = mapper.writeValueAsString(commonClassDao.getData(OptimizationModels.class)); - }else{ - responseString = duplicateResponseString; - } - if(fromAPI){ - return dUtils.getResultForApi(responseString); - }else{ - dUtils.setResponseData(response, optimizationModelsDictionaryDatas, responseString); - } - }catch (Exception e){ - dUtils.setErrorResponseData(response, e); - } - return null; - } + if (mainClass != null && mainClass.getDependency()==null){ + mainClass.setDependency(""); + } + if(mainClass != null){ + this.newModel.setDependency(mainClass.getDependency()); + this.newModel.setSubattributes(subAttribute); + this.newModel.setAttributes(mainClass.getAttribute().toString().replace("{", "").replace("}", "")); + this.newModel.setRefattributes(mainClass.getRefAttribute().toString().replace("{", "").replace("}", "")); + this.newModel.setEnumValues(mainClass.getEnumType().toString().replace("{", "").replace("}", "")); + this.newModel.setAnnotation(mainClass.getMatchingSet().toString().replace("{", "").replace("}", "")); + } + } - @RequestMapping(value={"/oof_dictionary/remove_model"}, method={RequestMethod.POST}) - public void removeOptimizationModelsDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { - DictionaryUtils dUtils = getDictionaryUtilsInstance(); - dUtils.removeData(request, response, optimizationModelsDictionaryDatas, OptimizationModels.class); - } - - private void addValuesToNewModel(HashMap<String,MSAttributeObject > classMap) { - //Loop through the classmap and pull out the required info for the new file. - String subAttribute = null; - - MSAttributeObject mainClass = classMap.get(this.newModel.getModelName()); - - if (mainClass !=null){ - String dependTemp = StringUtils.replaceEach(mainClass.getDependency(), new String[]{"[", "]", " "}, new String[]{"", "", ""}); - ArrayList<String> dependency = new ArrayList<>(Arrays.asList(dependTemp.split(","))); - dependency = getFullDependencyList(dependency); - for (String element : dependency){ - MSAttributeObject temp = classMap.get(element); - if (temp!=null){ - mainClass.addAllRefAttribute(temp.getRefAttribute()); - mainClass.addAllAttribute(temp.getAttribute()); - } - } - subAttribute = utils.createSubAttributes(dependency, classMap, this.newModel.getModelName()); - }else{ - subAttribute = "{}"; - this.newModel.setDependency(""); - } + private ArrayList<String> getFullDependencyList(ArrayList<String> dependency) { + ArrayList<String> returnList = new ArrayList<>(); + ArrayList<String> workingList; + returnList.addAll(dependency); + for (String element : dependency ){ + if (classMap.containsKey(element)){ + MSAttributeObject value = classMap.get(element); + String rawValue = StringUtils.replaceEach(value.getDependency(), new String[]{"[", "]"}, new String[]{"", ""}); + workingList = new ArrayList<>(Arrays.asList(rawValue.split(","))); + for(String depend : workingList){ + if (!returnList.contains(depend) && !depend.isEmpty()){ + returnList.add(depend.trim()); + } + } + } + } - if (mainClass != null && mainClass.getDependency()==null){ - mainClass.setDependency(""); - } - if(mainClass != null){ - this.newModel.setDependency(mainClass.getDependency()); - this.newModel.setSubattributes(subAttribute); - this.newModel.setAttributes(mainClass.getAttribute().toString().replace("{", "").replace("}", "")); - this.newModel.setRefattributes(mainClass.getRefAttribute().toString().replace("{", "").replace("}", "")); - this.newModel.setEnumValues(mainClass.getEnumType().toString().replace("{", "").replace("}", "")); - this.newModel.setAnnotation(mainClass.getMatchingSet().toString().replace("{", "").replace("}", "")); - } - } - - private ArrayList<String> getFullDependencyList(ArrayList<String> dependency) { - ArrayList<String> returnList = new ArrayList<>(); - ArrayList<String> workingList; - returnList.addAll(dependency); - for (String element : dependency ){ - if (classMap.containsKey(element)){ - MSAttributeObject value = classMap.get(element); - String rawValue = StringUtils.replaceEach(value.getDependency(), new String[]{"[", "]"}, new String[]{"", ""}); - workingList = new ArrayList<>(Arrays.asList(rawValue.split(","))); - for(String depend : workingList){ - if (!returnList.contains(depend) && !depend.isEmpty()){ - returnList.add(depend.trim()); - } - } - } - } - - return returnList; - } + return returnList; + } } diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/PolicyScopeDictionaryController.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/PolicyScopeDictionaryController.java index fd3d2f641..965235cce 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/PolicyScopeDictionaryController.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/PolicyScopeDictionaryController.java @@ -52,441 +52,441 @@ import com.fasterxml.jackson.databind.ObjectMapper; @Controller public class PolicyScopeDictionaryController { - private static final Logger LOGGER = FlexLogger.getLogger(PolicyScopeDictionaryController.class); - - private static CommonClassDao commonClassDao; - private static String operation = "operation"; - private static String groupPolicyScopeListData1 = "groupPolicyScopeListData1"; - private static String policyScope= "PolicyScope"; - private static String duplicateResponseString = "Duplicate"; - private static String groupPolicyScopeDatas = "groupPolicyScopeListDatas"; - private static String dictionaryFields = "dictionaryFields"; - private static String psCLDatas = "psClosedLoopDictionaryDatas"; - private static String psServiceDatas = "psServiceDictionaryDatas"; - private static String psTypeDatas = "psTypeDictionaryDatas"; - private static String psResourceDatas = "psResourceDictionaryDatas"; - - public PolicyScopeDictionaryController(){ - super(); - } - - private DictionaryUtils getDictionaryUtilsInstance(){ - return DictionaryUtils.getDictionaryUtils(); - } - - @Autowired - public PolicyScopeDictionaryController(CommonClassDao commonClassDao){ - PolicyScopeDictionaryController.commonClassDao = commonClassDao; - } - - public void setCommonClassDao(CommonClassDao commonClassDao){ - PolicyScopeDictionaryController.commonClassDao = commonClassDao; - } - - @RequestMapping(value={"/get_GroupPolicyScopeDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getGroupPolicyScopeEntityDataByName(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getDataByEntity(response, groupPolicyScopeDatas, "name", GroupPolicyScopeList.class); - } - - @RequestMapping(value={"/get_GroupPolicyScopeData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getGroupPolicyScopeEntityData(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getData(response, groupPolicyScopeDatas, GroupPolicyScopeList.class); - } - - @RequestMapping(value={"/ps_dictionary/save_psGroupPolicyScope"}, method={RequestMethod.POST}) - public ModelAndView savePSGroupScopeDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - DictionaryUtils utils = getDictionaryUtilsInstance(); - try { - boolean fromAPI = utils.isRequestFromAPI(request); - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - JsonNode root = mapper.readTree(request.getReader()); - GroupPolicyScopeList gpdata = null; - GroupPolicyScope groupData = null; - boolean duplicateGroupFlag = false; - if (fromAPI) { - gpdata = mapper.readValue(root.get(dictionaryFields).toString(), GroupPolicyScopeList.class); - try{ - groupData = mapper.readValue(root.get(groupPolicyScopeListData1).toString(), GroupPolicyScope.class); - }catch(Exception e){ - groupData = new GroupPolicyScope(); - groupData.setResource(root.get(dictionaryFields).get("resource").toString().replace("\"", "")); - groupData.setClosedloop(root.get(dictionaryFields).get("closedloop").toString().replace("\"", "")); - groupData.setService(root.get(dictionaryFields).get("service").toString().replace("\"", "")); - groupData.setType(root.get(dictionaryFields).get("type").toString().replace("\"", "")); - LOGGER.error(e); - } - } else { - gpdata = mapper.readValue(root.get("groupPolicyScopeListData").toString(), GroupPolicyScopeList.class); - try{ - groupData = mapper.readValue(root.get(groupPolicyScopeListData1).toString(), GroupPolicyScope.class); - }catch(Exception e){ - LOGGER.error(e); - groupData = new GroupPolicyScope(); - groupData.setResource(root.get(groupPolicyScopeListData1).get("resource").toString().replace("\"", "")); - groupData.setClosedloop(root.get(groupPolicyScopeListData1).get("closedloop").toString().replace("\"", "")); - groupData.setService(root.get(groupPolicyScopeListData1).get("service").toString().replace("\"", "")); - groupData.setType(root.get(groupPolicyScopeListData1).get("type").toString().replace("\"", "")); - } - } - if(!gpdata.getGroupName().startsWith(policyScope)){ - String name = "PolicyScope_" + gpdata.getGroupName(); - gpdata.setGroupName(name); - } - ArrayList<String> valueList = new ArrayList<>(); - String resourceValue = groupData.getResource(); - String typeValue = groupData.getType(); - String serviceValue = groupData.getService(); - String closedLoopValue = groupData.getClosedloop(); - valueList.add("resource=" + resourceValue); - valueList.add("service=" + serviceValue); - valueList.add("type=" + typeValue); - valueList.add("closedLoopControlName=" + closedLoopValue); - String list = StringUtils.replaceEach(valueList.toString(), new String[]{"[", "]", " "}, new String[]{"", "", ""}); - gpdata.setGroupList(list); - - List<Object> duplicateData = commonClassDao.checkDuplicateEntry(gpdata.getGroupName(), "name", GroupPolicyScopeList.class); - if(duplicateData.isEmpty()){ - duplicateData = commonClassDao.checkDuplicateEntry(gpdata.getGroupList(), "groupList", GroupPolicyScopeList.class); - if(duplicateData.isEmpty()){ - duplicateGroupFlag = true; - } - } - boolean duplicateflag = false; - if(!duplicateData.isEmpty()){ - GroupPolicyScopeList data = (GroupPolicyScopeList) duplicateData.get(0); - if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ - gpdata.setId(data.getId()); - }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || - (request.getParameter(operation) == null && (data.getId() != gpdata.getId()))){ - duplicateflag = true; - } - } - String responseString = null; - if(!duplicateflag && !duplicateGroupFlag){ - if(gpdata.getId() == 0){ - commonClassDao.save(gpdata); - }else{ - commonClassDao.update(gpdata); - } - responseString = mapper.writeValueAsString(commonClassDao.getData(GroupPolicyScopeList.class)); - }else if(duplicateGroupFlag){ - responseString = "DuplicateGroup"; - }else{ - responseString = duplicateResponseString; - } - if(fromAPI){ - return utils.getResultForApi(responseString); - }else{ - utils.setResponseData(response, groupPolicyScopeDatas, responseString); - } - }catch (Exception e){ - utils.setErrorResponseData(response, e); - } - return null; - } - - @RequestMapping(value={"/ps_dictionary/remove_GroupPolicyScope"}, method={RequestMethod.POST}) - public void removePSGroupScopeDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.removeData(request, response, groupPolicyScopeDatas, GroupPolicyScopeList.class); - } - - @RequestMapping(value={"/get_PSClosedLoopDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getPSClosedLoopEntityDataByName(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getDataByEntity(response, psCLDatas, "name", OnapName.class); - } - - @RequestMapping(value={"/get_PSClosedLoopData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getPSClosedLoopEntityData(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getData(response, psCLDatas, PolicyScopeClosedLoop.class); - } - - @RequestMapping(value={"/ps_dictionary/save_psClosedLoop"}, method={RequestMethod.POST}) - public ModelAndView savePSClosedLoopDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - DictionaryUtils utils = getDictionaryUtilsInstance(); - try { - boolean fromAPI = utils.isRequestFromAPI(request); - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - JsonNode root = mapper.readTree(request.getReader()); - PolicyScopeClosedLoop onapData; - if(fromAPI){ - onapData = mapper.readValue(root.get(dictionaryFields).toString(), PolicyScopeClosedLoop.class); - }else{ - onapData = mapper.readValue(root.get("psClosedLoopDictionaryData").toString(), PolicyScopeClosedLoop.class); - } - - List<Object> duplicateData = commonClassDao.checkDuplicateEntry(onapData.getName(), "name", PolicyScopeClosedLoop.class); - boolean duplicateflag = false; - if(!duplicateData.isEmpty()){ - PolicyScopeClosedLoop data = (PolicyScopeClosedLoop) duplicateData.get(0); - if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ - onapData.setId(data.getId()); - }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || - (request.getParameter(operation) == null && (data.getId() != onapData.getId()))){ - duplicateflag = true; - } - } - String responseString = null; - if(!duplicateflag){ - if(onapData.getId() == 0){ - commonClassDao.save(onapData); - }else{ - commonClassDao.update(onapData); - } - responseString = mapper.writeValueAsString(commonClassDao.getData(PolicyScopeClosedLoop.class)); - }else{ - responseString = duplicateResponseString; - } - if(fromAPI){ - return utils.getResultForApi(responseString); - }else{ - utils.setResponseData(response, psCLDatas, responseString); - } - }catch (Exception e){ - utils.setErrorResponseData(response, e); - } - return null; - } - - @RequestMapping(value={"/ps_dictionary/remove_PSClosedLoop"}, method={RequestMethod.POST}) - public void removePSClosedLoopDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.removeData(request, response, psCLDatas, PolicyScopeClosedLoop.class); - } - - @RequestMapping(value={"/get_PSServiceDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getPSServiceEntityDataByName(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getDataByEntity(response, psServiceDatas, "name", PolicyScopeService.class); - } - - @RequestMapping(value={"/get_PSServiceData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getPSServiceEntityData(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getData(response, psServiceDatas, PolicyScopeService.class); - } - - @RequestMapping(value={"/ps_dictionary/save_psService"}, method={RequestMethod.POST}) - public ModelAndView savePSServiceDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - DictionaryUtils utils = getDictionaryUtilsInstance(); - try { - boolean fromAPI = utils.isRequestFromAPI(request); - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - JsonNode root = mapper.readTree(request.getReader()); - PolicyScopeService onapData; - if (fromAPI) { - onapData = mapper.readValue(root.get(dictionaryFields).toString(), PolicyScopeService.class); - } else { - onapData = mapper.readValue(root.get("psServiceDictionaryData").toString(), PolicyScopeService.class); - } - - List<Object> duplicateData = commonClassDao.checkDuplicateEntry(onapData.getName(), "name", PolicyScopeService.class); - boolean duplicateflag = false; - if(!duplicateData.isEmpty()){ - PolicyScopeService data = (PolicyScopeService) duplicateData.get(0); - if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ - onapData.setId(data.getId()); - }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || - (request.getParameter(operation) == null && (data.getId() != onapData.getId()))){ - duplicateflag = true; - } - } - String responseString = null; - if(!duplicateflag){ - if(onapData.getId() == 0){ - commonClassDao.save(onapData); - }else{ - commonClassDao.update(onapData); - } - responseString = mapper.writeValueAsString(commonClassDao.getData(PolicyScopeService.class)); - }else{ - responseString = duplicateResponseString; - } - if(fromAPI){ - return utils.getResultForApi(responseString); - }else{ - utils.setResponseData(response, psServiceDatas, responseString); - } - }catch (Exception e){ - utils.setErrorResponseData(response, e); - } - return null; - } - - @RequestMapping(value={"/ps_dictionary/remove_PSService"}, method={RequestMethod.POST}) - public void removePSServiceDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.removeData(request, response, psServiceDatas, PolicyScopeService.class); - } - - @RequestMapping(value={"/get_PSTypeDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getPSTypeEntityDataByName(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getDataByEntity(response, psTypeDatas, "name", PolicyScopeType.class); - } - - @RequestMapping(value={"/get_PSTypeData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getPSTypeEntityData(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getData(response, psTypeDatas, PolicyScopeType.class); - } - - @RequestMapping(value={"/ps_dictionary/save_psType"}, method={RequestMethod.POST}) - public ModelAndView savePSTypeDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - DictionaryUtils utils = getDictionaryUtilsInstance(); - try { - boolean fromAPI = utils.isRequestFromAPI(request); - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - JsonNode root = mapper.readTree(request.getReader()); - PolicyScopeType onapData; - if(fromAPI){ - onapData = mapper.readValue(root.get(dictionaryFields).toString(), PolicyScopeType.class); - }else{ - onapData = mapper.readValue(root.get("psTypeDictionaryData").toString(), PolicyScopeType.class); - } - - List<Object> duplicateData = commonClassDao.checkDuplicateEntry(onapData.getName(), "name", PolicyScopeType.class); - boolean duplicateflag = false; - if(!duplicateData.isEmpty()){ - PolicyScopeType data = (PolicyScopeType) duplicateData.get(0); - if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ - onapData.setId(data.getId()); - }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || - (request.getParameter(operation) == null && (data.getId() != onapData.getId()))){ - duplicateflag = true; - } - } - String responseString = null; - if(!duplicateflag){ - if(onapData.getId() == 0){ - commonClassDao.save(onapData); - }else{ - commonClassDao.update(onapData); - } - responseString = mapper.writeValueAsString(commonClassDao.getData(PolicyScopeType.class)); - }else{ - responseString = duplicateResponseString; - } - if(fromAPI){ - return utils.getResultForApi(responseString); - }else{ - utils.setResponseData(response, psTypeDatas, responseString); - } - }catch (Exception e){ - utils.setErrorResponseData(response, e); - } - return null; - } - - @RequestMapping(value={"/ps_dictionary/remove_PSType"}, method={RequestMethod.POST}) - public void removePSTypeDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.removeData(request, response, psTypeDatas, PolicyScopeType.class); - } - - @RequestMapping(value={"/get_PSResourceDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getPSResourceEntityDataByName(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getDataByEntity(response, psResourceDatas, "name", PolicyScopeResource.class); - } - - @RequestMapping(value={"/get_PSResourceData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getPSResourceEntityData(HttpServletResponse response){ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getData(response, psResourceDatas, PolicyScopeResource.class); - } - - @RequestMapping(value={"/ps_dictionary/save_psResource"}, method={RequestMethod.POST}) - public ModelAndView savePSResourceDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - DictionaryUtils utils = getDictionaryUtilsInstance(); - try { - boolean fromAPI = utils.isRequestFromAPI(request); - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - JsonNode root = mapper.readTree(request.getReader()); - PolicyScopeResource onapData; - if (fromAPI) { - onapData = mapper.readValue(root.get(dictionaryFields).toString(), PolicyScopeResource.class); - } else { - onapData = mapper.readValue(root.get("psResourceDictionaryData").toString(), PolicyScopeResource.class); - } - - List<Object> duplicateData = commonClassDao.checkDuplicateEntry(onapData.getName(), "name", PolicyScopeResource.class); - boolean duplicateflag = false; - if(!duplicateData.isEmpty()){ - PolicyScopeResource data = (PolicyScopeResource) duplicateData.get(0); - if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ - onapData.setId(data.getId()); - }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || - (request.getParameter(operation) == null && (data.getId() != onapData.getId()))){ - duplicateflag = true; - } - } - String responseString = null; - if(!duplicateflag){ - if(onapData.getId() == 0){ - commonClassDao.save(onapData); - }else{ - commonClassDao.update(onapData); - } - responseString = mapper.writeValueAsString(commonClassDao.getData(PolicyScopeResource.class)); - }else{ - responseString = duplicateResponseString; - } - if(fromAPI){ - return utils.getResultForApi(responseString); - }else{ - utils.setResponseData(response, psResourceDatas, responseString); - } - }catch (Exception e){ - utils.setErrorResponseData(response, e); - } - return null; - } - - @RequestMapping(value={"/ps_dictionary/remove_PSResource"}, method={RequestMethod.POST}) - public void removePSResourceDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.removeData(request, response, psResourceDatas, PolicyScopeResource.class); - } + private static final Logger LOGGER = FlexLogger.getLogger(PolicyScopeDictionaryController.class); + + private static CommonClassDao commonClassDao; + private static String operation = "operation"; + private static String groupPolicyScopeListData1 = "groupPolicyScopeListData1"; + private static String policyScope= "PolicyScope"; + private static String duplicateResponseString = "Duplicate"; + private static String groupPolicyScopeDatas = "groupPolicyScopeListDatas"; + private static String dictionaryFields = "dictionaryFields"; + private static String psCLDatas = "psClosedLoopDictionaryDatas"; + private static String psServiceDatas = "psServiceDictionaryDatas"; + private static String psTypeDatas = "psTypeDictionaryDatas"; + private static String psResourceDatas = "psResourceDictionaryDatas"; + + public PolicyScopeDictionaryController(){ + super(); + } + + private DictionaryUtils getDictionaryUtilsInstance(){ + return DictionaryUtils.getDictionaryUtils(); + } + + @Autowired + public PolicyScopeDictionaryController(CommonClassDao commonClassDao){ + PolicyScopeDictionaryController.commonClassDao = commonClassDao; + } + + public void setCommonClassDao(CommonClassDao commonClassDao){ + PolicyScopeDictionaryController.commonClassDao = commonClassDao; + } + + @RequestMapping(value={"/get_GroupPolicyScopeDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getGroupPolicyScopeEntityDataByName(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getDataByEntity(response, groupPolicyScopeDatas, "name", GroupPolicyScopeList.class); + } + + @RequestMapping(value={"/get_GroupPolicyScopeData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getGroupPolicyScopeEntityData(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getData(response, groupPolicyScopeDatas, GroupPolicyScopeList.class); + } + + @RequestMapping(value={"/ps_dictionary/save_psGroupPolicyScope"}, method={RequestMethod.POST}) + public ModelAndView savePSGroupScopeDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + DictionaryUtils utils = getDictionaryUtilsInstance(); + try { + boolean fromAPI = utils.isRequestFromAPI(request); + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + JsonNode root = mapper.readTree(request.getReader()); + GroupPolicyScopeList gpdata = null; + GroupPolicyScope groupData = null; + boolean duplicateGroupFlag = false; + if (fromAPI) { + gpdata = mapper.readValue(root.get(dictionaryFields).toString(), GroupPolicyScopeList.class); + try{ + groupData = mapper.readValue(root.get(groupPolicyScopeListData1).toString(), GroupPolicyScope.class); + }catch(Exception e){ + groupData = new GroupPolicyScope(); + groupData.setResource(root.get(dictionaryFields).get("resource").toString().replace("\"", "")); + groupData.setClosedloop(root.get(dictionaryFields).get("closedloop").toString().replace("\"", "")); + groupData.setService(root.get(dictionaryFields).get("service").toString().replace("\"", "")); + groupData.setType(root.get(dictionaryFields).get("type").toString().replace("\"", "")); + LOGGER.error(e); + } + } else { + gpdata = mapper.readValue(root.get("groupPolicyScopeListData").toString(), GroupPolicyScopeList.class); + try{ + groupData = mapper.readValue(root.get(groupPolicyScopeListData1).toString(), GroupPolicyScope.class); + }catch(Exception e){ + LOGGER.error(e); + groupData = new GroupPolicyScope(); + groupData.setResource(root.get(groupPolicyScopeListData1).get("resource").toString().replace("\"", "")); + groupData.setClosedloop(root.get(groupPolicyScopeListData1).get("closedloop").toString().replace("\"", "")); + groupData.setService(root.get(groupPolicyScopeListData1).get("service").toString().replace("\"", "")); + groupData.setType(root.get(groupPolicyScopeListData1).get("type").toString().replace("\"", "")); + } + } + if(!gpdata.getGroupName().startsWith(policyScope)){ + String name = "PolicyScope_" + gpdata.getGroupName(); + gpdata.setGroupName(name); + } + ArrayList<String> valueList = new ArrayList<>(); + String resourceValue = groupData.getResource(); + String typeValue = groupData.getType(); + String serviceValue = groupData.getService(); + String closedLoopValue = groupData.getClosedloop(); + valueList.add("resource=" + resourceValue); + valueList.add("service=" + serviceValue); + valueList.add("type=" + typeValue); + valueList.add("closedLoopControlName=" + closedLoopValue); + String list = StringUtils.replaceEach(valueList.toString(), new String[]{"[", "]", " "}, new String[]{"", "", ""}); + gpdata.setGroupList(list); + + List<Object> duplicateData = commonClassDao.checkDuplicateEntry(gpdata.getGroupName(), "name", GroupPolicyScopeList.class); + if(duplicateData.isEmpty()){ + duplicateData = commonClassDao.checkDuplicateEntry(gpdata.getGroupList(), "groupList", GroupPolicyScopeList.class); + if(duplicateData.isEmpty()){ + duplicateGroupFlag = true; + } + } + boolean duplicateflag = false; + if(!duplicateData.isEmpty()){ + GroupPolicyScopeList data = (GroupPolicyScopeList) duplicateData.get(0); + if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ + gpdata.setId(data.getId()); + }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || + (request.getParameter(operation) == null && (data.getId() != gpdata.getId()))){ + duplicateflag = true; + } + } + String responseString = null; + if(!duplicateflag && !duplicateGroupFlag){ + if(gpdata.getId() == 0){ + commonClassDao.save(gpdata); + }else{ + commonClassDao.update(gpdata); + } + responseString = mapper.writeValueAsString(commonClassDao.getData(GroupPolicyScopeList.class)); + }else if(duplicateGroupFlag){ + responseString = "DuplicateGroup"; + }else{ + responseString = duplicateResponseString; + } + if(fromAPI){ + return utils.getResultForApi(responseString); + }else{ + utils.setResponseData(response, groupPolicyScopeDatas, responseString); + } + }catch (Exception e){ + utils.setErrorResponseData(response, e); + } + return null; + } + + @RequestMapping(value={"/ps_dictionary/remove_GroupPolicyScope"}, method={RequestMethod.POST}) + public void removePSGroupScopeDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.removeData(request, response, groupPolicyScopeDatas, GroupPolicyScopeList.class); + } + + @RequestMapping(value={"/get_PSClosedLoopDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getPSClosedLoopEntityDataByName(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getDataByEntity(response, psCLDatas, "name", OnapName.class); + } + + @RequestMapping(value={"/get_PSClosedLoopData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getPSClosedLoopEntityData(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getData(response, psCLDatas, PolicyScopeClosedLoop.class); + } + + @RequestMapping(value={"/ps_dictionary/save_psClosedLoop"}, method={RequestMethod.POST}) + public ModelAndView savePSClosedLoopDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + DictionaryUtils utils = getDictionaryUtilsInstance(); + try { + boolean fromAPI = utils.isRequestFromAPI(request); + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + JsonNode root = mapper.readTree(request.getReader()); + PolicyScopeClosedLoop onapData; + if(fromAPI){ + onapData = mapper.readValue(root.get(dictionaryFields).toString(), PolicyScopeClosedLoop.class); + }else{ + onapData = mapper.readValue(root.get("psClosedLoopDictionaryData").toString(), PolicyScopeClosedLoop.class); + } + + List<Object> duplicateData = commonClassDao.checkDuplicateEntry(onapData.getName(), "name", PolicyScopeClosedLoop.class); + boolean duplicateflag = false; + if(!duplicateData.isEmpty()){ + PolicyScopeClosedLoop data = (PolicyScopeClosedLoop) duplicateData.get(0); + if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ + onapData.setId(data.getId()); + }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || + (request.getParameter(operation) == null && (data.getId() != onapData.getId()))){ + duplicateflag = true; + } + } + String responseString = null; + if(!duplicateflag){ + if(onapData.getId() == 0){ + commonClassDao.save(onapData); + }else{ + commonClassDao.update(onapData); + } + responseString = mapper.writeValueAsString(commonClassDao.getData(PolicyScopeClosedLoop.class)); + }else{ + responseString = duplicateResponseString; + } + if(fromAPI){ + return utils.getResultForApi(responseString); + }else{ + utils.setResponseData(response, psCLDatas, responseString); + } + }catch (Exception e){ + utils.setErrorResponseData(response, e); + } + return null; + } + + @RequestMapping(value={"/ps_dictionary/remove_PSClosedLoop"}, method={RequestMethod.POST}) + public void removePSClosedLoopDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.removeData(request, response, psCLDatas, PolicyScopeClosedLoop.class); + } + + @RequestMapping(value={"/get_PSServiceDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getPSServiceEntityDataByName(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getDataByEntity(response, psServiceDatas, "name", PolicyScopeService.class); + } + + @RequestMapping(value={"/get_PSServiceData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getPSServiceEntityData(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getData(response, psServiceDatas, PolicyScopeService.class); + } + + @RequestMapping(value={"/ps_dictionary/save_psService"}, method={RequestMethod.POST}) + public ModelAndView savePSServiceDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + DictionaryUtils utils = getDictionaryUtilsInstance(); + try { + boolean fromAPI = utils.isRequestFromAPI(request); + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + JsonNode root = mapper.readTree(request.getReader()); + PolicyScopeService onapData; + if (fromAPI) { + onapData = mapper.readValue(root.get(dictionaryFields).toString(), PolicyScopeService.class); + } else { + onapData = mapper.readValue(root.get("psServiceDictionaryData").toString(), PolicyScopeService.class); + } + + List<Object> duplicateData = commonClassDao.checkDuplicateEntry(onapData.getName(), "name", PolicyScopeService.class); + boolean duplicateflag = false; + if(!duplicateData.isEmpty()){ + PolicyScopeService data = (PolicyScopeService) duplicateData.get(0); + if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ + onapData.setId(data.getId()); + }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || + (request.getParameter(operation) == null && (data.getId() != onapData.getId()))){ + duplicateflag = true; + } + } + String responseString = null; + if(!duplicateflag){ + if(onapData.getId() == 0){ + commonClassDao.save(onapData); + }else{ + commonClassDao.update(onapData); + } + responseString = mapper.writeValueAsString(commonClassDao.getData(PolicyScopeService.class)); + }else{ + responseString = duplicateResponseString; + } + if(fromAPI){ + return utils.getResultForApi(responseString); + }else{ + utils.setResponseData(response, psServiceDatas, responseString); + } + }catch (Exception e){ + utils.setErrorResponseData(response, e); + } + return null; + } + + @RequestMapping(value={"/ps_dictionary/remove_PSService"}, method={RequestMethod.POST}) + public void removePSServiceDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.removeData(request, response, psServiceDatas, PolicyScopeService.class); + } + + @RequestMapping(value={"/get_PSTypeDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getPSTypeEntityDataByName(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getDataByEntity(response, psTypeDatas, "name", PolicyScopeType.class); + } + + @RequestMapping(value={"/get_PSTypeData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getPSTypeEntityData(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getData(response, psTypeDatas, PolicyScopeType.class); + } + + @RequestMapping(value={"/ps_dictionary/save_psType"}, method={RequestMethod.POST}) + public ModelAndView savePSTypeDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + DictionaryUtils utils = getDictionaryUtilsInstance(); + try { + boolean fromAPI = utils.isRequestFromAPI(request); + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + JsonNode root = mapper.readTree(request.getReader()); + PolicyScopeType onapData; + if(fromAPI){ + onapData = mapper.readValue(root.get(dictionaryFields).toString(), PolicyScopeType.class); + }else{ + onapData = mapper.readValue(root.get("psTypeDictionaryData").toString(), PolicyScopeType.class); + } + + List<Object> duplicateData = commonClassDao.checkDuplicateEntry(onapData.getName(), "name", PolicyScopeType.class); + boolean duplicateflag = false; + if(!duplicateData.isEmpty()){ + PolicyScopeType data = (PolicyScopeType) duplicateData.get(0); + if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ + onapData.setId(data.getId()); + }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || + (request.getParameter(operation) == null && (data.getId() != onapData.getId()))){ + duplicateflag = true; + } + } + String responseString = null; + if(!duplicateflag){ + if(onapData.getId() == 0){ + commonClassDao.save(onapData); + }else{ + commonClassDao.update(onapData); + } + responseString = mapper.writeValueAsString(commonClassDao.getData(PolicyScopeType.class)); + }else{ + responseString = duplicateResponseString; + } + if(fromAPI){ + return utils.getResultForApi(responseString); + }else{ + utils.setResponseData(response, psTypeDatas, responseString); + } + }catch (Exception e){ + utils.setErrorResponseData(response, e); + } + return null; + } + + @RequestMapping(value={"/ps_dictionary/remove_PSType"}, method={RequestMethod.POST}) + public void removePSTypeDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.removeData(request, response, psTypeDatas, PolicyScopeType.class); + } + + @RequestMapping(value={"/get_PSResourceDataByName"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getPSResourceEntityDataByName(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getDataByEntity(response, psResourceDatas, "name", PolicyScopeResource.class); + } + + @RequestMapping(value={"/get_PSResourceData"}, method={RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getPSResourceEntityData(HttpServletResponse response){ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getData(response, psResourceDatas, PolicyScopeResource.class); + } + + @RequestMapping(value={"/ps_dictionary/save_psResource"}, method={RequestMethod.POST}) + public ModelAndView savePSResourceDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + DictionaryUtils utils = getDictionaryUtilsInstance(); + try { + boolean fromAPI = utils.isRequestFromAPI(request); + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + JsonNode root = mapper.readTree(request.getReader()); + PolicyScopeResource onapData; + if (fromAPI) { + onapData = mapper.readValue(root.get(dictionaryFields).toString(), PolicyScopeResource.class); + } else { + onapData = mapper.readValue(root.get("psResourceDictionaryData").toString(), PolicyScopeResource.class); + } + + List<Object> duplicateData = commonClassDao.checkDuplicateEntry(onapData.getName(), "name", PolicyScopeResource.class); + boolean duplicateflag = false; + if(!duplicateData.isEmpty()){ + PolicyScopeResource data = (PolicyScopeResource) duplicateData.get(0); + if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ + onapData.setId(data.getId()); + }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || + (request.getParameter(operation) == null && (data.getId() != onapData.getId()))){ + duplicateflag = true; + } + } + String responseString = null; + if(!duplicateflag){ + if(onapData.getId() == 0){ + commonClassDao.save(onapData); + }else{ + commonClassDao.update(onapData); + } + responseString = mapper.writeValueAsString(commonClassDao.getData(PolicyScopeResource.class)); + }else{ + responseString = duplicateResponseString; + } + if(fromAPI){ + return utils.getResultForApi(responseString); + }else{ + utils.setResponseData(response, psResourceDatas, responseString); + } + }catch (Exception e){ + utils.setErrorResponseData(response, e); + } + return null; + } + + @RequestMapping(value={"/ps_dictionary/remove_PSResource"}, method={RequestMethod.POST}) + public void removePSResourceDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.removeData(request, response, psResourceDatas, PolicyScopeResource.class); + } } class GroupPolicyScope{ - String resource; - String type; - String service; - String closedloop; - public String getResource() { - return resource; - } - public void setResource(String resource) { - this.resource = resource; - } - public String getType() { - return type; - } - public void setType(String type) { - this.type = type; - } - public String getService() { - return service; - } - public void setService(String service) { - this.service = service; - } - public String getClosedloop() { - return closedloop; - } - public void setClosedloop(String closedloop) { - this.closedloop = closedloop; - } + String resource; + String type; + String service; + String closedloop; + public String getResource() { + return resource; + } + public void setResource(String resource) { + this.resource = resource; + } + public String getType() { + return type; + } + public void setType(String type) { + this.type = type; + } + public String getService() { + return service; + } + public void setService(String service) { + this.service = service; + } + public String getClosedloop() { + return closedloop; + } + public void setClosedloop(String closedloop) { + this.closedloop = closedloop; + } } diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/PushPolicyController.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/PushPolicyController.java index 397904f30..227be1bdf 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/PushPolicyController.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/PushPolicyController.java @@ -55,134 +55,134 @@ import com.fasterxml.jackson.databind.ObjectMapper; @Controller public class PushPolicyController { - private static final Logger LOGGER = FlexLogger.getLogger(PushPolicyController.class); - - private static CommonClassDao commonClassDao; - private static String policyNames = "policyName"; - private static String errorMsg = "error"; - private static String operation = "operation"; - private static String messageContent = "message"; - - private static final String REGEX = "[0-9a-zA-Z._ ]*"; - - @Autowired - public PushPolicyController(CommonClassDao commonClassDao){ - PushPolicyController.commonClassDao = commonClassDao; - } - - public void setCommonClassDao(CommonClassDao commonClassDao){ - PushPolicyController.commonClassDao = commonClassDao; - } - /* - * This is an empty constructor - */ - public PushPolicyController(){} - - @RequestMapping(value="/pushPolicy", method=RequestMethod.POST) - public void pushPolicy(HttpServletRequest request, HttpServletResponse response){ - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - try { - JsonNode root = mapper.readTree(request.getInputStream()); - String policyScope = root.get("policyScope").asText(); - String filePrefix = root.get("filePrefix").asText(); - String policyName = root.get(policyNames).asText(); - String pdpGroup = root.get("pdpGroup").asText(); - String requestID = request.getHeader("X-ECOMP-RequestID"); - if(requestID==null){ - requestID = UUID.randomUUID().toString(); + private static final Logger LOGGER = FlexLogger.getLogger(PushPolicyController.class); + + private static CommonClassDao commonClassDao; + private static String policyNames = "policyName"; + private static String errorMsg = "error"; + private static String operation = "operation"; + private static String messageContent = "message"; + + private static final String REGEX = "[0-9a-zA-Z._ ]*"; + + @Autowired + public PushPolicyController(CommonClassDao commonClassDao){ + PushPolicyController.commonClassDao = commonClassDao; + } + + public void setCommonClassDao(CommonClassDao commonClassDao){ + PushPolicyController.commonClassDao = commonClassDao; + } + /* + * This is an empty constructor + */ + public PushPolicyController(){} + + @RequestMapping(value="/pushPolicy", method=RequestMethod.POST) + public void pushPolicy(HttpServletRequest request, HttpServletResponse response){ + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + try { + JsonNode root = mapper.readTree(request.getInputStream()); + String policyScope = root.get("policyScope").asText(); + String filePrefix = root.get("filePrefix").asText(); + String policyName = root.get(policyNames).asText(); + String pdpGroup = root.get("pdpGroup").asText(); + String requestID = request.getHeader("X-ECOMP-RequestID"); + if(requestID==null){ + requestID = UUID.randomUUID().toString(); LOGGER.info("No request ID provided, sending generated ID: " + requestID); - } - LOGGER.info("Push policy Request to get the selectedPolicy : " + root.asText()); - String policyVersionName = policyScope.replace(".", File.separator) + File.separator - + filePrefix + policyName; - List<?> policyVersionObject = commonClassDao.getDataById(PolicyVersion.class, policyNames, policyVersionName); - if(policyVersionObject!=null){ - PolicyVersion policyVersion = (PolicyVersion) policyVersionObject.get(0); - String policyID = policyVersionName.replace(File.separator, "."); // This is before adding version. - policyVersionName += "." + policyVersion.getActiveVersion() + ".xml"; - addPolicyToGroup(policyScope, policyID, policyVersionName.replace(File.separator, "."), pdpGroup, response); - }else{ - String message = "Unknown Policy '" + policyName + "'"; - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + " " + message); - response.addHeader(errorMsg, "unknownPolicy"); - response.addHeader(operation, "push"); - response.addHeader(messageContent, message); - response.setStatus(HttpServletResponse.SC_NOT_FOUND); - return; - } - } catch (NullPointerException | IOException e) { - LOGGER.error(e); - response.setStatus(HttpServletResponse.SC_NOT_FOUND); - response.addHeader(errorMsg, "unknown"); - response.addHeader(operation, "push"); - return; - } - } + } + LOGGER.info("Push policy Request to get the selectedPolicy : " + root.asText()); + String policyVersionName = policyScope.replace(".", File.separator) + File.separator + + filePrefix + policyName; + List<?> policyVersionObject = commonClassDao.getDataById(PolicyVersion.class, policyNames, policyVersionName); + if(policyVersionObject!=null){ + PolicyVersion policyVersion = (PolicyVersion) policyVersionObject.get(0); + String policyID = policyVersionName.replace(File.separator, "."); // This is before adding version. + policyVersionName += "." + policyVersion.getActiveVersion() + ".xml"; + addPolicyToGroup(policyScope, policyID, policyVersionName.replace(File.separator, "."), pdpGroup, response); + }else{ + String message = "Unknown Policy '" + policyName + "'"; + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + " " + message); + response.addHeader(errorMsg, "unknownPolicy"); + response.addHeader(operation, "push"); + response.addHeader(messageContent, message); + response.setStatus(HttpServletResponse.SC_NOT_FOUND); + return; + } + } catch (NullPointerException | IOException e) { + LOGGER.error(e); + response.setStatus(HttpServletResponse.SC_NOT_FOUND); + response.addHeader(errorMsg, "unknown"); + response.addHeader(operation, "push"); + return; + } + } - private void addPolicyToGroup(String policyScope, String policyID, String policyName, String pdpGroup, HttpServletResponse response) { - StdPDPGroup selectedPDPGroup = null; - StdPDPPolicy selectedPolicy = null; - //Get the selected PDP Group to push the policy - try { - selectedPDPGroup = (StdPDPGroup) XACMLPapServlet.getPAPEngine().getGroup(pdpGroup); - } catch (PAPException e1) { - PolicyLogger.error(e1); - } - if(selectedPDPGroup==null){ - String message = "Unknown groupId '" + selectedPDPGroup + "'"; - if(!message.matches(REGEX) ){ - message = "Unknown groupId"; - } - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + " " + message); - response.addHeader(errorMsg, "unknownGroupId"); - response.addHeader(operation, "push"); - response.addHeader(messageContent, message); - response.setStatus(HttpServletResponse.SC_NOT_FOUND); - return; - } - //Get PolicyEntity from DB; - EntityManager em = XACMLPapServlet.getEmf().createEntityManager(); - Query createPolicyQuery = em.createQuery("SELECT p FROM PolicyEntity p WHERE p.scope=:scope AND p.policyName=:policyName"); - createPolicyQuery.setParameter("scope", policyScope); - createPolicyQuery.setParameter(policyNames, policyName.substring(policyScope.length()+1)); - List<?> createPolicyQueryList = createPolicyQuery.getResultList(); - PolicyEntity policyEntity = null; - if(!createPolicyQueryList.isEmpty()){ - policyEntity = (PolicyEntity)createPolicyQueryList.get(0); - }else{ - PolicyLogger.error("Somehow, more than one policy with the same scope, name, and deleted status were found in the database"); - String message = "Unknown Policy '" + policyName + "'"; - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + " " + message); - response.addHeader(errorMsg, "unknownPolicy"); - response.addHeader(operation, "push"); - response.addHeader(messageContent, message); - response.setStatus(HttpServletResponse.SC_NOT_FOUND); - return; - } - File temp = new File(policyName); - try (BufferedWriter bw = new BufferedWriter(new FileWriter(temp))){ - bw.write(policyEntity.getPolicyData()); - URI selectedURI = temp.toURI(); - // Create the policy Object - selectedPolicy = new StdPDPPolicy(policyName, true, policyID, selectedURI); - } catch (IOException e) { - LOGGER.error("Unable to get policy '" + policyName + "': "+ e.getMessage(),e); - } - try { - new ObjectOutputStream(response.getOutputStream()).writeObject(selectedPolicy); - } catch (IOException e) { - LOGGER.error(e); - response.addHeader(errorMsg, "policyCopyError"); - response.addHeader(messageContent, e.getMessage()); - response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); - return; - } - response.addHeader("Content-Type","application/json"); - response.setStatus(HttpServletResponse.SC_ACCEPTED); - response.addHeader(operation, "push"); - response.addHeader("policyId", policyName); - return; - // TODO : Check point to push policies within PAP. - } + private void addPolicyToGroup(String policyScope, String policyID, String policyName, String pdpGroup, HttpServletResponse response) { + StdPDPGroup selectedPDPGroup = null; + StdPDPPolicy selectedPolicy = null; + //Get the selected PDP Group to push the policy + try { + selectedPDPGroup = (StdPDPGroup) XACMLPapServlet.getPAPEngine().getGroup(pdpGroup); + } catch (PAPException e1) { + PolicyLogger.error(e1); + } + if(selectedPDPGroup==null){ + String message = "Unknown groupId '" + selectedPDPGroup + "'"; + if(!message.matches(REGEX) ){ + message = "Unknown groupId"; + } + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + " " + message); + response.addHeader(errorMsg, "unknownGroupId"); + response.addHeader(operation, "push"); + response.addHeader(messageContent, message); + response.setStatus(HttpServletResponse.SC_NOT_FOUND); + return; + } + //Get PolicyEntity from DB; + EntityManager em = XACMLPapServlet.getEmf().createEntityManager(); + Query createPolicyQuery = em.createQuery("SELECT p FROM PolicyEntity p WHERE p.scope=:scope AND p.policyName=:policyName"); + createPolicyQuery.setParameter("scope", policyScope); + createPolicyQuery.setParameter(policyNames, policyName.substring(policyScope.length()+1)); + List<?> createPolicyQueryList = createPolicyQuery.getResultList(); + PolicyEntity policyEntity = null; + if(!createPolicyQueryList.isEmpty()){ + policyEntity = (PolicyEntity)createPolicyQueryList.get(0); + }else{ + PolicyLogger.error("Somehow, more than one policy with the same scope, name, and deleted status were found in the database"); + String message = "Unknown Policy '" + policyName + "'"; + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + " " + message); + response.addHeader(errorMsg, "unknownPolicy"); + response.addHeader(operation, "push"); + response.addHeader(messageContent, message); + response.setStatus(HttpServletResponse.SC_NOT_FOUND); + return; + } + File temp = new File(policyName); + try (BufferedWriter bw = new BufferedWriter(new FileWriter(temp))){ + bw.write(policyEntity.getPolicyData()); + URI selectedURI = temp.toURI(); + // Create the policy Object + selectedPolicy = new StdPDPPolicy(policyName, true, policyID, selectedURI); + } catch (IOException e) { + LOGGER.error("Unable to get policy '" + policyName + "': "+ e.getMessage(),e); + } + try { + new ObjectOutputStream(response.getOutputStream()).writeObject(selectedPolicy); + } catch (IOException e) { + LOGGER.error(e); + response.addHeader(errorMsg, "policyCopyError"); + response.addHeader(messageContent, e.getMessage()); + response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); + return; + } + response.addHeader("Content-Type","application/json"); + response.setStatus(HttpServletResponse.SC_ACCEPTED); + response.addHeader(operation, "push"); + response.addHeader("policyId", policyName); + return; + // TODO : Check point to push policies within PAP. + } } diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/SafePolicyController.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/SafePolicyController.java index 209ba4f45..fe49e3478 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/SafePolicyController.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/SafePolicyController.java @@ -46,165 +46,165 @@ import com.fasterxml.jackson.databind.ObjectMapper; @Controller public class SafePolicyController { - private static CommonClassDao commonClassDao; - private static String duplicateResponseString = "Duplicate"; - private static String operation = "operation"; - private static String riskTypeDatas = "riskTypeDictionaryDatas"; - private static String safePolicyWarningDatas = "safePolicyWarningDatas"; - - @Autowired - public SafePolicyController(CommonClassDao commonClassDao){ - SafePolicyController.commonClassDao = commonClassDao; - } - - public void setCommonClassDao(CommonClassDao commonClassDao){ - SafePolicyController.commonClassDao = commonClassDao; - } - - public SafePolicyController(){ - super(); - } - - private DictionaryUtils getDictionaryUtilsInstance(){ - return DictionaryUtils.getDictionaryUtils(); - } - - @RequestMapping(value = { "/get_RiskTypeDataByName" }, method = {RequestMethod.GET }, produces = MediaType.APPLICATION_JSON_VALUE) - public void getRiskTypeDictionaryByNameEntityData(HttpServletResponse response) { - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getDataByEntity(response, riskTypeDatas, "name", RiskType.class); - } - - @RequestMapping(value = { "/get_RiskTypeData" }, method = {RequestMethod.GET }, produces = MediaType.APPLICATION_JSON_VALUE) - public void getRiskTypeDictionaryEntityData(HttpServletResponse response) { - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getData(response, riskTypeDatas, RiskType.class); - } - - @RequestMapping(value = { "/sp_dictionary/save_riskType" }, method = {RequestMethod.POST }) - public ModelAndView saveRiskTypeDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { - DictionaryUtils utils = getDictionaryUtilsInstance(); - try { - boolean fromAPI = utils.isRequestFromAPI(request); - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - JsonNode root = mapper.readTree(request.getReader()); + private static CommonClassDao commonClassDao; + private static String duplicateResponseString = "Duplicate"; + private static String operation = "operation"; + private static String riskTypeDatas = "riskTypeDictionaryDatas"; + private static String safePolicyWarningDatas = "safePolicyWarningDatas"; + + @Autowired + public SafePolicyController(CommonClassDao commonClassDao){ + SafePolicyController.commonClassDao = commonClassDao; + } + + public void setCommonClassDao(CommonClassDao commonClassDao){ + SafePolicyController.commonClassDao = commonClassDao; + } + + public SafePolicyController(){ + super(); + } + + private DictionaryUtils getDictionaryUtilsInstance(){ + return DictionaryUtils.getDictionaryUtils(); + } + + @RequestMapping(value = { "/get_RiskTypeDataByName" }, method = {RequestMethod.GET }, produces = MediaType.APPLICATION_JSON_VALUE) + public void getRiskTypeDictionaryByNameEntityData(HttpServletResponse response) { + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getDataByEntity(response, riskTypeDatas, "name", RiskType.class); + } + + @RequestMapping(value = { "/get_RiskTypeData" }, method = {RequestMethod.GET }, produces = MediaType.APPLICATION_JSON_VALUE) + public void getRiskTypeDictionaryEntityData(HttpServletResponse response) { + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getData(response, riskTypeDatas, RiskType.class); + } + + @RequestMapping(value = { "/sp_dictionary/save_riskType" }, method = {RequestMethod.POST }) + public ModelAndView saveRiskTypeDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { + DictionaryUtils utils = getDictionaryUtilsInstance(); + try { + boolean fromAPI = utils.isRequestFromAPI(request); + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + JsonNode root = mapper.readTree(request.getReader()); RiskType riskTypeData; String userId = null; if (fromAPI) { riskTypeData = mapper.readValue(root.get("dictionaryFields").toString(), RiskType.class); userId = "API"; } else { - riskTypeData = mapper.readValue(root.get("riskTypeDictionaryData").toString(), RiskType.class); - userId = root.get("userid").textValue(); + riskTypeData = mapper.readValue(root.get("riskTypeDictionaryData").toString(), RiskType.class); + userId = root.get("userid").textValue(); } UserInfo userInfo = utils.getUserInfo(userId); List<Object> duplicateData = commonClassDao.checkDuplicateEntry(riskTypeData.getRiskName(), "name", RiskType.class); - boolean duplicateflag = false; + boolean duplicateflag = false; if(!duplicateData.isEmpty()){ - RiskType data = (RiskType) duplicateData.get(0); - if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ - riskTypeData.setId(data.getId()); - }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || - (request.getParameter(operation) == null && (data.getId() != riskTypeData.getId()))){ - duplicateflag = true; - } - } + RiskType data = (RiskType) duplicateData.get(0); + if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ + riskTypeData.setId(data.getId()); + }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || + (request.getParameter(operation) == null && (data.getId() != riskTypeData.getId()))){ + duplicateflag = true; + } + } String responseString = null; - if(!duplicateflag){ - riskTypeData.setUserModifiedBy(userInfo); - if(riskTypeData.getId() == 0){ - riskTypeData.setUserCreatedBy(userInfo); - commonClassDao.save(riskTypeData); - }else{ - riskTypeData.setModifiedDate(new Date()); - commonClassDao.update(riskTypeData); - } - responseString = mapper.writeValueAsString(commonClassDao.getData(RiskType.class)); - }else{ - responseString = duplicateResponseString; - } - if(fromAPI){ - return utils.getResultForApi(responseString); - }else{ - utils.setResponseData(response, riskTypeDatas, responseString); - } + if(!duplicateflag){ + riskTypeData.setUserModifiedBy(userInfo); + if(riskTypeData.getId() == 0){ + riskTypeData.setUserCreatedBy(userInfo); + commonClassDao.save(riskTypeData); + }else{ + riskTypeData.setModifiedDate(new Date()); + commonClassDao.update(riskTypeData); + } + responseString = mapper.writeValueAsString(commonClassDao.getData(RiskType.class)); + }else{ + responseString = duplicateResponseString; + } + if(fromAPI){ + return utils.getResultForApi(responseString); + }else{ + utils.setResponseData(response, riskTypeDatas, responseString); + } }catch (Exception e) { - utils.setErrorResponseData(response, e); - } - return null; - } - - @RequestMapping(value = { "/sp_dictionary/remove_riskType" }, method = {RequestMethod.POST }) - public void removeRiskTypeDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.removeData(request, response, riskTypeDatas, RiskType.class); - } - - @RequestMapping(value = { "/get_SafePolicyWarningDataByName" }, method = {RequestMethod.GET }, produces = MediaType.APPLICATION_JSON_VALUE) - public void getSafePolicyWarningEntityDataByName(HttpServletResponse response) { - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getDataByEntity(response, safePolicyWarningDatas, "name", SafePolicyWarning.class); - } - - @RequestMapping(value = { "/get_SafePolicyWarningData" }, method = {RequestMethod.GET }, produces = MediaType.APPLICATION_JSON_VALUE) - public void getSafePolicyWarningeEntityData(HttpServletResponse response) { - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.getData(response, safePolicyWarningDatas, SafePolicyWarning.class); - } - - @RequestMapping(value = { "/sp_dictionary/save_safePolicyWarning" }, method = {RequestMethod.POST }) - public ModelAndView saveSafePolicyWarningDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { - DictionaryUtils utils = getDictionaryUtilsInstance(); - try { - boolean fromAPI = utils.isRequestFromAPI(request); - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - JsonNode root = mapper.readTree(request.getReader()); - SafePolicyWarning safePolicyWarning; + utils.setErrorResponseData(response, e); + } + return null; + } + + @RequestMapping(value = { "/sp_dictionary/remove_riskType" }, method = {RequestMethod.POST }) + public void removeRiskTypeDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.removeData(request, response, riskTypeDatas, RiskType.class); + } + + @RequestMapping(value = { "/get_SafePolicyWarningDataByName" }, method = {RequestMethod.GET }, produces = MediaType.APPLICATION_JSON_VALUE) + public void getSafePolicyWarningEntityDataByName(HttpServletResponse response) { + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getDataByEntity(response, safePolicyWarningDatas, "name", SafePolicyWarning.class); + } + + @RequestMapping(value = { "/get_SafePolicyWarningData" }, method = {RequestMethod.GET }, produces = MediaType.APPLICATION_JSON_VALUE) + public void getSafePolicyWarningeEntityData(HttpServletResponse response) { + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.getData(response, safePolicyWarningDatas, SafePolicyWarning.class); + } + + @RequestMapping(value = { "/sp_dictionary/save_safePolicyWarning" }, method = {RequestMethod.POST }) + public ModelAndView saveSafePolicyWarningDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { + DictionaryUtils utils = getDictionaryUtilsInstance(); + try { + boolean fromAPI = utils.isRequestFromAPI(request); + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + JsonNode root = mapper.readTree(request.getReader()); + SafePolicyWarning safePolicyWarning; if (fromAPI) { safePolicyWarning = mapper.readValue(root.get("dictionaryFields").toString(), SafePolicyWarning.class); } else { - safePolicyWarning = mapper.readValue(root.get("safePolicyWarningData").toString(), SafePolicyWarning.class); + safePolicyWarning = mapper.readValue(root.get("safePolicyWarningData").toString(), SafePolicyWarning.class); } List<Object> duplicateData = commonClassDao.checkDuplicateEntry(safePolicyWarning.getName(), "name", SafePolicyWarning.class); - boolean duplicateflag = false; - if(!duplicateData.isEmpty()){ - SafePolicyWarning data = (SafePolicyWarning) duplicateData.get(0); - if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ - safePolicyWarning.setId(data.getId()); - }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || - (request.getParameter(operation) == null && (data.getId() != safePolicyWarning.getId()))){ - duplicateflag = true; - } - } - String responseString = null; - if(!duplicateflag){ - if(safePolicyWarning.getId() == 0){ - commonClassDao.save(safePolicyWarning); - }else{ - commonClassDao.update(safePolicyWarning); - } - responseString = mapper.writeValueAsString(commonClassDao.getData(SafePolicyWarning.class)); - }else{ - responseString = duplicateResponseString; - } - if(fromAPI){ - return utils.getResultForApi(responseString); - }else{ - utils.setResponseData(response, safePolicyWarningDatas, responseString); - } + boolean duplicateflag = false; + if(!duplicateData.isEmpty()){ + SafePolicyWarning data = (SafePolicyWarning) duplicateData.get(0); + if(request.getParameter(operation) != null && "update".equals(request.getParameter(operation))){ + safePolicyWarning.setId(data.getId()); + }else if((request.getParameter(operation) != null && !"update".equals(request.getParameter(operation))) || + (request.getParameter(operation) == null && (data.getId() != safePolicyWarning.getId()))){ + duplicateflag = true; + } + } + String responseString = null; + if(!duplicateflag){ + if(safePolicyWarning.getId() == 0){ + commonClassDao.save(safePolicyWarning); + }else{ + commonClassDao.update(safePolicyWarning); + } + responseString = mapper.writeValueAsString(commonClassDao.getData(SafePolicyWarning.class)); + }else{ + responseString = duplicateResponseString; + } + if(fromAPI){ + return utils.getResultForApi(responseString); + }else{ + utils.setResponseData(response, safePolicyWarningDatas, responseString); + } }catch (Exception e) { - utils.setErrorResponseData(response, e); - } - return null; - } - - @RequestMapping(value = { "/sp_dictionary/remove_SafePolicyWarning" }, method = {RequestMethod.POST }) - public void removeSafePolicyWarningDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { - DictionaryUtils utils = getDictionaryUtilsInstance(); - utils.removeData(request, response, safePolicyWarningDatas, SafePolicyWarning.class); - } + utils.setErrorResponseData(response, e); + } + return null; + } + + @RequestMapping(value = { "/sp_dictionary/remove_SafePolicyWarning" }, method = {RequestMethod.POST }) + public void removeSafePolicyWarningDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { + DictionaryUtils utils = getDictionaryUtilsInstance(); + utils.removeData(request, response, safePolicyWarningDatas, SafePolicyWarning.class); + } } |