package sagan.search.support; import java.util.List; import java.util.Stack; class SearchFacetTreeBuilder { private SearchFacet root = new SearchFacet("", "", 0); private Stack<SearchFacet> previousFacets = new Stack<>(); public SearchFacetTreeBuilder() { previousFacets.push(root); } public void addTerm(String term, int count) { String path = ""; String name = term; int pathSeparatorIndex = term.lastIndexOf("/"); if (pathSeparatorIndex != -1) { path = term.substring(0, pathSeparatorIndex); name = term.substring(pathSeparatorIndex + 1); } while (!previousFacets.peek().getFullPath().equals("") && !previousFacets.peek().getFullPath().equals(path)) { previousFacets.pop(); } SearchFacet facet = new SearchFacet(path, name, count); previousFacets.peek().getFacets().add(facet); previousFacets.push(facet); } public List<SearchFacet> build() { return root.getFacets(); } }