Proyecto Java EE
 

Componentes de presentación

Introducción

El objetivo de este módulo es la creación de una parte privada para la gestión de libros por parte de un usuario bibliotecario. En ella podremos realizar el CRUD (Create-Read-Update-Delete) de libros, así como ver un listado de los mismos. Además, introduciremos la posibilidad de subir las portadas de los libros, que se guardarán en base de datos como un LOB. Para ello, deberemos modificar nuestra tabla libro añadiendo una nueva columna mediante la siguiente sentencia SQL.

alter table `libro` add picture longblob null;

Para la entrega se deberá etiquetar repositorio bitbucket con el tag entrega-proyint-jsf.

Login del bibliotecario

Lo primero que deberemoso desarrollar será el login del bibliotecario. Si no hemos creado ningún bibliotecario en nuestra base de datos, podemos crear uno mediante la siguiente sentencia sql:

INSERT INTO  `biblioteca`.`bibliotecario` (
	`id` ,
	`email` ,
	`login` ,
	`nif` ,
	`password`
) VALUES (
	NULL ,  
	'bibliotecario@expertojee.es',  
	'bibliotecario',  
	'11222333N',  
	'bibliotecario'
);

En la pantalla de login, el bibliotecario introducirá su nombre y contraseña. Si no se introducen correctamente o el usuario no está en el sistema, se mostrará un mensaje de error. En caso contrario, accederemos a la pantalla principal.

También, si un usuario se encuentra ya logado en el sistema y quisiéramos acceder a la página de login, seremos redirigidos directamente a la página principal.

Cuando hagamos login, deberemos guardar en sesión un objeto de la clase BibliotecarioDomain. NO se permite anotar esta clase con @ManagedBean.

Página principal - Listado de libros

La primera página con la que nos encontraremos nada más realizar el login será el listado de los libros actualmente dados de alta en la aplicación. Éstos se mostrarán en forma de tabla paginada(máximo de ítems por página: 4), con los datos indicados en la siguiente imagen:

Observemos que, si un libro no tiene carátula, se mostrará un mensaje indicándolo

En caso de no tener libros con los que operar, aquí tienes un script de creación de unos cuantos

Menú del usuario

El menú del usuario nos mostrará su nombre, y nos permitirá las opciones de:

  • Ver el listado de libros
  • Crear un nuevo libro
  • Cerrar la sesión. La sesión deberá ser invalidada y deberemos ser redirigidos a la pantalla de login una vez invalidada.

Borrado de libros

A la hora de borrar un libro, siempre preguntaremos primero al usuario de si está seguro de querer realizar la operación.

Si por algún caso no pudiésemos borrar el libro, lo indicaríamos al usuario

En caso contrario, también indicaremos al usuario que el borrado se ha realizado exitosamente

Creación de libros

Crearemos un formulario que nos permitirá dar de alta un nuevo libro.

Una vez se haya creado el libro, mostraremos el siguiente mensaje (intenta usar variables flash para ello):

Edición de libros

También, tendremos la posibilidad de editar un libro existente. El formulario a utilizar deberá ser obligatoriamente el mismo que hemos empleado para la creación de libros.

Una vez se haya creado el libro, mostraremos el siguiente mensaje (intenta usar variables flash para ello):

Validaciones

Tanto la creación como edición de libros deberán tener las siguientes validaciones:

  • ISBN: 10 dígitos (validar mediante expresión regular)
  • Título: obligatorio. Longitud entre 4 y 255 caracteres.
  • Autor: obligatorio. Longitud entre 4 y 255 caracteres.
  • Número de páginas: obligatorio. Valor mínimo: 1.
  • Fecha de alta: obligatorio. Formato: dd/mm/aaaa. Deberemos poder seleccionarla de un datepicker.
  • Carátula: opcional. Deberemos buscar algún componente en RichFaces que nos permita permita realizar la subida de ficheros.

No podemos modificar la entidad libro para añadir anotaciones JSR 303.

No es necesario personalizar los mensajes de validación, aceptaremos como válidos los que se muestran por defecto.

Control de acceso

Deberemos realizar un control de acceso mediante eventos para que no se permita el acceso a una vista si el usuario no está logado. Si se da el caso, seremos redirigidos a la pantalla de login

Ayuda: Esqueleto de proyecto

En este enlace puedes descargarte un esqueleto de proyecto. Tiene algunos elementos implementados, así como un servlet que recupera una imagen de un libro de base de datos para mostrarlo en una página web. Además, aquí podrás descargarte las clases que contienen nuevos servicios o modificaciones en los dominios, cuyos cambios serán explicados durante la sesión.