Actualizando AdmonPU a Java 8 Date and Time API

Han hecho falta 7 versiones de Java para tener en Java SE una API en condiciones para fechas y horas pero por fin la tenemos, mola mucho y hay que aprovecharla. En la especificación JSR 310 colaboró ampliamente Stephen Colebourne, el autor de Joda-Time y la implementación la podemos encontrar en el paquete java.time.

Java SE 8 Date and Time de Ben Evans y Richard Warburton.
Java 8 – 20 Examples of Date and Time API de Javin Paul en Javarevisited.

Comencé cambiando todos los Date y Calendar del código de AdmonPU por LocalDate pero como en casi cualquier dominio, la fecha juega papel muy importante y prácticamente en todas las interfaces e implementaciones había referencias a Date y aún siendo cambios triviales, me llevaron un buen rato.

Tenía una clase Utils, la típica clase que tenemos todos (quizás con otro nombre) en cada proyecto. El objetivo era refactorizarla a la nueva API y la modifiqué completamente.

Este tipo de clases no están muy orientadas a objetos, son más bien contenedores de código (al que se les pasa una entrada y devuelve una salida) separado en métodos. Para darle algo más de vidilla decidí convertir la clase Utils en un wrapper de la clase LocalDate con el comportamiento que antes se hacía en Utils.

Implementando la clase Fecha (wrapper de LocalDate) además protejo todo el proyecto de futuros cambios en la librería de fechas ya que hará de adaptador entre este y la librería, sea cual sea.

Todo habría sido fantástico si desde el primer momento hubiese definido la clase Fecha y hubiese cambiado una sola vez todas las referencias de Date a Fecha y no lo que en realidad hice: De Date a LocalDate a Fecha.

Aunque sobre el papel cambiar todo a Fecha parece muy bonito, a la hora de la verdad tuve que mantener un poco de código relacionado con fechas en la clase Aplicacion (interfaz gráfica Swing) porque contiene componentes (dependencias) como JXDatePicker y AutoCompleteDecorator de SwingX a los que sólo se les puede hablar con Date. Ningún problema mientras se tengan las excepciones bien localizadas y controladas.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s