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

import gestor.Configuracion;
import gestor.FormPrincipal;
import gestor.Main;
import java.io.*;
import java.util.*;

public class Global {

    public static final String NOCONECTADO = "0";
    public static final String CONECTADO = "1";
    public static final String LIBRE = "2";
    public static final String ENTRANSITO = "3";
    public static final String OCUPADO = "4";
    public static final String DESCANSO = "5";
    public static Main main;
    public static FormPrincipal principal;
    public static boolean modoAutomatico = false;
    public static ValorRef respTiketManual = new ValorRef();
    public static ValorRef respCitasTurnoTarde = new ValorRef();
    private static ValidaNif valNif = new ValidaNif();

    public Global() {
    }

    public static String[] split(String s, char sep) {
        java.util.ArrayList<String> array = new java.util.ArrayList<>();
        int comi = 0;
        for (int i = 0; i < s.length(); i++) {
            if (s.charAt(i) == sep) {
                array.add(s.substring(comi, i));
                comi = i + 1;
            }
        }
        if (comi < s.length()) {
            array.add(s.substring(comi));
        }

        String[] res = new String[array.size()];
        return array.toArray(res);
    }

    public static int nz(String s) {
        if (s == null) {
            return 0;
        }
        try {
            return Integer.parseInt(s);
        } catch (Exception exc) {
            return 0;
        }
    }

    public static java.sql.Timestamp nzt(String s) {
        if (s == null) {
            return Fecha.horaNula;
        }
        try {
            return java.sql.Timestamp.valueOf(s);
        } catch (Exception exc) {
            return Fecha.horaNula;
        }
    }

    public static boolean nifValido(String nif) {
        return valNif.checkNif(nif.toUpperCase());
    }

    public static void sleep(int miliseg) {
        try {
            Thread.sleep(miliseg);
        } catch (Exception exc) {
        }
    }

    public static void mensajeUrgente(String mensaje) {
        java.awt.Toolkit.getDefaultToolkit().beep();
        java.awt.Toolkit.getDefaultToolkit().beep();
        java.awt.Toolkit.getDefaultToolkit().beep();
        principal.msgBox(mensaje);
    }

    public static java.sql.Timestamp calcularHora(int r, java.sql.Timestamp horaCita, long ahoraMismo) {
        switch (r) {
            case 0:
                return horaCita;
            case 1:
                return new java.sql.Timestamp(ahoraMismo);
            case 2:
                return new java.sql.Timestamp(ahoraMismo + Configuracion.instanciaUnica().margenPenalizacion);
        }
        return null;
    }

    public static int compruebaHoraCalculada(long ahora, long cita) throws Exception {
        if (cita > ahora) {
            return 0;
        }
        if ((cita + 300000) > ahora) {
            return 1;
        }
        cita += Configuracion.instanciaUnica().margenRetraso;
        if (cita > ahora) {
            return 2;
        }
        return 3;
    }

    static HashMap<String, String> variablesEntorno = null;

    static String pideVariableEntorno(String varName) {
        return System.getenv(varName);
    }

    public static void borrarLogsAntiguos(String path, final String raiz, int numDias) {
        try {
            File dirLogs = new File(path);
            File[] logs = dirLogs.listFiles((File dir, String name) -> name.startsWith(raiz));
            if (logs == null || logs.length == 0) {
                return;
            }
            GregorianCalendar gc = new GregorianCalendar();
            gc.add(Calendar.DAY_OF_YEAR, -numDias);
            for (File f : logs) {
                if (f.lastModified() < gc.getTimeInMillis()) {
                    f.delete();
                }
            }
        } catch (Exception exc) {
        }
    }
}
