/* 
* 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 administrador.datos;

import java.io.*;
import java.util.*;

public final class TiemposColas {

    HashMap<String, Integer> datos;
    final String nombreFichero = "TiemposColas.bin";
    ColeccionRegistros colas;

    public TiemposColas(ColeccionRegistros colas) {
        this.colas = colas;
        datos = new HashMap<>();
        crearDeNuevo();
    }

    public int get(String cola) {
        if (datos.containsKey(cola)) {
            return datos.get(cola);
        }
        return 999999;
    }

    public void set(String cola, int valor) {
        datos.put(cola, valor);
        guardar();
    }

    public void guardar() {
        try {
            ObjectOutputStream salida = new ObjectOutputStream(new FileOutputStream(nombreFichero));
            salida.writeObject(datos);
            salida.close();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    public void cargar() {
        File fuente = new File(nombreFichero);
        if (!fuente.exists()) {
            return;
        }
        try {
            ObjectInputStream entrada = new ObjectInputStream(new FileInputStream(fuente));
            @SuppressWarnings("unchecked")
            HashMap<String, Integer> leidos = (HashMap<String, Integer>) entrada.readObject();
            for (String cola : leidos.keySet()) {
                datos.put(cola, leidos.get(cola));
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    public void crearDeNuevo() {
        datos.clear();
        Iterator it = colas.iteradorClaves();
        int t = administrador.Configuracion.instanciaUnica().tiempoAlerta;
        if (t < 0) {
            t = 10;
        }
        while (it.hasNext()) {
            datos.put((String) it.next(), t);
        }
    }
}
