Skip to content

BetaGun03/TrackingTiempo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TrackingTiempo

Java Swing License

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.

Índice

Descripción

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.

Características

  • 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

Requisitos

  • Java 21 o superior
  • NetBeans IDE (opcional, para desarrollo)

Ejecución

Desde interfaz gráfica

Doble click en el archivo JAR: `TrackingTiempo.jar`

Desde consola

java -jar target/TrackingTiempo.jar

Estructura del Proyecto

src/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)

Descripción de Componentes

Clase Principal

  • TrackingTiempo.java: Punto de entrada de la aplicación. Inicializa y muestra la ventana principal.

Paquete DAO

  • 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.

Paquete POJOs

  • Tarea.java: Clase modelo que representa una tarea con propiedades como título, tipo, hora inicial, hora final y tiempo total (usando Duration de Java Time API).
  • TipoTarea.java: Enumeración que define los tipos de tarea disponibles: FRONTEND, BACKEND, DOCUMENTACION, APRENDER.

Paquete Vistas

  • VistaPrincipal.java/.form: Interfaz gráfica de usuario desarrollada con Swing. Permite la interacción del usuario con la aplicación.

Formato del Archivo CSV

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

Ejemplo de contenido:

Diseño de interfaz,FRONTEND,PT2H30M
Implementación API REST,BACKEND,PT4H15M
Escribir documentación,DOCUMENTACION,PT1H30M
Tutorial de Spring Boot,APRENDER,PT3H

Detalles del formato:

  • Separador: Coma (,)
  • Campos:
    • titulo: Nombre descriptivo de la tarea (único)
    • tipoTarea: Uno de los valores del enum TipoTarea
    • tiempoTotal: 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:

  • P indica "Period"
  • T separa la parte de fecha de la parte de tiempo
  • #H representa horas
  • #M representa minutos
  • #S representa segundos (opcional)

Funcionalidades del DAO

El TareasDAO proporciona las siguientes operaciones:

  • cargarDatosEnDAO(): Carga las tareas desde el archivo CSV al ArrayList en memoria
  • crearArchivoCSV(): Crea el archivo CSV si no existe
  • existeArchivoCSV(): Verifica la existencia del archivo CSV
  • escribirDatosEnCSV(): Sobrescribe el archivo CSV con los datos actuales del ArrayList
  • agregarTareaDAO(Tarea): Agrega una nueva tarea (validando que el título sea único)
  • buscarTareaPorTitulo(String): Busca y devuelve una tarea por su título
  • buscarSiTituloExiste(String): Verifica si existe una tarea con el título especificado
  • eliminarTareaPorTitulo(String): Elimina una tarea del ArrayList

Tecnologías Utilizadas

  • 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

Licencia

Este proyecto está bajo la Licencia MIT. Ver el archivo LICENSE para más detalles.

Autor

Jaime Hedrera Rosa - Desarrollador Full Stack

Desarrollado como parte del TFG.

About

Aplicación que permite administrar un archivo CSV para tener un registro de horas de cada parte del proyecto del TFG. Realizado con Java 21 y Swing en NetBeans 23.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages