Documentos de Académico
Documentos de Profesional
Documentos de Cultura
tutorialARIES PDF
tutorialARIES PDF
Contenido
Introduccin..........................................................................................................................................................................................1
Qu es Aries......................................................................................................................................................................................1
A quin va dirigido este tutorial........................................................................................................................................................1
Primeros pasos .....................................................................................................................................................................................2
Introduccin......................................................................................................................................................................................6
Nuestro modelo de datos.................................................................................................................................................................6
Escribir las clases Java del modelo....................................................................................................................................................7
Gestin de productos............................................................................................................................................................................9
Gestin de pedidos..............................................................................................................................................................................13
Introduccin
Qu es Aries
Muy esquemticamente: Aries es una plataforma de desarrollo orientada a la creacin de aplicaciones JEE Web de Gestin, ricas
en interaccin, y de alta productividad que utiliza los estndares ms aceptados por el mercado y permite la programacin 100%
Java.
Puede conocer todos los detalles de sus caractersticas, documentacin adicional, descargas, etc. desde http://aries.seresco.es.
Sin embargo creemos que resulta ms cmodo utilizar la distribucin 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
instalacin es muy sencilla y no supone intrusin en la mquina. 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 distribucin.
Ejecutar la aplicacin
En la pestaa "Servers", que normalmente aparece abajo en
nuestro espacio de trabajo debemos aadir el servidor Tomcat
6.0. Esto nos permitir en lo sucesivo poder arrancarlo,
pararlo, aadirle aplicaciones etc. Para ello pinchamos sobre
la pestaa servers y pulsamos botn derecho y elegimos new /
server y escogemos el Tomcat v6.0 server de la lista. Pulsamos
Finish y ya tenemos el servidor preparado.
Como vemos, la aplicacin Plantilla nos proporciona un men de ejemplo bsico y una pantalla de bienvenida.
El modelo de datos
Introduccin
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 aplicacin 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 opcin, que no vamos a seguir en el tutorial sera utilizar Hibernate-Tools para hacer Ingeniera Inversa, lo cual nos
permitira 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 configuracin. De hecho, tal como viene la
aplicacin plantilla preparada, no necesitamos configuracin adicional ni arrancar ninguna otra tarea ya que el motor est
embebido en el servidor. Los datos, fsicamente, se guardan en el directorio c:\aries\datos.
Pedido
1
1..*
LineaPedido Producto
- canti dad: Integer - codProducto: Integer
- codArti cul o: Integer
1..* 1 - descri pci on: S tring
- codPedi do: Integer - preci o: B igDeci m al
- l inP edido: Integer
Es decir, tenemos un conjunto de productos y sobre ellos permitiremos crear pedidos. Cada pedido tiene una o ms lneas de
pedido y cada lnea de pedido hace referencia a un producto y establece una cantidad a vender.
Crearemos primero la Entidad Producto. Para ello vamos al paquete es.seresco.pedidos.datos y sobre l elegimos la opcin
de botn derecho new Class, le damos el nombre Producto y escribimos el siguiente cdigo:
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;
}
Ntese que la clase es un simple Bean de Java con sus datos privados y sus mtodos get y set.
Los mtodos get tienen la anotacin @Column para ayudar a completar la informacin que Aries ms tarde utilizar,
por ejemplo, para establecer mscaras de edicin.
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;
}
Nos queda por declarar la entidad LineaPedido que es la ms compleja por una parte por tener una relacin 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() {
@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;
}
Podramos haber hecho un diseo de la clase con clave compuesta por codPedido y linPedido, pero por simplicidad lo
hacemos de clave simple, que adems es la opcin recomendada por Hibernate.
Para declarar la relacin con la entidad Producto hemos utilizado las anotaciones ManyToOne y JoinColumn.
Gestin de productos
Vamos a crear una funcin para buscar, crear, consultar, modificar y borrar productos.
1. Diseo: 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.
Comenzamos editando el fichero ProductoBusqueda.xml. Las bsquedas tienen dos partes bien diferenciadas. Los criterios y los
resultados. Introduciremos campos para poder establecer criterios de bsqueda y tambin introduciremos campos para mostrar
los resultados El asistente nos ha dejado dos marcas para que sepamos dnde introducir ambas partes.
Ahora vamos a editar el fichero ProductoGestion.xml que es la definicin de la pantalla de gestin 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="Cdigo"/>
<TextField id="producto.descripcion" etiqueta="Descripcin"/>
<TextField id="producto.precio" etiqueta="Precio"/>
</Grid>
<Include ref="plantillas/BotoneraGestion.xml"/>
</Grid>
Ahora ya estamos listos para probar esta funcionalidad. Vamos a la ventana de Servers y pulsamos de nuevo el botn de
arrancar el servidor para asegurar que nos coge los ltimos cambios.
Pulsamos Finish
Obtenemos los ficheros de diseo y control de las pantallas de bsqueda y gestin de pedidos. Del mismo modo que hicimos con
los productos, introduciremos los campos en las zonas de criterios, resultados de la bsqueda y en la gestin.
Criterios de la bsqueda:
<Bloque titulo="Criterios">
<Grid >
<TextField id="pedido.codPedido" etiqueta="Cdigo"/>
<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. Ntese 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="Cdigo"/>
<CampoFecha id="fecha" etiqueta="Fecha"/>
</Tabla>
En la gestin de pedidos:
<Grid size="1">
<Grid >
<TextField id="pedido.codPedido" etiqueta="Cdigo"/>
<CampoFecha id="pedido.fecha" etiqueta="Fecha"/>
</Grid>
<Include ref="plantillas/BotoneraGestion.xml"/>
</Grid>
<Grid size="1">
<Bloque titulo="Datos generales">
<Grid >
<TextField id="pedido.codPedido" etiqueta="Cdigo" 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="Descripcin" 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>
Mediante este cdigo le hemos dicho a Aries que debe considerar que el campo lineaPedido.producto.codProducto es clave
origen de una relacin con la entidad Producto, de tal forma que cada vez que el usuario introduzca un cdigo de producto y
pulse INTRO se cargarn los datos de la relacin, en este caso la descripcin y el precio.
Este componente hace que se muestre un botn al lado del campo que permitir al usuario elegir el cdigo de producto
mediante una pantalla de bsqueda que ser precisamente la misma pantalla de bsqueda de productos que hemos
desarrollado unos pasos atrs.
Para que esto funcione tenemos que implementar en la parte Java el evento de pulsacin del botn buscarProducto. As:
public void doBuscarProducto() {
LlamadasUtil.llamarBusqueda(this, ProductoBusqueda.class,
"codProducto" , "lineaPedido.producto.codProducto");
}
Hemos tenido que especificar una mscara de edicin dado que este campo no pertenece al modelo y Aries no puede
deducir la mscara de las anotaciones JPA. Ntese que para el resto de campos que hemos declarado no ha sido
necesario introducir esta mscara.
Lo declaramos con el atributo enabled=false para indicar que es un campo slo de consulta.
Para mostrar el importe vamos a aadir un escuchador al modelo de la tabla. El Modelo de la tabla es realmente el contenido
de la misma y aadir un escuchador consiste en escribir cdigo 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 botn derecho sobre la clase Java PedidoGestion y elegimos la opcin
Aries Generar literales de componentes. Como resultado obtenemos la clase Constantes con todos los nombres de
componentes.
4. Ahora tenemos que aadir cdigo al programa Java para que se realice el clculo en los momentos precisos. Con este
cdigo aadimos 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());
}
}
});