TP Agenda - Cliente pesado

El TP 1 usa la parte de contactos del dominio de la agenda.

Entrega 0

El objetivo de esta entrega es simplemente prepararnos para lo que sigue, es decir, instalar algunas herramientas que vamos a usar y familiarizarnos un poco con ellas. Las tareas a realizar son:

  • Preparar el entorno de trabajo con java, svn y maven, siguiendo las instrucciones que pueden encontrar acá.
  • Checkoutear y hacer andar el proyecto "videoclub" a partir de la información que les va a llegar por mail.
  • Programar la parte de dominio que luego vamos a usar para el TP. Para esto pueden seguir como ejemplo el dominio del Videoclub.
  • Crear un repositorio svn en xp-dev (o similar) y hacerlo accesible al tutor de trabajos prácticos correspondiente, es decir, darle permisos de acceso y enviarle la URL por mail.
  • Suscribirse a la(s) lista(s) de mails que corresponda(n) a tu curso, por ejemplo http://groups.google.com/group/algo3-unsam o http://groups.google.com/group/labso-unq.

Entrega 1

Se debe desarrollar una aplicación que permita la edición de un Contacto. Debe mostrar los campos editables:

  • Nombre: un campo de texto
  • Teléfono: un campo de texto
  • Mail: un campo de texto
  • Fecha de nacimiento: una fecha
  • Observaciones: texto
  • Ciudad: permite elegir una ciudad de la lista de ciudades disponibles, mostrando los nombres de las ciudades

La aplicación presentará un acceso al "Mecanismo de Persistencia" a través de objetos "Home"[1]. Esto nos permite que nuestra implementación de Persistencia sea Dummy[2] y mantenga los objetos en memoria. Al iniciar la aplicación se crean (en el mecanismo de persistencia) algunos contactos de prueba.

Al indicar que se quiere guardar el objeto, se debe llamar al "actualizar" de la home (ver definición de Home a continuación).

[1] Home: Es un objeto que se utiliza como interfaz con el repositorio de objetos. Suele tener mensajes que permiten agregar, actualizar, borrar y buscar objetos de un tipo particular.

[2] Dummy: Es un objeto que puede entender los mensajes que expone su interfaz pero que sin embargo no cumple con la responsabilidad definida en el contrato. Se usa para que otros objetos del sistema puedan trabajar sin necesidad de implementar aquello que el contrato exije. En nuestro caso esto es útil porque permite a la aplicación simular un acceso a persistencia sin tener que realizar la persistencia real.

Entrega 2

La aplicación debe permitir administrar los contactos. Para eso mostrará una página inicial en la que se encuentre una serie de filtros de búsquedas, una grilla de resultados y 3 botones: buscar, nuevo y editar.

Los filtros de búsqueda que debe mostrar son:

  • Nombre: texto
  • Telefono: texto
  • Mail: texto
  • Ciudad: selección entre las ciudades existentes.

Al presionar el botón buscar, la aplicación debe encontrar la lista de contactos que concuerde con los valores ingresados en los filtros. Si un valor no fue ingresado no participa de la búsqueda (Es decir, si no eligió un nombre no hay que buscar los contactos cuyo nombre sea nulo, simplemente no se tiene en cuenta)

La lista de contactos se muestra en la grilla de contactos.

La grilla tiene una columna por cada uno de los atributos: nombre, teléfono, mail, fecha de nacimiento, nombre de la ciudad.

La grilla debe permitir seleccionar una de sus filas. Al indicar editar, debe abrirse la pantalla desarrollada en la entrega anterior para editar contactos seleccionada de la grilla.

Al indicar nuevo, debe abrirse la pantalla desarrollada en la entrega anterior para editar un nuevo contacto, pero al guardar, se debe llamar al método que agrega un nuevo objeto en la Home.

Bonus

Agregar un filtro de fecha nacimiento que posea dos calendar, uno para desde y otro para hasta.