Entrega 1

Objetivo

El objetivo de esta entrega es que los alumnos se acostumbren con la utilización de Maven como herramienta para gestionar el proceso de desarrollo, y TDD para orientar la implementación a las pruebas. Los alumnos deben utilizar el testeo unitario y prácticas de TDD para demostrar la completitud de los requerimientos a cubrir en esta entrega.

Requerimientos

    • Se debe poder crear un evento, cada evento debe tener una fecha, duración y una descripción, además puede contener información sobre la ubicación.

    • Debe existir la entidad usuario, esta entidad va a tener asociados los datos básicos del usuario.

    • Un usuario debe poder agregarse a un evento.

    • Un usuario debe poder cancelar su subscripción a un evento, solo si el evento no ocurrió.

    • Un usuario puede consultar todos los eventos a los cuales tiene una subscripción, tanto eventos pasados y los que estan por pasar.

    • A partir de un evento, se debe poder consultar todos los usuarios que estan subscriptos a dicho evento.

    • Existe un tipo especial de usuario, que puede realizar todas las tareas sobre un determinado usuario; los usuarios comunes solo pueden modificar sus propias subscripciones.

    • Se debe poder registrar la real asistencia de un usuario a un determinado evento.

    • Un usuario puede agregar comentarios a un determinado evento.

Notas

    • Se deben proveer distintos tests que validen cada uno de los requerimientos de la entrega.

    • Además del código de negocio y los tests, se debe proveer documentación aclaratoria sólamente sobre lo que no se pueda entender facilmente a partir del código.

    • Uno de los puntos que se va a tomar en cuenta es la correcta integración con Maven.

    • Para el desarrollo de esta entrega es recomendable basarse en el archetype maven-quickstart.

    • Se debe utilizar Log4j como herramienta de Logging. Teniendo en cuenta las siguientes observaciones:

      • Usar correctamente las categorias por clase.

      • Utilizar correctamente los distintos niveles de logs.

      • Definir la información más relevante que se muestra en cada línea.

      • La idea es que se pueda seguir la ejecución de la aplicación en un nivel DEBUG o TRACE, y que no se note si esta en INFO.