protected Map<String, Set<ElementTreeNode>> getChildrenFromRelation(
ElementTreeNode parent) throws BrowseException {
Map<String, Set<ElementTreeNode>> result = new HashMap<String, Set<ElementTreeNode>>();
Relation relation = browserFacade.relation(ElementView.ELEMENT_VIEW_NAME)
.withPageSize(BROWSE_PAGE_SIZE);
Selection selection = Query.fields(ElementView.FIELD_PARENT_EXTID, ElementView.FIELD_EXTID,
ElementView.FIELD_LEVEL_EXTID, ElementView.FIELD_TEXT,
ElementView.FIELD_HIERARCHY)
.where(Condition.eq(ElementView.FIELD_PARENT_EXTID, parent.getElementExtId()));
FetcherIterator fi = new FetcherIterator(relation.select(selection), BROWSE_PAGE_SIZE);
while (fi.hasNext()) {
Serializable[] row = fi.next();
String hierarchyId = (String) row[4];
if (result.get(hierarchyId) == null) {
result.put(hierarchyId, new HashSet<ElementTreeNode>());
}
ElementTreeNode child = new ElementTreeNode(row[1].toString());
child.setParentExtId(parent.getElementExtId());
child.setParentLevelExtId(parent.getElementLevelExtId());
child.setParentText(parent.getElementText());
child.setElementLevelExtId(row[2].toString());
child.setElementText(row[3].toString());
result.get(hierarchyId).add(child);
}
return result;
}