// Path: src/com/ojdbc/sql/ConnectionManager.java
// public static class ConnectionInfo{
// 	//type
// 	private IDataSource sourceType;
// 	//key
// 	private String key;
// 		
// 	private ConnectionInfo(String key,IDataSource sourceType){
// 		this.key = key;
// 		this.sourceType = sourceType;
// 	}
// 	/**
// 	 * 获取IDataSource操作接口
// 	 * @return IDataSource
// 	 */
// 	public IDataSource getIDataSource() {
// 		return sourceType;
// 	}
// 	/**
// 	 * 获取数据库连接标识
// 	 * @return String
// 	 */
// 	public String getKey() {
// 		return key;
// 	}
// }
// 
// Path: src/com/ojdbc/sql/core/GodTool.java
// public class GodTool {
// 	/**
// 	 * 利用反射构建DataBase对象
// 	 * @param connInfo
// 	 * @return DataBase
// 	 */
// 	public static <T extends Enum<T> & IDataSource> DataBase newInstanceDataBase(ConnectionInfo connInfo)
// 	{
// 		try 
// 		{
// 			Constructor<?> dataBaseConstr = connInfo.getIDataSource().getDataBase().getDeclaredConstructor(ConnectionInfo.class);
// 			DataBase dataBase= (DataBase) dataBaseConstr.newInstance(connInfo);
// 			return dataBase;
// 			
// 		} catch (Exception e) {
// 			// TODO Auto-generated catch block
// 			e.printStackTrace();
// 			DBCException.logException(DBCException.E_newInstanceDataBase, e);
// 			return null;
// 		}
// 	}
// 
// }


import com.ojdbc.sql.ConnectionManager.ConnectionInfo;
import com.ojdbc.sql.core.GodTool;

/**
 * ClassName: DataBaseManager.java
 * Date: 2017年5月23日
 */
package com.ojdbc.sql;


/**
 * Author: ShaoGaige
 * Description: 数据库管理类
 * Log: 
 */
public class DataBaseManager {
	
	//私有构造函数
	private DataBaseManager()
	{
		//do something
	}
	/**
	 * 获取数据库对象
	 * @param type
	 * @param dataBaseURL
	 *   [数据库类别：dataBaseURL值的写法]
	 *   [Oracle: jdbc:oracle:thin:@127.0.0.1:1521:orcl]
	 *   [SQLServer: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=test]
	 *   [MySQL: jdbc:mysql://127.0.0.1:3306/test]
	 *   [PostgreSQL: jdbc:postgresql://127.0.0.1:5432/postgis]
	 *   [SQLite: jdbc:sqlite://d:/test.db]
	 *   [Mongo: jdbc:mongo://127.0.0.1:29847/test]
	 *   [Access: e://student.mdb]
	 * @param userName
	 * @param passWord
	 * @return DataBase
	 */
	public static <T extends Enum<T> & IDataSource> DataBase getDataBase(T type,String dataBaseURL,String userName,String passWord)
	{
		ConnectionInfo connInfo = ConnectionManager.getConnectionInfo(type, dataBaseURL, userName, passWord);

// Path: src/com/ojdbc/sql/ConnectionManager.java
// public static class ConnectionInfo{
// 	//type
// 	private IDataSource sourceType;
// 	//key
// 	private String key;
// 		
// 	private ConnectionInfo(String key,IDataSource sourceType){
// 		this.key = key;
// 		this.sourceType = sourceType;
// 	}
// 	/**
// 	 * 获取IDataSource操作接口
// 	 * @return IDataSource
// 	 */
// 	public IDataSource getIDataSource() {
// 		return sourceType;
// 	}
// 	/**
// 	 * 获取数据库连接标识
// 	 * @return String
// 	 */
// 	public String getKey() {
// 		return key;
// 	}
// }
// 
// Path: src/com/ojdbc/sql/core/GodTool.java
// public class GodTool {
// 	/**
// 	 * 利用反射构建DataBase对象
// 	 * @param connInfo
// 	 * @return DataBase
// 	 */
// 	public static <T extends Enum<T> & IDataSource> DataBase newInstanceDataBase(ConnectionInfo connInfo)
// 	{
// 		try 
// 		{
// 			Constructor<?> dataBaseConstr = connInfo.getIDataSource().getDataBase().getDeclaredConstructor(ConnectionInfo.class);
// 			DataBase dataBase= (DataBase) dataBaseConstr.newInstance(connInfo);
// 			return dataBase;
// 			
// 		} catch (Exception e) {
// 			// TODO Auto-generated catch block
// 			e.printStackTrace();
// 			DBCException.logException(DBCException.E_newInstanceDataBase, e);
// 			return null;
// 		}
// 	}
// 
// }


// Path: src/com/ojdbc/sql/DataBaseManager.java
import com.ojdbc.sql.ConnectionManager.ConnectionInfo;
import com.ojdbc.sql.core.GodTool;

/**
 * ClassName: DataBaseManager.java
 * Date: 2017年5月23日
 */
package com.ojdbc.sql;


/**
 * Author: ShaoGaige
 * Description: 数据库管理类
 * Log: 
 */
public class DataBaseManager {
	
	//私有构造函数
	private DataBaseManager()
	{
		//do something
	}
	/**
	 * 获取数据库对象
	 * @param type
	 * @param dataBaseURL
	 *   [数据库类别：dataBaseURL值的写法]
	 *   [Oracle: jdbc:oracle:thin:@127.0.0.1:1521:orcl]
	 *   [SQLServer: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=test]
	 *   [MySQL: jdbc:mysql://127.0.0.1:3306/test]
	 *   [PostgreSQL: jdbc:postgresql://127.0.0.1:5432/postgis]
	 *   [SQLite: jdbc:sqlite://d:/test.db]
	 *   [Mongo: jdbc:mongo://127.0.0.1:29847/test]
	 *   [Access: e://student.mdb]
	 * @param userName
	 * @param passWord
	 * @return DataBase
	 */
	public static <T extends Enum<T> & IDataSource> DataBase getDataBase(T type,String dataBaseURL,String userName,String passWord)
	{
		ConnectionInfo connInfo = ConnectionManager.getConnectionInfo(type, dataBaseURL, userName, passWord);

		DataBase dataBase = GodTool.newInstanceDataBase(connInfo);
