openxava
Blog

29 de julio del 2020

OpenXava 6.4 liberado

OpenXava 6.4 no cuenta con nuevas características espectaculares, en vez de eso está optimizado para los novatos, gracias al nuevo OpenXava Studio, y contiene muchas funcionalidades realmente prácticas pedidas insistentemente por los usuarios expertos durante años, pero que se han ido postergando por no ser suficientemente llamativas. Esta versión es para vosotros, novatos, y para vosotros, usuarios de toda la vida.

Te invitamos a que descargues esta nueva versión y actualices tus aplicaciones OpenXava. Mira las instrucciones de migración.

Descarga OpenXava 6.4 para Windows
Descarga OpenXava 6.4 para Linux
Descarga OpenXava 6.4 para Mac

OpenXava Studio

Más rápido y bonito que cualquier Eclipse que hayas visto jamas. Para arrancarlo ejecuta openxava.exe (para Windows) o openxava (para Linux y Mac), que tienes en la raíz de la distribución. Verás una pantalla de arranque como esta:


Y en unos pocos segundos podrás disfrutar de un nuevo y oscuro mundo:


No es simplemente un tema dark, sino que cuenta con iconos monocromo y unas bonitas barras de desplazamiento, nada que ver con el tema Dark de Eclipse (usamos DevStyle). OpenXava Studio está basado en Eclipse por lo que no necesitas aprender nada nuevo, pero hemos quitado todos los plugins innecesarios que incluso las distribuciones más básicas de Eclipse tienen. También incluimos un JRE de código abierto (llamado Zulu) y hemos optimizado el workspace para que compile muy rápido.
Por lo que ahora puedes descargar OpenXava en una máquina virgen (sin Java ni Eclipse), descomprimirlo, hacer un clic y empezar a trabajar, sin instalar nada. Y trabajarás más rápido que nunca.
Puedes personalizar la apariencia (y poner un tema más claro si lo prefieres) o añadir cualquier plugin disponible para Eclipse. Y por supuesto, puedes continuar usando Eclipse o IntelliJ si así lo deseas.

Buscar por el contenido de una colección en modo lista

Ahora es posible definir una propiedad de una colección en @Tab, por lo que el usuario puede buscar por esa propiedad, es decir por el contenido de la colección en modo lista. Por ejemplo, podríamos tener un módulo Factura y querer saber que facturas tienen líneas de detalles de cierto producto. Algo así como esto:

@Tab(properties="anyo, numero, fecha, cliente.nombre, lineas.producto.descripcion")
public class Factura {

    ...
    
    @ElementCollection // o @OneToMany
    private Collection<LineaFactura> lineas;

}

@Embeddable // o @Entity
public class LineaFactura {

    ...

    @ManyToOne
    private Producto producto; // Con una propiedad descripcion

}


Fíjate que ponemos lineas.producto.descripcion en las propiedades del @Tab donde lineas es una colección. El resultado es este:

En el ejemplo de arriba el usuario teclea 'IBM' para Producto de líneas (lineas.producto.descripcion) y la lista muestra las facturas que contienen líneas de detalle cuya descripción de producto contiene 'IBM'.

Import data support references

En OpenXava 5.8 introdujimos una utilidad en modo lista que permitía importar datos desde CSV y Excel. Originalmente esta utilidad permitía importar sólo propiedades planas. Decíais que esta funcionalidad era muy útil pero con la habilidad de importar referencias sería perfecta, prácticamente podríamos evitar la necesidad de escribir procesos de importación a mano nunca más. Hemos oidos vuestra plegarias y ahora podéis importar datos con referencias desde el modo lista.
Por ejemplo, si tienes una clase Cita con una referencia a TipoCita:

public class Cita extends Identifiable {
    
    @ManyToOne(fetch=FetchType.LAZY)
    private TipoCita tipo;


Donde TipoCita tiene una clave compuesta, tipo y nivel, cuando importes datos tendrás la opción de importar los datos para tipo también, así:

IFilter en @DescriptionsList

Como ya sabes puedes usar un IFilter en el @Tab para dar valor a los parametros que tienes en la condición. Por otra parte, con @DescriptionsList puedes definir tu propias condiciones, donde puedes usar parametros que se pueden llenar con los valores tecleados por el usuario en otros campos de la interfaz de usuario, pero no tiene ninguna forma de llenar esos valores con tu propia lógica, hasta ahora. A partir de ahora, puedes asignar un IFilter a un @DescritptionsList de la misma manera que lo haces para un @Tab, como en este ejemplo:

@ManyToOne(fetch=FetchType.LAZY)
@DescriptionsList(
    descriptionProperties = "anyo, numero, cliente.nombre",
    filter=FiltroAnyoActivo.class,
    condition = "${anyo} = ?")
private Factura factura;


Aquí el combo para facturas sólo muestra las del año activo. En este caso el valor para el parametro en la condición "${anyo} = ?" se rellena con la lógica de FiltroAnyoActivo, que es un IFilter como los que usamos en @Tab.

INTRO para mover al siguiente campo

El estándar de la web es usar TAB para mover al siguiente campo e INTRO (también conocido como ENTER o RETURN) para aceptar la página. Las aplicaciones OpenXava son aplicaciones web y por lo tanto siguen este estándar. Podriamos pensar que internet y los navegadores son tan ubicuos que todo ser humano sobre la faz de la tierra tiene interiorizado este comportamiento. Lamentablemente, esto no es así. Muchos usuarios de aplicaciones de gestión usan aplicaciones de escritorio antiguas donde el INTRO se usa para moverse el siguiente campo, y se enfadan, se enfadan mucho, se ponen furiosos cuando al intentar cambiar de campo lo que ocurre es que graban el registro entero. Y dado que nuestro propósito en la vida es hacer felices a nuestros usuarios hemos añadido una nueva opción en OpenXava para que tu aplicación use INTRO para moverse al siguiente campo. Simplemente edita el archivo xava.properties de tu proyecto y añade la siguiente línea:

enterMovesToNextField=true

Otras mejoras

Hemos hecho muchas mejoras en otras áreas:

  • Nuevo atributo filter en <descriptions-list> de los componentes XML para usar un IFilter.
  • Guía de primeros pasos simplificada y adaptada para usar OpenXava Studio.
  • Lección 5 del curso actualizada a las últimas características.
  • Mensaje de confirmación al crear incluye el valor de los campos si estos son generados al grabar.
  • Propiedades de total permitidas en una @ElementCollection de una clase base.
  • View.setLabelId() para permitir cambiar la etiqueta de una sección o grupo.
  • Nuevo método assertLabel(int indiceSeccion, String etiquetaEsperada) en ModuleTestBase.
  • Mejorado modo detalle en InvoiceDemo.
  • Cabecera con camino de migas en cada página de la documentación.
  • Navegación entre capítulos encima de la tabla de contenidos en el curso y la guía de referencia.
  • Los vínculos en la documentación ya no abren una nueva ventana o pestaña.
  • Estilo de la documentación adaptado para encajar mejor dentro de OpenXava Studio.
  • Título HTML más descriptivo en cada página de la documentación. 
  • IThemeProvider para definir tu propia lógica para escoger el tema actual.
  • Etiquetas automáticas para miembros de referencias mejorado.
  • Traducción al ruso mejorada incluyendo las etiquetas para las últimas versiones.

Arreglos

Aunque esta no es una versión de mantenimiento hemos arreglado algo:

  • Arreglo: Combinar herencia, tipos genéricos y @ReferenceView falla.
  • Arreglo: @DefaultValueCalculator no funciona para propiedades de total de una colección si se usa @View.
  • Arreglo: assertTotalInCollection() en las pruebas no funciona con propiedades MONEY.
  • Arreglo: Barra de desplazamiento horizontal en modo lista con descripciones de configuración demasiado largas.
Descarga OpenXava 6.4 para Windows
Descarga OpenXava 6.4 para Linux
Descarga OpenXava 6.4 para Mac

blog comments powered by Disqus

English - 中文