/** * 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); } }
/** * @return the attribute name from configured resourcebundle the message for: simple name * (FirstLetter lowercase) + "." + property. Example: Class Person and attribute name - * person.name */ public static String getAttributeName(Class clazz, String fieldName) { String property = StringUtils.getLowerFirstLetter(clazz.getSimpleName()) + "." + fieldName; String value = I18N.get(property); // try to find in superclass if ((value == null || value.isEmpty() || value.equals(property)) && clazz.getSuperclass() != null && !clazz.getSuperclass().equals(Object.class)) { return getAttributeName(clazz.getSuperclass(), fieldName); } if (value != null && value.equals(property)) { return new HumaniseCamelCase().humanise(fieldName); } return value; }