/** * Método que carrega a arvore para uma lista de permissoes * * @param permissoes - as permissoes a serem exibidas * @param permissoesParaSelecionar - as permissoes que ficarao selecionadas * @return */ public TreeNode getTreeNode( List<Permissao> permissoes, List<Permissao> permissoesParaSelecionar) { TreeNode root = new DefaultTreeNode(); root.setExpanded(true); Map<Permissao, TreeNode> nodeMap = new LinkedHashMap<Permissao, TreeNode>(); // criar nó para cada permissao for (Permissao permissao : permissoes) { adicionarPermissaoAoMap(root, permissao, nodeMap, permissoes, permissoesParaSelecionar, true); } for (Map.Entry<Permissao, TreeNode> entry : nodeMap.entrySet()) { Permissao permissao = entry.getKey(); TreeNode node = entry.getValue(); if (permissao.getPermissaoPai() != null) { TreeNode parent = nodeMap.get(permissao.getPermissaoPai()); // selecionar apenas ate o segundo nivel if (parent != null && parent.isSelected()) { node.setSelected(true); } node.setExpanded(false); if (parent != null) { parent.getChildren().add(node); } else { root.getChildren().add(node); } } } return root; }
/** * Seta o campo CaminhoPermissao da Permissao. O formato eh permissao 1 > permissao 2 > permissao * 3 * * @param listaPermissoes * @param adicionarPropriaPermissao Indica se o caminho deve ir ateh o final indicando a propria * permissao */ public void criarCaminhoPermissao( List<Permissao> listaPermissoes, boolean adicionarPropriaPermissao) { if (listaPermissoes != null) { for (Permissao permissao : listaPermissoes) { StringBuilder builder = new StringBuilder(); List<Permissao> permissoes = new ArrayList<Permissao>(); Permissao permissaoAtual = permissao; while (permissaoAtual != null) { permissoes.add(permissaoAtual); permissaoAtual = permissaoDAO.getInitialized(permissaoAtual.getPermissaoPai()); } Collections.reverse(permissoes); for (int i = 0; i < permissoes.size(); i++) { if (adicionarPropriaPermissao == true || !permissoes.get(i).equals(permissao)) { if (i > 0) { builder.append(" > "); } if (permissoes.get(i).equals(permissao)) { builder .append("<b style='font-size: 13px;'>") .append(permissoes.get(i).getNomeMenuVerificado()) .append("</b>"); } else { builder.append(permissoes.get(i).getNomeMenuVerificado()); } } } permissao.setCaminhoPermissao(builder.toString()); } } }
public Integer getNivel(Permissao permissao) { Integer nivel = 0; if (permissao.getPermissaoPai() != null) { nivel = getNivel(permissao.getPermissaoPai()) + 1; } return nivel; }
private List<Permissao> getChildren(List<Permissao> permissoes) { List<Permissao> permissoesAdd = new ArrayList<Permissao>(); if (permissoes != null) { for (Permissao permissao : permissoes) { if (!permissoesAdd.contains(permissao)) { permissoesAdd.add(permissao); } permissao.getPermissoesFilhas().size(); List<Permissao> children = getChildren(permissao.getPermissoesFilhas()); if (children != null && !children.isEmpty()) { for (Permissao child : children) { if (!permissoesAdd.contains(child)) { permissoesAdd.add(child); } } } } } return permissoesAdd; }
public void adicionarPermissaoAoMap( TreeNode root, Permissao permissao, Map<Permissao, TreeNode> nodeMap, List<Permissao> permissoes, List<Permissao> permissoesParaSelecionar, boolean selectable) { TreeNode node = new DefaultTreeNode(permissao, root); node.setExpanded(true); node.setSelectable(selectable); if (permissoesParaSelecionar != null && permissoesParaSelecionar.contains(permissao)) { node.setSelected(true); } nodeMap.put(permissao, node); if (permissao.getPermissaoPai() != null) { Permissao permissaoPai = permissaoDAO.getInitialized(permissao.getPermissaoPai()); if (!permissoes.contains(permissaoPai) && nodeMap.get(permissaoPai) == null) { adicionarPermissaoAoMap( root, permissaoPai, nodeMap, permissoes, permissoesParaSelecionar, false); } } }
public List<Permissao> pesquisarPermissao(String query, List<Permissao> listaPermissoes) { List<Permissao> permissoes = new ArrayList<Permissao>(); if (listaPermissoes != null) { for (Permissao permissao : listaPermissoes) { if (permissao.isPossuiMenu() && permissao.getUrl() != null && !permissao.getUrl().isEmpty()) { if (Conversion.removeAccent(permissao.getCaminhoPermissao()) .toLowerCase() .contains(Conversion.removeAccent(query.toLowerCase())) || (permissao.getNomeMenu() != null && permissao.getNomeMenu().toLowerCase().contains(query.toLowerCase()))) { permissoes.add(permissao); } } } } CollectionsUtils.orderAsc(permissoes, "caminhoPermissao"); return permissoes; }