/**
* Alipay.com Inc.
* Copyright (c) 2004-2012 All Rights Reserved.
*/
package com.alipay.zdal.client.jdbc.dbselector;
import java.sql.SQLException;
import java.util.LinkedHashMap;
import javax.sql.DataSource;
import com.alipay.zdal.client.jdbc.DBSelector;
import com.alipay.zdal.client.jdbc.ZdalStatement.DB_OPERATION_TYPE;
import com.alipay.zdal.common.DBType;
import com.alipay.zdal.common.jdbc.sorter.DB2ExceptionSorter;
import com.alipay.zdal.common.jdbc.sorter.ExceptionSorter;
import com.alipay.zdal.common.jdbc.sorter.MySQLExceptionSorter;
import com.alipay.zdal.common.jdbc.sorter.OracleExceptionSorter;
public abstract class AbstractDBSelector implements DBSelector {
private DBType dbType = DBType.MYSQL;
protected ExceptionSorter exceptionSorter = new MySQLExceptionSorter();
private String id;
/**
* added by fanzeng.
* ��ʾͬһ��dbSeletor������ѡ������Դ��ʶ��
*/
private String selectedDSName;
//����Դ���ƣ����������Ϣ��add by ���� 20130903
private String appDsName;
public AbstractDBSelector(String id) {
this.id = id;
}
public String getSelectedDSName() {
return selectedDSName;
}
public void setSelectedDSName(String setSelectedDSName) {
this.selectedDSName = setSelectedDSName;
}
public <T> T tryExecute(DataSourceTryer<T> tryer, int times, DB_OPERATION_TYPE operationType,
Object... args) throws SQLException {
return this.tryExecute(new LinkedHashMap<DataSource, SQLException>(0), tryer, times,
operationType, args);
}
public DBType getDbType() {
return dbType;
}
public void setDbType(DBType dbType) {
this.dbType = dbType;
if (dbType.isMysql()) {
this.exceptionSorter = new MySQLExceptionSorter();
} else if (dbType.isOracle()) {
this.exceptionSorter = new OracleExceptionSorter();
} else if (dbType.isDB2()) {
this.exceptionSorter = new DB2ExceptionSorter();
}
}
public String getId() {
return id;
}
public void setAppDsName(String appDsName) {
this.appDsName = appDsName;
}
public String getAppDsName() {
return appDsName;
}
}