package es.ejie.frmk.infraestructura.tablas;

import java.util.ArrayList;
import java.util.Vector;

/**
 * Clase Fachada que crea una nueva instancia, en caso de que no exista, o
 * retorna la que tenemos. Asigna el componente delegado desde el MBean y su
 * comportamiento.
 * @version 2.0   Fecha: 20-feb-2006
 */
public class Q70GestorTablasCodigos implements Q70GestorTablasCodigosInterface {

	private static Q70GestorTablasCodigos instancia = null;
	private Q70GestorTablasCodigosInterface componenteAplicacion = null;

	private Q70GestorTablasCodigos() {
		super();
	}
	
	/** 
	 * Método estático que devuelve la única instancia de la clase <code>Q70GestorTablasCodigos</code>.
	 * @return <code>instancia</code> Instancia de Q70GestorTablasCodigos
	 */
	public static Q70GestorTablasCodigos getSingleton() {
		if (instancia == null) {
			instancia = new Q70GestorTablasCodigos();
		}
		return instancia;
	}
	
	/** 
	 * @see es.ejie.frmk.infraestructura.tablas.Q70GestorTablasCodigosInterface#selectRecordsFromTable(java.lang.String, java.lang.String, java.lang.String, java.util.Vector)
	 */
	public ArrayList selectRecordsFromTable(String idTabla, String condicion, String idioma, Vector columns) throws Q70GestorTablasException, Exception {
		return componenteAplicacion.selectRecordsFromTable(idTabla, condicion, idioma, columns);
	}

	/**
	 * Establece el componente de aplicación del gestor de tablas y códigos
	 * @param componenteAplicacion
	 */	
	protected void setComponenteAplicacion(
			Q70GestorTablasCodigosServidorInterface componenteAplicacion) {
		this.componenteAplicacion = componenteAplicacion;
	}

	/**
	 * Obtiene el componente de aplicación del gestor de tablas y códigos
	 * @return componenteAplicacion
	 */
	public Q70GestorTablasCodigosInterface getComponenteAplicacion() {
		return componenteAplicacion;
	}
}