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

import java.io.*;
import java.sql.Timestamp;
import java.util.*;

public class Global {

    static java.text.NumberFormat nf = java.text.NumberFormat.getInstance();
    public static administrador.FormPrincipal principal;

    public Global() {
    }

    public static void MsgBox(String msg) {
        javax.swing.JOptionPane.showMessageDialog(principal, msg);
    }

    public static void MsgBox(String msg, String titulo) {
        javax.swing.JOptionPane.showMessageDialog(principal, msg, titulo, javax.swing.JOptionPane.PLAIN_MESSAGE);
    }

    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 String segundosAsString(int segundos) {
        nf.setMinimumIntegerDigits(2);
        boolean negativo = false;
        if (segundos < 0) {
            negativo = true;
            segundos = -segundos;
        }
        int horas = segundos / 3600;
        int resto = segundos % 3600;
        int minutos = resto / 60;
        segundos = resto % 60;
        return (negativo ? "-" : "") + nf.format(horas) + ":" + nf.format(minutos) + ":" + nf.format(segundos);
    }

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

    public static String espacios(int n) {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < n; i++) {
            sb.append(' ');
        }
        return sb.toString();
    }

    public static String formatea(int presentes, String descripcion) {
        String p1 = String.valueOf(presentes);
        int l = p1.length();
        StringBuilder sb = new StringBuilder();
        sb.append(espacios(4 - l)).append(p1).append(espacios(11)).append(descripcion);
        return sb.toString();
    }

    static HashMap<String, String> variablesEntorno = null;

    static String pideVariableEntorno(String varName) {
        if (variablesEntorno == null) {
            variablesEntorno = new HashMap<>(30);
            try {
                Process p = Runtime.getRuntime().exec("CMD /C SET");
                BufferedReader rd = new BufferedReader(new InputStreamReader(p.getInputStream()));
                String linea = null;
                while ((linea = rd.readLine()) != null) {
                    String[] ps = linea.trim().split("=");
                    variablesEntorno.put(ps[0], ps[1]);
                }
            } catch (Exception exc) {
                return "";
            }
        }
        String resp = variablesEntorno.get(varName);
        return (resp == null) ? "" : resp;
    }

    public static String miNombre() {
        String nombre = administrador.Configuracion.instanciaUnica().nombreParaMostrar;
        if (nombre != null && !nombre.equals("")) {
            if (nombre.equalsIgnoreCase("invisible")) {
                nombre = "";
            }
            return nombre;
        }
        try {
            String codUsuario = System.getProperty("user.name");
            Process proceso = Runtime.getRuntime().exec("net user " + codUsuario + " /DOMAIN");
            BufferedReader bis = new BufferedReader(new InputStreamReader(proceso.getInputStream(), "CP850"));
            String s = "";
            while ((s = bis.readLine()) != null) {
                s = s.toUpperCase();
                if (s.startsWith("NOMBRE COMPLETO")) {
                    nombre = s.substring(20).trim();
                    return nombre.replaceAll(" {2,}", " ") + " - " + codUsuario.toUpperCase();
                }
            }
        } catch (Exception exc) {
        }
        return "";
    }

    public static String miPath() {
        try {
            File directory = new File(".");
            String dir = directory.getAbsolutePath();
            dir = dir.substring(0, dir.length() - 2);
            return dir;
        } catch (Exception ex) {
        }
        return null;
    }
}
