Blogs Blogs

Aprende OpenXava con ejemplos Aprende OpenXava con ejemplos

Obtén el libro

Aprende OpenXava desarrollando una aplicación completa desde cero.

OpenXava 4.2.2 liberado OpenXava 4.2.2 liberado

OpenXava 4.6 liberado

22 de noviembre del 2012

OpenXava 4.6 tiene algunas nuevas funcionalidades muy interesantes, como por ejemplo:

  • Generación de reportes personalizados desde la lista.
  • Es posible personalizar el modo lista definiendo tu propio editor.
  • Puedes asignar un objeto del modelo (una entidad o un objeto transitorio) a una vista para llenarla con datos.
  • En las pruebas jUnit ahora es posible verificar el contenido de los PDFs generados.
  • Nueva anotación @RowAction para colecciones.
  • Etiquetas y mensajes disponibles en ruso.
  • El nombre de archivo de los informes generados incluye el nombre del modelo y la hora.

Y muchas otras nuevas funcionalidades y arreglos.

Generación de reportes personalizados desde la lista

En modo lista hay una acción nueva llamada Informe personalizado:

Cuando el usuario pulsa en ella obtiene el siguiente dialogo:

Este diálogo permite al usuario definir su propio informe. Puede añadir y quitar columnas, especificar filtros, ordenaciones y poner el título del informe. Es cierto que esta funcionalidad ya estaba disponible con la acción Generar PDF de toda la vida, porque el usuario siempre ha podido añadir, quitar y mover columnas, y filtrar y ordenar en la lista. Quizás, la única ventaja de la nueva interfaz es que el usuario puede especificar el orden para más de una columna y establecer el título de informe que quiera. Lo importante es que esta nueva forma de generar informes nos permitirá añadir nueva funcionalidad interesante en nuevas versiones como guardar la configuración del informe por nombre para recuperarlo más tarde, especificar etiquetas y longitudes, usar columnas ocultas para filtrar y ordenar, etc.

Editor personalizado para modo lista

El modo lista estándar es bastante potente y perfecto para la mayoría de los casos, pero a veces necesitamos algo especial para nuestra lista. Para cubrir esta necesidad hemos añadido la posibilidad de definir editores personalizados para los @Tab. Por lo tanto, si quieres que la lista de clientes sea visualizada de esta forma:

Has de definir un @Tab en tu entidad como sigue:

@Tab ( name ="Fichas", editor="ListaFichasCliente",
    properties="codigo, nombre, tipo, direccion.ciudad, direccion.provincia.nombre"
)

Y también definir el editor en el archivo editores.xml de tu proyecto:

<editor nombre="ListaFichasCliente" url="fichasClienteListEditor.jsp"/>

Por supuesto, has de escribir fichasClienteListEditor.jsp para visualizar los clientes a tu manera. Puedes ver más detalles sobre cómo escoger un editor para un @Tab en la guía de referencia.

Además, es posible definir un editor para todas las listas de un modelo o incluso para todas la listas de tu aplicación. Mira el capítulo de personalización de la guía de referencia.

Con la adición de la listas ahora tenemos editores para propiedades, referencias, colecciones y listas, de esta manera   la personalización de la interfaz de usuario generada por OpenXava es total. Puedes obtener exactamente la interfaz de que quieras.

Asignar objetos del modelo directamente a la vista

Hasta ahora para poner y coger datos desde una vista basada en una clase transitoria necesitabas usar getView().get/setValue() con valores simples o getView().get/setValues() con mapas, no podías usar objetos del modelo directamente. A partir de OpenXava 4.6 puedes usar objetos del modelo para llenar la vista. Por tanto, un código como este es posible:

RangoFechas rango = … // RangoFechas puedes ser una entidad o una clase transitoria
…
getView().setModel(rango); // Llena la vista con los datos de rango

Este cado llena la vista con los dato del objeto RangoFechas, incluso si la vista no está visualizando en estos momento un RangoFechas se cambia para hacerlo.

Verificar contenido de los PDFs en las pruebas jUnit

Ahora puedes verificar que el contenido de los PDFs generado en tus pruebas jUnit es correcto. Para hacer esto ModuleTestBase tiene los siguientes métodos nuevos: getPopupPDFAsText(), printPopupPDFAsText(), getPopupPDFLine(), assertPopupPDFLine(), assertPopupPDFLinesCount() y getPopupPDFLinesCount(). A partir de ahora puedes escribir código de prueba como el siguiente:

execute("CustomReport.generatePdf"); 	
assertPopupPDFLinesCount(5);
assertPopupPDFLine(1, "Reporte de transportistas jUnit");
assertPopupPDFLine(2, "Nombre Numbre Zona");
assertPopupPDFLine(3, "CUATRO 4 1");

Una buena noticia para todos aquellos que nos gusta las pruebas automáticas.

@RowAction paras colecciones

@RowAction permite definir una acción que se muestre en cada fila, pero no en la barra de botones de la colección. Si escribes un código como este:

@OneToMany(mappedBy="parent", cascade=CascadeType.ALL)
@RowAction("DetallePedido.reducirCantidad")
Collection<DetallePedido> detalles = new ArrayList<DetallePedido>()

Obtienes la siguiente interfaz de usuario para la colección:

Fíjate en que la acción Reducir cantidad está en la fila pero no en la barra de botones. Lee más sobre @RowAction en el wiki.

Y más

Mira la lista de cambios para la lista completa de nuevas características y arreglos.

Te invito a que la descargues y la pruebes.

 

blog comments powered by Disqus