Table of Contents

Tutorial para OpenXava 3
Ejecutar aplicación ejemplo MiEscuela
Modificar aplicación ejemplo MiEscuela
Añadir otro componente y su mantenimiento
Que los alumnos y los profesores se conozcan
Ejecutar prueba junit de aplicación MiEscuela
Ayuda

Tutorial para OpenXava 3

Bienvenido a este breve periplo de introducción en el mundo de OpenXava.
Estas instrucciones suponen que tenemos arrancado el Tomcat de OpenXava (start-tomcat.sh o .bat ha sido ejecutado) y que tenemos el Eclipse abierto contra el workspace incluido con la distrubución de OpenXava.

Ejecutar aplicación ejemplo MiEscuela

La distribución de OpenXava viene con una aplicación de ejemplo llamada MiEscuela, para ejecutar sigue los siguientes pasos, usando tareas ant. Las tareas ant están ya definidas en Eclipse, por lo tanto solo es necesario hacer click en la flechita del botón External Tools external-tools.gif

Modificar aplicación ejemplo MiEscuela

Añadir otro componente y su mantenimiento

Copiamos el archivo src/org.openxava.escuela.modelo/Profesor.java y lo pegamos dándole el nombre de Alumno.java.
Cambiamos Alumno.java hasta que quede de la siguiente forma:
package org.openxava.escuela.modelo;
 
import javax.persistence.*;
import org.openxava.annotations.*;
 
@Entity
public class Alumno {
 
    @Id @Column(length=2) @Required
    private int numero;
 
    @Column(length=40) @Required
    private String nombre;
 
    public int getNumero() {
        return numero;
    }
 
    public void setNumero(int numero) {
        this.numero = numero;
    }
 
    public String getNombre() {
        return nombre;
    }
 
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }
 
}
Ahora solo tenemos que redesplegar.
Las tareas ant mencionadas están dadas de alta en el Eclipse, así que para ejecutarlas solo hay que pulsar la flechita que hay en el botón para lanzar herramientas externas external-tools.gif

Que los alumnos y los profesores se conozcan

Es sencillo hacer que un alumno tenga una referencia a un profesor, añadimos el siguiente código a la clase Alumno:
@ManyToOne
private Profesor profesor;
 
public Profesor getProfesor() {
    return profesor;
}
 
public void setProfesor(Profesor profesor) {
    this.profesor = profesor;
}
Y ahora lo probamos:
Como se ve, harto sencillo.
Si queremos que la referencia se visualice en formato combo hemos de añadir la anotación @DescriptionsList a la referencia profesor de Alumno, como sigue:
@ManyToOne @DescriptionsList
private Profesor profesor;
Notemos la anotación @DescriptionsList.
Nos ha quedado una clase Alumno como esta:
package org.openxava.escuela.modelo;
 
import javax.persistence.*;
import org.openxava.annotations.*;
 
@Entity
public class Alumno {
 
    @Id @Column(length=2) @Required
    private int numero;
 
    @Column(length=40) @Required
    private String nombre;
 
    @ManyToOne @DescriptionsList
    private Profesor profesor;
 
    public int getNumero() {
        return numero;
    }
 
    public void setNumero(int numero) {
        this.numero = numero;
    }
 
    public String getNombre() {
        return nombre;
    }
 
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }
 
    public Profesor getProfesor() {
        return profesor;
    }
 
    public void setProfesor(Profesor profesor) {
        this.profesor = profesor;
    }
 
}
Ahora volvemos a desplegar:
Y ahora vamos a poner una colección de alumnos en el profesor. Primeros añadimos el siguiente import de paquete a la clase Profesor:
import java.util.*;
Y ahora ponemos la declaración de la colección dentro de la clase:
@OneToMany(mappedBy="profesor")
private Collection<Alumno> alumnos;
 
public Collection<Alumno> getAlumnos() {
    return alumnos;
}
 
public void setAlumnos(Collection<Alumno> alumnos) {
    this.alumnos = alumnos;
}
Después de estos cambios la clase Profesor quedará de esta manera:
package org.openxava.escuela.modelo;
 
import java.util.*;
import javax.persistence.*;
import org.openxava.annotations.*;
 
@Entity
public class Profesor {
 
    @Id @Column(length=5) @Required
    private String codigo;
 
    @Column(length=40) @Required
    private String nombre;
 
    @OneToMany(mappedBy="profesor")
    private Collection<Alumno> alumnos;
 
    public String getCodigo() {
        return codigo;
    }
 
    public void setCodigo(String codigo) {
        this.codigo = codigo;
    }
 
    public String getNombre() {
        return nombre;
    }
 
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }
 
    public Collection<Alumno> getAlumnos() {
        return alumnos;
    }
 
    public void setAlumnos(Collection<Alumno> alumnos) {
        this.alumnos = alumnos;
    }
 
}
Volvemos a desplegar:

Ejecutar prueba junit de aplicación MiEscuela

Ve a tu Eclipse y dentro del proyecto MiEscuela:
Las pruebas junit de OpenXava permiten probar un módulo como si fueramos un cliente que está probando la aplicación con un navegador. Así podemos automatizar el proceso de probar nuestras aplicaciones. Os invito a examinar el código de PruebaProfesores para hacerse una idea de como se hace una prueba junit para OpenXava. Si queremos hacer aplicaciones de calidad es imprescindible que nos aficionemos a las pruebas junit.

Y eso es todo amigos.
Con este ejemplo se ve como cambios pequeños se efectúan con poco esfuerzo y el efecto se ve de forma instantánea.

Ayuda

Si se quiere tener una idea de todas las posibilidades de OpenXava, que van mucho más allá de lo visto en este cándido ejemplo, hay que echarle un vistazo al proyecto OpenXavaTest; especialmente al paquete ox3-src/org.openxava.test.model.

Se puede obtener ayuda para ejecutar este tutorial o cualquier problema con OpenXava en:
http://sourceforge.net/forum/forum.php?forum_id=437013

Puedes aprender más sobre OpenXava en: