Está en la página 1de 60

Creacin de una web de gestin de lbumes

fotogrficos utilizando tecnologa Java EE


Francisco Fernndez Garca
ETIS

Jos Juan Rodrguez


14 de Enero de 2009

1 / 60

Resumen
El presente trabajo de fin de carrera se plantea en base al anlisis, planificacin y
desarrollo de una aplicacin web basada en el modelo Java EE y que permitir a los usuarios
del sistema la creacin de colecciones digitales de fotografas.
Java EE es una especificacin que permite la creacin de aplicaciones multicapa basada
en componentes modulares que se ejecutan sobre un servidor de aplicaciones. El uso de este
modelo arquitectnico basado en capas nos proporciona independencia y robustez y permite
que cada una de las capas se centre en sus objetivos especficos, minimizando las
interferencias recibidas por parte del resto de componentes de la aplicacin.
Este proyecto se basar en un modelo de tres capas:

La capa de presentacin y control.

La capa de negocio que controlar la lgica con la que se operan los datos.

La capa que nos proporcionar el acceso a la informacin persistente.

Para la capa de presentacin utilizaremos Struts2 que es un framework de aplicacin


open source desarrollado por Apache y que est basado en el patrn MVC (Modelo-VistaControlador).
En la capa de negocio usaremos Spring que es un framework tambin open source que
nos proporciona un conjunto de mdulos sobre los que desarrollar una aplicacin Java EE.
Para la capa que gestionar los accesos a los datos de nuestra aplicacin utilizaremos
Hibernate que es una herramienta de software libre de mapeo objeto-relacional.

2 / 60

Indice
1

Introduccin

1.1

Justificacin del TFC y contexto en el que se desarrolla

1.2

Objetivos del TFC

1.3

Enfoque y mtodo seguido

1.4

Planificacin del proyecto

1.5

Productos obtenidos

1.6

Resto de captulos de la memoria

Anlisis

2.1

Especificaciones del proyecto

2.2

Identificacin de actores

10

2.3

Casos de uso

10

2.4

Diagramas de colaboracin

15

2.5

Diagrama de clases

22

Diseo

22

3.1
Arquitectura del sistema
3.1.1
Java EE
3.1.2
Patrn arquitectnico: MVC
3.1.3
Frameworks
3.1.3.1 Struts2
3.1.3.2 Spring
3.1.3.3 Hibernate

22
22
24
25
25
27
28

3.2
Diseo de la persistencia
3.2.1
Diagrama E-R

29
29

3.3

30

Interfaz de usuario

Implementacin

54

4.1

Estructura de la aplicacin

55

4.2

Almacenamiento en el servidor

56

4.3

Envo de e-mails

56

Requerimientos

57

Instalacin

57

Valoracin econmica

57

Conclusiones

58

Bibliografa

58

3 / 60

Indice de figuras
Figura 1 - Planificacin del proyecto ...................................................................................... 8
Figura 2 - Casos de uso...................................................................................................... 10
Figura 3 - D.C. Alta usuario................................................................................................. 16
Figura 4 - D.C. Conexin al sistema .................................................................................... 16
Figura 5 - D.C. Modificacin perfil........................................................................................ 17
Figura 6 - D.C. Alta lbum................................................................................................... 17
Figura 7 - D.C. Lista de usuarios ......................................................................................... 17
Figura 8 - D.C. Borrar usuario ............................................................................................. 18
Figura 9 - D.C. Modificacin usuario.................................................................................... 18
Figura 10 - D.C. Lista de lbumes ....................................................................................... 19
Figura 11 - D.C. Borrar lbum ............................................................................................. 19
Figura 12 - D.C. Enviar invitacin ........................................................................................ 20
Figura 13 - D.C. Modificar lbum ......................................................................................... 20
Figura 14 - D.C. Lista de fotos ............................................................................................. 20
Figura 15 - D.C. Borrar foto................................................................................................. 20
Figura 16 - D.C. Modificar foto ............................................................................................ 21
Figura 17 - D.C. Ver foto..................................................................................................... 21
Figura 18 - D.C. Alta foto .................................................................................................... 21
Figura 19 - D.C. Enviar e-mail ............................................................................................. 22
Figura 20 - Diagrama de clases........................................................................................... 22
Figura 21 - Arquitectura Java EE......................................................................................... 24
Figura 22 - Patrn MVC...................................................................................................... 25
Figura 23 - Esquema Struts2 .............................................................................................. 26
Figura 24 - Esquema Struts2-MVC...................................................................................... 27
Figura 25 - Esquema Spring ............................................................................................... 28
Figura 26 - Esquema Hibernate........................................................................................... 28
Figura 27 - Diagrama E-R ................................................................................................... 29
Figura 28 - Diseo Base de Datos ....................................................................................... 29

4 / 60

Figura 29 - Pantalla: Home ................................................................................................. 31


Figura 30 - Pantalla: Registro Cliente .................................................................................. 32
Figura 31 - Pantalla: Registro Cliente OK............................................................................. 33
Figura 32 - Pantalla: Conexin ............................................................................................ 34
Figura 33 - Pantalla: Lista de lbumes ................................................................................. 35
Figura 34 - Pantalla: Modificacin usuario ............................................................................ 36
Figura 35 - Pantalla: Alta de lbum ...................................................................................... 37
Figura 36 - Pantalla: Lista de fotos (propietario) ................................................................... 38
Figura 37 - Pantalla: Lista de fotos (invitado)........................................................................ 39
Figura 38 - Pantalla: Modificacin lbum.............................................................................. 40
Figura 39 - Pantalla: Baja de lbum ..................................................................................... 41
Figura 40 - Pantalla: Invitar a lbum .................................................................................... 42
Figura 41 - Pantalla: Eliminar invitacin ............................................................................... 43
Figura 42 - Pantalla: Alta de foto ......................................................................................... 44
Figura 43 - Pantalla: Consulta de foto de lbum propio ......................................................... 45
Figura 44 - Pantalla: Consulta de foto de lbum invitado ....................................................... 46
Figura 45 - Pantalla: Modificacin de foto............................................................................. 47
Figura 46 - Pantalla: Baja de foto ........................................................................................ 48
Figura 47 - Pantalla: Home de administrador........................................................................ 49
Figura 48 - Pantalla: Alta de administrador........................................................................... 50
Figura 49 - Pantalla: Lista de usuarios ................................................................................. 51
Figura 50 - Pantalla: Modificacin de usuario (por administrador) .......................................... 52
Figura 51 - Pantalla: Baja de usuario................................................................................... 53
Figura 52 - Pantalla: Lista de lbumes (para administrador) .................................................. 54

5 / 60

1 Introduccin
1.1 Justificacin del TFC y contexto en el que se desarrolla
Se plantea este TFC como una forma de aplicar los conceptos aprendidos a lo largo de
la carrera de ETIS, de manera que se puedan ensamblar los fragmentos de conocimiento
proporcionados por las diferentes asignaturas cursadas a la hora de realizar un proyecto.
Al ser el rea tratada en el presente TFC la arquitectura Java EE el resultado del
proyecto deber ser una aplicacin basada en dicha arquitectura, para lo cual pasaremos por
las diferentes fases que conforman cualquier proyecto de este tipo: anlisis, diseo e
implementacin del producto final.
El punto de partida del proyecto sern, como se ha comentado antes, los conocimientos
que se han obtenido a lo largo de la carrera y que bsicamente se podrn aplicar a las etapas
de anlisis y diseo. Estos tendrn que ser complementados con el estudio de las tecnologas
directamente relacionadas con la arquitectura Java EE y que sern los que se debern aplicar
directamente en la etapa de implementacin del proyecto.

1.2 Objetivos del TFC


El objetivo de este TFC es realizar por mi parte un primer acercamiento a la tecnologa
Java EE para conseguir familiarizarme, aunque sea de forma mnima, con los recursos y
herramientas utilizadas en el desarrollo de este tipo de proyectos.
Esto hace que no sea en absoluto prioritario el acabar consiguiendo una herramienta que
pudiera llegar a ser explotada comercialmente por lo que, por ejemplo, no se pondr especial
nfasis en puntos como puede ser la esttica final de las pantallas o la seguridad y si que se
incidir ms en el diseo de la aplicacin y en su implementacin intentando ajustarla a los
patrones establecidos.
A grandes rasgos la aplicacin que vamos a construir tiene que permitir a un usuario
registrado el subir sus fotografas a un servidor y organizarlas en colecciones siguiendo los
criterios que considere oportunos.
La aplicacin tambin permitir al propietario de una coleccin el autorizar a otros
usuarios para que stos puedan visualizar sus colecciones.
En el sistema tendremos la figura del administrador, que tendr la capacidad de eliminar
fotografas o colecciones consideradas inadecuadas y de gestionar los usuarios registrados
(baja de usuarios, restauracin de passwords,...).

1.3 Enfoque y mtodo seguido


Dado el desconocimiento de las tecnologas relacionadas con la arquitectura Java EE
que se han utilizado en la etapa de implementacin, el enfoque aplicado en el desarrollo del
proyecto ha pasado necesariamente por un estudio de dichas tecnologas en paralelo con la
realizacin de las fases de anlisis y diseo.
La intencin de este planteamiento es reducir al mximo el impacto negativo sobre el
proyecto de dicho desconocimiento y as poder llegar a la fase de implementacin con una
base de conocimientos que permita afrontar esta etapa con alguna garanta de que se podr
conseguir un producto final con un mnimo de calidad.

6 / 60

Dentro de lo que es propiamente el desarrollo del proyecto, tendremos cuatro fases que
vendrn marcadas por la realizacin de las diferentes PAC's:

Planificacin

Anlisis y diseo

Implementacin

Memoria final

En la etapa de planificacin se realiza un primer esbozo de la aplicacin a desarrollar y


se distribuyen las diferentes tareas de las que constar el proyecto.
En la etapa de anlisis se acabarn de cerrar los requerimientos que deber cumplir la
aplicacin, especificando todos los casos de uso a los que deber dar soporte e identificando a
los actores que intervendrn. Acabado este punto debemos tener una imagen clara de lo que
esperamos obtener una vez finalizado el proyecto y que deber estar reflejado en el diseo
posterior.
En la etapa de diseo se identificarn las entidades que intervendrn y se formalizarn
los casos de uso identificados en el paso anterior. Tambin se realizar un diseo de las
interficies finales con el usuario.
En la etapa de implementacin se codificarn los componentes necesarios y se
realizarn las pruebas que aseguren una mnima calidad del producto final obtenido y
comprobando que realmente se cumplen las especificaciones iniciales.
Finalmente, la ltima parte del proyecto se dedicar a pulir las deficiencias que puedan ir
apareciendo para obtener el producto ya definitivo y a redactar la presente memoria del
proyecto.

1.4 Planificacin del proyecto


Como se ha comentado en el punto anterior la planificacin realizada se basa en las
fechas de entrega de las diferentes PAC's.
Tambin hay que hacer notar que durante todo el transcurso del proyecto las tareas
propias de ste se tendrn que simultanear con la instalacin y estudio de las diferentes
herramientas que sern necesarias para su implementacin final, lo que sin duda a sido lo ms
costoso del proyecto.
Teniendo en cuenta todo lo anterior la planificacin prevista queda reflejada en el
siguiente grfico:

7 / 60

Figura 1 - Planificacin del proyecto

1.5 Productos obtenidos


Los productos finales obtenidos durante las diferentes fases del proyecto se pueden
dividir en dos partes, la documentacin generada en las primeras fases del proyecto y el
software conseguido en la fase de implementacin:

Planificacin: Diagrama de Gantt con el desglose y la temporizacin de las diferentes


tareas a realizar en el proyecto (incluido en esta memoria).

Anlisis: Identificacin de actores y descripcin de casos de uso. Diagramas de


colaboracin y de clases (todo ello incluido en esta memoria).

Diseo: Descripcin de la arquitectura de la aplicacin y diseo de la persistencia y de la


interfaz de usuario (todo ello incluido en esta memoria).

Implementacin: Archivo WAR con la aplicacin preparada para ser desplegada en un


servidor y el correspondiente cdigo fuente. Script SQL para la generacin de la Base de
Datos utilizada por la aplicacin.

Memoria: Memoria del proyecto incluyendo toda la documentacin generada y


presentacin del trabajo realizado.

1.6 Resto de captulos de la memoria


En los siguientes captulos de la memoria se desarrollan las diferentes fases del proyecto
objeto de este TFC
En primer lugar tenemos la fase de anlisis en la que, partiendo de las especificaciones
iniciales del proyecto, se hace una descripcin de los actores que intervendrn, la descripcin
de los casos de uso identificados en el sistema y finalmente se estudian las colaboraciones

8 / 60

entre los diferentes casos de uso para identificar las clases gestoras, frontera y de entidad que
conformarn nuestro sistema.
A continuacin se detalla la fase de diseo en la que se hace una descripcin de la
arquitectura empleada, as como de las herramientas utilizadas como infraestructura bsica en
la construccin de la aplicacin. Tambin se muestra el diseo de la persistencia y la interfaz
de usuario a construir.
Por ltimo tenemos los captulos que describen algunos de los aspectos ms
destacables de la implementacin realizada y los requerimientos mnimos del sistema.

2 Anlisis
2.1 Especificaciones del proyecto
Como ya se ha comentado con anterioridad este TFC consistir en la creacin de una
web que permita a los usuarios registrados la creacin de colecciones de fotografas
almacenadas por el propio usuario en el servidor.
Los usuarios podrn agrupar las fotografas en lbumes en funcin de sus necesidades o
preferencias y el propietario de uno de estos lbumes tambin tendr la posibilidad de
compartirlo con otros usuarios del sistema mediante el envo de invitaciones.
En el sistema tambin tendremos la figura del administrador, que tendr la capacidad de
eliminar colecciones de fotografas si, por ejemplo, se consideran inadecuadas y de gestionar
los usuarios registrados (baja de usuarios, restauracin de passwords,...).
A grandes rasgos la aplicacin final debera cumplir con los siguientes requisitos:

Slo podrn acceder a este servicio usuarios registrados, por lo que ser necesario
crear un proceso de alta que permita registrarse a los clientes y un proceso de
autentificacin que verificar el usuario que intenta acceder.

Los usuarios podrn ser de dos tipo: administradores y clientes y tendrn roles
claramente diferentes lo que se ver reflejado en el proceso de alta. El alta de un
administrador deber hacerla necesariamente otro administrador, mientras que la de
un cliente la realizar el propio usuario.

Un administrador no podr tener colecciones propias de fotografas, pero tendr


privilegios para eliminar del sistema cualquier coleccin o usuario y para realizar
algunas tareas de mantenimiento sobre stos modificando algunas de sus
caractersticas (por ejemplo la password de acceso).

Los clientes podrn subir fotografas al servidor siempre ligadas a alguna de sus
colecciones y se le permitir gestionar dichas colecciones aadiendo o eliminando
fotografas o aadiendo comentarios a las fotografas.

El propietario de una coleccin podr compartirla con otros clientes tambin


registrados, los cuales slo podrn visualizar estas colecciones pero no modificarlas
de ninguna manera. No se podrn realizar invitaciones a usuarios que tengan el
perfil de administrador por lo que se deber realizar un filtro de los usuarios
susceptibles de ser invitados. Una vez realizada una invitacin se le enviar un email de notificacin al usuario invitado.

9 / 60

Cualquier operacin realizada en el sistema a excepcin de las consultas, debe dejar


rastro en el sistema por lo que se tienen que implementar un mecanismo de log que
registre las modificaciones realizadas.

2.2 Identificacin de actores


Podemos dividir los actores en dos grupos con caractersticas diferenciadas:
administradores y clientes.
El usuario administrador es el encargado de realizar el mantenimiento del sistema,
gestionando a los usuarios registrados y los lbumes de fotos que hayan creado los clientes.
El usuario cliente puede crear y gestionar colecciones de fotos almacenadas en el
sistema e invitar a otros usuarios a ver dichas colecciones.

2.3 Casos de uso


El esquema de los casos de uso del sistema sera el siguiente:

Figura 2 - Casos de uso

Hay que hacer notar que en el diagrama anterior no se ha incluido la grabacin de


registros en el log del sistema para no complicar excesivamente el grfico, pero que todos los
casos de uso que impliquen un alta, baja o modificacin de componentes, as como la conexin
al sistema y el envo de invitaciones llevaran relacionada la grabacin en el log.

10 / 60

v Alta usuario

Funcionalidad: Dar de alta un nuevo usuario en el sistema.

Actores: Administrador, Cliente

Casos de uso relacionados: Grabar log

Precondicin: El nuevo usuario no existe en el sistema.

Postcondicin: Se ha dado de alta el usuario en el sistema. Se ha grabado un registro


en el log del sistema.

Descripcin: Permite realizar el alta de un nuevo usuario administrador o cliente en el


sistema. Un usuario administrador lo tiene que dar de alta otro usuario registrado como
administrador.

v Conexin al sistema

Funcionalidad: Permite que un usuario se conecte al sistema.

Actores: Administrador, Cliente

Casos de uso relacionados: Grabar log

Precondicin: El usuario debe estar dado de alta en el sistema, bien como


administrador o como cliente.

Postcondicin: El usuario se ha conectado en el sistema. Se ha grabado un registro en


el log del sistema.

Descripcin: Permite que un usuario se conecte al sistema de forma que ya podr


realizar las operaciones asignadas segn su rol.

v Modificacin perfil

Funcionalidad: Permite que un usuario modifique las caractersticas de su perfil.

Actores: Administrador, Cliente

Casos de uso relacionados: Grabar log

Precondicin: El usuario debe estar identificado en el sistema.

Postcondicin: El usuario ha modificado los datos de su perfil. Se ha grabado un


registro en el log del sistema.

Descripcin: Permite que un usuario identificado en el sistema pueda modificar la


informacin relacionada con dicho usuarios, como puede ser el e-mail, la password, etc.

v Alta de lbum

Funcionalidad: Permite que un cliente cree un nuevo lbum de fotos.

Actores: Cliente

Casos de uso relacionados: Grabar log

Precondicin: El usuario debe estar identificado en el sistema y su perfil debe ser de


cliente.

11 / 60

Postcondicin: El usuario ha creado un nuevo lbum. Se ha grabado un registro en el


log del sistema.

Descripcin: Permite que un usuario identificado en el sistema cree nuevos lbumes de


fotos.

v Lista de usuarios

Funcionalidad: Muestra una lista de usuarios del sistema.

Actores: Administrador

Casos de uso relacionados: Modificar usuario, Borrar usuario, Lista lbumes

Precondicin: El usuario debe estar identificado como administrador en el sistema.

Postcondicin: Ninguna

Descripcin: Muestra a un administrador la lista de usuarios del sistema para su


gestin. A partir de esta lista el administrador podr realizar las acciones disponibles.

v Borrar usuario

Funcionalidad: Borra un usuario del sistema.

Actores: Administrador

Casos de uso relacionados: Lista usuarios, Borrar lbum, Enviar e-mail, Grabar log

Precondicin: El usuario que realiza la accin debe estar identificado como


administrador en el sistema.

Postcondicin: El usuario se ha borrado del sistema, junto con los lbumes y las fotos
que tuviera en caso de que el usuario borrado fuera cliente. Se ha grabado un registro en
el log del sistema.

Descripcin: El administrador selecciona uno de los usuarios del sistema y lo borra


completamente. En caso de que el usuario sea cliente se borran tambin los lbumes
que pudiera poseer y las fotos que stos contuviera. Se enva adems un e-mail al
usuario borrado para avisarle de la baja.

v Modificacin usuario

Funcionalidad: Modifica un usuario del sistema.

Actores: Administrador

Casos de uso relacionados: Lista usuarios, Grabar log

Precondicin: El usuario que realiza la accin debe estar identificado como


administrador en el sistema.

Postcondicin: Se han modificado los datos del usuario. Se ha grabado un registro en


el log del sistema.

Descripcin: El administrador selecciona uno de los usuarios del sistema y modifica


alguna de sus caractersticas como pueden ser el e-mail.

v Lista de lbumes

12 / 60

Funcionalidad: Muestra la lista de los lbumes de un usuario.

Actores: Administrador, Cliente

Casos de uso relacionados: Lista usuarios, Enviar invitacin, Borrar lbum, Lista fotos,
Modificar lbum

Precondicin: El usuario que realiza la accin debe estar identificado en el sistema.

Postcondicin: Ninguna.

Descripcin: Si el usuario identificado es Cliente se le mostrar la lista de los lbumes


que le pertenezcan. En caso de que sea Administrador tendr que haber elegido
previamente un usuario Cliente de la lista de usuarios.

v Borrar lbum

Funcionalidad: Borra un lbum del sistema.

Actores: Administrador, Cliente

Casos de uso relacionados: Lista lbumes, Borrar usuario, Enviar e-mail, Borrar foto,
Grabar log

Precondicin: El usuario que realiza la accin debe estar identificado en el sistema.

Postcondicin: El lbum se ha borrado del sistema, junto con fotos que tuviera. Se ha
grabado un registro en el log del sistema.

Descripcin: Se borra del sistema un lbum perteneciente a un cliente, junto con las
fotos que colgaran de l.

v Enviar invitacin

Funcionalidad: Permite a otro usuario del sistema el ver un lbum.

Actores: Cliente

Casos de uso relacionados: Lista lbumes, Lista usuarios, Enviar e-mail, Grabar log

Precondicin: El usuario que realiza la accin debe estar identificado en el sistema.

Postcondicin: Se ha grabado un registro en el log del sistema.

Descripcin: Se ha enviado un e-mail al usuario invitado notificndole dicha invitacin.

v Modificar lbum

Funcionalidad: Permite a un usuario del sistema el modificar un lbum de su propiedad.

Actores: Cliente

Casos de uso relacionados: Lista lbumes, Grabar log

Precondicin: El usuario que realiza la accin debe estar identificado como Cliente en
el sistema.

Postcondicin: Se han modificado las caractersticas del lbum. Se ha grabado un


registro en el log del sistema.

Descripcin: Permite a un usuario Cliente el modificar la informacin de uno de sus


lbumes.

13 / 60

v Lista fotos

Funcionalidad: Muestra la lista de las fotos de un lbum.

Actores: Cliente

Casos de uso relacionados: Lista lbumes, Borrar foto, Ver foto, Alta foto, Modificar
foto

Precondicin: El usuario que realiza la accin debe estar identificado como Cliente en
el sistema.

Postcondicin: Ninguna.

Descripcin: Se muestra la lista de fotos relacionadas con un lbum del cliente.

v Borrar foto

Funcionalidad: Permite a un usuario del sistema borrar una foto.

Actores: Administrador, Cliente

Casos de uso relacionados: Lista fotos, Borrar lbum, Grabar log

Precondicin: El usuario que realiza la accin debe estar identificado en el sistema.

Postcondicin: La foto se ha borrado del sistema. Se ha grabado un registro en el log


del sistema.

Descripcin: Permite borrar una foto de un lbum del sistema.

v Modificar foto

Funcionalidad: Permite a un usuario del sistema modificar la informacin de una foto.

Actores: Cliente

Casos de uso relacionados: Lista fotos, Grabar log

Precondicin: El usuario que realiza la accin debe estar identificado como Cliente en
el sistema.

Postcondicin: Se ha modificado la informacin de la foto. Se ha grabado un registro en


el log del sistema.

Descripcin: Permite modificar la informacin de una foto de un lbum del sistema.

v Ver foto

Funcionalidad: Permite a un usuario del sistema ver una de las fotos almacenadas.

Actores: Cliente

Casos de uso relacionados: Lista fotos

Precondicin: El usuario que realiza la accin debe estar identificado como Cliente en
el sistema.

Postcondicin: Ninguna.

Descripcin: Permite ver una de las fotos del sistema.

14 / 60

v Alta foto

Funcionalidad: Permite a un usuario del sistema aadir una nueva foto a un lbum.

Actores: Cliente

Casos de uso relacionados: Lista fotos, Grabar log

Precondicin: El usuario que realiza la accin debe estar identificado como Cliente en
el sistema.

Postcondicin: Se ha insertado la foto en el sistema. Se ha grabado un registro en el


log del sistema.

Descripcin: Permite a un Cliente el aadir una nueva foto a uno de sus lbumes.

v Enviar e-mail

Funcionalidad: Permite que el sistema enve un e-mail a uno de sus usuarios.

Actores: Administrador, Cliente

Casos de uso relacionados: Borrar usuario, Borrar lbum, Enviar invitacin

Precondicin: El usuario que realiza la accin debe estar identificado en el sistema.

Postcondicin: Ninguna.

Descripcin: Realiza el envo de un e-mail a un usuario avisndole de alguna


circunstancia, como puede ser una invitacin para compartir un lbum o la baja de uno
de sus lbumes.

v Grabar log

Funcionalidad: Permite grabar un registro cada vez que se realicen determinadas


operaciones en el sistema.

Actores: Administrador, Cliente

Casos de uso relacionados: Alta usuario, Conexin al sistema, Modificacin perfil, Alta
lbum, Borrar usuario, Modificacin usuario, Borrar lbum, Enviar invitacin, Modificacin
lbum, Borrar foto, Modificacin foto, Alta foto

Precondicin: Ninguna.

Postcondicin: Ninguna.

Descripcin: Graba un registro en el log del sistema dejando constancia de las


modificaciones realizadas.

2.4 Diagramas de colaboracin


En los siguientes diagramas de colaboracin se representan las interacciones que se
producirn en cada uno de los casos de uso, lo que nos permitir identificar las clases
gestoras, frontera y de entidad.
Igual que en el diagrama de casos de uso, en los diagramas de colaboracin tampoco se
incluye la grabacin de registro en el log del sistema cada vez que se realice una operacin
que necesite dejar constancia.

15 / 60

Alta usuario

Figura 3 - D.C. Alta usuario

Conexin al sistema

Figura 4 - D.C. Conexin al sistema

16 / 60

Modificacin perfil

Figura 5 - D.C. Modificacin perfil

Alta de lbum

Figura 6 - D.C. Alta lbum

Lista de usuarios

Figura 7 - D.C. Lista de usuarios

17 / 60

Borrar usuario

Figura 8 - D.C. Borrar usuario

Modificacin usuario

Figura 9 - D.C. Modificacin usuario

18 / 60

Lista de lbumes

Figura 10 - D.C. Lista de lbumes

Borrar lbum

Figura 11 - D.C. Borrar lbum

Enviar invitacin

19 / 60

Figura 12 - D.C. Enviar invitacin

Modificar lbum

Figura 13 - D.C. Modificar lbum

Lista de fotos

Figura 14 - D.C. Lista de fotos

Borrar foto

Figura 15 - D.C. Borrar foto

20 / 60

Modificar foto

Figura 16 - D.C. Modificar foto

Ver foto

Figura 17 - D.C. Ver foto

Alta foto

Figura 18 - D.C. Alta foto

21 / 60

Enviar e-mail

Figura 19 - D.C. Enviar e-mail

2.5 Diagrama de clases


El diagrama de clases del sistema sera el siguiente:

Figura 20 - Diagrama de clases

Las clases Administrador y Cliente representan a los dos actores que tenemos en el
sistema. Ambos tienen caractersticas comunes por lo que los podemos hacer heredar de la
clase Usuario que englobara dichas caractersticas.
En el diagrama se refleja el hecho de que una foto slo puede pertenecer a un nico
lbum, que ste slo puede tener un nico propietario y que no podemos tener en el sistema
una foto o un lbum que no tengan un propietario.
Entre las clases Cliente y Album hay adems otra relacin ya que un lbum podr ser
visitado por usuarios diferentes a su propietario, siempre que stos hayan sido invitados.

3 Diseo
3.1 Arquitectura del sistema
3.1.1

Java EE

Java EE es una plataforma creada por Sun y cuyo objetivo es el desarrollo de


aplicaciones distribuidas dirigidas principalmente a la empresa. Entre sus requisitos estn la
fiabilidad, la facilidad de mantenimiento, la escalabilidad, etc.

22 / 60

Esta plataforma est basado en Java que es un lenguaje de programacin orientado a


objetos desarrollado por Sun Microsystem a principios de los aos 90 y cuyos principales
objetivos eran:

Uso de la metodologa orientada a objetos.

Portabilidad del mismo programa en mltiples sistemas operativos.

Incluir por defecto soporte para trabajo en red.

Permitir la ejecucin de cdigo en sistemas remotos de forma segura.

Facilidad de uso tomando elementos de otros lenguajes orientados a objetos.

La portabilidad entre plataformas que proporciona este lenguaje viene dada por el
hecho de que al compilar el cdigo fuente escrito en Java se genera un cdigo conocido como
bytecode que es ejecutado por lo que se conoce como la mquina virtual de Java. Esta
mquina virtual es un programa escrito en cdigo nativo de la plataforma y es el encargado de
interpretar y ejecutar el cdigo, es ella la que conoce el hardware sobre el que se ejecuta la
aplicacin y la que acta como intermediaria entre ambas.
Esta portabilidad de Java hace que una aplicacin Java EE tambin se pueda instalar
fcilmente en cualquier entorno que soporte dicho lenguaje.

La especificacin Java EE define un modelo de capas mediante el cual la lgica de la


aplicacin se divide en componentes de acuerdo con su funcin. Cada uno de estos
componentes se puede acabar instalando en una mquina diferente (aunque no
necesariamente) dependiendo de la capa a la que pertenezca.
Las capas en las que se divide el sistema son las siguientes:

Capa cliente: Se ejecuta en la mquina cliente. Es la que permite al usuario


interactuar con el sistema y pueden ser clientes ligeros, como un navegador web o
bien clientes pesados, como una aplicaciones de escritorio.

Capa web: Se ejecuta en un servidor Java EE. Es la encargada de obtener datos del
cliente y de solicitar a la capa de negocio las operaciones necesarias.

Capa de negocio: Se ejecuta en un servidor Java EE y forma el ncleo de la


aplicacin. En esta capa estarn representadas nuestras entidades, relaciones y
reglas que implementarn nuestros procesos de negocio.

Capa EIS (Enterprise Information System): Se ejecuta en un servidor de base de


datos y es la que contiene los datos del negocio por lo que es la encargada de los
accesos a la base de datos y de gestin de transacciones del sistema.

Grficamente el funcionamiento de una aplicacin Java EE sera el siguiente:

23 / 60

Figura 21 - Arquitectura Java EE

La divisin en capas facilita que el sistema sea escalable y reduce el acoplamiento entre
los diferentes componentes, ya que cada capa tiene sus responsabilidades definidas dentro de
la aplicacin y nunca tendremos una funcionalidad repartida entre diferentes capas.

3.1.2

Patrn arquitectnico: MVC

Los patrones de diseo (design patterns) proporcionan soluciones ya probadas a


problemas con caractersticas similares. Proporcionan catlogos de elementos reusables en el
diseo de sistemas y estandarizan la forma en que se realiza el diseo, lo que facilita el
aprendizaje.
La utilizacin de patrones de diseo no es una prctica obligatoria en el diseo de
software, pero si que es altamente recomendable ya que permiten el reducir el tiempo de
desarrollo de una aplicacin al evitar el tener que plantear una solucin desde cero.
El patrn MVC (Modelo-Vista-Controlador) es el ms ampliamente establecido desde el
punto de vista arquitectnico y se caracteriza porque divide el sistema en tres partes, de forma
que separa los datos de la aplicacin de la interfaz de usuario y de la lgica de control.
Con esta divisin conseguimos, por ejemplo, que la forma de presentar unos datos sea
completamente independiente de los datos en si, con lo que es sencillo el presentar los mismos
datos de formas diferentes.
Las responsabilidades de cada una de las partes de este patrn son las siguientes:
Modelo: Contiene los datos con los que opera el sistema. La lgica de datos permite
asegurar su integridad y facilita el derivar nuevos datos.
Vista: Representa el modelo de datos y las operaciones realizadas en la capa de
negocio en un formato adecuado para que el usuario pueda interactuar (mediante la interfaz de
usuario).

24 / 60

Controlador: Responde a los eventos, normalmente acciones del usuario, modificando


el modelo y generalmente tambin en la vista, por lo que es encargado de la interaccin entre
los datos y la vista.
El flujo seguido por este patrn entre los diferentes componentes es el siguiente:

Figura 22 - Patrn MVC

El usuario interacta con la vista (interfaz de usuario) realizando algn tipo de accin.
El controlador recibe desde la vista la notificacin de la accin solicitada.
El controlador accede al modelo actualizndolo conforme a la accin solicitada por el
usuario.
El controlador delega en la vista la tarea de desplegar la interfaz de usuario con la
respuesta.
La vista recupera los datos del modelo para poder completar la interfaz con las
modificaciones realizadas sobre el modelo.
El modelo no debe tener conocimiento directo de la vista, sin embargo en algunos casos
puede notificar a la vista de que se han producido cambios.

3.1.3

Frameworks

Un framework es una estructura definida a partir de la cual podemos desarrollar un


proyecto de software y su intencin es establecer una infraestructura que se encargue de
realizar las tareas de ms bajo nivel necesarias en cualquier proyecto y permitir as a los
desarrolladores el poder dedicar ms esfuerzo a las tareas de ms alto nivel propias del
negocio.

3.1.3.1

Struts2

25 / 60

Struts2 es un framework de aplicacin web open source desarrollado por Apache y


basado en el patrn MVC (Modelo-Vista-Controlador) que es utilizado ampliamente y
considerado de gran solidez.
Se utiliza para construir aplicaciones web basadas en servlets JSP, pudiendo ejecutarse
en cualquier contenedor de servlets, incluyendo los servidores de aplicaciones Java EE.
Utiliza internamente una serie de patrones ya definidos (Singleton, Delegate,) y
adems proporciona un conjunto de etiquetas JSP personalizadas que facilitan la integracin
del framework con las pginas JSP. Algunas de estas etiquetas han sido utilizadas en este
TFC.
El funcionamiento de Struts2 es el siguiente, cuando el usuario hace una solicitud al
servidor el FilterDispatcher la captura y determina el Action que la debe tratar.
Antes de ejecutar el Action se le aplican a la solicitud los Interceptors que hayan sido
configurados y que permiten realizar como preproceso una serie de tareas ms o menos
comunes, como pueden ser validaciones de datos.
A continuacin se ejecuta la accin que realiza los accesos para recuperar o almacenar
informacin en la base de datos y se genera la salida mediante un Result.
Esta salida vuelve a pasar a travs de los Interceptors (en orden inverso al inicial) para
realizar posibles operaciones de postproceso y finalmente se devuelve la respuesta al usuario.

Figura 23 - Esquema Struts2

Desde el punto de vista del patrn MVC los componentes de Struts2 se distribuiran de la
siguiente manera de cara a conseguir la separacin de los diferentes componentes de la
aplicacin:

26 / 60

Figura 24 - Esquema Struts2-MVC

3.1.3.2

Spring

Spring es un framework open source que implementa el patrn Factory y que


proporciona un marco de trabajo para el desarrollo de aplicaciones Java EE. Su principal
objetivo es ser una alternativa sencilla y fcil de usar frente a Enterprise JavaBean.
Est basado en un conjunto de mdulos que proporcionan todo lo necesario para
desarrollar una aplicacin empresarial aunque no es necesario basar la aplicacin al completo
en este framework, su modularidad hace que sea posible hacer uso del/los mdulos que
requiera la aplicacin e ignorar el resto.
Su componente principal es un contenedor de Beans que nos permite, mediante el uso
de la Inversin de Control (IoC), acoplar las diferentes partes de un aplicativo utilizando la
inyeccin de dependencias.
Mientras en una arquitectura tradicional (como EJB) un componente debe hacer una
llamada al contenedor para solicitar un objeto que necesite para realizar su tarea, con la
inyeccin de dependencias el contenedor ya sabe (mediante su configuracin) que el
componente necesitar el objeto y se lo proporcionar (inyectar) en tiempo de ejecucin.
Con Spring no se crea una instancia de un objeto para cada usuario del sistema, sino
que se instancian una nica vez al poner en marcha la aplicacin, se guardan en la factora y
luego se comparten por todos los usuarios inyectndolos en los objetos que los necesiten
mediante el uso de un mtodo set definido en el propio objeto.
La diferencia entre los dos comportamientos queda reflejada en el siguiente ejemplo:

27 / 60

Figura 25 - Esquema Spring

3.1.3.3

Hibernate

Hibernate es una tecnologa que simplifica el acceso a base de datos que se distribuye
como una herramienta de software libre distribuida bajo los trminos de la licencia GNU LGPL.
Permite establecer una correspondencia entre el modelo de la Base de Datos Relacional
y una serie de clases que modelan los objetos de la aplicacin (mapeo objeto-relacional), es
decir, relaciona los dos modelos de datos que conviven en una aplicacin, el usado en la
memoria del ordenador (orientacin a objetos) y el usado en las bases de datos (modelo
relacional). Este mapeo hace que en la prctica se cree una base de datos orientada a objetos
virtual sobre la base de datos relacional, en la que Hibernate acta de intermediario con la
aplicacin que la utiliza.

Figura 26 - Esquema Hibernate

Con esta tecnologa disponemos de un sistema de acceso a bases de datos relacionales


de manera transparente, nicamente se deben escribir sentencias java y de manera
independiente, el cdigo escrito con Hibernate funcionar en cualquier motor de datos al que

28 / 60

se d soporte, ya que Hibernate permite a la aplicacin el manipular datos de la base de datos


operando sobre objetos.

3.2 Diseo de la persistencia


3.2.1

Diagrama E-R

Figura 27 - Diagrama E-R

Las tablas que finalmente obtenemos en nuestro sistema son las siguientes:

Figura 28 - Diseo Base de Datos

29 / 60

Se ha deshecho la relacin de herencia de Cliente y Administrador con Usuario creando


una nica entidad con un atributo (tipo) que servir para distinguirlos.
La relacin AlbumVisible se ha convertido en una tabla que nos permitir determinar los
lbumes que podr ver un usuario, sea o no propietario del mismo.
Los archivos con las fotografas no se almacenarn en la BD, sino en directorio del
servidor cuyo nombre vendr definido a partir de la clave primaria de cada fotografa.
En la tabla de Log guardaremos el identificador del usuario que ha realizado la
modificacin (idAutor), mientras que el objeto que ha sufrido la modificacin vendr identificado
por su tipo (usuario, lbum,) y su identificador correspondiente (su clave primaria).

3.3 Interfaz de usuario


El diseo de las clases frontera determinadas a partir de los Diagramas de
Colaboracin ya con el diseo definitivo es el que se muestra a continuacin.
La estructura de todas las pantallas de la aplicacin es similar:

Cabecera en la que aparece el nombre y el logo de la web. En caso de que haya un


usuario conectado se muestra su alias y si se ha seleccionado algn lbum para
trabajar con l tambin aparece su nombre.

Men lateral en la parte izquierda en el que van apareciendo las diferentes opciones
disponibles en funcin de la pantalla en la que nos encontremos. En las pantallas en
las que necesariamente tiene que haber un usuario conectado para ser mostradas,
siempre aparece como primera opcin Desconexin que elimina la sesin del
usuario y le enva a la pgina inicial de la aplicacin.

En la parte superior del cuerpo de las pginas tenemos una barra que nos indica en
qu lugar de la web nos encontramos. Pulsando sobre alguna de las pginas previas
a la actual nos enva a dicha pgina sin completar la accin (alta, modificacin,...)
que se estuviera realizando en ese momento.

En el cuerpo propiamente dicho de la pgina nos aparece la informacin referente a


dicha pgina y que evidentemente ir cambiando en funcin de la navegacin que
vaya haciendo el usuario en la aplicacin.

Pie en la que se muestra informacin de la web

Hay que tener en cuenta que el diseo de las pantallas y la captura de las imgenes se
ha realizado usando Firefox. Utilizando otros navegadores el aspecto puede diferir algo
respecto al mostrado aqu.

30 / 60

Pgina inicial
Pantalla inicial de la aplicacin con una breve descripcin del servicio ofrecido.

Las opciones disponibles son la creacin de un nuevo usuario o bien la conexin al


sistema utilizando un usuario ya existente en el sistema.

Figura 29 - Pantalla: Home

31 / 60

Registro de nuevo cliente

Pantalla de registro para la creacin de un nuevo usuario cliente del sistema. Se


identifican los campos obligatorios en el formulario y se solicita al usuario que lea y acepte las
condiciones de uso de los servicios ofrecidos por la aplicacin.
Desde esta pantalla el usuario slo puede completar el alta del nuevo usuario o bien
abandonarla saliendo a la pantalla inicial de la aplicacin.

Figura 30 - Pantalla: Registro Cliente

32 / 60

Confirmacin de registro OK

Se muestra un mensaje indicando que el alta del nuevo usuario se ha realizado


correctamente. Al completarse el alta del nuevo usuario se realiza automticamente su
conexin al sistema.
El usuario puede desconectarse del sistema o bien ir a su pgina inicial para empezar a
trabajar en la web.

Figura 31 - Pantalla: Registro Cliente OK

33 / 60

Conexin

Pantalla de conexin al sistema utilizando un usuario ya registrado previamente. El


usuario tiene que proporcionar su identificador y la clave de conexin correspondiente.
El usuario puede completar los datos solicitados para realizar la conexin o bien salir a la
pgina inicial de la aplicacin.
La pantalla mostrada despus de realizada la conexin depender del tipo de usuario
que la realiza (cliente o administrador).
A partir del momento en el que se realiza la conexin aparece el alias del usuario en la
parte superior derecha de la pgina.

Figura 32 - Pantalla: Conexin

34 / 60

Lista de lbumes del usuario conectado

Es la pgina que le aparece inicialmente a un cliente cuando realiza su conexin al


sistema, en ella aparecen la lista de los lbumes a los que tiene acceso ya sea como
propietario o como invitado.
Los lbumes visibles para el usuario pero que no son de su propiedad aparecen en la
lista marcados con (**).
Desde aqu el usuario tiene tres opciones, modificar los datos de su usuario, crear un
nuevo lbum, o bien acceder a algunos de los lbumes que tiene disponibles pulsando sobre
su nombre.
Si se opta por seleccionar uno de los lbumes disponibles a partir de ese momento
aparecer el nombre del lbum elegido en la parte superior derecha de la pantalla.

Figura 33 - Pantalla: Lista de lbumes

35 / 60

Modificacin del propio usuario

La pantalla permite que un usuario modifique sus propios datos. Salvo el propio alias del
usuario, el resto de campos son modificables.
Una vez confirmada la modificacin se vuelve a mostrar al usuario la pantalla en la que
aparecen los lbumes de los que dispone.

Figura 34 - Pantalla: Modificacin usuario

36 / 60

Alta de un nuevo lbum

Le permite a un usuario realizar el alta de un nuevo lbum de su propiedad para lo cual


slo es obligatorio que le d un nombre, la descripcin es opcional.
Al confirmar el alta se le muestra al usuario la lista de lbumes de los que dispone en la
que ya aparece el lbum creado.

Figura 35 - Pantalla: Alta de lbum

37 / 60

Lista de fotos de un lbum propio


Muestra la lista de fotografas relacionadas a un lbum propiedad del usuario conectado.

En esta pantalla el usuario puede gestionar el lbum modificando sus datos o bien
dndolo de baja, puede invitar a otro usuario para que quede autorizado a ver el lbum y
tambin puede aadir nuevas fotografas al lbum.
Pulsando sobre la fotografa se enlaza con la pantalla en la que se muestra la fotografa
y donde adems tenemos las opciones para gestionarla.

Figura 36 - Pantalla: Lista de fotos (propietario)

38 / 60

Lista de fotos de un lbum para un invitado

La pantalla es idntica a la anterior con la salvedad de que al estar en un lbum del que
el usuario no es propietario las opciones disponibles son diferentes.
Desaparecen las opciones del men desde las que se puede realizar la gestin del
lbum y aparece una opcin desde la que se puede dar de baja la invitacin recibida por el
usuario, con lo que el lbum al que ha sido invitado desaparecer de su lista de lbumes
disponibles.
Igual que en el caso anterior, pulsando sobre la imagen se accede a la pantalla en la que
se muestra la fotografa.

Figura 37 - Pantalla: Lista de fotos (invitado)

39 / 60

Modificacin de un lbum

Muestra la informacin referente a un lbum dejando los campos desprotegidos para que
puedan ser modificados por el usuario. Igual que en el caso del alta el nombre del lbum es
obligatorio, pero la descripcin asociada no lo es.
Una vez confirmada la modificacin se devuelve al usuario a la lista de fotografas
vinculadas al lbum con el que est trabajando y si se ha modificado el nombre ste tambin
cambia en la cabecera de la pgina.

Figura 38 - Pantalla: Modificacin lbum

40 / 60

Baja de un lbum

Permite realizar la baja de un lbum propiedad del usuario. Esta accin implica el
borrado en el servidor del directorio asociado con este lbum y que es donde se guardan las
fotografas relacionadas, con lo que stas se eliminarn de forma permanente del servidor.
Una vez confirmado el borrado se devuelve al usuario a la lista de lbumes que tiene
disponibles y de la que ya habr desaparecido el lbum borrado.

Figura 39 - Pantalla: Baja de lbum

41 / 60

Invitar a un lbum

El propietario del lbum puede seleccionar un usuario del desplegable en el que


aparecen todos los usuarios del sistema a excepcin del propietario del lbum y de los usuarios
con rol de administrador.
Una vez confirmada la invitacin se devuelve al usuario a la lista de fotografas
vinculadas al lbum con el que est trabajando.

Figura 40 - Pantalla: Invitar a lbum

42 / 60

Baja de invitacin

La pantalla permite a un usuario que ha sido invitado a ver un lbum el eliminar ste de
su lista de lbumes disponibles. Esta accin elimina la relacin del usuario con el lbum, pero
no modifica en ningn aspecto las fotografas almacenadas en el servidor.
Una vez confirmada la baja se devuelve al usuario a la lista de lbumes que tiene
disponibles y en la que ya no aparecer el lbum eliminado.

Figura 41 - Pantalla: Eliminar invitacin

43 / 60

Alta de foto en lbum

Desde esta pantalla el usuario propietario de un lbum puede aadir nuevas fotografas
a dicho lbum, para ello basta con informar el nombre de la fotografa y seleccionar el archivo
que contiene la fotografa a subir al servidor. La descripcin es un campo opcional.
Una vez confirmada el alta se vuelve a mostrar al usuario la lista de fotografas que tiene
asociadas el lbum y en la que ya aparecer la nueva fotografa incorporada.

Figura 42 - Pantalla: Alta de foto

44 / 60

Consulta de fotografa de lbum propio

Se enlaza con esta pantalla al pulsar sobre una de las imgenes que aparecen en la lista
de fotografas de un lbum y desde ella se pueden modificar sus datos, o bien darla de baja del
lbum.
El usuario tambin dispone en esta pantalla de unos controles que le permiten navegar
por las fotografas del lbum sin necesidad sin necesidad de volver a salir a la lista de
fotografas que lo forman.
Estos controles permiten visualizar la fotografa anterior/posterior o bien la primera/ltima
del lbum. En caso de que la fotografa sea la primera o la ltima aparecen desactivados los
controles correspondientes.

Figura 43 - Pantalla: Consulta de foto de lbum propio

45 / 60

Consulta de fotografa de lbum para invitado

En el caso de que la fotografa consultada pertenezca a un lbum que no sea propiedad


del usuario se muestra la misma pantalla que en el caso anterior pero sin las opciones de men
que permiten enlazar con las operativas de modificacin y borrado de la fotografa.

Fi gura 44 - Pantalla: Consulta de foto de lbum invitado

46 / 60

Modificacin de foto

Esta pantalla permite modificar el nombre de la fotografa y su descripcin, siendo el


primer campo obligatorio y el segundo no. No se permite la modificacin del archivo
relacionado con lo que ya ni siquiera se muestra la opcin correspondiente.
Una vez realizada la modificacin se muestra al usuario la pantalla con la fotografa con
la que est trabajando.

Figura 45 - Pantalla: Modificacin de foto

47 / 60

Baja de fotografa

En la pantalla se solicita confirmacin al usuario para realizar la baja de la fotografa que


adems ser eliminada fsicamente del servidor.
Despus de confirmada la accin se devuelve al usuario a la lista de fotografas del
lbum con el que est trabajando.

Figura 46 - Pantalla: Baja de foto

48 / 60

Home del administrador

Pantalla inicial que se muestra a los usuarios con rol de administrador una vez se han
identificado correctamente en el sistema.
Las opciones de las que dispone el administrador son la modificacin de su usuario
(opcin exactamente igual a la ya descrita para los usuarios clientes), el alta de un nuevo
usuario con rol de administrador y el acceso a la lista de usuarios existentes en el sistema para
su gestin.

Figura 47 - Pantalla: Home de administrador

49 / 60

Registro administrador

La pantalla mostrada es idntica a la existente para el registro de usuarios clientes salvo


que no es necesario aceptar ningn tipo de condiciones de uso.
Una vez realizado el registro se devuelve al usuario a su pantalla inicial en la que se le
confirma que el alta se ha realizado correctamente.

Figura 48 - Pantalla: Alta de administrador

50 / 60

Lista de usuarios

Muestra al administrador la lista con todos los usuarios existentes en el sistema (salvo el
propio usuario conectado) con las opciones disponibles segn el tipo que sean.
Para todos los usuarios estn disponibles las opciones de modificacin y baja y slo para
los usuarios clientes est disponible tambin la opcin de gestin de sus lbumes.

Figura 49 - Pantalla: Lista de usuarios

51 / 60

Modificacin de usuario por administrador

Esta opcin le permite a un administrador el restaurar la password de cualquier usuario


por lo que se le muestra toda la informacin del usuario aunque slo est desprotegido el
campo de password.
Una vez confirmada la modificacin se devuelve al usuario a la lista de usuarios del
sistema.

Figura 50 - Pantalla: Modificacin de usuario (por administrador)

52 / 60

Baja de usuario

Se le solicita al administrador confirmacin de la baja de usuario solicitada. Si el usuario


es de tipo cliente esta baja implica el borrado de todos los directorios existentes en el servidor y
que estn relacionados con l y por lo tanto la eliminacin fsica de todas las fotografas que
este usuario tenga en el servidor.
Una vez confirmada la baja se devuelve al usuario a la lista de usuarios del sistema de la
que ya se habr eliminado el usuario borrado.

Figura 51 - Pantalla: Baja de usuario

53 / 60

Lista de lbumes de un usuario para el administrador

Muestra la lista de lbumes de los que el usuario del sistema es propietario permitiendo
la opcin de darlo de baja. Esta accin har que se muestre una pantalla de confirmacin
exactamente igual a la que aparece cuando la baja la hace el usuario propietario del lbum.
Una vez confirmada la modificacin se devuelve al usuario a la lista de usuarios del
sistema.

Figura 52 - Pantalla: Lista de lbumes (para administrador)

4 Implementacin
Para facilitar la implementacin se ha utilizado Maven que es un framework de gestin
de proyectos de software que proporciona un modelo estndar de gestin y descripcin de
proyectos.
Cubre las tareas que van desde la compilacin hasta la distribucin, despliegue y
documentacin de los proyectos, aunque en este TFC no se han utilizado todas sus
posibilidades.
Utiliza una serie de repositorios de software (que pueden ser locales o remotos), lo que
permite de una forma sencilla la reutilizacin de la lgica comn para todos los proyectos que
sigan los estndares de Maven.
Para reutilizar al mximo el cdigo JSP se ha utilizado SiteMesh que es un framework
de construccin de pginas web. Permite construir y decorar pginas web a partir de un patrn
diseado inicialmente lo que permite conseguir que una serie de pginas tengan una estructura
y un aspecto semejante, dando as un aspecto ms uniforme a las pginas de nuestro sitio
web.

54 / 60

4.1 Estructura de la aplicacin


En el directorio main tenemos las tres carpetas en las que se dividen los componentes
de la aplicacin
En la carpeta java tenemos todo el cdigo java estructurado en cinco paquetes, cada
uno de los cuales contiene las clases de un determinado tipo:

acciones: Contiene los componentes Action de Struts que son los que proporcionan
la lgica necesaria para dar respuesta a la solicitud hecha por el usuario.

interceptores: Contiene los Interceptors incorporados a Struts que permiten


realizar operaciones de pre/postproceso previas/posteriores a la ejecucin de un
Action. En este caso hay un nico interceptor que se encarga de validar si hay un
usuario autentificado o no en el sistema.

modelo: Contiene las clases que mapean los objetos persistentes del sistema, en
este caso las tablas de MySQL

servicios: Contiene las clases que se encargarn de todos los accesos a las tablas
de la aplicacin.

util: Contiene las clases no directamente relacionadas con el framework utilizado y


que pueden ser utilizadas desde diferentes puntos del sistema. Contiene las clases
que permiten realizar el envo de e-mails y la gestin de las fotografas almacenadas
en el servidor.

En la carpeta resources tenemos los archivos xml que contienen la configuracin del
sistema, los ms importantes de los cuales son:

struts.xml: Contiene la definicin de las acciones de Struts y la respuesta que hay


que dar para cada una de dichas acciones.

applicationContext.xml: Contiene la configuracin de Spring con las clases que


debe inyectar y el enlace con la base de datos del sistema, en este caso MySQL.

En la carpeta webapp est toda la parte visual de la aplicacin, esto es, desde los
componentes jsp hasta las imgenes e iconos utilizados.

jsp: Contiene el cuerpo de las pginas jsp utilizadas en la aplicacin.

menus: Corresponden a los mens laterales y a la barra superior que aparecen en


las pginas, cada uno de los cuales puede ser utilizado en diferentes pginas.

imagenes: Contiene las imgenes e iconos utilizados en la decoracin de las


pginas. No contiene las imgenes gestionadas por la propia aplicacin.

styles: Archivo css con la definicin de las caractersticas de los diferentes


componentes visuales de las pantallas.

WEB-INF: Contiene por un lado el archivo web.xml en el que est la definicin del
ncleo de Struts (el FilterDispatcher) y por otros los archivos propios de Sitemesh
que es la herramienta encargada de montar las pginas de forma que el aspecto

55 / 60

final sea el ms uniforme posible. En este directorio, dentro de la carpeta decorators


tenemos el archivo main.jsp que es el utilizado como maqueta a la hora de montar
las diferentes pginas.

4.2 Almacenamiento en el servidor


Las fotografas pertenecientes a los usuarios se almacenan en un directorio del servidor
cuyo nombre viene parametrizado en el archivo applicationContext.xml. El nombre definido
por defecto es 'depositoFotos' .
Bajo este directorio tenemos un directorio para cada uno de los usuarios de la aplicacin,
dentro de stos tenemos un directorio para cada uno de los lbumes del cliente y en stos ya
encontramos las fotografas que lo forman.
La nomenclatura de los directorios y de las fotografas almacenadas est formada por la
concatenacin de una letra (P para propietario, A para lbum y F para fotografa) y la
correspondiente clave primaria del objeto. De esta forma la fotografa con clave 3, del lbum
con clave 2, perteneciente al usuario 1 la encontraramos en una direccin como la siguiente:
D:\Tomcat\apache-tomcat-6.0.18\webapps\pacofg_TFC\depositoFotos\P1\A2\F3.JPEG

4.3 Envo de e -mails


Para el envo de e-mails de aviso a los clientes se ha utilizado el API JavaMail de Sun.
Se ha desestimando la instalacin de un servidor SMTP propio, por lo que para poder
realizar el envo de correos, la aplicacin utilizar una cuenta conseguida de forma gratuita en
el servicio proporcionado por Yahoo.
Los parmetros de configuracin de dicha cuenta de correo se encuentran en el archivo
applicationContext.xml y son fcilmente configurables.
El sistema puede enviar estos tres tipos diferentes de e-mails:

Invitacin a lbum.
- Asunto: Album Web: Invitacin
- Cuerpo: Nos complace comunicarle que el usuario de Album Web {alias usuario
propietario} le ha invitado a compartir su lbum {nombre lbum}.

Baja de usuario.
- Asunto: Album Web: Baja de usuario
- Cuerpo: Sentimos comunicarle que su usuario {alias usuario} ha sido dado de baja
por el administrador de Album Web.

Baja de lbum.
- Asunto: Album Web: Baja de lbum
- Cuerpo: Sentimos comunicarle que su lbum {nombre lbum} ha sido dado de baja
por el administrador de Album Web.

56 / 60

5 Requerimientos
Para la realizacin del proyecto se han utilizado herramientas de sotfware libre y la lista
de las empleadas (con su correspondiente versin) es la siguiente:

Java 1.5.0.16: Lenguaje de programacin orientado a objetos utilizado en el


desarrollo del proyecto.

Maven 2.0.9: Herramienta para la gestin y construccin de proyectos. Permite


describir las dependencias del proyecto y se encarga de importarlas desde la red.

Struts 2.0.11.2: Herramienta para el desarrollo de aplicaciones web y que utiliza el


patrn MVC para el desarrollo de dichas aplicaciones

Spring 2.0.5: Herramienta que permite la interaccin con el sistema de gestin de


base de datos y el control transaccional de las operaciones.

Hibernate 3.2.1: Herramienta de mapeo objeto-relacional para java que permite el


mapeo de atributos entre una base de datos relacional y el modelo de objetos de una
aplicacin.

MySQL 5.0.51b: Sistema de gestin de base de datos relacional muy rpida en


aplicaciones de baja concurrencia como es el caso del presente proyecto.

mysql-connector-java-5.1.5: Driver para la conexin de java con MySQL.

Tomcat 6.0.18: Servidor web con soporte de servlets y JSPs

SiteMesh 2.2.1: Herramienta que permite la estructuracin y decoracin de pginas


web de forma que facilita el que las diferentes pginas que forman una web tengan
un aspecto uniforme.

JavaMail 1.3.3: Extensin de Java que permite el envo y recepcin de e-mails.

6 Instalacin
Para poder utilizar la aplicacin es necesario disponer de un servidor en el que desplegar
la aplicacin como puede ser Tomcat y tener instalado el sistema de gestin de base de datos
MySQL.
Una vez cumplidos los requisitos anteriores hay que ejecutar en MySQL el script que se
adjunta con este documento para crear el usuario y la base de datos empleados por la
aplicacin.
La configuracin actual de la aplicacin utiliza la IP 127.0.0.1 y el puerto 3306, as como
el usuario pacofg (creado con el script anteriormente mencionado) con password tfc para
realizar la conexin. Cualquier cambio en alguno de estos parmetros se tendra que hacer en
el archivo applicationContext.xml que es donde est definida dicha configuracin.

7 Valoracin econmica
57 / 60

Se han cumplido todos los plazos previstos en la planificacin inicial, pero a un coste
muy superior al esperado.
La causa de este incremento en el coste ha sido la necesidad de simultanear el trabajo
propiamente dicho del TFC con la instalacin y el estudio del manejo de todas las herramientas
utilizadas en su desarrollo, esto hace que cualquier valoracin del coste del proyecto quede
absolutamente desvirtuada y carezca de cualquier valor, ni siquiera estimativo.

8 Conclusiones
La conclusin tras la realizacin de este TFC es que en general la tecnologa relacionada
es difcil de asimilar para un recin llegado al mundo de Java EE, pero que una vez
comprendida mnimamente es relativamente sencillo el poder avanzar.
La gran cantidad de alternativas disponibles a la hora de decidir las herramientas a
utilizar es una ventaja para un experto ya que le proporciona una flexibilidad enorme que no
podra tener de otra forma, pero para un principiante puede ser un gran inconveniente.
Esta variedad en las herramientas disponibles, cada una con sus mltiples versiones
(parece que no siempre compatibles entre s) y unido en algunos casos a una documentacin
un tanto crptica, hacen que el usuario novato se encuentre perdido en medio de la inmensidad
del mundo Java EE.
Se ha conseguido cumplir con los requerimientos planteados inicialmente en el proyecto,
aunque sera fcil encontrar aspectos en los que la aplicacin podra ser mejorada:

Mejorar el control de errores, por ejemplo en los accesos a BBDD.

Mejorar la seguridad del sistema (incluso las passwords se guardan en claro en la


BBDD).

Implementar bsquedas de usuarios para facilitar la realizacin de invitaciones por parte


de los clientes o la gestin de usuarios por parte de los administradores.

Crear un sistema de consultas y de bsquedas en el log de la aplicacin que permitiera


el control del sistema por parte de los usuarios.

De cara a mejorar la gestin y el rendimiento de sistema se podran generar estadsticas


que permitieran identificar a los usuarios con mayor consumo de espacio en el servidor,
usuarios que no se conectan desde hace tiempo, ...

Toda la aplicacin est desarrollada en castellano, se podra incluir el idioma en el perfil


de los usuarios de forma que stos pudieran elegir el idioma en que se les mostrara la
web.

9 Bibliografa
v Java
Pgina de Sun sobre Java: http://java.sun.com/javase/
Java en Castellano: http://www.programacion.net/java/
JavaWorld: http://www.javaworld.com/

58 / 60

The Server Side: http://www.theserverside.com/

v Java EE
Tutoriales de Adictos al Trabajo: http://www.adictosaltrabajo.com/tutoriales.php
Pgina de Sun sobre Java EE: http://java.sun.com/javaee/
The Java EE 5 Tutorial: http://java.sun.com/javaee/5/docs/tutorial/doc/
Core J2EE Patterns: http://java.sun.com/blueprints/corej2eepatterns/Patterns/index.html

v Struts2
Sitio del proyecto Struts2: http://struts.apache.org/2.x/
Tutoriales de Struts2: http://www.roseindia.net/struts/struts2/
Struts2 in Action. Donald Brown, Chad Michels Davis, Scott Stanlick. Manning - 2008.
Starting with Struts2. Ian Roughley. C4Media Inc - 2006.
Practical Apache Struts2 Web 2.0 Projects. Ian Roughley. Apress - 2007.

v Spring
Sitio del proyecto Spring: http://www.springsource.org/
SpringHispano: http://www.springhispano.org/
Beginning Spring Framework 2. Thomas Van de Velde, Bruce Snyder, Christian Dupuis,
Sing Li, Anne Horton, Naveen Balani. Wiley Publishing Inc. - 2008.

v Hibernate
Sitio del proyecto Hibernate: http://www.hibernate.org/
Hibernate Annotations: http://www.hibernate.org/hib_docs/annotations/reference/en/html/
Java Persistence with Hibernate. Christian Bauer, Gavin King. Manning - 2008.

v SiteMesh
Sitio del proyecto SiteMesh: http://www.opensymphony.com/sitemesh/

v Maven

59 / 60

Sitio del proyecto Maven: http://maven.apache.org/index.html


Maven Getting Started Guide: http://maven.apache.org/guides/getting-started/index.html

v Tomcat
Sitio del proyecto Tomcat: http://tomcat.apache.org/

v MySQL
Sitio del proyecto MySQL: http://www.mysql.com/
Manual Referencia Oficial Ver 5.0: http://dev.mysql.com/doc/refman/5.0/es/index.html

v JavaMail
Sitio de Sun para JavaMail: http://java.sun.com/products/javamail/

v HTML - CSS
Tutorial de HTML: http://www.w3schools.com/html/default.asp
Tutorial de CSS: http://www.w3schools.com/css/default.asp

v Informacin en general
Google: http://www.google.es/
Yahoo: http://es.yahoo.com/
Wikipedia en castellano: http://es.wikipedia.org/wiki/Wikipedia:Portada
Wikipedia en ingls: http://en.wikipedia.org/wiki/Main_Page

60 / 60

También podría gustarte