/** * @param entity * @param id * @param isCascade 是否级联 * @return * @throws DaoException * @throws SystemException * @throws ServiceException */ public TreeNode getTreeNode(Resource entity, Long id, boolean isCascade) throws DaoException, SystemException, ServiceException { TreeNode node = this.resourceToTreeNode(entity, null, true); List<Resource> subResources = this.getByParentId(entity.getId(), StatusState.normal.getValue()); if (subResources.size() > 0) { if (isCascade) { // 递归查询子节点 List<TreeNode> children = Lists.newArrayList(); for (Resource d : subResources) { boolean isInclude = true; // 是否包含到节点树 TreeNode treeNode = null; treeNode = getTreeNode(d, id, true); // 排除自身 if (id != null) { if (!d.getId().equals(id)) { treeNode = getTreeNode(d, id, true); } else { isInclude = false; } } else { treeNode = getTreeNode(d, id, true); } if (isInclude) { children.add(treeNode); node.setState(TreeNode.STATE_CLOASED); } else { node.setState(TreeNode.STATE_OPEN); } } node.setChildren(children); } } return node; }