예제 #1
0
  /**
   * @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;
  }