Skip to content

dds-utn/calendarios

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

java-base-project

Este es el código base para el ejercicio de Calendarios. Está diseñado para:

  • Java 17. ⚠️ Si bien el proyecto no lo limita explícitamente, el comando mvn verify no funcionará con versiones más antiguas de Java.
  • JUnit 5. ⚠️ La versión 5 de JUnit es la más nueva del framework y presenta algunas diferencias respecto a la versión "clásica" (JUnit 4). Para mayores detalles, ver:
  • Maven 3.3 o superior

El enunciado

Acá vas a encontrar el enunciado original de este ejercicio. Leelo atentamente y tratá de resolver en orden los requerimientos que plantea:

  1. Permitir que une usuarie tenga muchos calendarios
  2. Permitir que en cada calendario se agenden múltiples eventos
  3. Permitir que los eventos registren nombre, fecha y hora de inicio y fin, ubicación, invitades (otros usuaries)
  4. Permitir listar los próximos eventos entre dos fechas (para une usuarie)
  5. Permitir saber cuánto falta para un cierto calendarios.evento (por ejemplo, 15 horas)
  6. Permitir saber si dos eventos están solapado, y en tal caso, con qué otros eventos del calendario
  7. Permitir agendar eventos con repeticiones, con una frecuencia diaria, semanal, mensual o anual
  8. Permitir saber si le usuarie llega al evento más próximo a tiempo, tomando en cuenta la ubicación actual de le usuarie y destino.
  9. Permitir asignarle a un evento varios recordatorios, que se enviarán cuando falte un cierto tiempo

Mientras vas implementando el código que resuelve el problema, codificá casos de prueba que validen la solución. Ya te dejamos algunos para que completes y te sirvan como punto de partida, pero no son suficientes y deberás agregar los tuyos.

Recomendaciones

  1. No modificar las interfaces en el paquetes calendarios.servicios ni implementarlas. Representan servicios externos.
  2. Para hacer las pruebas probablemente convenga mockearlas. Mockito está incluido en el proyecto. Recordar que cuentan con esta guía rápida
  3. Las clases Usuario, Evento y Calendario se proveen como punto de partida, pero pueden ser modificadas según consideres necesario. Se recomienda de todas formas apegarse a la interfaz mínima propuesta.
  4. La clase Ubicacion se provee como implementación trivial de un par latitud-longitud. No es necesario modificarla, pero tampoco está prohibido.
  5. La clase Pending está sólo para que el código que trae el proyecto por defecto compile. Podés borrarla una vez que termines.
  6. Probablemente te convenga partir CalendariosTest en varias otras clases para que sea más sencillo escribir las pruebas.
  7. Hay tests que están implementados completamente (pero no andan), otros que están implementados parcialmente y otros que tenés que implementar vos desde cero. En todos los casos podés modificarlos según consideres necesario pero no elimines los casos de prueba planteados, que están agrupados según los requerimientos del dominio.
  8. Intentá sacar el máximo provecho de la biblitoca de fechas de Java (LocalDate, LocalDateTime, Duration, ChronoUnit, Period, etc)
  9. Intentá sacar el máximo provecho de la biblioteca de colecciones y Streams de Java

Ejecutar tests

mvn test

Validar el proyecto de forma exahustiva

mvn clean verify

Este comando hará lo siguiente:

  1. Ejecutará los tests
  2. Validará las convenciones de formato mediante checkstyle
  3. Detectará la presencia de (ciertos) code smells
  4. Validará la cobertura del proyecto

Entrega del proyecto

Para entregar el proyecto, crear un tag llamado entrega-final. Es importante que antes de realizarlo se corra la validación explicada en el punto anterior. Se recomienda hacerlo de la siguiente forma:

mvn clean verify && git tag entrega-final && git push origin HEAD --tags

Configuración del IDE (IntelliJ)

  1. Tabular con dos espacios: Screenshot_2021-04-09_18-23-26
  2. Instalar y configurar Checkstyle:
    1. Instalar el plugin https://plugins.jetbrains.com/plugin/1065-checkstyle-idea:
    2. Configurarlo activando los Checks de Google y la versión de Checkstyle == 8.35: Screenshot_2021-04-09_18-16-13
  3. Usar fin de linea unix
    1. En Settings/Preferences, ir a a Editor | Code Style.
    2. En la lista Line separator, seleccionar Unix and OS X (\n). Screenshot 2021-04-10 03-49-00

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages