package edu.harvard.i2b2.crc.loader.dao; import javax.sql.DataSource; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import edu.harvard.i2b2.common.exception.I2B2DAOException; import edu.harvard.i2b2.common.exception.I2B2Exception; import edu.harvard.i2b2.common.util.ServiceLocator; import edu.harvard.i2b2.crc.loader.util.CRCLoaderUtil; public class DataSourceLookupDAOFactory { /** log **/ protected final static Log log = LogFactory.getLog(DataSourceLookupDAOFactory.class); public static final String ORACLE = "ORACLE"; public static final String SQLSERVER = "SQLSERVER"; private static String dataSourceName = null; private static String serverType = null; private static String schemaName = null; private static DataSource lookupDataSource = null; private static ServiceLocator serviceLocator = ServiceLocator.getInstance(); private static CRCLoaderUtil crcUtil = CRCLoaderUtil.getInstance(); public static DataSourceLookupDAO getDataSourceLookupDAO() throws I2B2DAOException { if (serverType == null) { getLookupDataSourceFromPropertyFile(); } if (serverType.equalsIgnoreCase(ORACLE)) { return new OracleDataSourceLookupDAO(lookupDataSource, schemaName); } else if (serverType.equalsIgnoreCase(SQLSERVER)) { return new OracleDataSourceLookupDAO(lookupDataSource, schemaName); } else { throw new I2B2DAOException("DataSourceLookupDAOFactory.getDataSourceLookupDAO: serverType=" + serverType + " not valid"); } } private static void getLookupDataSourceFromPropertyFile() throws I2B2DAOException { CRCLoaderUtil crcUtil = CRCLoaderUtil.getInstance(); try { dataSourceName = crcUtil.getCRCDBLookupDataSource(); serverType = crcUtil.getCRCDBLookupServerType(); schemaName = crcUtil.getCRCDBLookupSchemaName(); lookupDataSource = (DataSource) crcUtil.getSpringDataSource(dataSourceName); } catch (I2B2Exception i2b2Ex) { log.error( "DataSourceLookupDAOFactory.getLookupDataSourceFromPropertyFile" + i2b2Ex.getMessage(), i2b2Ex); throw new I2B2DAOException("DataSourceLookupDAOFactory.getLookupDataSourceFromPropertyFile" + i2b2Ex.getMessage(), i2b2Ex); } } }