// Path: app/src/mx/udlap/is522/tedroid/util/Strings.java
// public final class Strings {
// 
//     /** Un objeto String vacio. */
//     public static final String EMPTY = "";
// 
//     /** NO INVOCAR. */
//     private Strings() {
//         throw new IllegalAccessError("This class cannot be instantiated nor extended");
//     }
// 
//     /**
//      * @param str el objeto String a provar.
//      * @return si es o no vacio (sin texto con espacios) o {@code null}.
//      */
//     public static boolean isNullOrBlank(String str) {
//         return str == null || str.trim().length() == 0;
//     }
// }


import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteStatement;
import android.util.Log;
import mx.udlap.is522.tedroid.util.Strings;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
     * @param cursor un objeto Cursor.
     * @param columnName el nombre de la columna.
     * @param timeString el formato de la fecha.
     * @return el valor de la columna. Si no existe la columna o el valor de la columna es
     *         {@code null} entonces {@code null}.
     */
    static Date getDateFromString(Cursor cursor, String columnName, TimeString timeString) {
        String value = getString(cursor, columnName);
        if (!Strings.isNullOrBlank(value)) {
            for (String format : timeString.formats) {
                try {
                    return new SimpleDateFormat(format, Locale.ENGLISH).parse(value);
                } catch (ParseException ex) {
                    // Si no es el formato correcto, se ignora y sigue con el siguiente formato.
                }
            }
        }

        return null;
    }

    /**
     * @param cursor un objeto Cursor.
     * @param columnName el nombre de la columna.
     * @param enumType el tipo de enumerado.
     * @return el valor de la columna como enumerado. Si no existe la columna o el valor de la
     *         columna es {@code null} entonces {@code null}.
     */
    static <E extends Enum<E>> E getEnumFromName(Cursor cursor, String columnName, Class<E> enumType) {
        String value = getString(cursor, columnName);
// Path: app/src/mx/udlap/is522/tedroid/util/Strings.java
// public final class Strings {
// 
//     /** Un objeto String vacio. */
//     public static final String EMPTY = "";
// 
//     /** NO INVOCAR. */
//     private Strings() {
//         throw new IllegalAccessError("This class cannot be instantiated nor extended");
//     }
// 
//     /**
//      * @param str el objeto String a provar.
//      * @return si es o no vacio (sin texto con espacios) o {@code null}.
//      */
//     public static boolean isNullOrBlank(String str) {
//         return str == null || str.trim().length() == 0;
//     }
// }


// Path: app/src/mx/udlap/is522/tedroid/data/dao/impl/sqlite/SQLiteUtils.java
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteStatement;
import android.util.Log;
import mx.udlap.is522.tedroid.util.Strings;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

     * @param cursor un objeto Cursor.
     * @param columnName el nombre de la columna.
     * @param timeString el formato de la fecha.
     * @return el valor de la columna. Si no existe la columna o el valor de la columna es
     *         {@code null} entonces {@code null}.
     */
    static Date getDateFromString(Cursor cursor, String columnName, TimeString timeString) {
        String value = getString(cursor, columnName);
        if (!Strings.isNullOrBlank(value)) {
            for (String format : timeString.formats) {
                try {
                    return new SimpleDateFormat(format, Locale.ENGLISH).parse(value);
                } catch (ParseException ex) {
                    // Si no es el formato correcto, se ignora y sigue con el siguiente formato.
                }
            }
        }

        return null;
    }

    /**
     * @param cursor un objeto Cursor.
     * @param columnName el nombre de la columna.
     * @param enumType el tipo de enumerado.
     * @return el valor de la columna como enumerado. Si no existe la columna o el valor de la
     *         columna es {@code null} entonces {@code null}.
     */
    static <E extends Enum<E>> E getEnumFromName(Cursor cursor, String columnName, Class<E> enumType) {
        String value = getString(cursor, columnName);
        if (!Strings.isNullOrBlank(value)) return Enum.valueOf(enumType, value);