package com.FitBank.web.servlet;

import com.FitBank.common.Debug;
import com.FitBank.common.Servicios;
import com.FitBank.web.util.EjecutarEventos;
import com.FitBank.xml.Formas.Formulario;
import com.FitBank.xml.Mensaje.MensajeXml;

public class CargarFormulario extends BaseServlets {

    protected void inicializar() {
        aceptarGet();
        aceptarPost();
        obtenerWriter();
    }

    protected void procesarPedido() {
        evento = new EjecutarEventos();
        String clear = Servicios.verificarCadena(pedido.getParameter("CLEAR"));
        if (clear.equals("true")) {
            evento.procesoXml.limpiarFormulario(false);
        } else {
            String[] param = recibirParametros(pedido.getParameter("s"));
            String[][] cab = {
                {"SUB", param[0]},
                {"TRN", param[1]},
                {"ROL", "1"},
                {"VER", "01"},
                {"TIP", MensajeXml.TIP_FRM}
            };
            evento.procesoXml.getXmlMensaje().borrarDetalle(0);
            evento.procesoXml.crearMensaje(cab);
            evento.obtenerTransaccion(pedido);
            evento.procesoXml.getXmlFormulario().setFormASEstatus(Formulario.FRM_INS);
            evento.procesoXml.insertarValueHttp("flagConEspecial", "FALSE");
            String tipoFormulario = evento.procesoXml.getXmlFormulario().getTipoMen();
            evento.procesoXml.insertarValueHttp("flagTypeForm", tipoFormulario);
            evento.procesoXml.getXmlFormulario().setCompania(evento.procesoXml.getXmlMensaje().getValor("CIN", MensajeXml.SEC_CAB));
        }
        evento.generarHtmlFormulario(pedido.getSession().getId());
        evento.colocarListaCamposMensajesSesion(pedido);
        respuesta.setContentType("text/xml; charset=iso-8859-1");
        writer.println(evento.getHtmlFormulario());
    }

    /**
     * Método que recibe se encarga de validar la recepción de parámetros para la invocación del
     * Servlet MostrarFormulario.
     *
     * @param s Transacción pedida con el formato SS:TTTT donde SS es el subsitema y TTTT es la
     *          transacción
     *
     * @return un Array con el subsistema y la transacción
     */
    public String[] recibirParametros(String s) {
        String[] form = s.split(":");

        if (form.length == 2) {
            return form;
        }

        Debug.imprimirError("Se intentó abrir la transacción " + s + " pero el formato no coincide" +
                "con SS:TTTT");

        return new String[]{"00", "0000"};
    }
}