Proyecto de Integración
 

Sprint

Introducción

El objetivo de este Sprint es refactorizar la aplicación, añadir nuevos casos de uso, prácticar un poco de I+D y reforzar los contenidos de los módulos de Spring y JPA. Para ello se va a añadir parte de la funcionalidad explicada en la 1ª sesión de Caso de Estudio, tanto desde el punto de vista del bibliotecario como del socio (alumno o profesor).

Por otro lado, se plantea la resolución de una serie de problemas los cuales no se han visto en las sesiones de teoría y que requieren la búsqueda de información por parte del alumno, para elegir la mejor manera de solucionarlos.

Todo ello dándole importancia a la limpieza del código, minimizando la redundancia del mismo y favoreciendo los principios de bajo acoplamiento y alta cohesión.

Así pues, partiremos de la solución del proyecto de integración de la sesión de Spring.

Funcionalidades a Desarrollar

Vamos a separar la funcionalidad dependiendo del rol del usuario que entra a la aplicación.

Para entrar a la aplicación se nos presenta una página de login , la cual debe comprobar el rol del usuario y redirigirlo a su mini-site particular.

Es importante considerar a los usuarios que puedan tener multas , ya que no deberán poder realizar ninguna acción hasta que la multa caduque (la caducidad de multas la implementaremos en futuras sesiones del curso).

Independientemente del tipo de usuario, se mostrará una cabecera con información respecto al usuario conectado y el rol de dicho usuario. Además, se permitirá cambiar el idioma de la aplicación (i18n) entre 2 idiomas a elegir por el alumno (en principio, castellano e inglés). Para minimizar la carga de trabajo de traducir toda la aplicación se deben traducir todos los textos referentes a la cabecera, menús y pies de la aplicación.

Operaciones realizadas por un Bibliotecario

Cuando un bibliotecario entra a la aplicación, se le mostrará un listado con todos los libros que tiene la biblioteca con opción de listar por su tipo (disponible, reservado, prestado o todos), así como hacer la gestión de alta/baja/modificación de libros. Además, en cada libro se mostrarán las operaciones que se pueden realizar:

  • P : Préstamo de un libro. Si el libro esta disponible, el bibliotecario seleccionará qué usuario puede prestar el libro siempre y cuando no tenga su cupo de operaciones lleno. Si el libro ya estaba reservado, esta operación podrá pasar a préstamo siempre y cuando el usuario sea el mismo. Para ello, se mostrará una pantalla informativa para que el bibliotecario compruebe la identidad del usuario.
  • DP : Devolver un préstamo de un libro. Si el libro está prestado, el usuario puede devolver el libro. La operación de préstamo pasará a histórico. En el caso de que dicho libro tuviese una prerreserva, se creará una nueva reserva en nombre del alumno de la prerreserva. Además, hay que comprobar si el usuario lo ha devuelto a tiempo. En caso contrario, se le asignará una multa con el doble de días respecto a la fecha de devolución.
  • AR : Anular una reserva. Si el libro esta reservado, se eliminará la reserva.
  • PR : Prerreserva de un libro. Si el libro está prestado y no dispone de ninguna prerreserva previa, el bibliotecario debe elegir que usuario realizará la prerreserva sobre el libro.
  • APR : Anular una Prerreserva de un libro. Antes de anular esta operación, el bibliotecario debe comprobar el alumno que quiere anular la prerreserva.

Operaciones realizadas por un Socio

Del mismo modo que el bibliotecario, un socio (ya sea alumno o profesor) visualizará un listado con los libros, el cual se puede discriminar por tipo, y dependiendo de éste podrá:

  • R : Reserva un libro. Operación ya realizada en la sesión de Spring.
  • AR : Anular una reserva, siempre y cuando él sea el propietario de la reserva.
  • PR : Prerreserva un libro que está prestado, siempre y cuando no haya otra prerreserva sobre dicho libro. Operación ya realizada en la sesión de Spring.
  • APR : Anular una prerreserva, siempre y cuando él sea el propietario de la prerreserva.

Para el resto de operaciones debe personarse físicamente en la biblioteca para que un bibliotecario realice la operación oportuna.

I+D

Además de desarrollar un conjunto de casos de uso, también queremos hacer hincapié en la investigación y la auto-formación. Para ello, se plantea además las siguientes funcionalidades:

  • i18n y l10n : Toda aplicación debe soportar el cambio de idioma en cualquier momento. Para ello, se pide que la cabecera, el pie y el menú cambie de idioma a elección del usuario. La aplicación debe soportar al menos 2 idiomas (se deja a elección del alumno los 2 idiomas).
  • Gestor de Plantillas : En vez de utilizar un jsp con includes cuya estructura copiamos y pegamos de manera infinita, es recomendable usar un gestor de plantillas , de modo similar a los Facelets de JSF Para este proyecto se pide utilizar el framework Tiles tiles.apache.org
  • Exportar listados a PDF y Excel : Los datos, por regla general, son públicos, y es común tener que compartirlos a aplicaciones de terceros. Por eso, es muy común el uso de estos dos formatos. Para simplificar, se pide que dentro de la web del bibliotecario, se puedan exportar todos los listados tanto a PDF como a Excel; no hace falta que los informes sean bonitos, solo que muestren los datos.

A Entregar

Para facilitar la labor de compresión de la funcionalidad y el flujo de navegación, se ha colgado un solución "no testeada" en server.jtech.ua.es:8080/jbib-web-spring-2011 . Las imágenes utilizadas en la solución las podéis encontrar aquí: imagenes.zip .

El sprint tiene una calificación máxima de 20 puntos, repartidos de la siguiente manera:

  • Calidad del código: limpieza, bajo acoplamiento, alta cohesión (2 ptos)
  • Login (1 pto)
  • Casos de Uso Bibliotecario (9.5 ptos)
    • Listados de libros por estado (1.5 pto)
    • Anular reserva (1.5 pto)
    • Realización del préstamo (2 ptos)
    • Pasar una reserva a préstamo (1.5 ptos)
    • Devolver préstamo. Gestión de multas y prerreservas (3 ptos)
  • Casos de Uso Socio (2 ptos)
    • Anular reserva (1 pto)
    • Anular prerreserva (1 pto)
  • i18n (1.5 ptos)
  • Gestor de Plantillas Tiles (2 ptos)
  • Exportar listado de libros a PDF y Excel (2 ptos)

Recordar que la fecha de entrega es el 1 de Marzo . Para la entrega la dirección del proyecto padre proyint-jbib-spring (reutilizamos el proyecto de las sesiones de Spring) en el servidor SVN debe ser:

svn+ssh://server.jtech.ua.es/home/svn/<grupo>/trunk/proyint-jbib-sprint