/* 
* Copyright 2016 Agencia Estatal de Administración Tibutaria
*
* Licencia con arreglo a la EUPL, Versión 1.1 o –en cuanto
* sean aprobadas por la Comisión Europea– versiones
* posteriores de la EUPL (la «Licencia»);
* Solo podrá usarse esta obra si se respeta la Licencia.
* Puede obtenerse una copia de la Licencia en:
*  
* https://joinup.ec.europa.eu/software/page/eupl
*  
* Salvo cuando lo exija la legislación aplicable o se acuerde
* por escrito, el programa distribuido con arreglo a la
* Licencia se distribuye «TAL CUAL», SIN GARANTÍAS NI CONDICIONES
* DE NINGÚN TIPO, ni expresasni implícitas.
*
* Véase la Licencia en el idioma concreto que rige los permisos y 
* limitaciones que establece la Licencia.
*/ 

package gestor.datos;

import gestor.utiles.Fecha;
import gestor.utiles.Global;
import java.sql.Timestamp;

public class RegistroHuecos implements Comparable<RegistroHuecos> {

    public int id;
    public Timestamp horaCita;
    public String cola;
    public String turno;

    Timestamp nzt(String s) {
        if (s == null) {
            return Fecha.TimestampNulo;
        }
        try {
            return Timestamp.valueOf(s);
        } catch (Exception exc) {
            return Fecha.TimestampNulo;
        }
    }

    public void leerRegistroCompleto(String s) throws Exception {
        String[] cs = Global.split(s, '|');
        if (cs.length < 4) {
            throw new Exception("Error en registro seriado: pocos campos (" + cs.length + ")");
        }
        try {
            id = Integer.parseInt(cs[0]);
            horaCita = nzt(cs[1]);
            cola = cs[2];
            turno = cs[3];
        } catch (Exception exc) {
        }
    }

    @Override
    public String toString() {
        StringBuilder buf = new StringBuilder();
        try {
            buf.append(String.valueOf(id)).append('|');
            buf.append(horaCita.toString()).append('|');
            buf.append(cola).append('|');
            buf.append(turno);
        } catch (Exception exc) {
            //TODO mejorar esta excepcion
            exc.printStackTrace();
        }
        return buf.toString();
    }

    @Override
    public int compareTo(RegistroHuecos r) {
        if (r.cola.equals(cola)) {
            return horaCita.compareTo(r.horaCita);
        } else {
            return cola.compareTo(r.cola);
        }
    }

    @Override
    public boolean equals(Object obj) {
        RegistroHuecos r = (RegistroHuecos) obj;
        return r.cola.equals(cola) && r.horaCita.equals(horaCita);
    }

    @Override
    public int hashCode() {
        String s = cola + "-" + horaCita;
        return s.hashCode();
    }
}
