Está en la página 1de 9

16/4/2015

EnunciadoPrcticaJavaEEIteracin1:aplicacinwebconJSF

EnunciadoPrcticaJavaEE
Iteracin1:aplicacinwebconJSF
SCS,2011/12

ndiceGeneral
Descripcindelproblema
Especificaciones
Capadenegocio:EntidadesJPA
Capadenegocio:EnterpriseJavaBeans
CapadepresentacinWEB
Tareasydocumentacinaentregar
Tareasconcretas
Documentacinparalaiteracin1

Descripcindelproblema
EnestaprimeraiteracindelaprcticaengrupossetratardeimplementarunpequeoprojectoconJavaEE
paralagestindeunacentraldereservashotelerasmuysimplificada.
Losobjetivosdelaprcticason:
Desarrollarunaaplicacindistribuidamedianamentecomplejaconunaestructuradetrescapas(3tier)
detipoclienteligero:capadedatos,capadenegocioycapadepresentacinWEB.
ManejarydesarrollarcomponentesJavaEEdelladodeservidorparaimplementarlafuncionalidades
requeridas:
LacapadenegociodelaaplicacinsedesarrollarempleandoEnterpriseJavaBeans(EJB)yJava
PersistenceAPI(JPA).
LacapadepresentacinsedesarrollarempleandolatecnologaJavaServerFaces(JSF)
Importante:SerecomiendatomarcomomuestralaaplicacinJEEdemuestraEjemploPedidosdisponibleen
lawebdelaasignatura
Elmodelodedatosdelacentraldereservasaimplementarsemuestraenelsiguientediagramadeclases,
juntoconloscamposdelastablasMySQLqueloimplementan.

http://ccia.ei.uvigo.es/docencia/SCS/1112/jee/enunciadoGestionReservas/index.html

1/9

16/4/2015

EnunciadoPrcticaJavaEEIteracin1:aplicacinwebconJSF

Tablasdelabasededatosquemapeanlasclasesyobjetos.
TablaHOTEL:ID,NOMBRE,DESCRIPCION,CATEGORIA,
DOMICILIO,LOCALIDAD,CODPOSTAL,PROVINCIA,TELEFONO,
ADMINISTRADOR_ID,VERSION
TablaTIPOHABITACION:ID,NOMBRE,DESCRIPCION,
CAPACIDAD,PRECIO,CANTIDAD
HOTEL_ID,VERSION
TablaUSUARIO:ID,TIPO_USUARIO,
LOGIN,PASSWORD,EMAIL,FECHAALTA,ULTIMOACCESO,
NOMBRE,APELLIDOS,NIF,DOMICILIO,LOCALIDAD,
CODPOSTAL,PROVINCIA,TELEFONO,VERSION
(cadatuplaalmacenadatosdeClientesodeAdministradoresHotel
sedistinguenporelcapoSTRINGTIPO_USUARIO["cliente""administrador"])

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

Sehansupuestolassiguientessimplificaciones:
http://ccia.ei.uvigo.es/docencia/SCS/1112/jee/enunciadoGestionReservas/index.html

2/9

16/4/2015

EnunciadoPrcticaJavaEEIteracin1:aplicacinwebconJSF

CadaHotelsedescribeporsuscaractarsticasbsicas(nombre,direccin,categora)yofreceun
conjuntofijodeTiposdeHabitaciones(entidaddbil).
CadaTipodeHabitacintendrsuspropiascaractersticas,lasrelevantesparanuestrosistemade
gestiondereservasson:
nmerodehabitacionesdisponiblesdecadatipo
capacidadmximadedichashabitaciones(capacidad)
preciopornoche,queporsimplicidadsesupondrnico(sinpromocionesotarifasdistintas
paratemporadaaltaobaja)
ParalosClientesdelacentraldereservassepodrnrealizarsusreservasencualquieradeloshotelesque
tengandisponibilidadenlasfechasquecorrespondan
CadaClientetienesusdatospersonales(nombre,NIF,domiclio,etc)
PararealizarunaReservaparaunClienteestedeberhabersedadodealtaempleandoelinterfaz
WEBdelaaplicacin.
CadaClienteregistradotieneaccesosalasReservasquehayarealizado,permitindosele
consultarlasymodificary/ocancelarlasqueannohayantenidolugar(fechadeinicioposteriora
lafechaactual)
ElprocesodeconfeccionarunaReservaporpartedeunClienteregistradoseorganizarentresfases
1. SeleccindelHotel(bsquedaporlocalidadonombredeHotel)
2. Comprobacindeladisponibilidaddehabitacionesdelacapacidaddeseadaenlasfechas
indicadas
3. SeleccindelTipodeHabitacinyconfeccindelareserva
ParacadaReservasetomanotade:
Clientequelarealiza
TipodeHabitacinreservada(eimplicitamenteelHotelalquepertenece)
nmerodeocupantesefectivos(ocupacin)
fechasdeentradaysalida
nombredelapersonaqnombredequienquedahechalaReserva(pordefectoserel
nombredelCliente)
importepornoche(pordefectosetomaelimporteasociadoaltipodehabitacin,no
seconsideranpromocionesodescuentos)
CadaHoteltieneunAdministradorHotelquetendrcapacidadparamodificarlosdatosgeneralesdel
Hotelqueadministra,dardealtanuevosHotelesenelsistemaygestionarlosTipoHabitacionofertados
porcadaunodeloshotelesbajosuresponsabilidad.
Asmismo,elAdministradorHoteltieneaccesoalasReservasrealizadasensusHoteles,para
consultarlas,modificarlasoaliminarlas.
DesdeelpuntodelacapadepresentacinWEBtantolosClientescomolosAdministradorHotelsson
ambosUsuariosyaccedenalaaplicacinWEBmedianteunloginyunacontrasea(vermodelode
clases).
EnelinterfazWEBsedistinguenlasdistintasfuincionalidadesdisponiblesacadatipodeUsuario,
ofreciendodistintosformulariosaClientesyAdministradoresHotel.

Especificaciones
DadalabasededatosMySQLdepartidasedeberimplementarunacapadenegocioyunejemplodecliente
ligeroWEBparacomprobarlasfuncionalidadesdelaaplicacin.
EnelcdigodepartidaseaportaunproyectoNetBeansdetipoEnterpriseApplication,denombre
GestionReservas,condosmdulos:
http://ccia.ei.uvigo.es/docencia/SCS/1112/jee/enunciadoGestionReservas/index.html

3/9

16/4/2015

EnunciadoPrcticaJavaEEIteracin1:aplicacinwebconJSF

GestionReservasejb:SubproyectodetipoEJBModuledondeyasecuentaconlasEntidadesJPApara
implementarelaccesoalabasededatosydondesedebernincorporarlosEJBsnecesariospara
satisfacerloscasosdeusodescritosacontinuacn.
GestionReservaswar:SubproyectodetipoJavaWebApplicationdondeseimplementarnunaseriede
pginasJSF(JavaServerFaces),juntoconsuscorrespondientesManagedBeansdesesinquesern
quienesrealicenlasllamadasaesosEJBs.
Nota:Finalmentenoseconsiderarlaimplementacindeaplicacionesdeescritoqueactencomoclientes
accediendoalosEJBmediantellamadasRMI/IIOP.

Capadenegocio:EntidadesJPA
SepartedelsiguienteconjuntodeEntidadesJPA,disponiblesenelpaqueteentidadesdelproyecto
GestionReservasejb,quemapeanlabasededatosdelaaplicacin.
Hotel.
MapealatablaHotel,tieneunarelacin1:N(onetomany)conTipoHabitaciones.
Endicharelacintodaslaoperaciones(modificaciones,borrados,...)sobreunHotelseaplicanen
cascadasobresusTiposdeHabitacin(cascade=CascadeType.ALL)
LacargadelosTipoHabitacionvinculadosaunHotelsehaceautomticamente
(fetch=FetchType.EAGER).
TipoHabitacin.
MapealaentidaddbilTipoHabitacindependientedeHotel,tieneunarelacinN:1(manytoone)con
Hotel
Cliente.
MapealatablaCliente.
AdministradorHotel.
MapealatablaAdministradorHotel.
Usuario.
MapealatablaUsuario(eslasuperclasedeClienteyAdministradorHotel).
Reserva.
MapealatabladeReservas.TieneunarelacinN:1(manytoone)conTipoHabitacionesyotrarelacin
N:1conCliente.

Capadenegocio:EnterpriseJavaBeans
ElgruesodelaprcticasupondreldesarrollodeunconjuntodeEnterpriseJavaBeans(EJBs)quedensoporte
allos''casosdeuso''descritosenestaseccin.DichosEJBsseencargarndeofreceralosclienteuna
''fachada''delacapadenegociocondosgrandestiposdeservicios:
MantenimientobsicodelasEntidadesdelsistema:altas,bajasymodificacionesdeClientes,Hoteles
(juntoconsusTiposdeHabitacin)yReservas
ConsultadedisponibilidaddehabitacionesyconfeccindereservasparaClientes

CASOdeUSO1:MantenimientodeClientes
http://ccia.ei.uvigo.es/docencia/SCS/1112/jee/enunciadoGestionReservas/index.html

4/9

16/4/2015

EnunciadoPrcticaJavaEEIteracin1:aplicacinwebconJSF

Seofreceralasaplicacionesclienteslassiguientesfuncionalidades:
BsquedadeClientesporIDdeCliente:devuelveunnicoCliente
BsquedadeClientesporNombre:devuelveunnicoCliente(elprimerocuyonombrecoincidaconel
argumentoindicado)
BsquedadetodoslosClientes:devuelveunalistadeClientes(List<Cliente>)
Creacin(alta)denuevosClientes(incluyendosuloginypassword)
ModificacindelosdatosdeunClienteyaexistente(incluyendosuloginypassword)
EliminacindeunClienteyaexistente

CASOdeUSO2:MantenimientodeHoteles
Seofreceralasaplicacionesclienteslassiguientesfuncionalidades:
BsquedadeHotelesporIDdeHotel:devuelveunnicoHotel,queiracompaadodesulistadeTipos
deHabitaciones(ensuatributotiposHabitacion)
BsquedadeHotelesporNombre:devuelveunnicoHotel,queiracompaadodesulistadeTiposde
Habitaciones(ensuatributotiposHabitacion)
BsquedadetodoslosHoteles:devuelveunalistadeHoteles(List<Hotel>)acompaadosdesus
respectivaslistadeTiposdeHabitaciones
BsquedadeHotelesporLocalidad:devuelveunalistadeHoteles,List<Hotel>
Creacin(alta)denuevosHoteles
HaydosopcionesparaimplementarelaltadeHoteles
1. DardealtanicamentelosdatoslosdatosdelHotel,dejandoquelaadicindesusTiposde
Habitacinsegestionecomounamodificacinms
2. IncluirlalistadeTiposdeHabitacin(setTiposHabitacion(...)entrelosdatosadardealta(el
EntityMannagerharsobreellosunmerge()encascada)
ModificacindelosdatosdeunHotelyaexistente(incluidalaadicin/modificacin/eliminacinde
TiposdeHabitacin)
EliminacindeunHotel
Nota:Larelacin1:N(OneToMany)entreHotel(entidadprincipal)yTipodeHabitacin(entidaddbil)est
anotadacomocascade=ALL,deformaquetodaslasoperacionesdelEntityManagerdeJPA(persist()
[creacin],merge()[actualizacin]yremove()[borrado])seapliquenencascadadesdeHotelhaciasusTipos
deHabitacin,porloquenoesnecesariounprocesamientoespecialenestoscasos.

CASOdeUSO3:MantenimientodeReservas
Seofreceralasaplicacionesclienteslassiguientesfuncionalidades:
BsquedadeReservasporIDdeHotelyrangodefechas:devuelveunalistadeReservas,
List<Reservas>

BsquedadeReservasporIDdeClienteyrangodefechas:devuelveunalistadeReservas,
List<Reservas>

BsquedadeReservasporIDdeReserva:devuelveunanicaReserva
BsquedadetodaslasReservasdeunHotel:devuelveunalistadeReservas(List<Reserva>)dadounID
deHotel
BsquedadetodaslasReservasdeunCliente:devuelveunalistadeReservas(List<Reserva>)dadoun
IDdeCliente
http://ccia.ei.uvigo.es/docencia/SCS/1112/jee/enunciadoGestionReservas/index.html

5/9

16/4/2015

EnunciadoPrcticaJavaEEIteracin1:aplicacinwebconJSF

Creacin(alta)deReservas
ModificacindelosdatosdeunaReserva
EliminacindeunaReserva

CASOdeUSO4:ControldeDisponibilidad
ImplementalosprocesosdenegociorelacionadosconlabsquedadeHoteles,lasconsultasdedisponiblidady
laconfeccindeReservasparaunCliente.
Seofrecernalasaplicacionesclienteslassiguientesfuncionalidades:
BsquedadeHotelesporLocalidad:devuelveunalistadeHoteles,List<Hotel>
ConsultadeladisponibilidaddeunHotel(dadosuNmerodeHotel)entreunasfechasdadas
DevolverunalistadeobjetosdelaclaseDisponibilidad(List<Disponibilidad>)
Estaclaseauxiliarestdefinidaenelpaqueteauxiliardelproyecto
Almacenadosatributos
UnobjetoTipodeHabitacion
Unenteroconelnmerodehabitacionesdeesetipodisponibles
EsunaclaseserializableparaquepuedaserenviadaentrelosclientesyelEJB
ComopuntodepartidasepuedeusarlaconsultaJPQLdelsiguienteejemplo.
Queryq=em.createQuery("SELECTsum(r.cantidad)FROMReservar"+
"WHEREr.tipoHabitacion.id=:tipo"+
"AND((r.fechaInicioBETWEEN:inicioAND:fin)OR"+
"(r.fechaFinBETWEEN:inicioAND:fin)OR"+
"(r.fechaInicio<=:inicioANDr.fechaFin>=:fin))");

Recibe3parmetros:
IDdelTipodeHabitacinconsultado(:tipoHabitacion)
Fechadeinicio(:inicio),detipoDate
Fechadefin(:fin),detipoDate
Devuelve,paraunTipodeHabitacindado,unobjetoIntegerconelnmerode
habitacionesocupadasentrelasfechasindicadas.
ParacrearlalistadeobjetosDisponibilidadserecorrelalistadeTiposdeHabitacindeunHotel,
restandoalacantidaddehabitacionesdisponiblesdecadaTipodeHabitacinlacantidaddevuelta
porlaconsulta.
...
Hotelhotel=em.find(Hotel.class,numHotel);
List<Disponibilidad>lista=newVector<Disponibilidad>();
for(TipoHabitaciontipo:hotel.getTiposHabitacion()){
q.setParameter("tipo",tipo.getId());
q.setParameter("inicio",fechaInicio);
q.setParameter("fin",fechaFin);
ocupadas=(Long)q.getSingleResult();
if(ocupadas==null){
libres=tipo.getCantidad();
}
else{
libres=tipo.getCantidad()ocupadas.intValue();
}
lista.add(newDisponibilidad(tipo,libres));
}
return(lista);
...
http://ccia.ei.uvigo.es/docencia/SCS/1112/jee/enunciadoGestionReservas/index.html

6/9

16/4/2015

EnunciadoPrcticaJavaEEIteracin1:aplicacinwebconJSF

numHotel,fechaInicioyfechaFinseranlosparmetrosdelmtodoremoto
Nota:LacreacindeunaReservaparaunCliente,unTipodeHabitacinyunasfechasdadases
gestionadaporelEJBencargadodel''casodeuso3''

CapadepresentacinWEB
LacapadepresentacinWEBseimplementarempleandoJSF(JavaServerFaces).Seaprtirdelproyecto
GestionReservaswardondeseproporcionaunesqueletodepartidaenelcuallastareasdeautenticacinde
ambostiposdeUsuario(ClienteyAdministradorHotel)yaestnimplementadas.Seincluyetambinel
formulariodealtadenuevosClientes.
LaaplicacinWEBadesarrollarofreceradosconjuntosdefuncionalidades:
lasdestinadasalosClientes:bquedadeHoteles/Habitaciones,confeccindeReservasygestindesus
Reservas
lasdestinadasalosAdministradoresHotel:altaymodificacindesusHoteles,consultaygestindesus
Reservas
EldesarrollodelacapadePresentacinWEB,juntoconloselementosdelacapadeNegocio(EJBs)
necesariosencadacasoserepartirdelsiguientemodo:

FuncionalidadesparalosADMINISTRADORESdeHOTELESdelacentraldereservas
DebernimplementarlaspginasJSF(juntoconlosEJB[``casosdeuso''1a4]queestasprecisen)paradar
soportea:
1. ListadodelosHotelesgestionados
2. MantenimientodelosdatosdelosHotelesysusTiposdeHabitacin
AltasdenuevosHoteles(juntoconsusTiposdeHabitacin)
ModificacindeHoteles(juntoconaltadenuevosTiposdeHabitacinosumodificacin)
3. ListadoygestindelasReservasdelHotelactual(unodelosgestionadosporesteAdministradorHotel).
Permitir:
VerlastodaslasReservas(anterioresyactuales)delHotel
ModificarReservasannoiniciadas(fechadeinicioposteriorafechaactual)
CancelarReservasannoiniciadas(fechadeinicioposteriorafechaactual)
LapginaJSFapartirdelacualtrabajarsergestionAdministrador.xhtml

FuncionalidadesparalosCLIENTESdelacentraldereservas
DebernimplementarlaspginasJSF(juntoconlosEJB[``casosdeuso''1a4]queestasprecisen)paradar
soportea:
1. ListadoygestindelasReservasdelClienteactual.Permitir:
VerlastodaslasReservas(anterioresyactuales)delCliente
ModificarReservasannoiniciadas(fechadeinicioposteriorafechaactual)
CancelarReservasannoiniciadas(fechadeinicioposteriorafechaactual)
2. ConfeccindeunanuevaReserva,conformealossguientespasos
http://ccia.ei.uvigo.es/docencia/SCS/1112/jee/enunciadoGestionReservas/index.html

7/9

16/4/2015

EnunciadoPrcticaJavaEEIteracin1:aplicacinwebconJSF

BsquedaypresentacindeHoteles(juntoconsusTiposdeHabitacin)enunaLocalidad
SeleccindeunHotelycomprobacindeDisponibilidadenbaseaFechadeEntrada,Fechade
SalidayNmerodeOcupantes,mostrandolalistadeTiposdeHabitacindisponibles
SeleccindeTipodeHabitacin,confeccindelaReservayconfirmacin.
Nota:Siseprefiere,podrseguirseotroesquemamsdirectoenlabsqueda,comprobacinde
disponibilidadyconfeccindelaReserva(porejemplo:indicardirectamenteenlaprimerabsquedala
fechasdeinicioyfinyelnmerodeocupantes)
LapginaJSFapartirdelacualtrabajarsergestionCliente.xhtml

Tareasydocumentacinaentregar
Laprcticasepuedehacerdeformaindividualoengruposde2a4alumnos.Lastareasarealizarsern
distintasenfuncindeltamaodelgrupo.Encasodedudaconsultarconelprofesor(ribadas@uvigo.es).
Fechalmitedeentrega:ComoltimodasefijaelLunes23/1/2011(despacho303)

Tareasconcretas
Funcionalidadesmnimasenfuncindeltamaodelgrupo.
Gruposde4miembros:

Funcionalidadesdelosclientesdelacentraldereservas
Darsoporteatodaslasfuncionalidadesincluidasenlaseccin2.3.2
Funcionalidadesdelosadministradoresdelacentraldereservas
Darsoporteatodaslasfuncionalidadesincluidasenlaseccin2.3.1

Documentacinparalaiteracin1
SedeberentregarenCD/DVD(oenunamemoriaUSBdesdelaquehacerlacopia)losiguiente:
DirectoriodelproyectoNetBeanscompleto,conelcdigofuentedelaimplementacindesarrollada
FicheroEARresultantedecompilaryempaquetarelproyectocompleto
Seentregarunamemoriabreveenpapelconlasiguienteestructura(aprox.56pginas):
1. Descripcinbrevedelaaplicacin,indicandoloscomponentesdelosquesepartayloscomponentes
implementados
Nota:incluirlosnombres,DNIyemaildelosmiembrosdelgrupoenlaportada
2. Descripcindelacapadenegocioimplementada
Describirlaestructuradelasolucinimplementada(tantoparalapartedegestindeclientes
comoparaladegestindeadministradores)
Detallarlosinterfacesdenegociodefinidos
Paracadauno,indicarsunombre,sutipo(localoremoto),lalistademtodosysusargumentos,
etc
DetallarlosEJBqueimplementanesosinterfacesdenegocio.
http://ccia.ei.uvigo.es/docencia/SCS/1112/jee/enunciadoGestionReservas/index.html

8/9

16/4/2015

EnunciadoPrcticaJavaEEIteracin1:aplicacinwebconJSF

Paracadauno,indicaryjustificarsutipo(statelessostateful),comentarlosdetallesquesean
relevantesdelaimplementacindesusmtodos(consultasJPQLdefinidas,funcionalidadesque
ofrece,etc)
3. DescripcindelacapadepresentacinWEB
Detallarlaestructuradelasolucinimplementada
DescribirlasfuncionalidadesdelaspginasJSFquecomponenlacapadepresentacin(tantopara
lapartedegestindeclientescomoparaladegestindeadministradores)
EnumeraryexplicarbrevementelaspginasJSFcreadas,susfuncionalidadesyelfujoentre
ellas.
Describirlosmanagedbeansempleados:susatributosyaccionesysuinteraccinconlosEJBsde
lacapadenegocio.
4. Conclusiones,problemas/dificultadesencontrados,comentarios,etc

Importante:Noesrequsitoimprescindibleparaquelaprcticaseaevaluadaquela
aplicacinsellegueaejecutarenelservidordeaplicaciones.Sepodrentregarunaprctica
''noejecutable''acondicindequesehayanimplementadolatotalidaddeloscomponentes
previstosenlaespecificacinyestossedocumentenconvenientemente.

ribadas20111011

http://ccia.ei.uvigo.es/docencia/SCS/1112/jee/enunciadoGestionReservas/index.html

9/9

También podría gustarte