// Decompiled by DJ v3.12.12.96 Copyright 2011 Atanas Neshkov  Date: 08/10/2012 8:47:53
// Home Page: http://members.fortunecity.com/neshkov/dj.html http://www.neshkov.com/dj.html - Check often for new version!
// Decompiler options: packimports(3) 
// Source File Name:   LeerBackup.java

package project;

import java.io.BufferedInputStream;
import java.io.InputStream;
import java.net.*;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import org.apache.xerces.framework.XMLParser;
import org.apache.xerces.parsers.DOMParser;
import org.w3c.dom.*;
import org.xml.sax.InputSource;
import repeat.EnviarCambiosPregunta;
import traduccion.Traducir;

// Referenced classes of package project:
//            MensajeDeAutentificacion, MensajeDeError, AccederADatos, EncriptarDesencriptar, 
//            LeerConfiguracion

public class LeerBackup
{

    public LeerBackup(String codigo2, LeerConfiguracion leerConfiguracion2)
    {
        preguntaRestaurada = false;
        formater = new DecimalFormat("0");
        formatter = new DecimalFormat("0.00");
        password = "";
        cod_matr = "";
        correctas = "";
        incorrectas = "";
        pcorrectas = "";
        pincorrectas = "";
        acT1 = "";
        faT1 = "";
        acT2 = "";
        faT2 = "";
        acT3 = "";
        faT3 = "";
        acT4 = "";
        faT4 = "";
        acT5 = "";
        faT5 = "";
        acT6 = "";
        faT6 = "";
        acT7 = "";
        faT7 = "";
        acg1 = "";
        acg2 = "";
        acg3 = "";
        hechas1 = "";
        hechas2 = "";
        hechas3 = "";
        orden1 = "";
        orden2 = "";
        orden3 = "";
        nivelAlcanzado = 0;
        codigoDeRespuesta = 0;
        vnivelAlcanzado = 0;
        version = "";
        leerConfiguracion = leerConfiguracion2;
        password = codigo2;
        inicio();
    }

    public void inicio()
    {
        if(AccederADatos.username.compareToIgnoreCase("") == 0 && AccederADatos.leer("h.administrador").compareToIgnoreCase("616098901") == 0)
        {
            mensajeAutentif = new MensajeDeAutentificacion();
            mensajeAutentif.mensajeInicial(false, this);
        } else
        {
            empezar();
        }
    }

    public void empezar()
    {
        if(AccederADatos.leer("h.administrador").compareToIgnoreCase("616098901") == 0)
            proxyurl = new URL(AccederADatos.leer("h.repeatAddress") + "leerBackup.jsp");
        else
            proxyurl = new URL(AccederADatos.leer("h.proxyAddress") + "leerBackup.jsp");
        connection = (HttpURLConnection)proxyurl.openConnection();
        connection.setRequestProperty("encriptar", AccederADatos.leer("h.encriptar"));
        connection.setRequestProperty("password", EncriptarDesencriptar.encriptar(AccederADatos.cambiarElPassword()));
        connection.connect();
        DOMParser parser = new DOMParser();
        BufferedInputStream bis = new BufferedInputStream(connection.getInputStream());
        String textoEncriptado = EncriptarDesencriptar.getStringFromInputStream(bis);
        String textoDesencriptado = EncriptarDesencriptar.desencriptar(textoEncriptado);
        InputSource stream = new InputSource(EncriptarDesencriptar.getInputStreamFromString(textoDesencriptado));
        parser.parse(stream);
        doc = parser.getDocument();
        seguir();
        if(codigoDeRespuesta == 401)
        {
            MensajeDeError mensaje = new MensajeDeError();
            mensaje.mensaje(true, Traducir.getTraduccion(AccederADatos.leer("h.proyecto"), "project.LeerBackup", "200411151804", AccederADatos.idioma));
            mensaje = null;
            inicio();
        } else
        if(codigoDeRespuesta != 0)
        {
            MensajeDeError mensaje = new MensajeDeError();
            mensaje.mensaje(true, Traducir.getTraduccion(AccederADatos.leer("h.proyecto"), "project.LeerBackup", "200411151806", AccederADatos.idioma));
            mensaje = null;
        }
        break MISSING_BLOCK_LABEL_493;
        Exception ex;
        ex;
        ex.printStackTrace();
        try
        {
            codigoDeRespuesta = connection.getResponseCode();
        }
        catch(Exception es)
        {
            es.printStackTrace();
        }
        if(codigoDeRespuesta == 401)
        {
            MensajeDeError mensaje = new MensajeDeError();
            mensaje.mensaje(true, Traducir.getTraduccion(AccederADatos.leer("h.proyecto"), "project.LeerBackup", "200411151804", AccederADatos.idioma));
            mensaje = null;
            inicio();
        } else
        if(codigoDeRespuesta != 0)
        {
            MensajeDeError mensaje = new MensajeDeError();
            mensaje.mensaje(true, Traducir.getTraduccion(AccederADatos.leer("h.proyecto"), "project.LeerBackup", "200411151806", AccederADatos.idioma));
            mensaje = null;
        }
        break MISSING_BLOCK_LABEL_493;
        Exception exception;
        exception;
        if(codigoDeRespuesta == 401)
        {
            MensajeDeError mensaje = new MensajeDeError();
            mensaje.mensaje(true, Traducir.getTraduccion(AccederADatos.leer("h.proyecto"), "project.LeerBackup", "200411151804", AccederADatos.idioma));
            mensaje = null;
            inicio();
        } else
        if(codigoDeRespuesta != 0)
        {
            MensajeDeError mensaje = new MensajeDeError();
            mensaje.mensaje(true, Traducir.getTraduccion(AccederADatos.leer("h.proyecto"), "project.LeerBackup", "200411151806", AccederADatos.idioma));
            mensaje = null;
        }
        throw exception;
    }

    private void seguir()
    {
        try
        {
            NodeList list = doc.getElementsByTagName("Backup");
            connection.getInputStream().close();
            for(int i = 0; i < list.getLength(); i++)
            {
                nextQuestion = (Element)list.item(i);
                version = nextQuestion.getAttribute("version");
                chequearVersion();
                password = nextQuestion.getAttribute("password");
                correctas = nextQuestion.getAttribute("correctas");
                incorrectas = nextQuestion.getAttribute("incorrectas");
                pcorrectas = nextQuestion.getAttribute("pcorrectas");
                pincorrectas = nextQuestion.getAttribute("pincorrectas");
                acT1 = nextQuestion.getAttribute("acwin");
                faT1 = nextQuestion.getAttribute("fawin");
                acT2 = nextQuestion.getAttribute("acwor");
                faT2 = nextQuestion.getAttribute("fawor");
                acT3 = nextQuestion.getAttribute("acpow");
                faT3 = nextQuestion.getAttribute("fapow");
                acT4 = nextQuestion.getAttribute("acexc");
                faT4 = nextQuestion.getAttribute("faexc");
                acT5 = nextQuestion.getAttribute("acacc");
                faT5 = nextQuestion.getAttribute("faacc");
                acT6 = nextQuestion.getAttribute("aciex");
                faT6 = nextQuestion.getAttribute("faiex");
                acT7 = nextQuestion.getAttribute("acout");
                faT7 = nextQuestion.getAttribute("faout");
                acg1 = nextQuestion.getAttribute("acg1");
                acg2 = nextQuestion.getAttribute("acg2");
                acg3 = nextQuestion.getAttribute("acg3");
                hechas1 = nextQuestion.getAttribute("hechas1");
                hechas2 = nextQuestion.getAttribute("hechas2");
                hechas3 = nextQuestion.getAttribute("hechas3");
                orden1 = nextQuestion.getAttribute("orden1");
                orden2 = nextQuestion.getAttribute("orden2");
                orden3 = nextQuestion.getAttribute("orden3");
                calcularGradoYNivel();
            }

        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }

    public void aumentarAciertos(String cod_preg, String datos, String datosviejos, String grado)
    {
        hacerBackup();
        correctas = String.valueOf(Integer.parseInt(correctas) + 1);
        incorrectas = String.valueOf(Integer.parseInt(incorrectas) - 1);
        pcorrectas = formater.format((Integer.parseInt(correctas) * 100) / leerConfiguracion.todasExamen);
        pincorrectas = formater.format((Integer.parseInt(incorrectas) * 100) / leerConfiguracion.todasExamen);
        if(cod_preg.indexOf("tema1") != -1)
        {
            acT1 = String.valueOf(Integer.parseInt(acT1) + 1);
            faT1 = String.valueOf(Integer.parseInt(faT1) - 1);
        } else
        if(cod_preg.indexOf("tema2") != -1)
        {
            acT2 = String.valueOf(Integer.parseInt(acT2) + 1);
            faT2 = String.valueOf(Integer.parseInt(faT2) - 1);
        } else
        if(cod_preg.indexOf("tema3") != -1)
        {
            acT3 = String.valueOf(Integer.parseInt(acT3) + 1);
            faT3 = String.valueOf(Integer.parseInt(faT3) - 1);
        } else
        if(cod_preg.indexOf("tema4") != -1)
        {
            acT4 = String.valueOf(Integer.parseInt(acT4) + 1);
            faT4 = String.valueOf(Integer.parseInt(faT4) - 1);
        } else
        if(cod_preg.indexOf("tema5") != -1)
        {
            acT5 = String.valueOf(Integer.parseInt(acT5) + 1);
            faT5 = String.valueOf(Integer.parseInt(faT5) - 1);
        } else
        if(cod_preg.indexOf("tema6") != -1)
        {
            acT6 = String.valueOf(Integer.parseInt(acT6) + 1);
            faT6 = String.valueOf(Integer.parseInt(faT6) - 1);
        } else
        if(cod_preg.indexOf("tema7") != -1)
        {
            acT7 = String.valueOf(Integer.parseInt(acT7) + 1);
            faT7 = String.valueOf(Integer.parseInt(faT7) - 1);
        }
        if(grado.compareToIgnoreCase("1") == 0)
            acg1 = String.valueOf(Integer.parseInt(acg1) + 1);
        else
        if(grado.compareToIgnoreCase("2") == 0)
            acg2 = String.valueOf(Integer.parseInt(acg2) + 1);
        else
        if(grado.compareToIgnoreCase("3") == 0)
            acg3 = String.valueOf(Integer.parseInt(acg3) + 1);
        calcularGradoYNivel();
        enviarCambiosPregunta = null;
        enviarCambiosPregunta = new EnviarCambiosPregunta(this, password, correctas, incorrectas, acT1, faT1, acT2, faT2, acT3, faT3, acT4, faT4, acT5, faT5, acT6, faT6, acT7, faT7, hechas1, hechas2, hechas3, orden1, orden2, orden3, cod_preg, datos, datosviejos, String.valueOf(nivelAlcanzado), pcorrectas, pincorrectas, String.valueOf(acgrado1), String.valueOf(acgrado2), String.valueOf(acgrado3), leerConfiguracion.modulo);
    }

    public void hacerBackup()
    {
        vcorrectas = correctas;
        vincorrectas = incorrectas;
        vacT1 = acT1;
        vfaT1 = faT1;
        vacT2 = acT2;
        vfaT2 = faT2;
        vacT3 = acT3;
        vfaT3 = faT3;
        vacT4 = acT4;
        vfaT4 = faT4;
        vacT5 = acT5;
        vfaT5 = faT5;
        vacT6 = acT6;
        vfaT6 = faT6;
        vacT7 = acT7;
        vfaT7 = faT7;
        vacg1 = acg1;
        vacg2 = acg2;
        vacg3 = acg3;
        vnivelAlcanzado = nivelAlcanzado;
    }

    public void restaurar()
    {
        preguntaRestaurada = true;
        correctas = vcorrectas;
        incorrectas = vincorrectas;
        acT1 = vacT1;
        faT1 = vfaT1;
        acT2 = vacT2;
        faT2 = vfaT2;
        acT3 = vacT3;
        faT3 = vfaT3;
        acT4 = vacT4;
        faT4 = vfaT4;
        acT5 = vacT5;
        faT5 = vfaT5;
        acT6 = vacT6;
        faT6 = vfaT6;
        acT7 = vacT7;
        faT7 = vfaT7;
        acg1 = vacg1;
        acg2 = vacg2;
        acg3 = vacg3;
    }

    private void chequearVersion()
    {
        if(AccederADatos.examenTerminado && version.compareToIgnoreCase(AccederADatos.leer("h.version")) != 0 && version.compareToIgnoreCase("null") != 0)
        {
            MensajeDeError mensaje = new MensajeDeError();
            mensaje.mensaje(true, Traducir.getTraduccion(AccederADatos.leer("h.proyecto"), "project.LeerBackup", "200411151808", AccederADatos.idioma));
            mensaje = null;
        }
    }

    private void calcularGradoYNivel()
    {
        grado1 = leerConfiguracion.ET1N1 + leerConfiguracion.ET2N1 + leerConfiguracion.ET3N1 + leerConfiguracion.ET4N1 + leerConfiguracion.ET5N1 + leerConfiguracion.ET6N1 + leerConfiguracion.ET7N1;
        grado2 = leerConfiguracion.ET1N2 + leerConfiguracion.ET2N2 + leerConfiguracion.ET3N2 + leerConfiguracion.ET4N2 + leerConfiguracion.ET5N2 + leerConfiguracion.ET6N2 + leerConfiguracion.ET7N2;
        grado3 = leerConfiguracion.ET1N3 + leerConfiguracion.ET2N3 + leerConfiguracion.ET3N3 + leerConfiguracion.ET4N3 + leerConfiguracion.ET5N3 + leerConfiguracion.ET6N3 + leerConfiguracion.ET7N3;
        acgrado1 = Integer.parseInt(acg1);
        acgrado2 = Integer.parseInt(acg2);
        acgrado3 = Integer.parseInt(acg3);
        if(acgrado1 != 0)
        {
            String porcentajeN1 = formatter.format((double)(100 * acgrado1) / (double)grado1) + "%";
            poGr1 = Integer.parseInt(porcentajeN1.substring(0, porcentajeN1.length() - 4));
        } else
        {
            poGr1 = 0;
        }
        if(acgrado2 != 0)
        {
            String porcentajeN2 = formatter.format((double)(100 * acgrado2) / (double)grado2) + "%";
            poGr2 = Integer.parseInt(porcentajeN2.substring(0, porcentajeN2.length() - 4));
        } else
        {
            poGr2 = 0;
        }
        if(acgrado3 != 0)
        {
            String porcentajeN3 = formatter.format((double)(100 * acgrado3) / (double)grado3) + "%";
            poGr3 = Integer.parseInt(porcentajeN3.substring(0, porcentajeN3.length() - 4));
        } else
        {
            poGr3 = 0;
        }
        if(poGr3 >= leerConfiguracion.PCN3 && poGr2 >= leerConfiguracion.SCN2 && poGr1 >= leerConfiguracion.SCN1)
            nivelAlcanzado = 3;
        else
        if(poGr3 < leerConfiguracion.PCN3 && poGr3 >= leerConfiguracion.SCN3 && poGr2 >= leerConfiguracion.PCN2 && poGr1 >= leerConfiguracion.SCN1)
            nivelAlcanzado = 3;
        else
        if(poGr2 >= leerConfiguracion.PCN2 && poGr1 >= leerConfiguracion.SCN1)
            nivelAlcanzado = 2;
        else
        if(poGr2 < leerConfiguracion.PCN2 && poGr2 >= leerConfiguracion.SCN2 && poGr1 >= leerConfiguracion.PCN1)
            nivelAlcanzado = 2;
        else
        if(poGr1 >= leerConfiguracion.PCN1)
            nivelAlcanzado = 1;
        else
            nivelAlcanzado = 0;
    }

    public boolean preguntaRestaurada;
    EnviarCambiosPregunta enviarCambiosPregunta;
    DecimalFormat formater;
    DecimalFormat formatter;
    LeerConfiguracion leerConfiguracion;
    Element nextQuestion;
    String password;
    String cod_matr;
    String correctas;
    String incorrectas;
    String pcorrectas;
    String pincorrectas;
    Document doc;
    int acgrado1;
    int acgrado2;
    int acgrado3;
    String acT1;
    String faT1;
    String acT2;
    String faT2;
    String acT3;
    String faT3;
    String acT4;
    String faT4;
    String acT5;
    String faT5;
    String acT6;
    String faT6;
    String acT7;
    String faT7;
    String acg1;
    String acg2;
    String acg3;
    String hechas1;
    String hechas2;
    String hechas3;
    String orden1;
    String orden2;
    String orden3;
    HttpURLConnection connection;
    int grado1;
    int grado2;
    int grado3;
    int poGr1;
    int poGr2;
    int poGr3;
    public int nivelAlcanzado;
    String vcorrectas;
    String vincorrectas;
    String vacT1;
    String vfaT1;
    String vacT2;
    String vfaT2;
    String vacT3;
    String vfaT3;
    String vacT4;
    String vfaT4;
    String vacT5;
    String vfaT5;
    String vacT6;
    String vfaT6;
    String vacT7;
    String vfaT7;
    int codigoDeRespuesta;
    String vacg1;
    String vacg2;
    String vacg3;
    public int vnivelAlcanzado;
    MensajeDeAutentificacion mensajeAutentif;
    String version;
    URL proxyurl;
}