TP Task Manager - Cliente Pesado

Básicamente, un Task Manager (también conocidos como issue tracker) es una aplicación que se utiliza para organizar tareas dentro de un proyecto. Una tarea es generada ante una necesidad puntual. Se raliza una estimación de tiempo y se asigna a una persona para que se resuelva. Cuando esa persoan resuelve la tarea, utiliza la aplicación para indicar la finalización de la misma, la resolución que se tomó, y cuanto tardó en realizarla.
Se pueden realizar varias consultas sobre las tareas, lo cual le da la utilidad como herramienta de project managment.
Algunos Task Managers conocidos son: Jira, Bugzilla, Mantis,

Entrega 1

Consiste en construir un dominio reducido del TaskManager:
Cuando se genera una tarea, se construye con la fecha de creación, la persona que la está generando y una descripción.
Luego a la tarea se le asigna una persona que la resuelva.
Se puede realizar una estimación de tiempo.
Cuando una persona resuelve el problema, indica cuanto tiempo le llevó la tarea.
Debe poder calcularse el desvío de tiempo |Tiempo Real - Tiempo Estimado| y si la tarea está atrasada o terminó antes de tiempo.
El costo de una tarea se calcula cómo el tiempo real * el valor hora hombre de la persona asignada.

Vamos a construir además, una/s clase/s que representará nuestro acceso a la persistencia. Como éste no es un tema que veremos en la materia, la implementación mantendrá los objetos en memoria. -Usando collecciones y/o mapas-
En principio le podemos pedir:
-Todas las tareas
-Todas las personas
-Las tareas de una persona

Entrega 2

Consiste en editar una tarea desde la interface gráfica. Se creará una vista que tenga como modelo una tarea. (La selección de la tarea a editar no es importante, puede ser instancia en la inicialización de la aplicación, o buscada a través del acceso a persistencia)

Esta vista tendrá controles de entrada para la descripción, persona asignada, tiempo estimado, tiempo real.

Entrega 3
Se debe realizar un panel de búsqueda de tareas. El mismo consiste en un combo para filtrar las tareas por usuario asignado.
Los resultados deben ser mostrados en una grilla con las siguientes columnas:
 -Persona Creadora
 -Persona Asignada
- Tiempo estimado
- Tiempo real
- Fecha de creacion
- atrasada?
- desvío
- costo

Es importante notar que se encontrarán con dos dificultades a sortear:
1) Existe la problemática de la transformación, si bien muchos campos se pueden convertir automáticametne a String, la fecha tiene una conversión automática que no satisface el problema.
2) Hay una diferencia entre el modelo de dominio, y el modelo de la aplicación. Ya que la aplicación necesita calcular asignar valores (aunque sea un valor vacío) a cada celda, pero el modelo de dominio no puede contestar el costo, si está atrasada y el desvío de todas las tareas (depende de en que estado se encuentre)

Por otro lado, la grilla debe poder permitir seleccionar una tarea para poder ser editada.
El resultado de la grilla es obtenido a través del repositorio