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 P28Tipos {

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

	public static final int TIPO_ELEMENTO = 162;
	public static final int REGIMEN_ACCESO = 121;
	public static final int REGIMEN_TENENCIA = 173;
	public static final int PARENTESCO = 123;
	public static final int SEXO = 146;
	public static final int ESTADO_CIVIL = 115;
	public static final int TIPO_CONTRATO_ALQUILER = 215;
	public static final int TIPO_TRANSMISION = 153;
	public static final int TIPO_VINCULACION = 128;
	public static final int TIPO_CLAVE = 114;
	public static final int TIPO_SI_NO = 174;
	public static final int ESTADO_TRAMIT = 316;

	public static final AbstractTipoGenericoP28 getInstance(long numRegistro)
			throws InstantiationException, IllegalAccessException {
		switch ((int) numRegistro) {
		case TIPO_ELEMENTO:
			return TipoElemento.class.newInstance();
		case REGIMEN_ACCESO:
			return RegimenAcceso.class.newInstance();
		case REGIMEN_TENENCIA:
			return RegimenTenencia.class.newInstance();
		case PARENTESCO:
			return TipoParentesco.class.newInstance();
		case SEXO:
			return TipoSexo.class.newInstance();
		case ESTADO_CIVIL:
			return TipoEstadoCivil.class.newInstance();
		case TIPO_CONTRATO_ALQUILER:
			return TipoContratoAlquiler.class.newInstance();
		case TIPO_TRANSMISION:
			return TipoTransmision.class.newInstance();
		case TIPO_VINCULACION:
			return TipoVinculacion.class.newInstance();
		case TIPO_CLAVE:
			return TipoClave.class.newInstance();
		case TIPO_SI_NO:
			return TipoSiNo.class.newInstance();
		case ESTADO_TRAMIT:
			return EstadoTramitacion.class.newInstance();
		}
		return null;
	}

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