Aplicación de escritorio para el seguimiento y gestión del tiempo dedicado a diferentes tareas. Desarrollada en Java 21 con interfaz gráfica Swing.
- Descripción
- Características
- Requisitos
- Ejecución
- Estructura del Proyecto
- Formato del Archivo CSV
- Funcionalidades del DAO
- Tecnologías Utilizadas
- Licencia
- Autor
TrackingTiempo es un gestor de tiempo que permite registrar, organizar y visualizar el tiempo dedicado a diferentes tipos de tareas de desarrollo. Todos los datos se almacenan de forma persistente en un archivo CSV local, permitiendo un seguimiento continuo de las actividades realizadas.
- Registro de tareas: Almacena información de cada tarea incluyendo título, tipo y duración
- Persistencia de datos: Utiliza archivos CSV para guardar los registros de forma local
- Categorización: Clasifica las tareas en diferentes tipos (Frontend, Backend, Documentación, Aprender)
- Gestión completa: Permite agregar, visualizar y eliminar tareas
- Interfaz gráfica: Interfaz de usuario intuitiva desarrollada con Swing
- Java 21 o superior
- NetBeans IDE (opcional, para desarrollo)
Doble click en el archivo JAR: `TrackingTiempo.jar`
java -jar target/TrackingTiempo.jarsrc/main/java/com/jaime/trackingtiempo/
├── TrackingTiempo.java # Clase principal con el método main
├── DAO/
│ └── TareasDAO.java # Data Access Object para gestión de tareas
├── POJOs/
│ ├── Tarea.java # Clase modelo de una tarea
│ └── TipoTarea.java # Enumeración de tipos de tarea
└── Vistas/
├── VistaPrincipal.java # Lógica de la ventana principal
└── VistaPrincipal.form # Diseño de la interfaz (NetBeans)
- TrackingTiempo.java: Punto de entrada de la aplicación. Inicializa y muestra la ventana principal.
- TareasDAO.java: Implementa el patrón Singleton para gestionar el acceso a datos. Maneja la lectura y escritura del archivo
tareas.csv, así como las operaciones CRUD sobre el ArrayList de tareas en memoria.
- Tarea.java: Clase modelo que representa una tarea con propiedades como título, tipo, hora inicial, hora final y tiempo total (usando
Durationde Java Time API). - TipoTarea.java: Enumeración que define los tipos de tarea disponibles: FRONTEND, BACKEND, DOCUMENTACION, APRENDER.
- VistaPrincipal.java/.form: Interfaz gráfica de usuario desarrollada con Swing. Permite la interacción del usuario con la aplicación.
El archivo tareas.csv se genera automáticamente en el directorio de ejecución de la aplicación. Cada línea representa una tarea con el siguiente formato:
titulo,tipoTarea,tiempoTotal
Diseño de interfaz,FRONTEND,PT2H30M
Implementación API REST,BACKEND,PT4H15M
Escribir documentación,DOCUMENTACION,PT1H30M
Tutorial de Spring Boot,APRENDER,PT3H- Separador: Coma (
,) - Campos:
titulo: Nombre descriptivo de la tarea (único)tipoTarea: Uno de los valores del enum TipoTareatiempoTotal: Duración en formato ISO 8601 Duration (PT#H#M#S)
El formato de duración PT2H30M representa 2 horas y 30 minutos en el estándar ISO 8601 Duration, donde:
Pindica "Period"Tsepara la parte de fecha de la parte de tiempo#Hrepresenta horas#Mrepresenta minutos#Srepresenta segundos (opcional)
El TareasDAO proporciona las siguientes operaciones:
cargarDatosEnDAO(): Carga las tareas desde el archivo CSV al ArrayList en memoriacrearArchivoCSV(): Crea el archivo CSV si no existeexisteArchivoCSV(): Verifica la existencia del archivo CSVescribirDatosEnCSV(): Sobrescribe el archivo CSV con los datos actuales del ArrayListagregarTareaDAO(Tarea): Agrega una nueva tarea (validando que el título sea único)buscarTareaPorTitulo(String): Busca y devuelve una tarea por su títulobuscarSiTituloExiste(String): Verifica si existe una tarea con el título especificadoeliminarTareaPorTitulo(String): Elimina una tarea del ArrayList
- Java 21: Lenguaje de programación
- Swing: Framework para la interfaz gráfica
- Maven: Gestión de dependencias y construcción del proyecto
- Java Time API: Manejo de tiempos y duraciones (
LocalTime,Duration) - NetBeans: IDE utilizado para el desarrollo
Este proyecto está bajo la Licencia MIT. Ver el archivo LICENSE para más detalles.
Jaime Hedrera Rosa - Desarrollador Full Stack
- Portafolio: jaimehedrera.es
- LinkedIn: Jaime Hedrera Rosa
- Email: business@jaimehedrera.es
- GitHub: @BetaGun03
Desarrollado como parte del TFG.