package com.ejie.m62fb.model.tipos;

import java.util.List;

import com.ejie.m62fb.utils.bean.BeanUtils;

/**
 * <p>
 * Contiene los c&oacute;digos de los tipos de descripciones que obtenemos de la
 * tabla <code>VALORES_COMBO</code>.
 * </p>
 * 
XXXX
 * 
 */
public final class R09Tipos {

	/**
	 * Copnstructor por defecto
	 */
	private R09Tipos() {
		// para que no se cree una instancia
		throw new AssertionError();
	}

	public static final String TIPO_REGULACION = "REGULA";
	public static final String TIPO_ACCESO = "ACCESO";
	public static final String TIPO_INICIATIVA = "INICI";
	public static final String TIPO_PROMOTOR = "PROMO";
	public static final String TIPO_PROPIETARIOS = "PROPI";
	public static final String TIPO_ADJUDICACION = "ADJ";
	public static final String TIPO_QUIEN_ADJUDICA = "ADJQ";
	public static final String TIPO_COMO_ADJUDICA = "ADJC";
	public static final String TIPO_PORQUE_ADJUDICA = "ADJPQ";

	public static final AbstractTipoGenericoR09 getInstance(
			String codTipoEntidad) throws InstantiationException,
			IllegalAccessException {
		if (TIPO_REGULACION.equals(codTipoEntidad)) {
			return TipoRegulacion.class.newInstance();
		} else if (TIPO_ACCESO.equals(codTipoEntidad)) {
			return TipoAcceso.class.newInstance();
		} else if (TIPO_INICIATIVA.equals(codTipoEntidad)) {
			return TipoIniciativa.class.newInstance();
		} else if (TIPO_PROMOTOR.equals(codTipoEntidad)) {
			return TipoPromotor.class.newInstance();
		} else if (TIPO_PROPIETARIOS.equals(codTipoEntidad)) {
			return TipoPropietarios.class.newInstance();
		} else if (TIPO_ADJUDICACION.equals(codTipoEntidad)) {
			return TipoAdjudicacion.class.newInstance();
		} else if (TIPO_QUIEN_ADJUDICA.equals(codTipoEntidad)) {
			return TipoQuienAdjudicacion.class.newInstance();
		} else if (TIPO_COMO_ADJUDICA.equals(codTipoEntidad)) {
			return TipoComoAdjudicacion.class.newInstance();
		} else if (TIPO_PORQUE_ADJUDICA.equals(codTipoEntidad)) {
			return TipoPorqueAdjudicacion.class.newInstance();
		} else {
			return null;
		}
	}

	/**
	 * Metodo utilizado para realizar la serialización de una objeto
	 * List<AbstractTipoGenericoR09> en formato JSON para poder usarse con un
	 * elemento RUP Autocomplete.
	 * 
	 * @param comboList
	 *            List<AbstractTipoGenericoR09>
	 * @return Serialización del objeto en formato JSON.
	 */
	public static String serializeComboR09(
			List<AbstractTipoGenericoR09> comboList) {
		return BeanUtils.serialize(comboList, "descripcion", "idElereg");
	}
}
