/*
 * Created on: Dec 17, 2004
 * Author: Dibyendu Majumdar
 */
package com.ponl.framework.dao.ibatis;

import java.util.Map;

import javax.sql.DataSource;

import com.ibatis.common.exception.NestedRuntimeException;
import com.ibatis.sqlmap.engine.datasource.DataSourceFactory;
import com.ponl.framework.tm.IDataSourceFactory;

/**
 * <p>
 * OracleXADataSourceFactory: 
 * </p> 
 *
 * <pre>
 * History:
 * Dec 17, 2004 DM Created
 * </pre>
 * 
 * @author Dibyendu Majumdar
 * @version 
 * @since TCA 3.0
 */
public class SqlMapDataSourceFactory implements DataSourceFactory, Constants {

    DataSource dataSource;
    
    public void initialize(Map map) {
        String factoryClass = (String) map.get(DATASOURCE_FACTORY_CLASS);
        if (factoryClass != null) {
            try {
                IDataSourceFactory factory = (IDataSourceFactory) Class.forName(factoryClass).newInstance();
                dataSource = factory.getDataSource(map);
            } catch (Exception e) {
                throw new NestedRuntimeException("OracleXADataSourceFactory: Unable to load factory class - " + e, e);
            }
        }
        else {
            throw new NestedRuntimeException("OracleXADataSourceFactory: Property " + DATASOURCE_FACTORY_CLASS + " not defined.");
        }
    }

    public DataSource getDataSource() {
        return dataSource;
    }
}
