// Copyright (C) 2003-2009 by Object Mentor, Inc. All rights reserved.
// Released under the terms of the CPL Common Public License version 1.0.
package fitnesse.wiki;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
public abstract class InheritedItemBuilder {
protected List<String> getInheritedItems(WikiPage page, Set<WikiPage> visitedPages) {
List<String> items = new ArrayList<String>();
addItemsFromPage(page, items);
List<WikiPage> ancestors = WikiPageUtil.getAncestorsOf(page);
for (WikiPage ancestor : ancestors) {
if (!visitedPages.contains(ancestor)) {
visitedPages.add(ancestor);
addItemsFromPage(ancestor, items);
}
}
return items;
}
private void addItemsFromPage(WikiPage itemPage, List<String> items) {
List<String> itemsOnThisPage = getItemsFromPage(itemPage);
items.addAll(itemsOnThisPage);
}
protected abstract List<String> getItemsFromPage(WikiPage page);
}