/**
   * 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);
    }
  }
Example #2
0
 /**
  * @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;
 }