package q02b.buscadores.routers;



import java.util.ArrayList;



import org.apache.struts.action.ActionErrors;

import org.apache.struts.action.ActionForward;

import org.apache.struts.action.ActionMapping;



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

import es.ejie.frmk.presentacion.operacion.Q70DefaultRouterClass;

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



/**

 * @version 1.0

 * Fecha: 23-nov-06

 */

public class Q02bRouterBuscadorGeneral extends Q70DefaultRouterClass {

	//Trazear

	//private static Q70Traza 	tr 					= Q70Traza.getSingleton();

	//private static final String COMPONENTE 			= "Q70_ROUTERCLASS";

	//Declaración de mappings

	final static String MAPPING_SALIDA 				= "ok";

	final static String LISTA		 				= "listaBuscadorGeneral";

	final static String LISTA_COMBO 				= "listaBuscadorGeneralCombo";

	final static String LISTA_TABLA 				= "listaBuscadorGeneralTabla";



	/**

	 * @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)

	 */

	public  ActionForward processForward(Q70ContextoEJIE contexto,ActionErrors errores,ActionMapping mapping) throws Exception {

		//Recogida de atributos del contexto de OP

		ArrayList lista = (ArrayList)contexto.get(LISTA);

		

		// Si hay error, vaciamos la lista 

		if(! errores.isEmpty()) {	

			lista = new ArrayList () ; 

			contexto.set(LISTA, lista);	

			contexto.set(LISTA_TABLA, new ArrayList());

			//contexto.set(LISTA_COMBO, new ArrayList());

		}	

		

		//Se recorre el arrayList

		for(int i=0;i<lista.size();i++)

		{

			//Se obtiene la sublista

			ArrayList subLista = (ArrayList)lista.get(i);

			//Si la sublista tiene datos y el primer objeto es de tipo Q02bBuscadorGeneral se lo asigno a la lista correspondiente del  contexto

			if(subLista.size()>0 && subLista.get(0).getClass().equals(new q02b.exe.comun.valueobjects.Q02bBuscadorGeneral().getClass())){

				contexto.set(LISTA_TABLA, subLista);

			} else if (subLista.size()>0 && subLista.get(0).getClass().equals(new q02b.exe.comun.valueobjects.Q02bBuscadorGeneralCombo().getClass())){

				contexto.set(LISTA_COMBO, subLista);

			} else if(subLista.size()==0){

				contexto.set(LISTA_TABLA, new ArrayList());

			}

		}

		

		//Se devuelve el mapping de salida

		return mapping.findForward(MAPPING_SALIDA);

	}

}

