package es.ejie.frmk.infraestructura.utilidades.mapeador.mapas;

import java.util.Collection;
import java.util.Iterator;
import java.util.List;

import org.apache.commons.beanutils.DynaBean;

import es.ejie.frmk.infraestructura.utilidades.excepciones.Q70UtilidadesExcepcion;
import es.ejie.frmk.infraestructura.utilidades.mapeador.Q70Mapa;
import es.ejie.frmk.infraestructura.utilidades.mapeador.Q70ObjetoContextoFinal;

/**
 * Clase que realiza el mape de todas las propiedades a todas de un origen
 * a un destion. 
 * @author UFRM005
 * @version 1.0
 */

public class Q70MapaTodasListaAtributos implements Q70Mapa {

	/**
	 * Constructor de la clase
	 */
	public Q70MapaTodasListaAtributos() {
		super();
	}
	
	public void makeMap(Object objContextoInicial, Object objContextoFinal ) throws Q70UtilidadesExcepcion{
		
		// recuperar la lista de atributos y el contexto final
		
		Collection listaAtributos = (Collection)objContextoInicial;
		DynaBean dynFinalContext =  new Q70ObjetoContextoFinal(objContextoFinal).getFinalDynaBean();
		
		// hacer mapeo de propiedades

		String strNombrePropiedad = "";
		Object objValorPropiedad = "";
		Iterator iterator = listaAtributos.iterator();
		while (iterator.hasNext()) {
			List sublista = (List) iterator.next();
			try {
				strNombrePropiedad = (String)sublista.get(0);
				objValorPropiedad = sublista.get(1);
				dynFinalContext.set( strNombrePropiedad , objValorPropiedad );											
				} catch (IllegalArgumentException ia){
					/* Se permiten mapear propiedades que no existen en destino sin romper el mapeo*/	
					/*throw Q70GenerarUtilidadesExcepcion.createUtilityException(Q70UtilidadesConstantes.UTILIDADES_MAPEADOR,
																						"Q70MapaTodas", "makeMap", 
																						Q70UtilidadesErrores.UTILIDADES_MAPEADOR_PROPIEDAD_NO_MAPEADA ,ia );*/
			}
		}							
	}

}