Skip to content

fsoladur/eventos

Repository files navigation

Introducción

Este trabajo será realizado por:

  • Fabián Sola Durán
  • Antonio Pérez Serrano

El objetivo de este trabajo es la realización de un servicio de organización de eventos que permita a los usuarios crear eventos los cuáles estén asociados a ocupaciones asociadas a espacios físicos cercanos a ciertos puntos de interés.

Para ello, hemos utilizado el patrón Repositorio y el patrón Servicio además de métodos factoría para la creación de los mismos. Todo ello, utilizando el principio de inversión de dependencias.

Testing

Para la realización de los test hemos utilizado JUnit 5. Para ello, hemos creado una clase de test para cada clase Servicio de nuestro proyecto. En dichas clases de test, hemos creado una instancia de la clase Servicio a testear y hemos creado los test necesarios para comprobar que el servicio funciona correctamente.

Estos test hacen uso de la base de datos por lo que después de las ejecuciones de pruebas, se deja la base de datos vacía para su posterior uso. Es decir, Una vez puesto en funcionamiento nuestro programa NO DEBEN EJECUTARSE LOS TEST CON UNA CONEXIÓN A BASE DE DATOS DE PRODUCCIÓN YA QUE BORRARÍA SU CONTENIDO

Programa de prueba

Para probar el programa, hemos creado una clase PruebaPrograma en la que se crean instancias de las clases Servicio y Repositorio y se realizan las operaciones necesarias para comprobar que el programa funciona correctamente.

Manual de usuario

En este apartado añadiremos una guía para el uso correcto de nuestra aplicación en el que visualizaremos las distintas vistas que hemos definido y cómo se puede conseguir interactuar con ellas. Previo a realizar cualquier comprobación de la aplicación debemos de insertar en base de datos una serie de datos ficticios en la aplicación para poder interactuar con la misma. Se adjunta el script SQL que nosotros hemos utilizado para la realización de pruebas:

INSERT INTO espaciofisico
(id, nombre, propietario, capacidad, longitud, latitud, direccion, descripcion, estado)
VALUES
-- Inserciones para Fabián
('1', 'Auditorio Central', 'Fabián', 300, -103.349609, 20.659698, 'Av. Principal 123, Ciudad',
'Auditorio ideal para conferencias y eventos académicos.', 'ACTIVO'),
('2', 'Salón de Eventos Sociales', 'Fabián', 200, -103.360001, 20.650001,
 'Calle Flores 456, Ciudad', 'Espacio perfecto para reuniones y celebraciones.', 'ACTIVO'),
('3', 'Centro de Convenciones', 'Fabián', 800, -103.370000, 20.640000,
'Av. Las Torres 789, Ciudad', 'Moderno centro para grandes exposiciones y ferias.', 'ACTIVO'),
('4', 'Galería de Arte Moderno', 'Fabián', 100, -103.365000, 20.645000, 'Av. Independencia 101, Ciudad', 'Galería con exposiciones de artistas contemporáneos.', 'ACTIVO'),
('5', 'Plaza de Exposiciones', 'Fabián', 500, -103.361111, 20.643333, 'Av. Expo 303, Ciudad',
'Plaza amplia para exposiciones al aire libre.', 'ACTIVO'),

-- Inserciones para Antonio
('6', 'Teatro Alameda', 'Antonio', 200, -103.351000, 20.661000,
'Av. Alameda 789, Ciudad', 'Teatro clásico para obras culturales.', 'ACTIVO'),
('7', 'Campo Deportivo Regional', 'Antonio', 600, -103.355555, 20.652222,
'Calle Campo Deportivo 123, Ciudad', 'Instalaciones para torneos y eventos deportivos.', 'ACTIVO'),
('8', 'Sala de Conferencias Empresarial', 'Antonio', 150, -103.357890, 20.648900,
 'Edificio Empresarial 405, Ciudad', 'Sala equipada con tecnología moderna.', 'ACTIVO'),
('9', 'Parque Recreativo', 'Antonio', 400, -103.359999, 20.650123, 'Calle Parque 678, Ciudad',
'Espacio abierto para actividades recreativas y culturales.', 'ACTIVO'),
('10', 'Biblioteca Regional', 'Antonio', 250, -103.360987, 20.651456, 'Calle del Saber 202, Ciudad',
 'Biblioteca con recursos extensos para estudiantes y académicos.', 'ACTIVO'),

-- Más inserciones para ambos
('11', 'Auditorio del Este', 'Fabián', 350, -103.340001, 20.659111, 'Av. Este 120, Ciudad',
'Espacio para eventos académicos y culturales.', 'ACTIVO'),
('12', 'Estadio del Norte', 'Antonio', 1200, -103.380500, 20.670300,
 'Boulevard Norte 678, Ciudad', 'Gran estadio para eventos deportivos y conciertos.', 'ACTIVO'),
('13', 'Centro Cultural Municipal', 'Fabián', 180, -103.350456, 20.650789,
 'Calle Cultura 345, Ciudad', 'Centro cultural con talleres y exposiciones.', 'ACTIVO'),
('14', 'Centro de Eventos Exclusivo', 'Antonio', 700, -103.351234, 20.651987,
'Calle Exclusiva 567, Ciudad', 'Espacio para eventos privados de alto perfil.', 'ACTIVO'),
('15', 'Zona Deportiva Olímpica', 'Fabián', 800, -103.362222, 20.644444, 'Av. Olímpica 432, Ciudad',
'Zona para competencias deportivas de alto nivel.', 'ACTIVO');

El contenido de este script también se puede encontrar en la raíz del proyecto en el fichero "script_pruebas.sql".

Una vez hayamos insertado los distintos datos que hemos proporcionado podremos ejecutar la aplicación desde nuestro entorno eclipse utilizando como objetivo de dicha ejecución el servidor jetty tal y como nos han enseñado durante las prácticas de la asignatura. A continuación se irán adjuntando distintos pantallazos de nuestro proyecto e iremos explicando qué es lo que se puede hacer para interactuar con el mismo.

Aclarar que de forma opcional y porque nos parecía útil implementamos un bean para cambiar el idioma de la aplicación en cualquier momento utilizando un desplegable

Interfaz de falso inicio de sesión

La interfaz que hemos realizado para simular el inicio de sesión es la siguiente:

Interfaz de falso inicio de sesión

Como podemos ver dicha interfaz tiene un encabezado con el nombre de la aplicación y nos da la posibilidad de escribir nuestro nombre de usuario y, además, tiene un desplegable el cual tiene dos opciones, una primera opción es que iniciar sesión con rol organizador y un segundo rol para iniciar sesión como propietario. Pues lo dicho, vamos a realizar justo lo que hemos explicado, vamos a introducir un nombre y vamos a seleccionar nuestro rol.

Escogiendo rol e introduciendo nuestro nombre

Por último, tras haber completado esta información pulsamos en el inicio de sesión lo cual nos redirigirá a la siguiente vista.

Interfaz del propietario de espacios físicos

La vista asociada a un propietario será la siguiente:

Interfaz principal del propietario

En esta vista como podemos ver encontramos diversos componentes en la interfaz coméntemoslos de arriba hacia abajo:

En la parte más superior de la interfaz encontramos un componente de primefaces llamado breadcrumb el cual nos servirá para asegurar la navegabilidad hacia atrás en nuestra aplicación y volver al inicio de sesión para poder realizar el cambio de rol de un usuario. Es decir, si pulsamos sobre el icono de la casa, volveremos a la interfaz de inicio de sesión Posteriormente, como ya hemos comentado, tenemos un desplegable el cual nos permitirá cambiar en cualquier momento el lenguaje de la aplicación Por último, tenemos una tabla la cual nos permitirá cambiar el estado de cualquier espacio físico del cual somos propietarios de la siguiente forma

Nos tendremos que situar en la fila en cuestión del espacio físico que queremos modificar su estado.

Y nos tendremos que situar en la columna correspondiente al estado y le daremos clic para que nos aparezca un desplegable con dos opciones de estado "ACTIVO" o "CERRADO_TEMPORALMENTE".

Cómo cambiar el estado de un espacio físico

Una vez hayamos cambiado el estado al deseado pulsamos sobre el botón aplicar cambios y se nos informará de que se ha cambiado el estado de nuestro espacio físico con una notificación en la parte superior derecha de la pantalla tal y como se ve en la siguiente imagen.

Notificación de que el estado del espacio físico se ha cambiado

Interfaz asociada a un organizador de eventos

Un organizador de eventos debe de tener la capacidad de dar alta eventos y, además, debe de tener la capacidad de poder buscar los espacios físicos donde va a realizar dichos eventos. Es por este motivo que ideamos la siguiente interfaz:

Interfaz inicial del organizador

En esta interfaz, al igual que en la interfaz del propietario vamos a ir de arriba hacia abajo explicando los distintos componentes que encontramos en ella:

En primer lugar, al igual que en la interfaz del propietario encontramos un breadcrumb el cual nos sirve para asegurar la navegabilidad hacia atrás en nuestra aplicación y poder volver a la interfaz de inicio de sesión pulsando en el icono de la casita. Posteriormente, encontramos el desplegable de los idiomas en el que podemos seleccionar el idioma que deseamos utilizar. A continuación y en la misma fila encontramos tres componentes

  • Un selector de la fecha de inicio que es un componente de primefaces llamado DatePicker

  • Un selector de la fecha de fin de nuestro evento el cual también es un componente DatePicker de primefaces.

  • Un spinner también de la librería de primefaces el cual nos servirá para indicar la capacidad requerida para nuestro evento

Por último, tenemos una tabla donde nos saldrán todos los espacios físicos disponibles y con la capacidad mínima requerida en esas fechas para celebrar nuestro evento el cual vamos a crear y dar de alta a posteriori.

La manera de interactuar con la aplicación sería bastante simple.

Seleccionamos, fecha y hora de inicio y fecha y hora de fin.

Selección de fecha de inicio y fin

Seleccionamos la capacidad mínima requerida y pulsamos en el botón "Buscar espacios físicos".

Espacios físicos con capacidad suficiente

Puesto que en este caso de uso vamos a suponer que nuestro evento va a ser de caracter cultural decidimos escoger la biblioteca regional como espacio físico idóneo para nuestro evento. Por tanto, pulsamos sobre el botón "Crear un evento" de la fila cuyo nombre es "Biblioteca Regional".

Comenzando la creación del evento y seleccionando su espacio físico

Tras pulsar sobre dicho botón nos aparecerá una nueva vista la cual es un formulario que nos permitirá rellenar la información que falta para crear nuestro evento.

Formulario de crear evento

Como podemos ver en la anterior imagen, se nos ha autocompletado la información tanto de fecha de inicio, fecha de fin, el nombre del organizador y el número de plazas que inicialmente necesitábamos.

Por último, rellenamos toda la información necesaria para poder llevar a cabo la creación del evento (aclarar que categoría es un desplegable que contiene los tipos de eventos soportados):

Formulario completado

Tras haber realizado, el rellenado de información, pulsaremos sobre "Crear evento" y la Biblioteca regional nos dejará de aparecer como espacio físico disponible en ese rango de fechas además de aparecernos la notificación pertinente de creación.

Evento creado con éxito

About

Repositorio el cual contendrá la práctica que se realizará en la asignatura de Aplicaciones Distribuidas:

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors