diff options
author | ITSERVICES\rb7147 <rb7147@att.com> | 2017-04-25 11:46:00 -0400 |
---|---|---|
committer | ITSERVICES\rb7147 <rb7147@att.com> | 2017-05-03 09:58:17 -0400 |
commit | e0addf5b588a1244f9679becd90999dfcb4c3a94 (patch) | |
tree | 1212772d6366730266ff0e093c874b07aa716c29 /ecomp-sdk-app/src/main/java/org/openecomp/policy/components | |
parent | 39fb0f30472777e4b60d6a7ac8aa4eb9773961ff (diff) |
Policy 1707 commit to LF
Change-Id: Ibe6f01d92f9a434c040abb05d5386e89d675ae65
Signed-off-by: ITSERVICES\rb7147 <rb7147@att.com>
Diffstat (limited to 'ecomp-sdk-app/src/main/java/org/openecomp/policy/components')
3 files changed, 0 insertions, 1634 deletions
diff --git a/ecomp-sdk-app/src/main/java/org/openecomp/policy/components/ElasticSearchComponent.java b/ecomp-sdk-app/src/main/java/org/openecomp/policy/components/ElasticSearchComponent.java deleted file mode 100644 index 35a4d14b8..000000000 --- a/ecomp-sdk-app/src/main/java/org/openecomp/policy/components/ElasticSearchComponent.java +++ /dev/null @@ -1,426 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ECOMP Policy Engine - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.policy.components; - - -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.regex.Pattern; - -import org.openecomp.policy.dao.PolicyVersionDao; -import org.openecomp.policy.elk.client.ElkConnector; -import org.openecomp.policy.elk.client.ElkConnector.PolicyIndexType; -import org.openecomp.policy.rest.dao.DescriptiveScopeDao; -import org.openecomp.policy.rest.jpa.DescriptiveScope; -import org.openecomp.policy.rest.jpa.PolicyVersion; -import org.openecomp.policy.elk.client.Pair; -import org.openecomp.policy.elk.client.PolicyLocator; -import org.springframework.beans.factory.annotation.Autowired; - -import org.openecomp.policy.common.logging.flexlogger.FlexLogger; -import org.openecomp.policy.common.logging.flexlogger.Logger; - - -public class ElasticSearchComponent { - private static final Logger logger = FlexLogger.getLogger(ElasticSearchComponent.class); - - - private static PolicyVersionDao policyVersionDao; - private static DescriptiveScopeDao descriptiveScopeDao; - - @Autowired - public ElasticSearchComponent(PolicyVersionDao policyVersionDao){ - ElasticSearchComponent.policyVersionDao = policyVersionDao; - } - - @Autowired - public ElasticSearchComponent(DescriptiveScopeDao descriptiveScopeDao){ - ElasticSearchComponent.descriptiveScopeDao = descriptiveScopeDao; - } - - - private volatile static HashMap<Path, String> filteredPolicies = new HashMap<Path, String>(); - - public static final HashMap<String, String> name2jsonPath = new HashMap<String, String>() { - private static final long serialVersionUID = 1L; - { - put(CLFAULT_UIFIELD_D2_SERVICES_TRINITY, CLFAULT_UIJSON_D2_SERVICES_TRINITY); - put(CLFAULT_UIFIELD_D2_SERVICES_VUSP, CLFAULT_UIJSON_D2_SERVICES_VUSP); - put(CLFAULT_UIFIELD_D2_SERVICES_MCR, CLFAULT_UIJSON_D2_SERVICES_MCR); - put(CLFAULT_UIFIELD_D2_SERVICES_GAMMA, CLFAULT_UIJSON_D2_SERVICES_GAMMA); - put(CLFAULT_UIFIELD_D2_SERVICES_VDNS, CLFAULT_UIJSON_D2_SERVICES_VDNS); - - put(CLFAULT_UIFIELD_EMAIL_ADDRESS, CLFAULT_UIJSON_EMAIL_ADDRESS); - put(CLFAULT_UIFIELD_TRIGGER_SIGNATURE, CLFAULT_UIJSON_TRIGGER_SIGNATURE); - put(CLFAULT_UIFIELD_VERIFICATION_SIGNATURE, CLFAULT_UIJSON_VERIFICATION_SIGNATURE); - put(CLFAULT_UIFIELD_CONNECT_ALL_TRAPS, CLFAULT_UIJSON_CONNECT_ALL_TRAPS); - put(CLFAULT_UIFIELD_CONNECT_ALL_FAULTS, CLFAULT_UIJSON_CONNECT_ALL_FAULTS); - - put(CLFAULT_UIFIELD_POLICY_STATUS_INACTIVE, CLFAULT_UIJSON_POLICY_STATUS_ACTIVE); - put(CLFAULT_UIFIELD_POLICY_STATUS_ACTIVE, CLFAULT_UIJSON_POLICY_STATUS_INACTIVE); - - put(CLPM_UIFIELD_ONSET_MESSAGE, CLPM_UIJSON_ONSET_MESSAGE); - put(CLPM_UIFIELD_POLICY_NAME, CLPM_UIJSON_POLICY_NAME); - put(CLPM_UIFIELD_ABATEMENT_MESSAGE, CLPM_UIJSON_ABATEMENT_MESSAGE); - put(CLPM_UIFIELD_GEOLINK, CLPM_UIJSON_GEOLINK); - }}; - - //For AND and OR logical connector AND=0 and OR=1 - private static int connectorSelected; - - public static final String CLFAULT_UIFIELD_D2_SERVICES_TRINITY = "Hosted Voice (Trinity)"; - public static final String CLFAULT_UIJSON_D2_SERVICES_TRINITY = "trinity"; - - public static final String CLFAULT_UIFIELD_D2_SERVICES_VUSP = "vUSP"; - public static final String CLFAULT_UIJSON_D2_SERVICES_VUSP = "vUSP"; - - public static final String CLFAULT_UIFIELD_D2_SERVICES_MCR = "MCR"; - public static final String CLFAULT_UIJSON_D2_SERVICES_MCR = "mcr"; - - public static final String CLFAULT_UIFIELD_D2_SERVICES_GAMMA = "Gamma"; - public static final String CLFAULT_UIJSON_D2_SERVICES_GAMMA = "gama"; - - public static final String CLFAULT_UIFIELD_D2_SERVICES_VDNS = "vDNS"; - public static final String CLFAULT_UIJSON_D2_SERVICES_VDNS = "vDNS"; - - public static final String CLFAULT_UIFIELD_EMAIL_ADDRESS = "Email Address"; - public static final String CLFAULT_UIJSON_EMAIL_ADDRESS = "emailAddress"; - - public static final String CLFAULT_UIFIELD_TRIGGER_SIGNATURE = "Trigger Signature"; - public static final String CLFAULT_UIJSON_TRIGGER_SIGNATURE = "triggerSignaturesUsedForUI.signatures"; - - public static final String CLFAULT_UIFIELD_VERIFICATION_SIGNATURE = "Verification Signature"; - public static final String CLFAULT_UIJSON_VERIFICATION_SIGNATURE = "verificationSignaturesUsedForUI.signatures"; - - public static final String CLFAULT_UIFIELD_CONNECT_ALL_TRAPS = "Connect All Traps"; - public static final String CLFAULT_UIJSON_CONNECT_ALL_TRAPS = "triggerSignaturesUsedForUI.connectSignatures"; - - public static final String CLFAULT_UIFIELD_CONNECT_ALL_FAULTS = "Connect All Faults"; - public static final String CLFAULT_UIJSON_CONNECT_ALL_FAULTS = "verificationSignaturesUsedForUI.connectSignatures"; - - public static final String CLFAULT_UIFIELD_POLICY_STATUS_ACTIVE = "Active"; - public static final String CLFAULT_UIJSON_POLICY_STATUS_ACTIVE = "ACTIVE"; - - public static final String CLFAULT_UIFIELD_POLICY_STATUS_INACTIVE = "InActive"; - public static final String CLFAULT_UIJSON_POLICY_STATUS_INACTIVE = "INACTIVE"; - - - public static final String CLPM_UIFIELD_ONSET_MESSAGE = "Onset Message"; - public static final String CLPM_UIJSON_ONSET_MESSAGE = "attributes.OnsetMessage"; - - public static final String CLPM_UIFIELD_POLICY_NAME = "PolicyName"; - public static final String CLPM_UIJSON_POLICY_NAME = "attributes.PolicyName"; - - public static final String CLPM_UIFIELD_ABATEMENT_MESSAGE = "Abatement Message"; - public static final String CLPM_UIJSON_ABATEMENT_MESSAGE = "attributes.AbatementMessage"; - - public static final String CLPM_UIFIELD_GEOLINK = "Geo Link"; - public static final String CLPM_UIJSON_GEOLINK = "geoLink"; - - public static void search(String value){ - String policyType = "all";//(String) self.searchPolicyType.getValue() - - ArrayList<Pair<ArrayList<String>,ArrayList<String>>> filter_s = new ArrayList<Pair<ArrayList<String>,ArrayList<String>>>(); - - String searchText = "";//self.searchTextBox.getValue() - if (searchText == null || searchText.isEmpty()) { - if (policyType == null || policyType.isEmpty() && - !policyType.equals(ElkConnector.PolicyIndexType.closedloop.toString())) { - if (logger.isDebugEnabled()) { - logger.debug("Clearing search filters, nothing to search and not closed loop."); - } - return; - } - } else { - searchText = searchText.trim(); - //Descriptive Scope. - /* - When a item is selected in the "descriptiveScope" comboBox, the name of the item - is added to the Search-Text Box with the prefix "Descriptive-Scope" - User needs to press the "Search" button to perform the search. - */ - if(searchText.contains("Descriptive-Scope=")) - { - if (logger.isDebugEnabled()) { - logger.debug("Inside the Descriptive Scope"); - } - /* - First item is always String "Descriptive-Scope" before the "=", - So taking the second item of "split using =" - */ - String[] dsName= searchText.split("=",2); - /* - Trying to find the search String by traversing different items from the dictionary by Scope-Name - Once when the the "scope-name" is found, we get the search string from dictionary. - */ - for (int i = 0; i < descriptiveScopeDao.getDescriptiveScope().size(); i++) { - DescriptiveScope dsSearch=descriptiveScopeDao.getDescriptiveScope().get(i); - if(dsSearch.getScopeName().equals(dsName[1])){ - searchText=dsSearch.getSearch(); - if (logger.isDebugEnabled()) { - logger.debug("DescriptiveScope Search String is " +searchText ); - } - } - } - } - - if(searchText.contains(":")) - { - String connector="&"; - - if(searchText.contains("&")) - { - connector="&"; - connectorSelected=0; - } - else if(searchText.contains("|")) - { - connector=Pattern.quote("|"); - connectorSelected=1; - } - for (String retval: searchText.split(connector)){ - - int index= retval.indexOf(':'); - String filterKey=null; - String filterValue=null; - - filterKey=retval.substring(0,index); - filterValue= retval.substring(index+1); - - String clSearchBoxFilter=filterKey; - - ArrayList<String> clSearchBoxFilterField_s = new ArrayList<String>(); - - clSearchBoxFilterField_s.add("Policy.Body." + ElkConnector.PolicyType.Config_Fault.name() + "_Body." + clSearchBoxFilter); - clSearchBoxFilterField_s.add("Policy.Body." + ElkConnector.PolicyType.Config_PM.name() + "_Body." + clSearchBoxFilter); - clSearchBoxFilterField_s.add("Policy.Body." + ElkConnector.PolicyType.Config_FW.name() + "_Body." + clSearchBoxFilter); - clSearchBoxFilterField_s.add("Policy.Body." + ElkConnector.PolicyType.Config_MS.name() + "_Body." + clSearchBoxFilter); - - - ArrayList<String> clSearchBoxFilterValue_s = new ArrayList<String>(); - clSearchBoxFilterValue_s.add(filterValue); - - filter_s.add(new Pair<ArrayList<String>,ArrayList<String>>(clSearchBoxFilterField_s, clSearchBoxFilterValue_s)); - } - } - } - - if (policyType != null && !policyType.isEmpty() && - policyType.equals(ElkConnector.PolicyIndexType.closedloop.toString())) { - - /* closed loop policy type */ - - String clPolicyType = "";//(String) self.cbSearchCLPolicyType.getValue() - if (clPolicyType != null && !clPolicyType.isEmpty()) { - ArrayList<String> clPolicyTypeField_s = new ArrayList<String>(); - clPolicyTypeField_s.add("Policy.PolicyType"); - - ArrayList<String> clPolicyTypeValue_s = new ArrayList<String>(); - clPolicyTypeValue_s.add(clPolicyType); - - filter_s.add(new Pair<ArrayList<String>,ArrayList<String>>(clPolicyTypeField_s, clPolicyTypeValue_s)); - } - - String clEcompName = "";//(String) self.cbSearchCLEcompName.getValue() - if (clEcompName != null && !clEcompName.isEmpty()) { - clSearchBody(clPolicyType, "ecompname", clEcompName, filter_s); - } - - String clD2Services = "";//(String) self.cbSearchCLD2Services.getValue() - if (clD2Services != null && !clD2Services.isEmpty()) { - switch (clD2Services) { - case CLFAULT_UIFIELD_D2_SERVICES_TRINITY: - case CLFAULT_UIFIELD_D2_SERVICES_VUSP: - case CLFAULT_UIFIELD_D2_SERVICES_MCR: - case CLFAULT_UIFIELD_D2_SERVICES_GAMMA: - case CLFAULT_UIFIELD_D2_SERVICES_VDNS: - clSearchBody(clPolicyType, name2jsonPath.get(clD2Services), "true", filter_s); - break; - default: - if (logger.isWarnEnabled()) - logger.warn("Unexpected D2 Service: " + clD2Services); - break; - } - } - - String clFaultAction = "";//(String) self.cbSearchCLFaultAction.getValue() - if (clFaultAction != null && !clFaultAction.isEmpty()) { - if (clPolicyType == null || clPolicyType.equals(ElkConnector.PolicyType.Config_Fault.name())) { - clSearchFilter(ElkConnector.PolicyType.Config_Fault.name(), "actions", clFaultAction, filter_s); - } - } - - String clFaultStatus = "";//(String) self.cbSearchCLFaultStatus.getValue() - if (clFaultStatus != null && !clFaultStatus.isEmpty()) { - if (clPolicyType == null || clPolicyType.equals(ElkConnector.PolicyType.Config_Fault.name())) { - clSearchFilter(ElkConnector.PolicyType.Config_Fault.name(), "closedLoopPolicyStatus", clFaultStatus, filter_s); - } - } - - String clFaultVnfTypes = "";//(String) self.cbSearchCLFaultVnfTypes.getValue() - if (clFaultVnfTypes != null && !clFaultVnfTypes.isEmpty()) { - if (clPolicyType == null || clPolicyType.equals(ElkConnector.PolicyType.Config_Fault.name())) { - clSearchFilter(ElkConnector.PolicyType.Config_Fault.name(), "vnfType", clFaultVnfTypes, filter_s); - } - } - - String clPMServiceType = "";//(String) self.cbSearchCLPMServiceType.getValue() - if (clPMServiceType != null && !clPMServiceType.isEmpty()) { - if (clPolicyType == null || clPolicyType.equals(ElkConnector.PolicyType.Config_PM.name())) { - clSearchFilter(ElkConnector.PolicyType.Config_PM.name(), "serviceTypePolicyName", clPMServiceType, filter_s); - } - } - - String clSearchBoxFilter = "";//(String) self.cbSearchCLTextFilter.getValue() - if (clSearchBoxFilter != null && !clSearchBoxFilter.isEmpty() && - searchText != null && !searchText.isEmpty()) { - - if (name2jsonPath.containsKey(clSearchBoxFilter)) { - clSearchBoxFilter = name2jsonPath.get(clSearchBoxFilter); - } - - ArrayList<String> clSearchBoxFilterField_s = new ArrayList<String>(); - if (clPolicyType == null || clPolicyType.isEmpty()) { - clSearchBoxFilterField_s.add("Policy.Body." + ElkConnector.PolicyType.Config_Fault.name() + "_Body." + clSearchBoxFilter); - clSearchBoxFilterField_s.add("Policy.Body." + ElkConnector.PolicyType.Config_PM.name() + "_Body." + clSearchBoxFilter); - } else { - clSearchBoxFilterField_s.add("Policy.Body." + clPolicyType + "_Body." + clSearchBoxFilter); - } - - ArrayList<String> clSearchBoxFilterValue_s = new ArrayList<String>(); - clSearchBoxFilterValue_s.add(searchText); - - filter_s.add(new Pair<ArrayList<String>,ArrayList<String>>(clSearchBoxFilterField_s, clSearchBoxFilterValue_s)); - - // deactivate search all fields in case a searchbox filter is provided - searchText = ""; - } - } - - if ((searchText == null || searchText.isEmpty()) && - (filter_s == null || filter_s.size() <=0) ) { - if (logger.isWarnEnabled()) { - logger.warn("Clearing search filters, closed loop but nothing to search nor filters"); - } - - return; - } - - ArrayList<PolicyLocator> locators; - try { - locators = ElkConnector.singleton.policyLocators(toPolicyIndexType(policyType), - searchText, filter_s,connectorSelected); - } catch (Exception ise) { - /*AdminNotification.warn("Search is unavailable: " + ise.getMessage());*/ - return; - } - - synchronized(filteredPolicies) { - if (locators.isEmpty()) { - if (logger.isInfoEnabled()) { - logger.info("No match has been found"); - } - //AdminNotification.warn("No match has been found"); - return; - } - - // Retrieve active versions - - HashMap<String, Boolean> policyVersion_s = new HashMap<String, Boolean>(); - for(int i = 0; i < policyVersionDao.getPolicyVersionData().size(); i++) { - PolicyVersion entityVersion = policyVersionDao.getPolicyVersionData().get(i); - String dbPolicy = entityVersion.getPolicyName() + "." + entityVersion.getActiveVersion(); - policyVersion_s.put(dbPolicy, true); - if (logger.isDebugEnabled()) - logger.debug("Map addition: DB Policy Name: " + dbPolicy); - } - - filteredPolicies.clear(); - for (PolicyLocator p: locators) { - String dbPolicyName = p.scope + "/" + p.policyType + "_" + p.policyName; - if (policyVersion_s.containsKey(dbPolicyName)) { - String filterPolicyName = dbPolicyName + ".xml"; - filteredPolicies.put(Paths.get(filterPolicyName), filterPolicyName); - if (logger.isInfoEnabled()) - logger.info("Active Version Policy found in search: " + - dbPolicyName + " -> " + filterPolicyName); - } else { - if (logger.isInfoEnabled()) - logger.info("Inactive Version Policy found in search: " + dbPolicyName); - } - } - - if (filteredPolicies.isEmpty()) { - if (logger.isInfoEnabled()) { - logger.info("No match has been found for active versions"); - } - //AdminNotification.warn("No match has been found for active versions"); - return; - } - - //self.policyContainer.setFilter(self.filteredPolicies); - } - /* self.policyContainer.refresh();*/ - } - - - protected static void clSearchBody(String clPolicyType, String bodyField, String bodyValue, - ArrayList<Pair<ArrayList<String>, ArrayList<String>>> filter_s) { - if (logger.isDebugEnabled()) - logger.debug("ENTER: " + clPolicyType + ":" + bodyField + ":" + bodyValue); - - final ArrayList<String> clBodyField_s = new ArrayList<String>(); - final ArrayList<String> clBodyValue_s = new ArrayList<String>(); - - if (clPolicyType == null || clPolicyType.isEmpty()) { - clBodyField_s.add("Policy.Body." + ElkConnector.PolicyType.Config_Fault.name() + "_Body." + bodyField); - clBodyField_s.add("Policy.Body."+ ElkConnector.PolicyType.Config_PM.name() + "_Body." + bodyField); - clBodyValue_s.add(bodyValue); - } else { - clBodyField_s.add("Policy.Body." + clPolicyType + "_Body." + bodyField); - clBodyValue_s.add(bodyValue); - } - filter_s.add(new Pair<ArrayList<String>, ArrayList<String>>(clBodyField_s, clBodyValue_s)); - } - - protected static void clSearchFilter(String clType, String clField, String clValue, - ArrayList<Pair<ArrayList<String>,ArrayList<String>>> filter_s) { - if (logger.isDebugEnabled()) - logger.debug("ENTER: " + clType + ":" + clField + ":" + clValue); - - ArrayList<String> clSearchField_s = new ArrayList<String>(); - clSearchField_s.add("Policy.Body." + clType + "_Body." + clField); - - ArrayList<String> clSearchValue_s = new ArrayList<String>(); - clSearchValue_s.add(clValue); - - filter_s.add(new Pair<ArrayList<String>,ArrayList<String>>(clSearchField_s, clSearchValue_s)); - } - - public static ElkConnector.PolicyIndexType toPolicyIndexType(String type) throws IllegalArgumentException { - if (type == null || type.isEmpty()) - return PolicyIndexType.all; - - return PolicyIndexType.valueOf(type); - } -} diff --git a/ecomp-sdk-app/src/main/java/org/openecomp/policy/components/HumanPolicyComponent.java b/ecomp-sdk-app/src/main/java/org/openecomp/policy/components/HumanPolicyComponent.java deleted file mode 100644 index 037888b7c..000000000 --- a/ecomp-sdk-app/src/main/java/org/openecomp/policy/components/HumanPolicyComponent.java +++ /dev/null @@ -1,982 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ECOMP Policy Engine - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.policy.components; - - -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.PrintWriter; -import java.io.StringWriter; -import java.nio.file.FileSystems; -import java.nio.file.Path; -import java.util.Collection; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; - -import javax.xml.bind.JAXBElement; - -import oasis.names.tc.xacml._3_0.core.schema.wd_17.AdviceExpressionType; -import oasis.names.tc.xacml._3_0.core.schema.wd_17.AdviceExpressionsType; -import oasis.names.tc.xacml._3_0.core.schema.wd_17.AllOfType; -import oasis.names.tc.xacml._3_0.core.schema.wd_17.AnyOfType; -import oasis.names.tc.xacml._3_0.core.schema.wd_17.ApplyType; -import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeAssignmentExpressionType; -import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeDesignatorType; -import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeSelectorType; -import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeValueType; -import oasis.names.tc.xacml._3_0.core.schema.wd_17.ConditionType; -import oasis.names.tc.xacml._3_0.core.schema.wd_17.MatchType; -import oasis.names.tc.xacml._3_0.core.schema.wd_17.ObligationExpressionType; -import oasis.names.tc.xacml._3_0.core.schema.wd_17.ObligationExpressionsType; -import oasis.names.tc.xacml._3_0.core.schema.wd_17.PolicySetType; -import oasis.names.tc.xacml._3_0.core.schema.wd_17.PolicyType; -import oasis.names.tc.xacml._3_0.core.schema.wd_17.RuleType; -import oasis.names.tc.xacml._3_0.core.schema.wd_17.VariableReferenceType; - -import org.apache.commons.io.FilenameUtils; -import org.json.JSONObject; -import org.openecomp.policy.controller.PolicyController; -import org.openecomp.policy.rest.jpa.FunctionDefinition; -import org.openecomp.policy.utils.XACMLPolicyWriterWithPapNotify; - -import com.att.research.xacml.api.AttributeValue; -import org.openecomp.policy.xacml.api.XACMLErrorConstants; -import com.att.research.xacml.std.IdentifierImpl; -import com.att.research.xacml.std.StdAttribute; -import com.att.research.xacml.std.StdAttributeValue; -import org.openecomp.policy.xacml.util.XACMLPolicyScanner; -import com.att.research.xacml.util.XACMLPolicyScanner.CallbackResult; -import com.att.research.xacml.util.XACMLPolicyScanner.SimpleCallback; - -import org.openecomp.policy.common.logging.flexlogger.FlexLogger; -import org.openecomp.policy.common.logging.flexlogger.Logger; - - - -public class HumanPolicyComponent{ - - private static final Logger logger = FlexLogger.getLogger(HumanPolicyComponent.class); - - // Constants Used in XML Creation - public static final String CATEGORY_RECIPIENT_SUBJECT = "urn:oasis:names:tc:xacml:1.0:subject-category:recipient-subject"; - public static final String CATEGORY_RESOURCE = "urn:oasis:names:tc:xacml:3.0:attribute-category:resource"; - public static final String CATEGORY_ACTION = "urn:oasis:names:tc:xacml:3.0:attribute-category:action"; - public static final String CATEGORY_ACCESS_SUBJECT = "urn:oasis:names:tc:xacml:1.0:subject-category:access-subject"; - public static final String ACTION_ID = "urn:oasis:names:tc:xacml:1.0:action:action-id"; - public static final String SUBJECT_ID = "urn:oasis:names:tc:xacml:1.0:subject:subject-id"; - public static final String RESOURCE_ID = "urn:oasis:names:tc:xacml:1.0:resource:resource-id"; - public static final String FUNTION_INTEGER_ONE_AND_ONLY = "urn:oasis:names:tc:xacml:1.0:function:integer-one-and-only"; - public static final String FUNCTION_STRING_ONE_AND_ONLY = "urn:oasis:names:tc:xacml:1.0:function:string-one-and-only"; - public static final String FUNCTION_STRING_EQUAL = "urn:oasis:names:tc:xacml:1.0:function:string-equal"; - public static final String FUNCTION_STRING_REGEX_MATCH = "org.openecomp.function.regex-match"; - public static final String FUNCTION_STRING_EQUAL_IGNORE = "urn:oasis:names:tc:xacml:3.0:function:string-equal-ignore-case"; - public static final String INTEGER_DATATYPE = "http://www.w3.org/2001/XMLSchema#integer"; - public static final String BOOLEAN_DATATYPE = "http://www.w3.org/2001/XMLSchema#boolean"; - public static final String STRING_DATATYPE = "http://www.w3.org/2001/XMLSchema#string"; - public static final String URI_DATATYPE = "http://www.w3.org/2001/XMLSchema#anyURI"; - public static final String RULE_VARIABLE = "var:"; - public static final String EMPTY_STRING = ""; - - private static HtmlProcessor htmlProcessor; - - private static File policyFile; - - public static JSONObject DescribePolicy(final File policyFile) { - if (logger.isTraceEnabled()) - logger.trace("ENTER"); - - HumanPolicyComponent.policyFile = policyFile; - return humanPolicyLayout(); - - } - - private static JSONObject humanPolicyLayout() { - if (logger.isTraceEnabled()) - logger.trace("ENTER"); - - try { - String html = processPolicy(); - JSONObject result = new JSONObject(); - result.put("html", html); - return result; - //ByteArrayInputStream is = new ByteArrayInputStream(html.getBytes(StandardCharsets.UTF_8)); - - } catch (IllegalArgumentException e) { - logger.error(XACMLErrorConstants.ERROR_DATA_ISSUE + "cannot build html area por policy", e); - /*AdminNotification.warn("An error has occurred. Cannot describe this policy: " + - e.getMessage());*/ - } - return null; - } - - private static String processPolicy() throws IllegalArgumentException { - if (logger.isTraceEnabled()) - logger.trace("ENTER"); - - FileInputStream pIS = null; - try { - pIS = new FileInputStream(policyFile); - Object policy = XACMLPolicyScanner.readPolicy(pIS); - if (policy == null) - throw new IllegalArgumentException("Policy File " + policyFile.getName() + - " cannot be unmarshalled"); - - HumanPolicyComponent.htmlProcessor = - new HtmlProcessor(HumanPolicyComponent.policyFile, policy); - - Path policyPath = FileSystems.getDefault().getPath(policyFile.getAbsolutePath()); - XACMLPolicyScanner xacmlScanner = new XACMLPolicyScanner(policyPath, htmlProcessor); - xacmlScanner.scan(); - String html = htmlProcessor.html(); - if (logger.isDebugEnabled()) - logger.debug(policyPath + System.lineSeparator() + html); - - return html; - - } catch (Exception e) { - String msg = "Exception reading policy: " + policyFile.getAbsolutePath() + - ": " + e.getMessage(); - logger.error(XACMLErrorConstants.ERROR_DATA_ISSUE + msg, e); - throw new IllegalArgumentException(msg); - } finally { - if (pIS != null) { - try { - pIS.close(); - } catch (IOException e) { - logger.warn(e.getMessage(), e); - } - } - } - } - -} - -class HtmlProcessor extends SimpleCallback { - - private static final Logger logger = FlexLogger.getLogger(HtmlProcessor.class); - - private static Map<String, String> function2human; - static { - function2human = new HashMap<String, String>(); - function2human.put(HumanPolicyComponent.FUNCTION_STRING_EQUAL, "equal"); - function2human.put(HumanPolicyComponent.FUNCTION_STRING_EQUAL_IGNORE, "equal"); - function2human.put(HumanPolicyComponent.FUNCTION_STRING_ONE_AND_ONLY, "one-and-only"); - function2human.put(HumanPolicyComponent.FUNCTION_STRING_REGEX_MATCH, "matching regular expression"); - function2human.put(HumanPolicyComponent.FUNTION_INTEGER_ONE_AND_ONLY, "one-and-only"); - } - - private static Map<String, String> combiningAlgo2human; - static { - combiningAlgo2human = new HashMap<String, String>(); - combiningAlgo2human.put("deny-overrides", "to deny if any $placeholder$ below evaluates to <i>deny</i>"); - combiningAlgo2human.put("permit-overrides", "to permit if any $placeholder$ below evaluates to <i>permit</i>"); - - combiningAlgo2human.put("ordered-deny-overrides", "to deny if any $placeholder$ below evaluates to <i>deny</i>"); - combiningAlgo2human.put("ordered-permit-overrides", "to permit if any $placeholder$ below evaluates to <i>permit</i>"); - combiningAlgo2human.put("deny-unless-permit", "to permit if any $placeholder$ below evaluates to <i>deny</i> and not <i>indeterminate</i>"); - - combiningAlgo2human.put("permit-unless-deny", "to deny if any $placeholder$ below evaluates to is <i>permit</i> and not <i>indeterminate</i>"); - combiningAlgo2human.put("first-applicable", "to honour the result of the first successfully evaluated $placeholder$ in order"); - combiningAlgo2human.put("only-one-applicable", "to honour the result of the first successfully evaluated $placeholder$ in order"); - } - - private Map<String, AttributeIdentifiers> attributeIdentifiersMap = new HashMap<String, AttributeIdentifiers>(); - - private final StringWriter stringWriter = new StringWriter(); - private final PrintWriter htmlOut = new PrintWriter(stringWriter); - private final String policyName; - private final Object rootPolicyObject; - - public HtmlProcessor(File policyFile, Object policyObject) - throws IllegalArgumentException { - if (logger.isTraceEnabled()) - logger.trace("ENTER"); - - if (policyFile == null) { - logger.error(XACMLErrorConstants.ERROR_DATA_ISSUE + "Null Policy File"); - throw new IllegalArgumentException("Null Policy File"); - } - - if (!policyFile.exists() || !policyFile.canRead()) { - String msg = "Can't access " + policyFile.getAbsolutePath(); - logger.error(XACMLErrorConstants.ERROR_PERMISSIONS + msg); - throw new IllegalArgumentException(msg); - } - - if (policyObject == null || - (!(policyObject instanceof PolicySetType) && !(policyObject instanceof PolicyType))) { - String msg = "Invalid unmarshalled object: " + policyObject; - logger.error(XACMLErrorConstants.ERROR_SCHEMA_INVALID + msg); - throw new IllegalArgumentException(msg); - } - - this.policyName = FilenameUtils.removeExtension(policyFile.getName()); - this.rootPolicyObject = policyObject; - - String version = "-"; - if (policyObject instanceof PolicyType) { - PolicyType policy = (PolicyType) policyObject; - version = policy.getVersion(); - htmlOut.println("<h1>Policy: " + policyName + - " (version " + version + ") </h1>"); - - } else { - PolicySetType policySet = (PolicySetType) policyObject; - version = policySet.getVersion(); - htmlOut.println("<h1>Policy Set: " + policyName + - " (v" + version + ") </h1>"); - } - - htmlOut.println("<h3><b>Location: </b>" + policyFile.getPath() + "</h3>"); - htmlOut.println("<hr>"); - - if (rootPolicyObject instanceof PolicySetType) { - if (policyName.startsWith("Config_")) { - htmlOut.println("<p>This is a <b>config</b> policy set.</p>"); - } else if (policyName.startsWith("Action_")) { - htmlOut.println("<p>This is an <b>action</b> policy set.</p>"); - } - htmlOut.println("<dl>"); - } else { - if (policyName.startsWith("Config_")) { - htmlOut.println("<p>This is a <b>config</b> policy.</p>"); - } else if (policyName.startsWith("Action_")) { - htmlOut.println("<p>This is an <b>action</b> policy.</p>"); - } - htmlOut.println("<ol>"); - } - } - - /** - * @return the attributeIdentifiersMap - */ - public Map<String, AttributeIdentifiers> getAttributeIdentifiersMap() { - return attributeIdentifiersMap; - } - - @Override - public void onFinishScan(Object root) { - if (logger.isTraceEnabled()) - logger.trace("ENTER"); - - if (rootPolicyObject instanceof PolicySetType) { - htmlOut.println("</dl>"); - } else { - htmlOut.println("</ol>"); - } - - htmlOut.println("<hr>"); - - htmlOut.println("<h3>Attribute Table:</h3>"); - - htmlOut.println("<table border=\"3\" style=\"width:100%\">"); - htmlOut.println("<tr>"); - htmlOut.print("<th>Category</th>"); - htmlOut.print("<th>Type</th>"); - htmlOut.print("<th>Identifier</th>"); - htmlOut.println("</tr>"); - for(Map.Entry<String, AttributeIdentifiers> entry : this.attributeIdentifiersMap.entrySet()){ - AttributeIdentifiers value = entry.getValue(); - htmlOut.println("<tr>"); - htmlOut.print("<td><a name=\"" + entry.getKey() + "\"></a>" + value.category + "</td>"); - htmlOut.print("<td>" + value.type + "</td>"); - htmlOut.print("<td>" + value.id + "</td>"); - htmlOut.println("</tr>"); - } - htmlOut.println("</table>"); - - htmlOut.println("<p></p>"); - - // Not necessary for the user, uncomment if desired at some point - // writeRawXACML() - - super.onFinishScan(root); - } - - @SuppressWarnings("unused") - private void writeRawXACML() { - if (logger.isTraceEnabled()) - logger.trace("ENTER"); - - htmlOut.println("<hr>"); - htmlOut.println("<h3>Raw XACML:</h3>"); - - ByteArrayOutputStream bos = new ByteArrayOutputStream(); - if (rootPolicyObject instanceof PolicySetType) { - XACMLPolicyWriterWithPapNotify.writePolicyFile(bos, (PolicySetType) rootPolicyObject); - } else if (rootPolicyObject instanceof PolicyType) { - XACMLPolicyWriterWithPapNotify.writePolicyFile(bos, (PolicyType) rootPolicyObject); - } - - String xacml = bos.toString(); - xacml = xacml.replaceAll("<", "<"); - xacml = xacml.replaceAll(">", ">"); - htmlOut.println("<pre>"); - htmlOut.println(xacml); - htmlOut.println("</pre>"); - } - - @Override - public CallbackResult onPreVisitPolicySet(PolicySetType parent, PolicySetType policySet) { - if (logger.isTraceEnabled()) - logger.trace("PolicySet: " + policySet.getPolicySetId() + " Version: " + policySet.getVersion()); - - if (parent != null && logger.isTraceEnabled()) - logger.trace("PolicySet: " + policySet.getPolicySetId() + - "Parent PolicySet: " + parent.getPolicySetId() + " Version: " + parent.getVersion()); - - String description = policySet.getDescription(); - if (description != null && logger.isTraceEnabled()) - logger.trace("PolicySet: " + policySet.getPolicySetId() + - " Description: " + policySet.getDescription()); - - if (parent == null) // root - policySet(policySet, "dl"); - else - policySet(policySet, "li"); - - if (policySet.getPolicySetOrPolicyOrPolicySetIdReference().size() > 0) - htmlOut.println("<ol>"); - - return super.onPreVisitPolicySet(parent, policySet); - } - - @Override - public CallbackResult onPostVisitPolicySet(PolicySetType parent, PolicySetType policySet) { - if (logger.isTraceEnabled()) - logger.trace("PolicySet: " + policySet.getPolicySetId() + " Version: " + policySet.getVersion()); - - if (parent != null && logger.isTraceEnabled()) - logger.trace("PolicySet: " + policySet.getPolicySetId() + - "Parent PolicySet: " + parent.getPolicySetId() + " Version: " + parent.getVersion()); - - String description = policySet.getDescription(); - if (description != null && logger.isTraceEnabled()) - logger.trace("PolicySet: " + policySet.getPolicySetId() + - " Description: " + policySet.getDescription()); - - if (policySet.getPolicySetOrPolicyOrPolicySetIdReference().size() > 0) - htmlOut.println("</ol>"); - - htmlOut.println("<p></p>"); - - return super.onPostVisitPolicySet(parent, policySet); - } - - public void policySet(PolicySetType policySet, String htmlListElement) { - if (logger.isTraceEnabled()) - logger.trace("PolicySet: " + policySet.getPolicySetId()); - - String combiningAlgorithm = "-"; - String id = "-"; - String version = "-"; - - - if (policySet.getPolicyCombiningAlgId() != null) - combiningAlgorithm = extractLastIdentifier(policySet.getPolicyCombiningAlgId(), ":"); - - if (policySet.getPolicySetId() != null) - id = extractLastIdentifier(policySet.getPolicySetId(), ":"); - - if (policySet.getVersion() != null) - version = policySet.getVersion(); - - - htmlOut.println("<" + htmlListElement + "><b>Policy Set ID</b>: <i>" + id + - "</i> (v" + version + ") " + "</" + htmlListElement + ">"); - - if (policySet.getTarget() == null || - policySet.getTarget().getAnyOf() == null || - policySet.getTarget().getAnyOf().size() <= 0) { - htmlOut.println("<p>This policy set applies to all requests.</p>"); - } else { - htmlOut.print("<p>"); - htmlOut.print("This policy set applies to requests with attributes "); - - List<AnyOfType> anyOf_s = policySet.getTarget().getAnyOf(); - target(anyOf_s); - htmlOut.println(".</p>"); - } - - if (policySet.getPolicySetOrPolicyOrPolicySetIdReference() != null && - policySet.getPolicySetOrPolicyOrPolicySetIdReference().size() > 0) { - String algoDesc = combiningAlgo2human.get(combiningAlgorithm); - if (algoDesc != null) { - algoDesc = algoDesc.replace("$placeholder$", "policy") + " (" + "<i>" + combiningAlgorithm + "</i>)"; - } else { - algoDesc = combiningAlgorithm; - } - - htmlOut.println("<p>The result is " + algoDesc + ": </p>"); - } - } - - @Override - public CallbackResult onPreVisitPolicy(PolicySetType parent, PolicyType policy) { - if (logger.isTraceEnabled()) - logger.trace("PolicySet: " + policy.getPolicyId() + " Version: " + policy.getVersion()); - - if (parent != null && logger.isTraceEnabled()) - logger.trace("PolicySet: " + policy.getPolicyId() + - "Parent PolicySet: " + parent.getPolicySetId() + " Version: " + parent.getVersion()); - - String description = policy.getDescription(); - if (description != null && logger.isTraceEnabled()) - logger.trace("PolicySet: " + policy.getPolicyId() + - " Description: " + policy.getDescription()); - - policy(policy); - - if (policy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().size() > 0) - htmlOut.println("<ol type=\"i\">"); - - return super.onPreVisitPolicy(parent, policy); - } - - @Override - public CallbackResult onPostVisitPolicy(PolicySetType parent, PolicyType policy) { - if (logger.isTraceEnabled()) - logger.trace("PolicySet: " + policy.getPolicyId() + " Version: " + policy.getVersion()); - - if (parent != null && logger.isTraceEnabled()) - logger.trace("PolicySet: " + policy.getPolicyId() + - "Parent PolicySet: " + parent.getPolicySetId() + " Version: " + parent.getVersion()); - - if (policy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().size() > 0) - htmlOut.println("</ol>"); - - htmlOut.println("<p></p>"); - return super.onPostVisitPolicy(parent, policy); - } - - public void policy(PolicyType policy) { - if (logger.isTraceEnabled()) - logger.trace("Policy: " + policy.getPolicyId()); - - String combiningAlgorithm = "-"; - String id = "-"; - String version = "-"; - - - if (policy.getRuleCombiningAlgId() != null) - combiningAlgorithm = extractLastIdentifier(policy.getRuleCombiningAlgId(), ":"); - - if (policy.getPolicyId() != null) - id = extractLastIdentifier(policy.getPolicyId(), ":"); - - if (policy.getVersion() != null) - version = policy.getVersion(); - - htmlOut.println("<li><b>Policy ID</b>: <i>" + id + - "</i> (v" + version + ") " + "</li>"); - - if (policy.getTarget() == null || - policy.getTarget().getAnyOf() == null || - policy.getTarget().getAnyOf().size() <= 0) { - htmlOut.println("<p>This policy applies to all requests.</p>"); - } else { - htmlOut.print("<p>"); - htmlOut.print("This policy applies to requests with attributes "); - - List<AnyOfType> anyOf_s = policy.getTarget().getAnyOf(); - target(anyOf_s); - htmlOut.println(".</p>"); - } - - if (policy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition() != null && - policy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().size() > 0) { - String algoDesc = combiningAlgo2human.get(combiningAlgorithm); - if (algoDesc != null) { - algoDesc = algoDesc.replace("$placeholder$", "rule") + " (<i>" + combiningAlgorithm + "</i>)"; - } else { - algoDesc = combiningAlgorithm; - } - htmlOut.println("<p>The result is " + algoDesc + ": </p>"); - } - } - - - @Override - public CallbackResult onPreVisitRule(PolicyType parent, RuleType rule) { - if (logger.isTraceEnabled()) - logger.trace("Rule: " + rule.getRuleId()); - - if (parent != null && logger.isTraceEnabled()) - logger.trace("Parent Policy: " + parent.getPolicyId() + " Version: " + parent.getVersion()); - - String description = rule.getDescription(); - if (description != null && logger.isTraceEnabled()) { - logger.trace("Rule: " + rule.getRuleId() + - " Description: " + rule.getDescription()); - } - - rule(rule); - - return super.onPreVisitRule(parent, rule); - } - - @Override - public CallbackResult onPostVisitRule(PolicyType parent, RuleType rule) { - if (logger.isTraceEnabled()) - logger.trace("Rule: " + rule.getRuleId()); - - if (parent != null && logger.isTraceEnabled()) - logger.trace("Parent Policy: " + parent.getPolicyId() + " Version: " + parent.getVersion()); - - return super.onPostVisitRule(parent, rule); - } - - public void rule(RuleType rule) { - if (logger.isTraceEnabled()) - logger.trace("Rule: " + rule.getRuleId()); - - String id = "-"; - - if (rule.getRuleId() != null) - id = extractLastIdentifier(rule.getRuleId(), ":"); - - htmlOut.println("<li><b>Rule ID</b>: <i>" + id + "</i></li>"); - - htmlOut.println("<dl>"); - - htmlOut.print("<p>"); - htmlOut.print(rule.getEffect().value()); - - if (rule.getTarget() == null || - rule.getTarget().getAnyOf() == null || - rule.getTarget().getAnyOf().size() <= 0) { - htmlOut.print(" for all requests"); - } else { - List<AnyOfType> anyOf_s = rule.getTarget().getAnyOf(); - htmlOut.print(" for requests with attributes "); - target(anyOf_s); - } - - if (rule.getCondition() != null) { - htmlOut.print(" when "); - htmlOut.println(this.stringifyCondition(rule.getCondition()) + " "); - } else { - htmlOut.print(" with no conditions "); - } - - if (rule.getAdviceExpressions() != null) { - advice(rule.getAdviceExpressions()); - if (rule.getObligationExpressions() != null) - htmlOut.println(" and "); - } - - if (rule.getObligationExpressions() != null) { - obligation(rule.getObligationExpressions()); - } - - htmlOut.println("</p>"); - } - - private void advice(AdviceExpressionsType adviceExpressions) { - if (logger.isTraceEnabled()) - logger.trace("ENTER"); - - List<AdviceExpressionType> ae = adviceExpressions.getAdviceExpression(); - for (AdviceExpressionType expression : ae) { - htmlOut.println(" with <b>advice</b> (<i>" + expression.getAdviceId() + "</i>) on <i>" + - expression.getAppliesTo().value() + "</i>:" ); - htmlOut.println("<ol type=\"a\">"); - List<AttributeAssignmentExpressionType> assignments = expression.getAttributeAssignmentExpression(); - if (assignments != null) { - processAttributeAssignments(assignments); - } - htmlOut.println("</ol>"); - } - } - - private void obligation(ObligationExpressionsType obligationExpressions) { - if (logger.isTraceEnabled()) - logger.trace("ENTER"); - - List<ObligationExpressionType> oe = obligationExpressions.getObligationExpression(); - for (ObligationExpressionType expression : oe) { - htmlOut.println(" with <b>obligations</b> (<i>" + expression.getObligationId() + "</i>) to be fullfilled on <i>" + - expression.getFulfillOn().value() + "</i>:" ); - htmlOut.println("<ol type=\"a\">"); - List<AttributeAssignmentExpressionType> assignments = expression.getAttributeAssignmentExpression(); - if (assignments != null) { - processAttributeAssignments(assignments); - } - htmlOut.println("</ol>"); - } - } - - /** - * @param assignments - */ - private void processAttributeAssignments(List<AttributeAssignmentExpressionType> assignments) { - if (logger.isTraceEnabled()) - logger.trace("ENTER"); - - for (AttributeAssignmentExpressionType assignment : assignments) { - String succintIdentifier = extractLastIdentifier(assignment.getCategory(), ":") + - ":" + extractLastIdentifier(assignment.getAttributeId(), ":"); - AttributeIdentifiers attributeIdentifiers = null; - if (!this.attributeIdentifiersMap.containsKey(succintIdentifier)) { - // Note Attribute Assignments do not have an Attribute Type, assume string - // but note this case is unlikely since attributeMap should have been populated - // during parsing of target and conditions, and not in this case for Advice and - // Obligations. - attributeIdentifiers = new AttributeIdentifiers(assignment.getCategory(), - "NA", - assignment.getAttributeId()); - this.attributeIdentifiersMap.put(succintIdentifier, attributeIdentifiers); - } - - htmlOut.print("<li><i><a href=\"#" + succintIdentifier + "\">" + succintIdentifier + "</a></i> is "); - // AttributeValueType - JAXBElement<?> jaxbExp = assignment.getExpression(); - Object assignmentObject = jaxbExp.getValue(); - if (assignmentObject instanceof AttributeValueType) { - AttributeValueType avt = (AttributeValueType) assignmentObject; - if (attributeIdentifiers != null) { - attributeIdentifiers.type = avt.getDataType(); - } - int numContent = avt.getContent().size(); - int countContent = 0; - for (Object c: avt.getContent()) { - countContent++; - htmlOut.print("<i>" + c + "</i>"); - if (countContent < numContent) - htmlOut.print(" or "); - } - htmlOut.println("</li>"); - } else if (assignmentObject instanceof AttributeDesignatorType) { - htmlOut.println("NA"); - } else if (assignmentObject instanceof AttributeSelectorType) { - htmlOut.println("NA"); - } else if (assignmentObject instanceof ApplyType) { - htmlOut.println("NA"); - } else { - htmlOut.println("Unexpected"); - } - } - } - - /** - * - * @param anyOfList - */ - public void target(List<AnyOfType> anyOfList) { - if (logger.isTraceEnabled()) - logger.trace("ENTER"); - - if (anyOfList != null) { - Iterator<AnyOfType> iterAnyOf = anyOfList.iterator(); - String targetInHuman = ""; - while (iterAnyOf.hasNext()) { - AnyOfType anyOf = iterAnyOf.next(); - List<AllOfType> allOfList = anyOf.getAllOf(); - if (allOfList != null) { - Iterator<AllOfType> iterAllOf = allOfList.iterator(); - while (iterAllOf.hasNext()) { - AllOfType allOf = iterAllOf.next(); - List<MatchType> matchList = allOf.getMatch(); - if (matchList != null) { - Iterator<MatchType> iterMatch = matchList.iterator(); - if (matchList.size() > 1) - targetInHuman += "("; - while (iterMatch.hasNext()) { - MatchType match = iterMatch.next(); - // - // Finally down to the actual attribute - // - StdAttribute attribute = null; - AttributeValueType value = match.getAttributeValue(); - String attributeDataType = null; - if (match.getAttributeDesignator() != null && value != null) { - AttributeDesignatorType designator = match.getAttributeDesignator(); - attribute = new StdAttribute(new IdentifierImpl(designator.getCategory()), - new IdentifierImpl(designator.getAttributeId()), - new StdAttributeValue<List<?>>(new IdentifierImpl(value.getDataType()), value.getContent()), - designator.getIssuer(), - false); - attributeDataType = designator.getDataType(); - } else if (match.getAttributeSelector() != null && value != null) { - AttributeSelectorType selector = match.getAttributeSelector(); - attribute = new StdAttribute(new IdentifierImpl(selector.getCategory()), - new IdentifierImpl(selector.getContextSelectorId()), - new StdAttributeValue<List<?>>(new IdentifierImpl(value.getDataType()), value.getContent()), - null, - false); - attributeDataType = selector.getDataType(); - } else { - logger.warn("NULL designator/selector or value for match."); - attributeDataType = "NA"; - } - - String functionName = getHumanFunction(match.getMatchId()); - - String succintIdentifier = extractLastIdentifier(attribute.getCategory().stringValue(), ":") + - ":" + extractLastIdentifier(attribute.getAttributeId().stringValue(), ":"); - AttributeIdentifiers ai = new AttributeIdentifiers(attribute.getCategory().stringValue(), - attributeDataType, - attribute.getAttributeId().stringValue()); - this.attributeIdentifiersMap.put(succintIdentifier,ai); - - targetInHuman += "<i><a href=\"#" + succintIdentifier + "\">" + succintIdentifier + "</a></i> " + functionName + " "; - - int numAttributes = attribute.getValues().size(); - int count = 0; - for (AttributeValue<?> v: attribute.getValues()) { - count++; - if (v.getValue() instanceof Collection<?>) { - Collection<?> value_s = (Collection<?>) v.getValue(); - int numValues = value_s.size(); - int countValues = 0; - for (Object o : value_s) { - countValues++; - targetInHuman += " <I>" + o + "</I>"; - if (countValues < numValues) { - targetInHuman += ", or"; - } - } - } else { - targetInHuman += " <I>" + v.getValue() + "</I>"; - if (count < numAttributes) { - targetInHuman += ", or "; - } - } - } - - if (iterMatch.hasNext()) { - targetInHuman += " and "; - } - } // end iterMatch - if (matchList.size() > 1) { - targetInHuman += ")"; - } - } - if (iterAllOf.hasNext()) { - targetInHuman += " or "; - } - } // end iterAllOf - } - if (iterAnyOf.hasNext()) { - targetInHuman = "(" + targetInHuman + ")" + " or "; - } else { - if (anyOfList.size() > 1) { - targetInHuman += ")"; - } - } - } // end iterAnyOf - htmlOut.println(targetInHuman); - } - } - - private String getHumanFunction(String matchId) { - if (HtmlProcessor.function2human.containsKey(matchId)) { - return HtmlProcessor.function2human.get(matchId); - } - - FunctionDefinition function = PolicyController.getFunctionIDMap().get(matchId); - String functionName = function.getShortname(); - - if (logger.isDebugEnabled()) { - logger.debug(functionName + - ": #args[" + function.getArgLb() + "," + function.getArgUb() +"]"); - } - - return extractLastIdentifier(removePrimitives(functionName), ":"); - } - - public String html() { - this.htmlOut.flush(); - return this.stringWriter.toString(); - } - - private String extractLastIdentifier(String in, String separator) { - int lastIndex = in.lastIndexOf(separator); - if (lastIndex < 0) - return in; - else - return in.substring(lastIndex+1); - } - - private String removePrimitives(String in) { - in = in.replace("string-", ""); - in = in.replace("integer-", ""); - in = in.replace("double-", ""); - in = in.replace("boolean-", ""); - return in; - } - - private String stringifyCondition(ConditionType condition) { - if (condition.getExpression() == null) { - return ""; - } - - return stringifyExpression(condition.getExpression().getValue()); - } - - private String stringifyExpression(Object expression) { - if (expression instanceof ApplyType) { - ApplyType apply = (ApplyType) expression; - FunctionDefinition function = PolicyController.getFunctionIDMap().get(apply.getFunctionId()); - String functionName = function.getShortname(); - - if (logger.isDebugEnabled()) { - logger.debug(functionName + - ": #args[" + function.getArgLb() + "," + function.getArgUb() +"]"); - } - - if (functionName.contains("one-and-only")) { - if (logger.isDebugEnabled()) { - logger.debug("one-and-only found: " + functionName); - } - - List<JAXBElement<?>> exps = apply.getExpression(); - if (exps == null || exps.size() == 0) - return ""; - else { - String forResult = ""; - for (JAXBElement<?> e : exps) { - Object v = e.getValue(); - if (logger.isDebugEnabled()) { - logger.debug("one-and-only children: " + v); - } - if (v != null) { - // C: return stringifyExpression(v, result); - forResult += stringifyExpression(v); - } - } - return forResult; - } - } - - final int numExpr = (apply.getExpression() == null) ? -1 : apply.getExpression().size(); - if (numExpr <= 0) { - if (logger.isDebugEnabled()) { - logger.debug(functionName + " 0 expressions: " + numExpr); - } - return ""; - } else if (numExpr == 1) { - // eg: not - if (logger.isDebugEnabled()) { - logger.debug(functionName + " 1 expression: " + numExpr); - } - String applySubresult = ""; - for (JAXBElement<?> e : apply.getExpression()) { - Object v = e.getValue(); - if (v != null) { - applySubresult += this.stringifyExpression(e.getValue()); - } - } - return " " + removePrimitives(functionName) + " (" + applySubresult + ")"; - } else { - // > 1 arguments - if (logger.isDebugEnabled()) { - logger.debug(functionName + " > 1 expressions: " + numExpr); - } - String applySubresult = ""; - int exprCount = 0; - for (JAXBElement<?> e : apply.getExpression()) { - exprCount++; - Object ev = e.getValue(); - if (ev != null) { - if (ev instanceof ApplyType) { - if (((ApplyType) ev).getFunctionId().contains("one-and-only")) { - applySubresult += this.stringifyExpression(e.getValue()); - } else { - applySubresult += "(" + this.stringifyExpression(e.getValue()) + ")"; - } - } else { - applySubresult += this.stringifyExpression(e.getValue()); - } - - if (exprCount < numExpr) { - applySubresult += " " + removePrimitives(functionName) + " "; - } - } - } - return applySubresult; - } - } - if (expression instanceof AttributeDesignatorType) { - AttributeDesignatorType adt = (AttributeDesignatorType) expression; - - String succintIdentifier = extractLastIdentifier(adt.getCategory(), ":") + - ":" + extractLastIdentifier(adt.getAttributeId(), ":"); - AttributeIdentifiers ai = new AttributeIdentifiers(adt.getCategory(), - adt.getDataType(), - adt.getAttributeId()); - this.attributeIdentifiersMap.put(succintIdentifier,ai); - - return "<a href=\"#" + succintIdentifier + "\">" + succintIdentifier + "</a>"; - } - if (expression instanceof AttributeSelectorType) { - AttributeSelectorType ast = (AttributeSelectorType) expression; - - String attrName = ast.getPath(); - if (attrName == null || (attrName.length() == 0)) { - return ""; - } - - String textSelector = "/text()"; - if (attrName.endsWith(textSelector)) { - attrName = attrName.substring(0, attrName.length() - textSelector.length()); - } - - attrName = extractLastIdentifier(attrName, "/"); - attrName = extractLastIdentifier(attrName, ":"); - return " " + attrName; - } - if (expression instanceof AttributeValueType) { - AttributeValueType avt = (AttributeValueType) expression; - List<Object> content = avt.getContent(); - String value_s = ""; - for (Object o: content) { - value_s += " " + o.toString(); - } - return " " + value_s; - } - if (expression instanceof VariableReferenceType) { - // - // Really unknown - the variable may or may not have been defined - // - return " VARIABLEREF-NOT-HANDLED"; - } else { - throw new IllegalArgumentException("Unexpected input expression"); - } - } -} - - -class AttributeIdentifiers { - public final String category; - public String type; - public final String id; - - public AttributeIdentifiers(String category, String type, String id) { - this.category = category; - this.type = type; - this.id = id; - } -} diff --git a/ecomp-sdk-app/src/main/java/org/openecomp/policy/components/PolicyImportWindow.java b/ecomp-sdk-app/src/main/java/org/openecomp/policy/components/PolicyImportWindow.java deleted file mode 100644 index c70e331d0..000000000 --- a/ecomp-sdk-app/src/main/java/org/openecomp/policy/components/PolicyImportWindow.java +++ /dev/null @@ -1,226 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ECOMP Policy Engine - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.policy.components; - - -/* - * - */ -import java.io.BufferedOutputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.OutputStream; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.ArrayList; -import java.util.Set; - -import org.apache.commons.compress.archivers.tar.TarArchiveEntry; -import org.apache.commons.compress.archivers.tar.TarArchiveInputStream; -import org.apache.commons.io.IOUtils; -import org.openecomp.policy.controller.PolicyController; - -import org.openecomp.policy.xacml.api.XACMLErrorConstants; - -import org.openecomp.policy.common.logging.flexlogger.FlexLogger; -import org.openecomp.policy.common.logging.flexlogger.Logger; - - - -public class PolicyImportWindow{ - - private static final Logger logger = FlexLogger.getLogger(PolicyImportWindow.class); - private static final int BUFFER_SIZE = 4096; - private static Path directory = PolicyController.getGitPath(); - private Path newfile = null; - private boolean succeeded = false; - public static String CONFIG_HOME = PolicyController.getConfigHome(); - public static String ACTION_HOME = PolicyController.getActionHome(); - private Boolean superadmin = false; - private ArrayList<String> xacmlFiles = new ArrayList<String>(); - /** - * The constructor should first build the main layout, set the - * composition root and then do any custom initialization. - * - * The constructor will not be automatically regenerated by the - * visual editor. - */ - - public OutputStream receiveUpload(String filename, String mimeType) { - - // - // Create its new full path - // - this.newfile = Paths.get(PolicyImportWindow.directory.toString(), filename); - // - // Does it already exist? - // - if (Files.exists(this.newfile)) { - return null; - } - // - // Try to create the output stream - // - try { - return new FileOutputStream(this.newfile.toFile()); - } catch (FileNotFoundException e) { - logger.error("Failed to create uploaded file", e); - } - return null; - } - - public void Upload(){ - TarArchiveEntry entry = null; - TarArchiveInputStream extractFile = null; - try { - extractFile = new TarArchiveInputStream (new FileInputStream(this.newfile.toFile())); - } catch (FileNotFoundException e1) { - e1.printStackTrace(); - } - //Create a loop to read every single entry in TAR file - try { - while ((entry = extractFile.getNextTarEntry()) != null) { - this.superadmin = true; - try{ - copyFileToLocation(extractFile, entry, xacmlFiles, null, superadmin); - }catch(Exception e){ - logger.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR+"Exception while Importing Polcies"+e); - } - } - } catch (IOException e) { - e.printStackTrace(); - } - - } - - - - - - //Copy files to Directorys - public static void copyFileToLocation(TarArchiveInputStream extractFile, TarArchiveEntry entry, ArrayList<String> xacmlFiles, Set<String> finalScopes, Boolean superadminValue ) throws IOException{ - String individualFiles = ""; - int offset = 0; - FileOutputStream outputFile=null; - // Get the name of the file - if(superadminValue){ - individualFiles = entry.getName(); - }else{ - for(int i =0; i< finalScopes.size(); i++){ - if(entry.getName().startsWith(finalScopes.toArray()[i].toString())){ - individualFiles = entry.getName(); - } - } - } - - if(individualFiles.endsWith(".xls")){ - if(individualFiles.contains("\\")){ - individualFiles = individualFiles.replace("\\", File.separator); - }else if(individualFiles.contains("/")){ - individualFiles = individualFiles.replace("/", File.separator); - } - return; - } - - individualFiles = individualFiles.replace("/", File.separator); - individualFiles = individualFiles.replace("\\", File.separator); - - //Create the path with the entry name - String filePath = directory.toAbsolutePath() + File.separator + individualFiles; - String configPath = CONFIG_HOME + File.separator + individualFiles; - String actionPath = ACTION_HOME + File.separator + individualFiles; - logger.info("File Name in TAR File is: " + individualFiles); - logger.info("Xml directory file path: " + filePath); - logger.info("Config Home directory file path: " + configPath); - logger.info("Action Home directory file path: " + actionPath); - - - // Get Size of the file and create a byte array for the size - byte[] content = new byte[(int) entry.getSize()]; - - offset=0; - logger.info("File Name in TAR File is: " + individualFiles); - logger.info("Size of the File is: " + entry.getSize()); - // Read file from the archive into byte array - extractFile.read(content, offset, content.length - offset); - if (!entry.isDirectory()) { - if(!individualFiles.contains(".Config_") || !individualFiles.contains(".Action_")){ - // if the entry is a file, extracts it - String filePath1 = filePath.substring(0, filePath.lastIndexOf(File.separator)); - File newFile = new File(filePath1); - if(!(newFile.exists())) { - File dir = new File(filePath1); - dir.mkdir(); - extractFile(extractFile, filePath); - } - } - } else { - // if the entry is a directory, make the director - File dir = new File(filePath); - dir.mkdir(); - } - // Define OutputStream for writing the file - if(individualFiles.contains(".Config_")){ - outputFile=new FileOutputStream(new File(configPath)); - }else if(individualFiles.contains(".Action_")){ - outputFile=new FileOutputStream(new File(actionPath)); - }else{ - if(filePath != null){ - outputFile=new FileOutputStream(new File(filePath)); - xacmlFiles.add(filePath); - } - } - - // Use IOUtiles to write content of byte array to physical file - IOUtils.write(content,outputFile); - - // Close Output Stream - try { - outputFile.close(); - } catch (IOException e) { - logger.info("IOException:" +e); - e.printStackTrace(); - } - } - - private static void extractFile(TarArchiveInputStream extractFile, String filePath) throws IOException { - BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(filePath)); - byte[] bytesIn = new byte[BUFFER_SIZE]; - int read = 0; - while ((read = extractFile.read(bytesIn)) != -1) { - bos.write(bytesIn, 0, read); - } - bos.close(); - - } - - public Path getUploadedFile() { - if (this.succeeded) { - return this.newfile; - } - return null; - } - -} |