Académique Documents
Professionnel Documents
Culture Documents
Primera Solemne
Construcción de JAVABEANS
Ponderación 30%
2
1. Descripción del problema
3
Se han supuesto las siguientes simplificaciones:
4
Clientes y de los Hoteles (con sus respectivos Tipos de
Habitación) podrán ser modificados y/o borrados.
• La base de datos utilizada impone una restricción de borrado en
cascada para las tuplas Tipo de Habitación (relación débil) asociadas
a un Hotel. En el caso de borrado de un Cliente o de un Hotel, en la
BD también se ha definido un borrado en cascada para las Reservas
que tuvieran asociadas. Por simplicidad, no se realizará control de
accesos (login + contraseña) y se asumirá que se permite el acceso
no restringido a los componentes de la capa de negocio desde la
aplicación cliente a desarrollar en esta práctica.
2. Especificaciones
5
TipoHabitacion. Mapea la entidad débil TipoHabitacion dependiente de Hotel, tiene
una relación N:1 (manyto-one) con Hotel
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.
6
2.2.2. CASO de USO 2: Mantenimiento de Hoteles
7
2.2.3. CASO de USO 3: Mantenimiento de Reservas
8
• Un entero con el número de habitaciones de ese
tipo disponibles
Es una clase serializable para que pueda ser enviada entre los clientes y el EJB
Como punto de partida se puede usar la consulta JPQL del siguiente ejemplo.
• Recibe 3 parámetros:
• Número del Tipo de Habitación consultado (:tipoHabitacion)
• Fecha de inicio (:inicio), de tipo Date
• Fecha de fin (:fin), de tipo Date
• Devuelve, para un Tipo de Habitación dado, un objeto Integer con el
número de habitaciones ocupadas entre las fechas indicadas.
• Para crear la lista de objetos Disponibilidad se recorre la lista de Tipos de
Habitación de un Hotel, restando a la cantidad de habitaciones disponibles
de cada Tipo de Habitación la cantidad devuelta por la consulta.
...
Hotel hotel = em.find(Hotel.class, numHotel);
List<Disponibilidad> lista = new Vector<Disponibilidad>();
for (TipoHabitacion tipo : hotel.getTiposHabitacion()) {
q.setParameter("tipo", tipo.getNumTipohab());
q.setParameter("inicio", fechaIni);
q.setParameter("fin", fechaFin);
ocupadas = (Long) q.getSingleResult();
if (ocupadas == null) {
libres = tipo.getCantidad();
}
else {
l ibres = tipo.getCantidad() - ocupadas.intValue();
}
l ista.add(new Disponibilidad(tipo, libres));
}
9
return(lista);
...
numHotel, fechaIni y fechaFin ser´ıan los parámetros del método remoto
Nota: La creación de una Reserva para un Cliente, un Tipo de Habitación y
unas fechas dadas es gestionada por el EJB encargado del ”caso de uso 3”
10
a) Para el Cliente ’’Juan Juanez’’ Buscar Hoteles en ’’Santiago’’
Comprobar la disponibilidad de habitaciones en el primer Hotel
de la lista entre las fechas 1/2/2009 y 10/2/2009 (imprimir la
lista de Tipos de Habitación disponibles)
Nota: Los años en los objetos Date empiezan en 1900 y los
meses en 0. Para crear los objetos de tipo Date para este ejemplo
usar:
Date fechaInicial = new Date(2009-1900, 2-1, 1);
Date fechaFinal = new Date(2009-1900, 2-1, 10);
Reservar a su nombre 2 habitaciones del primer tipo que est´e
disponible.
• Imprimir la lista de Reservas
4. Documentación a entregar
La práctica es en forma individual, Fecha límite de entrega: Jueves
12/11/2009, la no presentación del trabajo será calificado con nota 1.0.-
11
• Conclusiones, problemas/dificultades encontrados, comentarios, etc
• Importante: No es requisito 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.
12