openxava
Blog

25 de septiembre del 2019

OpenXava 6.2 liberado

Esta nueva y reluciente 6.2 incluye dos grandes novedades: subida de archivos sin recarga de página y usando arrastrar y soltar, y una distribución simplificada para mejorar la experiencia del programador. Adicionalmente, incluimos un montón de nuevas características menores, pero muy útiles, además de arreglar algunos fallos.

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

Descarga OpenXava 6.2

Nuevos editores para los estereotipos FOTO, IMAGEN, GALERIA_IMAGENES, ARCHIVO y ARCHIVOS

Estos nuevos editores suben los archivos vía AJAX, sin recargar la página y tus usuarios puedes usar arrastrar y soltar si lo desean. Esto es un ejemplo del estereotipo FOTO: 

Este uno de GALERIA_IMAGENES:

Fíjate como ahora la galería está en línea, el usuario no necesita abrir un diálogo para ver las imágenes. Si el usuario no quiere ver la imágenes puede simplemente plegar el marco.
Esto es un pantallazo de ARCHIVO y ARCHIVOS:

La buena noticia es que no necesitas cambiar tu código ni actualizar tu base de datos. Simplemente actualiza tu aplicación a OpenXava 6.2 y tus usuarios disfrutarán de manejar sus archivos e imágenes existentes de la nueva manera.

Subir archivos vía AJAX

Cuando quieras cargar tu propio archivo para procesarlo a tu manera, puedes hacerlo usando AJAX de una manera muy simple. El primer paso es crear una clase transitoria que incluya un propiedad de tipo org.apache.commons.fileupload.FileItem:

package com.tuempresa.tuaplicacion.model;

import java.time.*;
import org.apache.commons.fileupload.*;

public class MostrarArchivo {
		
    private FileItem archivo;
    private LocalDate fecha;

    public FileItem getArchivo() {
        return archivo;
    }

    public void setArchivo(FileItem archivo) {
        this.archivo = archivo;
    }

    public LocalDate getFecha() {
        return fecha;
    }

    public void setFecha(LocalDate fecha) {
        this.fecha = fecha;
    }

}
Fíjate como puedes tener más propiedades aparte de archivo, como la propiedad fecha en este caso.
Ahora has de definir un módulo en aplicacion.xml porque las clases transitorias no se reconocen automáticamente como módulos:
<modulo nombre="MostrarArchivo">
    <modelo nombre="MostrarArchivo"/>
    <controlador nombre="MostrarArchivo"/>
</modulo>
Lo siguiente es definir el controlador con la acción que procesa el archivo. Añádelo en controladores.xml:
<controlador nombre="MostrarArchivo">
    <accion nombre="mostrarArchivo"
        clase="com.tuempresa.tuaplicacion.acciones.AccionMostrarArchivo"/>    
</controller>
Para finalizar, la lógica que procesa el archivo cargado:
package com.tuempresa.tuaplicacion.acciones;

import java.time.*;

import org.apache.commons.fileupload.*;
import org.openxava.actions.*;

public class AccionMostrarArchivo extends ViewBaseAction {

    public void execute() throws Exception {
        FileItem archivo = (FileItem) getView().getValue("archivo");
        LocalDate fecha = (LocalDate) getView().getValue("fecha");
        addMessage(archivo.getName() + " mostrado el: " + fecha);
        addMessage(archivo.getName() + " contenido: " + archivo.getString());
    }

}
En este caso simplemente mostramos el contenido como una cadena en un mensaje, pero tú puedes hacer cualquier cosa imaginable con el archivo usando la API de FileItem. Fíjate como usamos otras propiedades de la vista, fecha en este caso, de la forma habitual.

El código de arriba es sólo un ejemplo. La idea es que defines una propiedad de tipo FileItem y puedes usarla como una propiedad normal y corriente, sin preocuparte por JSPs, servlets, etc. Simplemente funciona como cualquier otra propiedad. La forma tradicional para subir archivos todavía funciona, por lo que tu antiguo código seguirá funcionando como siempre, sin AJAX por supuesto. 

Distribución simplificada

Experiencia del programador. Posiblemente este concepto ni siquiera exista. Trabajamos duro para que nuestros usuarios tenga una buena experiencia con nuestros productos, pero ¿qué pasa con nosotros mismos? Hoy día, configurar un entorno de desarrollo para trabajar con una nueva tecnología puede costar días, incluso para desarrolladores expertos. En OpenXava siempre hemos trabajado en contra de esta tradición, y con esta nueva versión 6.2 hemos dado una vuelta de tuerca más, con estas simplificaciones:

  • Los proyectos pueden lanzarse directamente con Run As > Application en Eclipse.
  • Ya no necesitamos tener un Tomcat instalado para desarrollo.
  • Eclipse for Java Developers es suficiente, ya no es necesario usar Eclipse for Java Enterprise Developers.
  • Cada nuevo proyecto incluye DBManager para lanzar el explorador de HSQLDB.
  • La guía de primeros pasos simplificada.
  • Guía de inicio rápido quitada.
  • Guía para desplegar en Tomcat.
  • Documentación para configurar MySQL, PostgreSQL, Oracle, Microsoft SQL Server, AS/400, Informix, Db2 y Firebird.
  • Proyecto de demo MySchool ya no se incluye en la distribución.
  • Proyectos OpenXavaTemplate y OpenXavaPlantilla quitados de la distribución.
  • CreateNewProject.xml y CrearNuevoProyecto.xml disponibles directamente en el proyecto OpenXava.

El efecto es que puedes crear y ejecutar un proyecto nuevo en segundos. No necesitas configurar un Tomcat, o crear una base de datos, o configurar una fuente de datos, o ... nada, no necesitas configurar nada. Después de crear un proyecto los puedes ejecutar directamente de esta forma:

Esto significa que los novatos van a tener menos problemas para empezar con OpenXava, pero también es útil para los usuarios expertos, porque usar el Eclipse para Java (el más simple) y arrancar/parar la aplicación sin el Tomcat es bastante más rápido.

Otras mejoras

Hemos hecho muchas mejoras en otras áreas:

  • La imágenes del estereotipo FOTO se muestran pequeñitas en modo lista.
  • Importar datos en modo lista usa AJAX para subir los archivos CSV/Excel.
  • Nuevo métodos uploadFile(), removeFile(), assertFile(), assertNoFile() y assertFilesCount() en ModuleTestBase.
  • Nueva clase WithFileItem para usar como clase transitoria en diálogos o vistas que simplemente quieran subir un archivo.
  • InvoiceDemo incluye ejemplos de los estereotipos FOTO y GALERIA_IMAGENES.
  • Workspace de la distribución actualizado a Eclipse 2019-09, aunque todavía funciona bien con Neon (4.6).
  • Podemos poner hasta 50 filas por página en modo lista.
  • Límite de tamaño para el estereotipo MEMO/TEXTO_GRANDE para evitar páginas excesivamente grandes.
  • Agrupar en modo lista tiene una entrada año y mes para cada propiedad LocalDate.
  • Filtrar por año, mes y año/mes en modo lista para columnas LocalDate.
  • Las lecciones de la 1 a la 3 del curso usan LocalDate en lugar de Date.
  • @ReadOnly(onCreate=false) para que el miembro sea editable al crear y de sólo lectura en todos los demás casos.
  • Clase DBServer para arrancar un HSQLDB y su explorador.
  • Algunos métodos de SaveAction, CreateNewElementInCollectionAction y SaveElementInCollection se hacen protegidos para una mejor reutilización.
  • Los métodos setHidden() y setEditable() de View acceptan nombres de miembros calificados. 
  • Especificar el nombre de la aplicación al crear una nueva prueba ya no es necesario.
  • Algunas nuevas etiquetas de uso común en aplicaciones.
  • Los mensajes de advertencia de DWR ya no se muestran en el log.
  • Commons Codec API disponible para ser usada en las aplicaciones.
  • Servlet API 4.0 incluido, aunque todavía somos compatibles con Servlet 3.0.
  • Nueva propiedad smtpFromEmail property en xava.property para definir un 'from' diferente de smtpUserId en los correos electrónicos. 
  • Nuevo método isIE() y isFF() en la clase de utilidad Browsers.

Arreglos

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

  • Arreglo: Estado independiente por pestaña del navegador para el mismo módulo falla en nginx.
  • Arreglo: Algunos vínculos rotos en el menú del capítulo Vista de la guía de referencia en español.
  • Arreglo: assertDiscussionCommentsCount() de ModuleTestBase no funciona cuando el CSS está desactivado.
  • Arreglo: Editores con format=false y sin formateador fallan si el tipo no tiene un editor asociado.
  • Arreglo: Servlets no usados definidos en web.xml.
  • Arreglo: Imágenes rotas cuando el estereotipo FOTO no tiene imagen en el modo lista.
Descarga OpenXava 6.2

blog comments powered by Disqus

English - 中文