/** * Retorna uma lista de permissoes a partir de um usuario. Caso seja um superusuario retornar * todas as permissoes. Casa seja nao seja superusuario, retornar as permissoes dos perfis dele. * * @param usuario * @return */ public List getPermissoes(Usuario usuario) { List<Permissao> permissoes = new ArrayList<Permissao>(); if (usuario != null) { if (usuario.isSuperUsuario()) { permissoes = permissaoDAO.getTodasPermissoesComFilhos(); } else { permissoes = permissaoDAO.getPermissoesComFilhos(usuario); } } permissoes = getChildren(permissoes); return permissoes; }
/** * Cria um relatorio * * @param dataSource lista de objetos que criarao o data source do relatorio * @param parameters map de parametros a serem adicionados no relatorio * @param path caminho do relatorio * @param fileName Nome do Arquivo gerado * @param template Caminho do template (ao informar o template o reltorio sera inserido como * subrelatorio do template) * @param usuario usuario que sera passado por parametro ao relatorio * @param entityManager */ public static void createJasperReport( List dataSource, Map parameters, String path, String fileName, String template, Usuario usuario, EntityManager entityManager) { PartialViewContext partialViewContext = FacesContext.getCurrentInstance().getPartialViewContext(); // verificar se eh requisicao ajax, caso seja, informar warning if (partialViewContext != null && partialViewContext.isAjaxRequest()) { logger.warning( "Relatorio sendo gerado a partir de uma requisicao ajax. Uma requisicao Ajax nao gera download de arquivos, para isso coloque ajax='false'."); } if (parameters == null) { parameters = new HashMap(); } String logo = FacesContext.getCurrentInstance().getExternalContext().getRealPath(LOGO); if (new File(logo).exists()) { parameters.put("logo", logo); } else { logger.warning("Logo do nao encontrado no caminho " + LOGO); parameters.put("logo", null); } // parametros padrao do relatorio parameters.put( REPORT_PATH, FacesContext.getCurrentInstance().getExternalContext().getRealPath(path)); parameters.put("usuario", usuario.getNome()); parameters.put("ip", FacesUtils.getIP()); parameters.put(JRParameter.REPORT_LOCALE, I18N.getLocale()); parameters.put("titulo", TITULO); parameters.put("subtitulo", SUBTITULO); try { // criar do template deve ser inserido o data source nos parametros if (template != null && !template.trim().isEmpty()) { parameters.put( "REPORT_DATA_SOURCE_CLONE", new JRBeanCollectionDataSource(dataSource, entityManager)); FacesJasper.createJasperReport(null, parameters, template, fileName, entityManager); } else { FacesJasper.createJasperReport(dataSource, parameters, path, fileName, entityManager); } } catch (Exception ex) { throw new RuntimeException(ex); } }