/**
 * 
 */
package com.ejie.ad74a.context.bd;

import org.apache.commons.dbcp.BasicDataSource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.ejie.ad74a.util.UtilProperties;

/**
 * Bean especifico que acepta un objeto DataBaseInfo, el cual almacena los datos
 * de la cadena de conexion: <i>BD</i>, <i>USER</i> y <i>PASSWORD</i>.<br/>
 * Utiliza el driver OCI para especificar una entrada (<i>BD</i>) desde el
 * TNSNames.
 * 
 * @author JBHG
 *
 */
public class CustomDataSource extends BasicDataSource {
	private static Logger logger = LoggerFactory.getLogger(CustomDataSource.class);

	/**
	 * Asigna los valores url, username y password, desde el objeto dataBaseInfo.
	 * 
	 * @param dataBaseInfo DataBaseInfo
	 */
	public void setDataBaseInfo(DataBaseInfo dataBaseInfo) {

		if (Boolean.parseBoolean(UtilProperties.Props.EN_OFICINA.val())) {
			// XXX SIMULADO EN LA OFICINA
			setUrl(UtilProperties.Props.EN_OFICINA_JDBCURL.val());
		} else {
			/*
			 * XXX [jbhg] por indicaciones de EJIE se pasa a usar el driver THIN en vez de
			 * OCI en esta aplicación. Para ello se guardan los datos de conexión en el
			 * fichero properties, no podemos hacer uso del parámetro "Bd" de dataBaseInfo
			 * porque lo que trae es el nombre de la conexión en el tnsnames.ora.
			 */
//			setUrl("jdbc:oracle:oci:@" + dataBaseInfo.getBd());
			setUrl(UtilProperties.Props.EJIE_JDBC_URL.val());
		}

		setUsername(dataBaseInfo.getUser());
		setPassword(dataBaseInfo.getPassword());
		logger.info("URL usada para la conexion a bbdd: {} , usuario: {}", this.getUrl(), this.getUsername());
	}
}
