Puede conocer todos los detalles de sus características, documentación adicional, descargas, etc. desde http://aries.seresco.es.



Documentos relacionados
CREAR UN SERVICIO WEB BASICO CON JAVA AXIS2. Víctor J. Sosa

NORMA 34.14(SEPA) 05/11/2013

GUIA APLICACIÓN DE SOLICITUDES POR INTERNET. Gestión de Cursos, Certificados de Aptitud Profesional y Tarjetas de Cualificación de Conductores ÍNDICE

Manual de NetBeans y XAMPP

INSTALACIÓN PHP+MYSQL CON EASYPHP

NORMA (SEPA) 22/11/2013

10. El entorno de publicación web (Publiweb)

CÓMO CREAR NUESTRO CATÁLOGO

MANAUAL DE MANTENIMIENTO PARA LA PÁGINA WEB DE PROYECTO ADL GESTOR DE CONTENIDOS

INDICE. Página 2 de 23

Una plantilla es un documento de Word 2003 con la característica de que el tipo de documento es plantilla de documento (.dot).

MANUAL PARA GESTIÓN DE INCIDENCIAS INFORMÁTICAS

Explotación de Sistemas Informáticos IES Murgi PRÁCTICA 9: SERVICIO WEB Y FTP DE INTERNET INFORMATION SERVICE

Notas para la instalación de un lector de tarjetas inteligentes.

Programa diseñado y creado por Art-Tronic Promotora Audiovisual, S.L.

Web Publishing con LabVIEW (I)

INSTALACIÓN DE ORACLE 8i (8.1.7) SOBRE NT

Heimdal Free POS Guía de instalación y puesta en marcha

PLANTILLAS EN MICROSOFT WORD

CONCEPTOS BASICOS. Febrero 2003 Página - 1/10

WEB SERVICES CON AXIS

INDICE. 1. Introducción El panel Entities view El panel grafico Barra de botones Botones de Behavior...

Manual de usuario Noticias y Accesos Directos en Facultades ÍNDICE

GENERACIÓN DE TRANSFERENCIAS

Plantillas Office. Manual de usuario Versión 1.1

Instalación de Tomcat7 en Ubuntu

PLANTILLAS DE DOCUMENTOS EN WORD 2007

GENERACIÓN DE ANTICIPOS DE CRÉDITO

Claroline, MediaWiki, Moodle y Joomla en Xampp Lite

Tutorial de herramientas de Google

CASO PRÁCTICO. ANÁLISIS DE DATOS EN TABLAS DINÁMICAS

Copias de Seguridad con SQL Server Realizar una copia de seguridad de Bases de Datos

Instalación y Registro Versiones Educativas 2013

Instalación del programa PSPP y obtención de una distribución de frecuencias.

Manual hosting acens

MANUAL DE AYUDA MÓDULO GOTELGEST.NET PREVENTA/AUTOVENTA

INSTALACIÓN DE SIESTTA 2.0 EN UN HOSTING (Ejemplo para Guebs.com)

TEMA 2 WINDOWS XP Lección 4 BLOC DE NOTAS

INSTALAR UBUNTU DESDE WINDOWS

COPIAR CORREOS ENTRE CUENTAS USANDO IMAPSIZE

Manual de configuración de Thunderbird ÍNDICE

INSTALACIÓN DE MEDPRO

AGREGAR UN EQUIPO A UNA RED Y COMPARTIR ARCHIVOS CON WINDOWS 7

1/ XAMPP: más fácil imposible. Vamos directamente a la página de descarga de Apache Friends para Windows

MANUAL DE CONFIGURACIÓN PARA EL ACCESO A RECURSOS-e RED DE BIBLIOTECAS DEL INSTITUTO CERVANTES

INFORMACIÓN PARA LA INSTALACIÓN DEL CERTIFICADO

Manual de usuario de Windows Live Writer

MÓDULO 3 HERRAMIENTAS EN LA NUBE: ANFIX

Aplicateca. Manual de Usuario: Ilion Factura Electrónica. Espíritu de Servicio

MANUAL DE AYUDA MODULO TALLAS Y COLORES

MANUAL DE INSTALACIÓN

MANUAL INSTALACIÓN ABOGADOS MF

Edición de Ofertas Excel Manual de Usuario

Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación. IIC1102 Introducción a la Programación

TUTORIAL PRÁCTICO DE BASES DE DATOS EN ACCESS CREAR UNA AGENDA

Manual para usuarios USO DE ONEDRIVE. Universidad Central del Este

Una App para Facebook

GESTINLIB GESTIÓN PARA LIBRERÍAS, PAPELERÍAS Y KIOSCOS DESCRIPCIÓN DEL MÓDULO DE KIOSCOS

7zip es un programa de carácter libre y gratuito, que permite tanto comprimir como descomprimir archivos, con una alta capacidad de comprensión.

PROGRAMA INFORMÁTICO PARA LA CUMPLIMENTACIÓN DE RECETAS EN FORMATO XML VERSIÓN: 1.0

Presentaciones. Con el estudio de esta Unidad pretendemos alcanzar los siguientes objetivos:

INFORMACIÓN DE NAVEGADORES

Guía para el tratamiento en Allegro de recibos para centros no pertenecientes a la Generalitat Valenciana.

MINI MANUAL PARA CREAR FORMULARIOS CON PHP Marzo 2007

Cómo instalar fácilmente tu WordPress tras contratar un hosting en Hostalia

Manual de usuario del software de marketing de fidelización de clientes Hermes

PHPMYADMIN Y MYSQL. Para gestionar la base de datos MySQL, lo haremos desde la aplicación PhpMyAdmin.

Mi correo con OUTLOOK

En términos generales, un foro es un espacio de debate donde pueden expresarse ideas o comentarios sobre uno o varios temas.

Configuración de un sitio local

Desde esta opción, podremos gestionar los tratamientos de la clínica, donde podremos modificar el nombre del tratamiento, precios, códigos, etc.

Instrucciones para configurar la Plataforma FACe para la aplicación de Gestión Municipal, tanto Simplificada como Básica.

MANUAL DE USUARIO DE LA APLICACIÓN DE ACREDITACION DE ACTIVIDADES DE FORMACION CONTINUADA. Perfil Entidad Proveedora

Internet Information Server

5. Composer: Publicar sus páginas en la web

Instalar protocolo, cliente o servicio nuevo. Seleccionar ubicación de red. Práctica - Compartir y conectar una carpeta

CONFIGURACION AVANZADA DE OUTLOOK EXPRESS 6

OBTENCIÓN Y RENOVACIÓN (*) DEL CERTIFICADO ELECTRÓNICO DE EMPLEADO PÚBLICO DE LA FÁBRICA NACIONAL DE MONEDA Y TIMBRE (FNMT)

MANUAL APLICACIÓN. SOFTWARE GESTIÓN DE CLÍNICAS DENTALES

AGREGAR COMPONENTES ADICIONALES DE WINDOWS

Manual de Procedimiento

Creando una webquests

Practica A. Crear y Administrar Grupos

Selección de los puntos de montaje

COPIAS DE SEGURIDAD CON COBIAN BACKUP INSTALACIÓN Y CONFIGURACIÓN

GVisualPDA Módulo de Almacén

Copias de seguridad con SQL Server 2005 WhitePaper Febrero de 2008

Ambos paquetes simplifican mucho la instalación del servidor en el equipo. Y ambos pueden ser utilizados para la creación de una red intra-aula.

REGISTRAR LOS SITIOS WEB MÁS INTERESANTES

Manual de configuración de Outlook 2010 ÍNDICE

Ayuda para la instalación Componente Firma Digital INDICE. 1 Configuración previa Configuración Internet Explorer para ActiveX...

CITRIX Citrix Application Streaming

La ventana de Microsoft Excel

CUADERNIA 2.0. CÓMO INSTALAR CUADERNIA 2.0 Para instalar Cuadernia debemos seguir los siguientes pasos:

PowerPoint 2010 Manejo de archivos

Una vez que tengamos el padrón de un determinado tributo con todos sus datos actualizados, podemos generar los recibos de ese padrón.

Manual de Instalación Declaración y Liquidación Modelos

Transcripción:

TUTORIAL DE ARIES Contenido Introducción... 1 Qué es Aries... 1 A quién va dirigido este tutorial... 1 Primeros pasos... 2 Preparar nuestro entorno de desarrollo... 2 Comenzar una nueva aplicación.... 2 Ejecutar la aplicación... 4 Establecer el paquete principal de nuestra aplicación... 5 El modelo de datos... 6 Introducción... 6 Nuestro modelo de datos... 6 Escribir las clases Java del modelo.... 7 Gestión de productos... 9 Gestión de pedidos... 13 Las líneas del pedido... 14 Introducción Qué es Aries Muy esquemáticamente: Aries es una plataforma de desarrollo orientada a la creación de aplicaciones JEE Web de Gestión, ricas en interacción, y de alta productividad que utiliza los estándares más aceptados por el mercado y permite la programación 100% Java. Puede conocer todos los detalles de sus características, documentación adicional, descargas, etc. desde http://aries.seresco.es. A quién va dirigido este tutorial Este tutorial va dirigido a programadores que quieran dar los primeros pasos en Aries. Conviene que el programador que lea este tutorial esté familiarizado con los conceptos de JEE. Tutorial Aries - Seresco Página 1

Primeros pasos Preparar nuestro entorno de desarrollo Aries es independiente de la herramienta de desarrollo, aunque se recomienda el uso de Eclipse. En principio, podríamos ir obteniendo los diferentes componentes de desarrollo, cada uno de su lugar correspondiente. Por ejemplo, bajarnos el SDK de Java, el Eclipse, el Tomcat, etc. Sin embargo creemos que resulta más cómodo utilizar la distribución del puesto de desarrollo que ofrece Aries para puestos de desarrollo Windows, en su forma de un programa instalable. En el sitio Web de Aries podemos obtener este instalador. La instalación es muy sencilla y no supone intrusión en la máquina. Solamente crea el directorio c:\aries y un acceso directo a Eclipse en el escritorio. El puesto de trabajo incluye Eclipse, SDK de Java, Tomcat, plugins, etc. Todo el software contenido en este paquete es de libre distribución. Comenzar una nueva aplicación. Vamos a crear una nueva aplicación sobre la que trabajaremos durante este tutorial. Para ello seguimos los siguientes pasos desde Eclipse: Ejecutar: File New Dynamic Web Project. Pulsamos Next y aparece la siguiente pantalla, en la cual nos aseguraremos de dar el nombre de la aplicación, en nuestro caso se llamará pedidos. Si es la primera vez que creamos un proyecto puede que en Target Runtime aparezca "None". En este caso tenemos que pusar el botón "New..." para crear uno. Una vez pulsado "New..." elegimos Apache/Apache Tomcat 6.0 y ponemos como directorio c:\aries\tomcat, pulsamos Finish y ya tenemos creado el Target Runtime. Nos aseguramos también de que aparece seleccionado como target Runtime el Apache Tomcat 6.0. Pulsamos Finish para terminar de crear el proyecto. Tutorial Aries - Seresco Página 2

A continuación vamos a importar la aplicación Plantilla de Aries con lo que conseguiremos obtener todas las librerías necesarias y disponer de unos ficheros fuente con los que empezar. Podemos descargarla del sitio público de Aries. (http://aries.seresco.es/download/plantilla.zip) y dejarla en nuestro disco duro. Luego, vamos al menú de Eclipse y hacemos Import.... En la pantalla que nos aparece elegimos la opción General / Archive File. A continuación elegimos el archivo plantilla.zip que nos hemos descargado. Pulsamos Finish. Cuando salgan mensajes de confirmación de sobrescritura los aceptamos todos. Con estos pasos ya tenemos una aplicación en blanco lista para trabajar con ella. Tutorial Aries - Seresco Página 3

En general, trabajaremos con la perspectiva JEE de Eclipse que nos ofrece un conjunto de ventanas apropiado para este tipo de desarrollo. El aspecto resultante del Eclipse una vez realizados los pasos anteriores sería más o menos como sigue: Ejecutar la aplicación En la pestaña "Servers", que normalmente aparece abajo en nuestro espacio de trabajo debemos añadir el servidor Tomcat 6.0. Esto nos permitirá en lo sucesivo poder arrancarlo, pararlo, añadirle aplicaciones etc. Para ello pinchamos sobre la pestaña servers y pulsamos botón derecho y elegimos new / server y escogemos el Tomcat v6.0 server de la lista. Pulsamos Finish y ya tenemos el servidor preparado. Tutorial Aries - Seresco Página 4

Para ejecutar la aplicación por primera vez necesitamos añadirla al servidor Tomcat que tenemos preparado. Para ello vamos a la ventana Servers y pulsando con botón derecho sobre el servidor Tomcat, elegimos Add and Remove Projects.... Nos aparecerá la siguiente ventana: En ella movemos nuestra aplicación de pedidos sobre los Configured projects. Una vez hecho esto, pulsamos Finish. A continuación arrancamos el servidor pulsando botón derecho sobre él y eligiendo la opción Start. Al hacerlo se activa la ventana Console donde nos aparecen diversas informaciones de depuración. La importante es la última donde debe decir Server Startup in xxx ms. Si el servidor no arranca diciendo que tenemos el puerto 8080 ocupado, debemos dar doble click sobre el servidor y utilizar otro puerto libre cualquiera. en ese caso al probar debemos especificar ese otro puerto en la URL que pongamos en el navegador Ya tenemos arrancado el servidor. Ahora abriremos un navegador, y en él escribimos la dirección: http://localhost:8080/pedidos. Nos aparecerá la aplicación. Algo así como lo siguiente: Como vemos, la aplicación Plantilla nos proporciona un menú de ejemplo básico y una pantalla de bienvenida. Establecer el paquete principal de nuestra aplicación La aplicación plantilla que hemos importado en nuestra aplicación Pedidos se distribuye bajo el paquete es.seresco.plantilla. A continuación convendría modificar este paquete por el que consideremos oportuno para nuestra aplicación. Supongamos que queremos usar el paquete es.seresco.pedidos. Nos aseguraremos primero de elegir la representación de paquetes jerárquica: En la ventana de Project Explorer, pinchamos sobre el triángulo de la cabecera, elegimos Package Presentation y Hierarchical Tutorial Aries - Seresco Página 5

Usamos la opción Refactor - rename de botón derecho situados sobre el paquete es.seresco.plantilla cubrimos la siguiente pantalla: (Es importante marcar todos los check y poner * en el patrón para que lo cambie en todas partes. El modelo de datos Introducción A menudo en el desarrollo de aplicaciones surge la duda de si empezar a desarrollar el modelo de datos desde Java o desde herramientas externas para luego importar en Java. No es competencia de la plataforma determinar un orden determinado. Sin embargo en el tutorial nos interesa desarrollar la aplicación sin la parafernalia de herramientas externas de forma que se pueda hacer todo directamente desde nuestro IDE sin mayores problemas. Para este enfoque Hibernate nos ayudará bastante puesto que es capaz de crear y actualizar la estructura de la base de datos mientras desarrollamos todo ello a partir de las clases Java del modelo. Otra opción, que no vamos a seguir en el tutorial sería utilizar Hibernate-Tools para hacer Ingeniería Inversa, lo cual nos permitiría obtener las clases Java a partir de una estructura de base de datos existente. (Esto se puede consultar en la Wiki de Aries). En este tutorial utilizamos la base de datos HSQLDB (hsqldb.org) que tiene un motor muy liviano y la incluimos en el puesto de desarrollo. Esta base de datos es muy útil para tutoriales y pruebas por su sencillez de configuración. De hecho, tal como viene la aplicación plantilla preparada, no necesitamos configuración adicional ni arrancar ninguna otra tarea ya que el motor está embebido en el servidor. Los datos, físicamente, se guardan en el directorio c:\aries\datos. Nuestro modelo de datos El modelo de datos de la aplicación es gráficamente el siguiente: Tutorial Aries - Seresco Página 6

class tutorial Pedido - codpedido: Integer - fecha: Date 1..* 1 LineaPedido Producto - cantidad: Integer - codarticulo: Integer - codpedido: Integer - linpedido: Integer 1..* 1 - codproducto: Integer - descripcion: String - precio: BigDecim al Es decir, tenemos un conjunto de productos y sobre ellos permitiremos crear pedidos. Cada pedido tiene una o más líneas de pedido y cada línea de pedido hace referencia a un producto y establece una cantidad a vender. Escribir las clases Java del modelo. Las clases del modelo se escriben en el paquete datos por debajo del paquete de aplicación. Se utilizan anotaciones JPA para definir con precisión las propiedades de la tabla, claves, relaciones y datos. Crearemos primero la Entidad Producto. Para ello vamos al paquete es.seresco.pedidos.datos y sobre él elegimos la opción de botón derecho new Class, le damos el nombre Producto y escribimos el siguiente código: package es.seresco.pedidos.datos; import java.math.bigdecimal; import javax.persistence.*; @Entity public class Producto { private Integer codproducto; private String descripcion; private BigDecimal precio; @Id @Column(length=8) public Integer getcodproducto() { return codproducto; @Column(length=50) public String getdescripcion() { return descripcion; @Column(length=10, scale=2) public BigDecimal getprecio() { return precio; public void setcodproducto(integer codproducto) { this.codproducto = codproducto; public void setdescripcion(string descripcion) { this.descripcion = descripcion; Tutorial Aries - Seresco Página 7

public void setprecio(bigdecimal precio) { this.precio = precio; Prestemos atención a lo siguiente: Nótese que la clase es un simple Bean de Java con sus datos privados y sus métodos get y set. La clase tiene la anotación @Entity. La clave principal va marcada con la anotación @Id. Los métodos get tienen la anotación @Column para ayudar a completar la información que Aries más tarde utilizará, por ejemplo, para establecer máscaras de edición. Crearemos la entidad Pedido siguiendo la misma idea: package es.seresco.pedidos.datos; import java.util.date; import javax.persistence.*; @Entity public class Pedido { private Integer codpedido; private Date fecha; @Id @Column(length=8) @GeneratedValue(strategy=GenerationType.TABLE) public Integer getcodpedido() { return codpedido; public Date getfecha() { return fecha; public void setcodpedido(integer codpedido) { this.codpedido = codpedido; public void setfecha(date fecha) { this.fecha = fecha; Nos queda por declarar la entidad LineaPedido que es la más compleja por una parte por tener una relación al menos con la entidad Producto. Declararemos así la clase: package es.seresco.pedidos.datos; import javax.persistence.*; @Entity public class LineaPedido { private Integer lineapedido; private Integer codpedido; private Producto producto; private Integer cantidad; @Id @Column(length=8) @GeneratedValue(strategy=GenerationType.TABLE) public Integer getlineapedido() { Tutorial Aries - Seresco Página 8

return lineapedido; public Integer getcodpedido() { return codpedido; @ManyToOne(fetch=javax.persistence.FetchType.LAZY, targetentity=producto.class) @JoinColumn(name="CODPRODUCTO") public Producto getproducto() { return producto; @Column(length=8) public Integer getcantidad() { return cantidad; public void setlineapedido(integer lineapedido) { this.lineapedido = lineapedido; public void setcodpedido(integer codpedido) { this.codpedido = codpedido; public void setproducto(producto producto) { this.producto = producto; public void setcantidad(integer cantidad) { this.cantidad = cantidad; Y prestaremos atención a lo siguiente: Podríamos haber hecho un diseño de la clase con clave compuesta por codpedido y linpedido, pero por simplicidad lo hacemos de clave simple, que además es la opción recomendada por Hibernate. Para declarar la relación con la entidad Producto hemos utilizado las anotaciones ManyToOne y JoinColumn. Gestión de productos Vamos a crear una función para buscar, crear, consultar, modificar y borrar productos. Situados en el proyecto pedidos pulsamos botón derecho - New y elegimos Pantalla. Tutorial Aries - Seresco Página 9

En la pantalla del asistente que aparece a continuación elegimos el tipo Gestión, elegimos la entidad principal que vamos a manejar que es Producto, le damos un nombre, y un título. Marcamos también la opción de Generar búsqueda para que nos genere una pantalla de búsqueda y la damos un nombre y un título a la búsqueda. Pulsamos Finish, y como resultado obtendremos los fuentes Java y XML de las pantallas de Gestión y de Búsqueda. Cada pantalla en Aries se compone de dos ficheros: 1. Diseño: Es la Vista de la pantalla. Se trata de un fichero XML que define los componentes que colocamos en la pantalla. 2. Controlador: Es la clase Java que controla los eventos y el funcionamiento de la pantalla. El asistente nos ha generado dos pantallas. La búsqueda y la gestión. Comenzamos editando el fichero ProductoBusqueda.xml. Las búsquedas tienen dos partes bien diferenciadas. Los criterios y los resultados. Introduciremos campos para poder establecer criterios de búsqueda y también introduciremos campos para mostrar los resultados El asistente nos ha dejado dos marcas para que sepamos dónde introducir ambas partes. Comenzamos por los criterios: Introducimos lo que aparece en negrita a continuación: <Bloque titulo="criterios"> <Grid > <TextField id="producto.codproducto" etiqueta="código"/> <TextField id="producto.descripcion" etiqueta="descripción"/> </Grid> </Bloque> Luego, en la zona de resultados escribiremos: <Tabla id="resultados" height="400"> <TextField id="codproducto" etiqueta="código"/> <TextField id="descripcion" etiqueta="descripción"/> <TextField id="precio" etiqueta="precio"/> </Tabla> Ahora vamos a editar el fichero ProductoGestion.xml que es la definición de la pantalla de gestión donde vamos a poder crear, consultar, modificar y borrar productos. En ella declaramos los campos que queremos gestionar: <Grid size="1"> <Grid > <TextField id="producto.codproducto" etiqueta="código"/> <TextField id="producto.descripcion" etiqueta="descripción"/> <TextField id="producto.precio" etiqueta="precio"/> </Grid> <Include ref="plantillas/botoneragestion.xml"/> </Grid> Tutorial Aries - Seresco Página 10

Ahora solamente nos queda por añadir una referencia a la función de búsqueda de productos en el menú general. Vamos entonces a editar el fichero src/recursos/menus/menuescritorio.xml e introducimos lo que aparece en negrita a continuación: <Opcion texto="$menu.basicos" > <Opcion texto="productos" id="productobusqueda"/> </Opcion> Ahora ya estamos listos para probar esta funcionalidad. Vamos a la ventana de Servers y pulsamos de nuevo el botón de arrancar el servidor para asegurar que nos coge los últimos cambios. Con el navegador vamos a la aplicación y abrimos la opción Productos y vemos cómo nos ha quedado la pantalla de búsqueda. Desde ella podremos ir a crear nuevos productos pulsando el botón Nuevo.... Introducimos los datos del nuevo producto y pulsamos Grabar. Tutorial Aries - Seresco Página 11

Luego, podemos volver a la búsqueda, aceptar los criterios y ver los registros que hayamos creado. Tutorial Aries - Seresco Página 12

Gestión de pedidos Crearemos a continuación la gestión de pedidos. Seguimos los mismos pasos que habíamos seguido para crear la de productos: Mediante la opción de botón derecho New PAntalla accedemos al asistente y cubrimos los datos tal como se ve en esta imagen. Nos aseguramos de marcar Generar Búsqueda y de cubrir los nombres y títulos. La entidad principal es Pedido. Pulsamos Finish Obtenemos los ficheros de diseño y control de las pantallas de búsqueda y gestión de pedidos. Del mismo modo que hicimos con los productos, introduciremos los campos en las zonas de criterios, resultados de la búsqueda y en la gestión. Criterios de la búsqueda: <Bloque titulo="criterios"> <Grid > <TextField id="pedido.codpedido" etiqueta="código"/> <Row etiqueta="entre fechas"> <CampoFecha id="pedido.fecha.min" /> <CampoFecha id="pedido.fecha.max" etiqueta="y"/> </Row> </Grid> </Bloque> En este caso hemos decidido poner como criterio el rango de fechas. Nótese que el sufijo.min,.max permite a Aries conocer nuestras intenciones sobre el criterio que queremos que aplique. Resultados: <Tabla id="resultados" height="400"> <TextField id="codpedido" etiqueta="código"/> <CampoFecha id="fecha" etiqueta="fecha"/> </Tabla> En la gestión de pedidos: <Grid size="1"> <Grid > <TextField id="pedido.codpedido" etiqueta="código"/> <CampoFecha id="pedido.fecha" etiqueta="fecha"/> </Grid> <Include ref="plantillas/botoneragestion.xml"/> </Grid> Añadirlo al menú general: Tutorial Aries - Seresco Página 13

<Opcion texto="$menu.basicos" > <Opcion texto="productos" id="productobusqueda"/> <Opcion texto="pedidos" id="pedidobusqueda"/> </Opcion> Las líneas del pedido Ahora queremos añadir líneas al pedido para darle la funcionalidad requerida. Lo haremos editando el fichero PedidoGestion.xml y añadiendo lo siguiente: <Grid size="1"> <Bloque titulo="datos generales"> <Grid > <TextField id="pedido.codpedido" etiqueta="código" enabled="false"/> <CampoFecha id="pedido.fecha" etiqueta="fecha"/> </Grid> </Bloque> <Bloque titulo="detalle"> <GrupoTablaGestion entidad="lineapedido" camposcabecera="pedido.codpedido" camposdetalle="codpedido"> <Tabla id="lineapedido"> <Label id="estado"/> <TextField id="lineapedido.lineapedido" visible="false"/> <CampoConBusqueda id="lineapedido.producto.codproducto" etiqueta="producto" idboton="buscarproducto"/> <TextField id="lineapedido.producto.descripcion" etiqueta="descripción" enabled="false"/> <TextField id="lineapedido.producto.precio" etiqueta="precio" enabled="false"/> <TextField id="lineapedido.cantidad" etiqueta="cantidad"/> <TextField id="importe" edicion="n:##,###,##0.00" enabled="false" etiqueta="importe"/> </Tabla> </GrupoTablaGestion> </Bloque> <Include ref="plantillas/botoneragestion.xml"/> </Grid> Con este diseño de pantalla ya podemos insertar líneas al pedido aunque de momento aún no se muestra la descripción, ni el precio del artículo, ni el importe. Para ello tendremos ya que escribir código en Java. Mostrar la descripción y el precio del producto al introducirlo. Queremos que cada vez que se modifica el código de producto se muestre su descripción y precio asociados. Tutorial Aries - Seresco Página 14

1. Declaramos la relación entre LineaPedido y Producto escribiendo lo siguiente en el método inicializar de PedidoGestion. getmanejadorrelaciones().getrelacion(introspector.getnombreentidad(lineapedido.class)).addrelacion( new Relacion("lineaPedido.producto", Producto.class, new MapeadorBasico(this,"lineaPedido.producto.codProducto","codProducto") ) ); Mediante este código le hemos dicho a Aries que debe considerar que el campo lineapedido.producto.codproducto es clave origen de una relación con la entidad Producto, de tal forma que cada vez que el usuario introduzca un código de producto y pulse INTRO se cargarán los datos de la relación, en este caso la descripción y el precio. Acceder a la búsqueda de productos Podemos comprobar que en el diseño de la pantalla para el campo codproducto hemos decidido utilizar un componente llamado CampoConBusqueda. <CampoConBusqueda id="lineapedido.producto.codproducto" etiqueta="producto" idboton="buscarproducto"/> Este componente hace que se muestre un botón al lado del campo que permitirá al usuario elegir el código de producto mediante una pantalla de búsqueda que será precisamente la misma pantalla de búsqueda de productos que hemos desarrollado unos pasos atrás. Para que esto funcione tenemos que implementar en la parte Java el evento de pulsación del botón buscarproducto. Así: public void dobuscarproducto() { LlamadasUtil.llamarBusqueda(this, ProductoBusqueda.class, "codproducto", "lineapedido.producto.codproducto"); Mostrar el importe de cada fila Queremos mostrar el importe de cada fila según se introduce la cantidad, y también al mostrar pedidos ya creados. El importe de cada fila es el resultado de multiplicar el precio por la cantidad. En el diseño de la pantalla ya hemos preparado una columna dentro de la tabla para mostrar el importe. Era este: <TextField id="importe" edicion="n:##,###,##0.00" enabled="false" etiqueta="importe"/> Podemos prestar atención a dos hechos: Hemos tenido que especificar una máscara de edición dado que este campo no pertenece al modelo y Aries no puede deducir la máscara de las anotaciones JPA. Nótese que para el resto de campos que hemos declarado no ha sido necesario introducir esta máscara. Lo declaramos con el atributo enabled= false para indicar que es un campo sólo de consulta. Para mostrar el importe vamos a añadir un escuchador al modelo de la tabla. El Modelo de la tabla es realmente el contenido de la misma y añadir un escuchador consiste en escribir código Java que será invocado cada que el contenido de la tabla cambie. Así: 1. Para facilitar el acceso a los componentes, utilizando el asistente de Aries vamos a generar una clase llamada Constantes que contendrá los nombres de los controles que tenemos en la pantalla. Así podremos referirnos a ellos con seguridad de no equivocarnos. Para ello pulsamos botón derecho sobre la clase Java PedidoGestion y elegimos la opción Aries Generar literales de componentes. Como resultado obtenemos la clase Constantes con todos los nombres de componentes. Tutorial Aries - Seresco Página 15

2. Declaramos una instancia de la tabla a nivel de la clase: // En la clase. private Tabla tabla; 3. Y la inicializamos dentro del método inicializar // Dentro de inicializar... tabla=getcomponent(constantes.lineapedido); 4. Ahora tenemos que añadir código al programa Java para que se realice el cálculo en los momentos precisos. Con este código añadimos un escuchador a los cambios del modelo de la tabla para calcular el importe siempre que cambie cualquier columna que no sea el importe mismo. De esta forma se calculará el importe tanto en la carga de la tabla como cuando el usuario modifique el precio o la cantidad. RelacionMultiple rel=(relacionmultiple)getmanejadorrelaciones().getrelacion(constantes.lineapedido); rel.getgestortabla().addtablemodellistener(new TableModelListener() { public void tablechanged(tablemodelevent evento) { if(evento.getfirstrow()>=0 && evento.getfirstrow()<tabla.getmodel().getrowcount() && evento.getcolumn()!=tabla.getindicecolumna(constantes.importe)) { calcularimporte(evento.getfirstrow()); ); 5. Por último escribimos el método calcularimporte: public void calcularimporte(integer row) { GestionTableModel modelo = (GestionTableModelEnLinea) tabla.getmodel(); BigDecimal cantidad = modelo.getnumeroat(constantes.lineapedido_cantidad, row); BigDecimal preciovta = modelo.getnumeroat( Constantes.PRODUCTO_PRECIO, row); BigDecimal importe=preciovta.multiply(cantidad); modelo.setvalueat(importe, Constantes.IMPORTE, row); Y con esto ya hemos conseguido que se actualice el importe para cada fila. Tutorial Aries - Seresco Página 16