/* * Copyright (c) 2005-2011, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. * * WSO2 Inc. licenses this file to you 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. * */ package org.wso2.carbon.governance.list.util.filter; import org.wso2.carbon.governance.api.common.dataobjects.GovernanceArtifact; import org.wso2.carbon.governance.api.exception.GovernanceException; import org.wso2.carbon.governance.api.policies.PolicyFilter; import org.wso2.carbon.governance.api.policies.PolicyManager; import org.wso2.carbon.governance.api.policies.dataobjects.Policy; import org.wso2.carbon.registry.core.Registry; import org.wso2.carbon.registry.core.exceptions.RegistryException; public class FilterPolicy extends FilterStrategy { public FilterPolicy(String criteria, Registry governanceRegistry, String artifactKey) { super(criteria, governanceRegistry, artifactKey); } @Override public GovernanceArtifact[] getArtifacts() throws RegistryException { PolicyManager policyManager = new PolicyManager(this.getGovernanceRegistry()); if (this.getCriteria() != null && !"".equals(this.getCriteria())) { return policyManager.findPolicies(new PolicyFilter() { public boolean matches(Policy policy) throws GovernanceException { String policyName = getPolicyName(policy); if (getCriteria() != null && !"".equals(getCriteria()) && policyName != null && policyName.contains(getCriteria())) { return true; } else { return false; } } }); } else { return policyManager.getAllPolicies(); } } private static String getPolicyName(Policy policy) { String local = policy.getQName().getLocalPart(); if (local != null && !"".equals(local)) { if (local.contains("\\.")) { return local.substring(0, local.lastIndexOf("\\.")); } else { return local; } } return local; } }