/**
* Copyright © 2006-2016 Web Cohesion (info@webcohesion.com)
*
* 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.
*/
package com.webcohesion.enunciate.facets;
import java.util.*;
/**
* @author Ryan Heaton
*/
public class FacetFilter {
private final Set<String> includes;
private final Set<String> excludes;
public FacetFilter(Set<String> includes, Set<String> excludes) {
this.includes = includes;
this.excludes = excludes;
}
public boolean accept(HasFacets item) {
if (item == null) {
return false;
}
if ((includes == null || includes.isEmpty()) && (excludes == null || excludes.isEmpty())) {
return true;
}
boolean accept = true;
if (includes != null && !includes.isEmpty()) {
boolean included = false;
for (Facet facet : item.getFacets()) {
if (includes.contains(facet.getName())) {
included = true;
break;
}
}
accept = included;
}
//then remove the items that are explicitly excluded.
if (excludes != null && !excludes.isEmpty()) {
for (Facet facet : item.getFacets()) {
if (excludes.contains(facet.getName())) {
accept = false;
break;
}
}
}
return accept;
}
}