private List<ListItem> getItemPath(String item, List<ListItem> treeList, ArrayList<ListItem> resList) { for (ListItem tmpItem : treeList) { if (item.equals(tmpItem.getId())) { if (tmpItem.getParent().length() > 0) { getItemPath(tmpItem.getParent(), treeList, resList); } resList.add(tmpItem); return resList; } } return null; }
/** * {@inheritDoc} * * @see Object#toString() */ @Override public String toString() { return "[" + getId() + ", " + getValue() + ", " + getParent() + "]"; } }
public Map<String, List<ListItem>> getTreeMap(XWikiContext context) { List<ListItem> list = getDBList(context); Map<String, List<ListItem>> map = new HashMap<String, List<ListItem>>(); if ((list == null) || (list.size() == 0)) { return map; } // The root of the tree is considered to be the empty string. // Make sure that entries with invalid parents end up in the tree. // TODO: Detect cycles, as these also don't appear in the tree. List<String> validParents = this.getList(context); for (ListItem item : list) { if (validParents.contains(item.getParent())) { addToList(map, item.getParent(), item); } else { addToList(map, "", item); } } return map; }
protected void addToTreeList(List<ListItem> treelist, Map<String, List<ListItem>> treemap, Map<String, ListItem> map, String parent, XWikiContext context) { List<ListItem> list = treemap.get(parent); if (list != null) { for (ListItem item : list) { ListItem item2 = new ListItem(item.getId(), getDisplayValue(item.getId(), "", map, context), item.getParent()); treelist.add(item2); addToTreeList(treelist, treemap, map, item.getId(), context); } } }