All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.github.josecarlosbran.JBSqlUtils.Adaptadores.DateAdapter Maven / Gradle / Ivy

Go to download

JBSqlUtils es un ORM desarrollado en java por José Carlos Alfredo Bran Aguirre, que permite gestionar BD's SQLite, MySQL, MariaDB, PostgreSQL y SQLServer, de una manera fácil y rápida sin interrumpir la ejecución del hilo principal del programa, lo cual la hace un potente ORM, por medio del cual tendrá acceso a un CRUD, configurando únicamente la conexión del modelo, los atributos que posee la tabla en BD's cómo variables que pertenecerán al modelo en su aplicación. JBSqlUtils también proporciona un potente generador de instrucciones SQL que le permitirá crear o eliminar una tabla, insertar, seleccionar, actualizar o eliminar registros de una tabla en su BD's sin necesidad de instanciar un modelo cómo tal, únicamente tendrá que configurar previamente la conexión a su BD's. Lo cual la hace un potente ORM para aplicaciones android y sistemas empresariales que tengan la necesidad de poder conectarse a alguna de estas 4 tipos de BD's, cabe mencionar que para ello utiliza el SQLite JDBC de org.xerial, org.postgresql, mysql y com.microsoft.sqlserver. Para mayor información, consultar el enlace del proyecto

There is a newer version: 1.3.1.2
Show newest version
package io.github.josecarlosbran.JBSqlUtils.Adaptadores;

import com.josebran.LogsJB.LogsJB;
import jakarta.json.bind.adapter.JsonbAdapter;
import org.apache.commons.lang3.exception.ExceptionUtils;

import java.sql.Date;
import java.text.SimpleDateFormat;

/**
 * Clase que sirve para adaptar objetos tipo Date a un formato de tipo String.
 * se establece un patron donde se define el año, mes, dia, etc.
 * se realizo de esta manera para para establecer su propia configuaracion en cada hilo y asi evitar los errores comunes.
 */
public class DateAdapter implements JsonbAdapter {
    private static final ThreadLocal threadLocalDateFormat =
            ThreadLocal.withInitial(() -> new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"));

    /**
     * En este fragmento de codigo los usuarios de la clase DateAdapter pueden estrablecer dinamicamente,
     * el formato en que deseen manejar la fecha, sin afectar a los demas hilos.
     * se esta seteando o estableciendo el threadLocalDateFormat al new SimpleDateFormat(pattern)
     *
     * @param pattern Es el patron que se desea establecer.
     */
    public static void setDateFormatPattern(String pattern) {
        threadLocalDateFormat.set(new SimpleDateFormat(pattern));
    }

    /**
     * Metodo publico adaptToJson que acepta un parametro de tipo Date.
     * este metodo devuelve o retorna un String.
     * y puede lanzar una excepcion en caso que algo salga mal.
     *
     * @param date Es el objeto de tipo Date que se desea convertir a un String.
     * @return Retorna un String que representa la fecha recibida como parametro
     */
    @Override
    public String adaptToJson(Date date) {
        //aqui se obtiene el dato de Fecha del hilo actual.
        SimpleDateFormat dateFormat = threadLocalDateFormat.get();
        return dateFormat.format(date);
    }

    /**
     * Este metodo es el que convierte las cadenas en objetos tipo Date.
     *
     * @param dateString Es la cadena que se desea convertir a un objeto tipo Date.
     * @return Retorna un objeto tipo Date con la fecha que se recibio como parametro.
     */
    @Override
    public Date adaptFromJson(String dateString) {
        try {
            //aqui se obtiene el dato de Fecha del hilo actual.
            SimpleDateFormat dateFormat = threadLocalDateFormat.get();
            //en esta linea se parsea la cadena de fecha, y se convierte en un objeto tipo Date
            return new Date(dateFormat.parse(dateString).getTime());
        } catch (Exception e) {
            LogsJB.fatal("Error capturado al convertir la fecha: " + dateString);
            LogsJB.fatal("Stacktrace de la excepción: " + ExceptionUtils.getStackTrace(e));
            return null;
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy