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

import administrador.utiles.*;
import java.io.*;
import java.util.jar.*;
import javax.swing.*;
import cargador.CargadorCliente;

public class Main extends javax.swing.JFrame implements cargador.ILanzable {

    Configuracion conf;
    public Parametros args;

    public Main() {
        initComponents();
        conf = Configuracion.instanciaUnica();
        if (!conf.cargar()) {
            javax.swing.JOptionPane.showMessageDialog(this, "Error al cargar el archivo de configuración");
            System.exit(-1);
        }
        ListaColasFavoritas.importarAntiguo();   // por precaución

        Runtime.getRuntime().addShutdownHook(new Thread() {
            @Override
            public void run() {
                cerrarAplicacion();
            }
        });
    }

    @Override
    public void lanzaCliente() {
        extraerGraficosJar();
        setLocationRelativeTo(null);
        setVisible(true);
        inicia();

    }

    void extraerGraficosJar() {
        JarFile jar = null;
        try {
            jar = new JarFile("Administrador.jar");
            JarEntry entrada = jar.getJarEntry("GraficAteneoIV.jar");
            if (entrada == null) {
                jar.close();
                return;
            }
            File salida = new File("GraficAteneoIV.jar");
            long fechaInterna = entrada.getTime();
            if (salida.exists()) {
                long fechaExterna = salida.lastModified();
                if (fechaInterna == fechaExterna) {
                    jar.close();
                    return;
                }
            }
            InputStream is = new BufferedInputStream(jar.getInputStream(entrada));
            OutputStream os = new BufferedOutputStream(new FileOutputStream(salida));
            byte[] bufer = new byte[2048];
            for (;;) {
                int nBytes = is.read(bufer);
                if (nBytes <= 0) {
                    break;
                }
                os.write(bufer, 0, nBytes);
            }
            os.flush();
            os.close();
            salida.setLastModified(fechaInterna);
            jar.close();
        } catch (Exception exc) {
            exc.printStackTrace();
        }
    }

    void inicia() {
        this.setVisible(false);
        arrancaVentanaPrincipal();
        try {
            String dir = Global.miPath() + "\\Notas";
            File saveDir = new File(dir);
            if (!saveDir.exists()) {
                saveDir.mkdirs();
            }

            for (File file : saveDir.listFiles()) {
                if (!file.isDirectory()) {
                    file.delete();
                }
            }
        } catch (Exception ex) {
        }

    }

    void arrancaVentanaPrincipal() {
        FormPrincipal fp = new FormPrincipal();
        fp.setExtendedState(JFrame.MAXIMIZED_BOTH);
        fp.setVisible(true);
        // publi = new FormPublicidad();
        //publi.setVisible(true);
    }

    void cerrarAplicacion() {
        // nada por ahora
    }

    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jLabel1 = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setUndecorated(true);
        setResizable(false);
        addComponentListener(new java.awt.event.ComponentAdapter() {
            public void componentShown(java.awt.event.ComponentEvent evt) {
                formComponentShown(evt);
            }
        });

        jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/recursos/Splash_renta.jpg"))); // NOI18N
        getContentPane().add(jLabel1, java.awt.BorderLayout.CENTER);

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void formComponentShown(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_formComponentShown
        // TODO add your handling code here:

    }//GEN-LAST:event_formComponentShown
    /**
     * @param args the command line arguments
     */
    public static void main(final String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                Main am = new Main();
                am.args = new Parametros(args);
                Configuracion mconf = Configuracion.instanciaUnica();
                if (!am.args.contiene("ejecutarSinDescargar")) {
                    cargador.Configuracion conf = new cargador.Configuracion();
                    conf.fichero = "Administrador.jar";
                    conf.tipoCliente = "4";
                    if (mconf.usandoUDP) {
                        conf.usandoUDP = true;
                        conf.nombreServidor = mconf.nombreServidor;
                    } else {
                        conf.ipServidor = mconf.IpServidorLocal;
                        conf.ipServidorSec = mconf.IpServidorLocalSec;
                        conf.ipPortSec = mconf.puertoServidorSec;
                    }
                    conf.ipPort = mconf.puertoServidor;
                    CargadorCliente cargador = new CargadorCliente(conf, am);
                    cargador.lanzar("");
                } else {
                    am.lanzaCliente();
                }
            }
        });
    }
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JLabel jLabel1;
    // End of variables declaration//GEN-END:variables
}
