protected void addPages(IPage page, List<IPage> pages) { pages.add(page); IPage[] children = page.getChildren(); for (int i = 0; i < children.length; i++) { this.addPages(children[i], pages); } }
private List<NavigatorTarget> putSubTree( IPage page, int level, int depth, List<NavigatorTarget> targets, UserDetails currentUser) { if (page.isShowable() && this.isUserAllowed(currentUser, page)) { targets.add(new NavigatorTarget(page, level)); if (level < depth) { IPage[] children = page.getChildren(); for (int i = 0; i < children.length; i++) { targets = this.putSubTree(children[i], level + 1, depth, targets, currentUser); } } } return targets; }
private List<NavigatorTarget> processBasePage( NavigatorExpression navExpression, IPage basePage, List<NavigatorTarget> targets, UserDetails user) { int operatorId = navExpression.getOperatorId(); if (operatorId < 0) { targets.add(new NavigatorTarget(basePage, 0)); } else { if (operatorId == NavigatorExpression.OPERATOR_CHILDREN_ID) { IPage children[] = basePage.getChildren(); for (int i = 0; i < children.length; i++) { if (children[i].isShowable() && isUserAllowed(user, children[i])) { targets.add(new NavigatorTarget(children[i], 0)); } } } else if (operatorId == NavigatorExpression.OPERATOR_PATH_ID) { IPage page = basePage; int index = targets.size(); int limit = 0; if (page.isShowable() && this.isUserAllowed(user, page)) { targets.add(index, new NavigatorTarget(page, 0)); } while (!page.isRoot() && limit < 20) { page = page.getParent(); if (page.isShowable() && this.isUserAllowed(user, page)) { targets.add(index, new NavigatorTarget(page, 0)); } limit++; } } else if (operatorId == NavigatorExpression.OPERATOR_SUBTREE_ID) { int depth = navExpression.getOperatorSubtreeLevel(); if (depth < 0) { throw new RuntimeException("Operator level 'SUBTREE' not specified"); } targets = this.putSubTree(basePage, 0, depth, targets, user); } else { targets = null; } } return targets; }