package fitnesse.components;
import java.util.ArrayList;
import java.util.List;
import fitnesse.wiki.WikiPage;
public class OrPageFinder implements CompositePageFinder {
List<PageFinder> delegates;
public OrPageFinder() {
delegates = new ArrayList<PageFinder>();
}
public void add(PageFinder finder) {
delegates.add(finder);
}
public List<WikiPage> search(WikiPage page) {
List<WikiPage> results = null;
for (PageFinder pageFinder: delegates) {
if (results == null) {
results = pageFinder.search(page);
} else {
appendFinderResultsToResultList(pageFinder.search(page), results);
}
}
return results;
}
private void appendFinderResultsToResultList(List<WikiPage> search,
List<WikiPage> results) {
for (WikiPage result: search) {
if (!results.contains(result)) {
results.add(result);
}
}
}
}