Enunciado Práctica Java EE
Iteración 1: aplicación web con JSF

SCS, 2011/12


Índice General

Descripción del problema

En esta primera iteración de la práctica en grupos se tratará de implementar un pequeño projecto con Java EE para la gestión de una central de reservas hoteleras muy simplificada.

Los objetivos de la práctica son:

Importante: Se recomienda tomar como muestra la aplicación JEE de muestra EjemploPedidos disponible en la web de la asignatura

El modelo de datos de la central de reservas a implementar se muestra en el siguiente diagrama de clases, junto con los campos de las tablas MySQL que lo implementan.

Image modeloReservas

Tablas de la base de datos que mapean las clases y objetos.

Tabla HOTEL:   ID, NOMBRE, DESCRIPCION, CATEGORIA,  
               DOMICILIO, LOCALIDAD, CODPOSTAL, PROVINCIA, TELEFONO,
               ADMINISTRADOR_ID, VERSION

Tabla TIPOHABITACION:  ID, NOMBRE, DESCRIPCION, 
                       CAPACIDAD, PRECIO, CANTIDAD
                       HOTEL_ID, VERSION

Tabla USUARIO:  ID, TIPO_USUARIO, 
                LOGIN, PASSWORD, EMAIL, FECHAALTA, ULTIMOACCESO, 
                NOMBRE, APELLIDOS, NIF, DOMICILIO, LOCALIDAD, 
                CODPOSTAL, PROVINCIA, TELEFONO, VERSION
        (cada tupla almacena datos de Clientes o de AdministradoresHotel
         se distinguen por el capo STRING TIPO_USUARIO ["cliente" ó "administrador"])

Tabla RESERVA: ID, CANTIDAD, FECHAINICIO, FECHAFIN, 
               NOMBRETOMADOR, OCUPACION, PRECIO,
               TIPOHABITACION_ID, CLIENT_ID, VERSION
 

Se han supuesto las siguientes simplificaciones:

Especificaciones

Dada la base de datos MySQL de partida se deberá implementar una capa de negocio y un ejemplo de cliente ligero WEB para comprobar las funcionalidades de la aplicación.

En el código de partida se aporta un proyecto NetBeans de tipo Enterprise Application, de nombre GestionReservas, con dos módulos:

Nota: Finalmente no se considerará la implementación de aplicaciones de escrito que actúen como clientes accediendo a los EJB mediante llamadas RMI/IIOP.

Capa de negocio: Entidades JPA

Se parte del siguiente conjunto de Entidades JPA, disponibles en el paquete entidades del proyecto GestionReservas-ejb, que mapean la base de datos de la aplicación.
Hotel.
Mapea la tabla Hotel, tiene una relación 1:N (one-to-many) con TipoHabitaciones.

En dicha relación todas la operaciones (modificaciones, borrados, ...) sobre un Hotel se aplican en cascada sobre sus Tipos de Habitación (cascade=CascadeType.ALL)

La carga de los TipoHabitacion vinculados a un Hotel se hace automáticamente (fetch=FetchType.EAGER).

TipoHabitación.
Mapea la entidad débil TipoHabitación dependiente de Hotel, tiene una relación N:1 (many-to-one) con Hotel

Cliente.
Mapea la tabla Cliente.

AdministradorHotel.
Mapea la tabla AdministradorHotel.

Usuario.
Mapea la tabla Usuario (es la superclase de Cliente y AdministradorHotel).
Reserva.
Mapea la tabla de Reservas. Tiene una relación N:1 (many-to-one) con TipoHabitaciones y otra relación N:1 con Cliente.

Capa de negocio: Enterprise JavaBeans

El grueso de la práctica supondrá el desarrollo de un conjunto de Enterprise JavaBeans(EJBs) que den soporte al los ''casos de uso'' descritos en esta sección. Dichos EJBs se encargarán de ofrecer a los cliente una ''fachada'' de la capa de negocio con dos grandes tipos de servicios:

CASO de USO 1: Mantenimiento de Clientes

Se ofrecerá a las aplicaciones clientes las siguientes funcionalidades:

CASO de USO 2: Mantenimiento de Hoteles

Se ofrecerá a las aplicaciones clientes las siguientes funcionalidades:

Nota: La relación 1:N (OneToMany) entre Hotel (entidad principal) y Tipo de Habitación (entidad débil) está anotada como cascade=ALL, de forma que todas las operaciones del EntityManager de JPA (persist() [creación], merge() [actualización] y remove() [borrado]) se apliquen en cascada desde Hotel hacia sus Tipos de Habitación, por lo que no es necesario un procesamiento especial en estos casos.

CASO de USO 3: Mantenimiento de Reservas

Se ofrecerá a las aplicaciones clientes las siguientes funcionalidades:

CASO de USO 4: Control de Disponibilidad

Implementa los procesos de negocio relacionados con la búsqueda de Hoteles, las consultas de disponiblidad y la confección de Reservas para un Cliente.

Se ofrecerán a las aplicaciones clientes las siguientes funcionalidades:

Capa de presentación WEB

La capa de presentación WEB se implementará empleando JSF (Java Server Faces). Se aprtirá del proyecto GestionReservas-war donde se proporciona un esqueleto de partida en el cual las tareas de autenticación de ambos tipos de Usuario (Cliente y AdministradorHotel) ya están implementadas. Se incluye también el formulario de alta de nuevos Clientes.

La aplicación WEB a desarrollar ofrecera dos conjuntos de funcionalidades:

El desarrollo de la capa de Presentación WEB, junto con los elementos de la capa de Negocio (EJBs) necesarios en cada caso se repartirá del siguiente modo:


Funcionalidades para los ADMINISTRADORES de HOTELES de la central de reservas

Deberán implementar las páginas JSF (junto con los EJB [``casos de uso'' 1 a 4] que estas precisen) para dar soporte a :

  1. Listado de los Hoteles gestionados
  2. Mantenimiento de los datos de los Hoteles y sus Tipos de Habitación

  3. Listado y gestión de las Reservas del Hotel actual (uno de los gestionados por este AdministradorHotel). Permitirá:

La página JSF a partir de la cual trabajar será gestionAdministrador.xhtml


Funcionalidades para los CLIENTES de la central de reservas

Deberán implementar las páginas JSF (junto con los EJB [``casos de uso'' 1 a 4] que estas precisen) para dar soporte a :

  1. Listado y gestión de las Reservas del Cliente actual. Permitirá:
  2. Confección de una nueva Reserva, conforme a los sguientes pasos Nota: Si se prefiere, podrá seguirse otro esquema más directo en la búsqueda, comprobación de disponibilidad y confección de la Reserva (por ejemplo: indicar directamente en la primera búsqueda la fechas de inicio y fin y el número de ocupantes)

La página JSF a partir de la cual trabajar será gestionCliente.xhtml

Tareas y documentación a entregar

La práctica se puede hacer de forma individual o en grupos de 2 a 4 alumnos. Las tareas a realizar serán distintas en función del tamaño del grupo. En caso de duda consultar con el profesor (ribadas@uvigo.es).

Fecha límite de entrega: Como último día se fija el Lunes 23/1/2011 (despacho 303)

Tareas concretas

Funcionalidades mínimas en función del tamaño del grupo.

Grupos de 4 miembros:
 

Documentación para la iteración 1

Se deberá entregar en CD/DVD (o en una memoria USB desde la que hacer la copia) lo siguiente:

Se entregará una memoria breve en papel con la siguiente estructura (aprox. 5-6 páginas):

  1. Descripción breve de la aplicación, indicando los componentes de los que se partía y los componentes implementados

    Nota: incluir los nombres, DNI y e-mail de los miembros del grupo en la portada

  2. Descripción de la capa de negocio implementada
  3. Descripción de la capa de presentación WEB

  4. Conclusiones, problemas/dificultades encontrados, comentarios, etc

Importante: No es requsito imprescindible para que la práctica sea evaluada que la aplicación se llegue a ejecutar en el servidor de aplicaciones. Se podrá entregar una práctica ''no ejecutable'' a condición de que se hayan implementado la totalidad de los componentes previstos en la especificación y estos se documenten convenientemente.



ribadas 2011-10-11