/*
* 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.schema.SchemaFilter;
import org.wso2.carbon.governance.api.schema.SchemaManager;
import org.wso2.carbon.governance.api.schema.dataobjects.Schema;
import org.wso2.carbon.registry.core.Registry;
public class FilterSchema extends FilterStrategy {
public FilterSchema(String criteria, Registry governanceRegistry, String artifactKey) {
super(criteria, governanceRegistry, artifactKey);
}
@Override
public GovernanceArtifact[] getArtifacts() throws GovernanceException {
SchemaManager schemaManager = new SchemaManager(this.getGovernanceRegistry());
if (this.getCriteria() != null && !"".equals(this.getCriteria())) {
return schemaManager.findSchemas(new SchemaFilter() {
public boolean matches(Schema schema) throws GovernanceException {
String schemaName = getSchemaName(schema);
return getCriteria() != null
&& !"".equals(getCriteria())
&& schemaName != null
&& schemaName.contains(getCriteria());
}
});
} else {
return schemaManager.getAllSchemas();
}
}
private static String getSchemaName(Schema schema) {
String local = schema.getQName().getLocalPart();
if (local != null && !"".equals(local)) {
if (local.contains("\\.")) {
return local.substring(0, local.lastIndexOf("\\."));
} else {
return local;
}
}
return local;
}
}