package org.toobs.framework.pres.component.datasource.manager; import java.util.Map; import org.apache.commons.beanutils.ConvertUtils; import org.toobs.data.beanutil.converter.DateToStringConverter; import org.toobs.framework.pres.component.datasource.api.DataSourceInitializationException; import org.toobs.framework.pres.component.datasource.api.IDataSource; /** * @author stewari * * singleton class that manages datasources */ public final class DataSourceManager { private static DataSourceManager _instance; private DataSourceManager() { ConvertUtils.register(new DateToStringConverter(), String.class); } public static DataSourceManager getInstance() throws DataSourceInitializationException { if (_instance == null) { _instance = new DataSourceManager(); } return _instance; } public IDataSource getDataSource(String className, Map params) throws DataSourceNotFoundException, DataSourceInitializationException { IDataSource ds = null; try { //Class dsClass = Class.forName(className); ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); Class dsClass = Class.forName (className, false, classLoader); if (!IDataSource.class.isAssignableFrom(dsClass)) { throw new DataSourceInitializationException(); } ds = (IDataSource) dsClass.newInstance(); ds.init(params); } catch (IllegalAccessException ex) { throw new DataSourceInitializationException(ex.getMessage()); } catch (InstantiationException ex) { throw new DataSourceInitializationException(ex.getMessage()); } catch (ClassNotFoundException ex) { throw new DataSourceNotFoundException(ex.getMessage()); } return ds; } }