jmoordbtaller
  • Introducción
  • Requisitos
  • Dependencias
  • Repositorios de proyectos
  • Arquitectura
  • Taller 0. Instalar Java
    • Configurar maven
  • Taller 1 MongoDB
  • Taller 2 CRUD MongoDB
    • Insertar documentos
    • Consulta de documentos
    • Documento embebido
    • Eliminar Documentos
    • Actualizar documentos
    • Agregaciones
    • Crear un indice
  • Taller 3 EJB
    • Crear el proyecto ejb
    • Dependencias
    • Entity
    • Repository
  • Taller 4 Java EE 8
    • dependencias
    • Controller
    • new.xhtml
    • index.hxmtl
    • Ampliar el método save()
    • ejecutar proyecto
    • datatable
    • CommandLink
  • Taller 5- Verificar si existe al guardar
  • Taller 6-Bases datos en tiempo de ejecución e Historial de revisión
  • Taller 7. Aplicar temas
  • Taller 8. Eliminar
  • Taller 9- Editar
  • Taller 10. Historial de revisiones
  • Taller 11.Conocer la llave primaria y el valor en tiempo de ejecucion
  • Taller 12. UserInfo
    • Controller
  • Taller 13. Converter/DataModel/Services
    • Services
    • Converter
    • DataModel
  • Taller 14.Autocomplete
    • Componente autocompletepersona
    • Agregar el componente al list.xhtml
  • Taller 15. Paginacion
    • Pais en Proyecto ejb
    • Pais en Proyecto Web
      • Formularios list.xhmtl, new.xhtml, view.xhtml
      • <e:autocompletepais/>
      • <e:paginator>
    • PaisController.java
      • Metodos
        • init()
        • save()
        • delete()
        • edit()
        • handleAutocompleteOfListXhtml()
        • showAll()
        • move(Integer page)
        • searchBy()
        • prepare
        • desplazarse en las paginas
          • printAll()
          • clear()
        • Codigo Completo
        • index.xhtml
  • Parte II- Avanzado
    • Taller 16. crudejb
      • Agregar dependencias
      • Entity
        • Rol.java
        • Usuario.java
      • Repository
      • Services
      • Datamodel
      • Converter
    • Mongodb
      • Insertar documentos en la colección MongoDB
    • Capitulo 17. Arquetipos
      • Crear el proyecto en base al arquetipo
    • Taller 18. Crear proyecto Web
      • Dependencias
      • web.xml
      • Java EE 8 Security
        • ApplicationConfig.java
        • CustomInMemoryIdentityStore.java
      • properties
      • template
        • footer.xhtml
        • template.xhtml
        • top.xhtml
      • resources
      • index.xhtml
      • login
        • login.xhtml
        • LoginController.java
        • Codigo completo
      • Controller
        • Validar duplicados en un autocomplete multiple
        • RolController.java
        • UsuarioController.java
      • <jmoordbjsf:autocomplete>
      • <jmoordbjsf:search>
      • <jmoordbjsf:paginator>
      • <jmoordbjsf:yesno>
      • <jmoordbjsf:toolbarsave>
      • <jmoordbjsf:toolbarview>
      • pages
        • Rol
          • new.xhtml
          • view.xhtml
        • Usuario
          • new.xhtml
          • view.xhtml
    • Ejecutar el proyecto
  • Parte III-Crear una aplicacion web en base al arquetipo
    • Crear el proyecto
    • Editar el proyecto
    • Editar LoginController
    • Editar los paquetes y clases
    • Indicar la conexion a base de datos
    • Ejecutar el proyecto
  • Parte IV. Reportes con jmoordbreport
    • SubReporte Referenciado de Usuario
  • Parte V. Backup/Restore con jmoordbbackup
  • Parte VII Email
Powered by GitBook
On this page

Was this helpful?

  1. Parte IV. Reportes con jmoordbreport

SubReporte Referenciado de Usuario

Recordemos que el entity Usuario contiene un List<> referencia a Rol.

public class Usuario {

    @Id
    private String username;
    private String password;    
    private String nombre;
    private String cedula;
    private String celular;
    private String cargo;
    private String email;
    @Referenced(documment = "Rol",
            field = "idrol", javatype = "String", lazy = false,
            repository = "com.crudejb.repository.RolRepository")
    private List<Rol> rol;
   
 
    private String activo;
    @Embedded
    List<UserInfo> userInfo;

    public Usuario() {
    }
    }

Necesitamos crear un subreporte para manejarlo, si no fuese un List<> lo manejamos de manera diferente como se indica en el manual de jmoordbreport.

En el reporte

En el subreporte colocamos Rol

y dar clic en en Generador de reportes,

Observe la notificación del reporte se han creado nuevos reportes:

  • all

  • details

  • rol_subreport

  • usuario_master

Observamos la lista de reportes

En el init() de UsuarioController.java agregamos para indicar el nombre de la empresa

 parameters.put("P_EMPRESA","MI EMPRESA");

Ejecutamos el reporte

dar clic en el botón imprimir

Podemos ver que no se muestran los Roles ya que es un List<Rol> y estamos invocando el reporte all.jasper, ahora cambiaremos para invocar el reporte master con el subreporte.

Creamos un boton en el formulario list.xtml

antes del </b:panel> superior al datatable

  <p:commandButton value="Subreporte" action="#{usuarioController.printSubreporte()}"
                                 ajax="false"/>
                                 
</b:panel>
<b:panel id="dataTable" look="primary">

Creamos el método para imprimir en UsuarioController.java

Indicar la ruta del reporte principal:

  String reportsDirPath = FacesContext.getCurrentInstance().getExternalContext().getRealPath("/resources/reportes/usuario");

Indicar la ruta del subreporte

reportsDirPath += "/";
parameters.put("SUBREPORT_DIR", reportsDirPath + "rol_subreport.jasper");

Segmento de código:

public String printSubreporte() {
        try {
            List<Usuario> list = new ArrayList<>();
            list = usuarioRepository.findAll(new Document("cedula", 1));

           String ruta = "/resources/reportes/usuario/usuario_master.jasper";
        //    String ruta = "/resources/reportes/usuario/all.jasper";
            
            HashMap parameters = new HashMap();
            parameters.put("P_EMPRESA", "MI EMPRESA");
            
            
            String reportsDirPath = FacesContext.getCurrentInstance().getExternalContext().getRealPath("/resources/reportes/usuario");
            reportsDirPath += "/";
            parameters.put("SUBREPORT_DIR", reportsDirPath + "rol_subreport.jasper");
            printer.imprimir(list, ruta, parameters);
        } catch (Exception e) {
            errorServices.errorMessage(nameOfClass(),nameOfMethod(), e.getLocalizedMessage());
        }
        return null;
    }

Al ejecutarlo

Al dar clic en el botón Subreporte

Haremos el ejercicio de crear un Rol llamador AUDITOR y se lo asigamos al usuario

Editamos el usuario y le agregamos el nuevo Rol

Regresamos al list.xhtm de Usuario

Observamos los dos roles

PreviousParte IV. Reportes con jmoordbreportNextParte V. Backup/Restore con jmoordbbackup

Last updated 5 years ago

Was this helpful?