package q02b.descargaDatos.action;



//import java.util.ArrayList;

import java.util.HashMap;



import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;



import org.apache.struts.action.ActionErrors;

import org.apache.struts.action.ActionForm;

import org.apache.struts.action.ActionForward;

import org.apache.struts.action.ActionMapping;



//import q02b.exe.cuestionariosAyunMen.valueobjects.Q02bCuestionarioAyunMen;

//import q02b.exe.utils.Q02bVoUtils;

import es.ejie.frmk.infraestructura.traza.Q70TraceLevel;

import es.ejie.frmk.infraestructura.traza.Q70Traza;

import es.ejie.frmk.presentacion.operacion.paso.Q70ActionPasoOP;

import es.ejie.frmk.presentacion.sesiondatos.Q70ContextoEJIE;

import es.ejie.frmk.negocio.adaptadorinvocacion.Q70AdaptadorInvocacion;



//import org.w3c.dom.Document;





/**

 * @version 1.0

 * Fecha: 08-mar-04

 */

public class Q02bActionDescargaObtenerDocumentoXml extends Q70ActionPasoOP {

	//Traza del servidor

	private static Q70Traza tr = Q70Traza.getSingleton();

	//Componente en el cual nos encontramos

	final static String COMPONENTE = "ACTION PASOOP";

	//EJB a utilizar

	final static String EJB_DESCARGA_DATOS= "q02b.q02bDescargaDatosSesionEJB";

	//Método a utilizar en el EJB

	final static String EJB_METODO_DESCARGA_DATOS_XML= "obtenerXMLGenerarDescarga";

	//Variables a utilizar

	//Pendiente

	//Variables del contexto

	final static String	FECHA_DESDE = "fechaDesde";

	final static String	FECHA_HASTA	= "fechaHasta";

	final static String FILTRO = "filtro";

	final static String	TIPO_CUES	= "codTipoCuestionario";

	final static String	DOCUMENTO_XML_DESCARGA_DATOS	= "documentoDescargaXml";

	//Declaracion de mappings

	final static String MAPPING_OK = "ok";

	//Método para la traza

	final static String TRACE_METODO_POP = "processOP";

	final static String TRACE_METODO_FW= "processForward";



	/**

	 * @see es.ejie.frmk.presentacion.operacion.paso.ActionPasoOP#processOP(es.ejie.frmk.presentacion.sesiondatos.ContextoEJIE, org.apache.struts.action.ActionErrors, org.apache.struts.action.ActionMapping, org.apache.struts.action.ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)

	 */

	protected void processOP(

   

		Q70ContextoEJIE contexto,

		ActionErrors errores,

		ActionMapping mapping,

		ActionForm form,

		HttpServletRequest request,

		HttpServletResponse response)

		throws Exception {



		//Recogida de atributos del contexto de OP

		HashMap filtro = (HashMap)contexto.get(FILTRO);

		

		   if (tr.isTraceActive()) 

        		   {

            			tr.trace(COMPONENTE, Q70TraceLevel.INFO, TRACE_METODO_POP + ": entrando -> fechaDesde =");//+ fechaDesde);

            			tr.trace(COMPONENTE, Q70TraceLevel.INFO, TRACE_METODO_POP + ": entrando -> fechaHasta  =");//+ fechaHasta);

            			

        		   }

		

		try{

			//Tipos de parámetros para el EJB

			/*Class[] paramType = new Class[3];

			paramType[0] = String.class;

			paramType[1] = String.class;

			paramType[2] = String.class;*/

			

			Class[] paramType = new Class[1];

			paramType[0] = HashMap.class;

			

			//Se indica en un array los objetos con los datos para enviar al EJB

			/*Object[] o = new Object[3];

			o[0]= fechaDesde;

			o[1]= fechaHasta;

			o[2]= tipoCues;*/

			

			Object[] o = new Object[1];

			o[0]= filtro;

			

			

			//Se invoca la función del Framework que te permite obtener el ArrayList del EJB

			String documentoDescargaDatosXml = (String)Q70AdaptadorInvocacion.invokeFunction(EJB_DESCARGA_DATOS,EJB_METODO_DESCARGA_DATOS_XML,o,paramType);

			

			//Se pone en el contexto el documento

			contexto.set(DOCUMENTO_XML_DESCARGA_DATOS,documentoDescargaDatosXml);

		}

		catch(Exception ex)

		{

			//Se resetea la variable documento del contexto

			contexto.set(DOCUMENTO_XML_DESCARGA_DATOS,null);

			java.io.StringWriter sw = new java.io.StringWriter();

	            		java.io.PrintWriter pw = new java.io.PrintWriter(sw);

	            		ex.printStackTrace(pw);

	            		tr.trace(COMPONENTE, Q70TraceLevel.ERROR,

	            		TRACE_METODO_POP + ": " + sw.getBuffer().toString());

		}

		

	}



	/**

	 * @see es.ejie.frmk.presentacion.operacion.paso.ActionPasoOP#processForward(es.ejie.frmk.presentacion.sesiondatos.ContextoEJIE, org.apache.struts.action.ActionErrors, org.apache.struts.action.ActionMapping, org.apache.struts.action.ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)

	 */

	protected ActionForward processForward(

		Q70ContextoEJIE contexto,

		ActionErrors errores,

		ActionMapping mapping,

		ActionForm form,

		HttpServletRequest request,

		HttpServletResponse response)

		throws Exception 

	{

		if (tr.isTraceActive()){

			tr.trace(COMPONENTE, Q70TraceLevel.INFO, this.getClass().getName() + TRACE_METODO_FW + " :entrando");

		}

		ActionForward salida = new ActionForward();

		salida = mapping.findForward(MAPPING_OK);

		return salida;

	}



}

