package com.taobao.tddl.atom.config;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang.builder.ToStringBuilder;
import com.taobao.tddl.atom.TAtomDbStatusEnum;
import com.taobao.tddl.atom.TAtomDbTypeEnum;
import com.taobao.tddl.atom.common.TAtomConstants;
import com.taobao.tddl.atom.utils.ConnRestrictEntry;
import com.taobao.tddl.common.model.DataSourceType;
import com.taobao.tddl.common.utils.TStringUtil;
import com.taobao.tddl.common.utils.TddlToStringStyle;
/**
* TAtom数据源全局和应用配置的DO
*
* @author qihao
* @author shenxun
*/
public class TAtomDsConfDO implements Cloneable {
/**
* 默认初始化的线程池连接数量
*/
public static final int defaultInitPoolSize = 0;
/**
* 默认初始化的defaultMaxWait druid专用,目前是和jboss的blockingTimeout是同一个配置。运维人员请注意。
*/
public static final int defaultMaxWait = 5000;
private String ip;
private String port;
private String dbName;
private String userName;
private String passwd;
private String driverClass;
private String sorterClass;
private int preparedStatementCacheSize;
private int initPoolSize = defaultInitPoolSize;
private int minPoolSize;
private int maxPoolSize;
private int blockingTimeout = defaultMaxWait;
private long idleTimeout;
// private String dbType;
private String oracleConType = TAtomConstants.DEFAULT_ORACLE_CON_TYPE;
private TAtomDbTypeEnum dbTypeEnum;
private TAtomDbStatusEnum dbStautsEnum;
private String dbStatus;
private Map<String, String> connectionProperties = new HashMap<String, String>();
/**
* 写 次数限制
*/
private int writeRestrictTimes;
/**
* 读 次数限制
*/
private int readRestrictTimes;
/**
* 统计时间片
*/
private int timeSliceInMillis;
/**
* 线程技术count限制
*/
private int threadCountRestrict;
/**
* 允许并发读的最大个数,0为不限制
*/
private int maxConcurrentReadRestrict;
/**
* 允许并发写的最大个数,0为不限制
*/
private int maxConcurrentWriteRestrict;
private volatile boolean isSingleInGroup;
/**
* 应用连接限制: 限制某个应用键值的并发连接数。
*/
private List<ConnRestrictEntry> connRestrictEntries;
public String getIp() {
return ip;
}
public void setIp(String ip) {
this.ip = ip;
}
public String getPort() {
return port;
}
public void setPort(String port) {
this.port = port;
}
public String getDbName() {
return dbName;
}
public void setDbName(String dbName) {
this.dbName = dbName;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPasswd() {
return passwd;
}
public void setPasswd(String passwd) {
this.passwd = passwd;
}
public String getDriverClass() {
if (TStringUtil.isBlank(driverClass) && null != this.dbTypeEnum) {
return this.dbTypeEnum.getDriverClass();
}
return driverClass;
}
public void setDriverClass(String driverClass) {
this.driverClass = driverClass;
}
public String getSorterClass() {
if (TStringUtil.isBlank(sorterClass) && null != this.dbTypeEnum) {
return this.dbTypeEnum.getSorterClass();
}
return sorterClass;
}
public void setSorterClass(String sorterClass) {
this.sorterClass = sorterClass;
}
public int getPreparedStatementCacheSize() {
return preparedStatementCacheSize;
}
public void setPreparedStatementCacheSize(int preparedStatementCacheSize) {
this.preparedStatementCacheSize = preparedStatementCacheSize;
}
public int getInitPoolSize() {
return initPoolSize;
}
public void setInitPoolSize(int initPoolSize) {
this.initPoolSize = initPoolSize;
}
public int getMinPoolSize() {
return minPoolSize;
}
public void setMinPoolSize(int minPoolSize) {
this.minPoolSize = minPoolSize;
}
public int getMaxPoolSize() {
return maxPoolSize;
}
public void setMaxPoolSize(int maxPoolSize) {
this.maxPoolSize = maxPoolSize;
}
public int getBlockingTimeout() {
return blockingTimeout;
}
public void setBlockingTimeout(int blockingTimeout) {
this.blockingTimeout = blockingTimeout;
}
public long getIdleTimeout() {
return idleTimeout;
}
public void setIdleTimeout(long idleTimeout) {
this.idleTimeout = idleTimeout;
}
public Map<String, String> getConnectionProperties() {
return connectionProperties;
}
public String getDbType() {
return dbTypeEnum.name().toLowerCase();
}
public void setDbType(String dbType) {
this.dbTypeEnum = TAtomDbTypeEnum.getAtomDbTypeEnum(dbType, DataSourceType.DruidDataSource);
}
public String getDbStatus() {
return dbStatus;
}
public void setDbStatus(String dbStatus) {
this.dbStatus = dbStatus;
if (TStringUtil.isNotBlank(dbStatus)) {
this.dbStautsEnum = TAtomDbStatusEnum.getAtomDbStatusEnumByType(dbStatus);
}
}
public TAtomDbStatusEnum getDbStautsEnum() {
return dbStautsEnum;
}
public TAtomDbTypeEnum getDbTypeEnum() {
return dbTypeEnum;
}
public void setConnectionProperties(Map<String, String> connectionProperties) {
this.connectionProperties = connectionProperties;
}
public String getOracleConType() {
return oracleConType;
}
public void setOracleConType(String oracleConType) {
this.oracleConType = oracleConType;
}
public int getWriteRestrictTimes() {
return writeRestrictTimes;
}
public void setWriteRestrictTimes(int writeRestrictTimes) {
this.writeRestrictTimes = writeRestrictTimes;
}
public int getReadRestrictTimes() {
return readRestrictTimes;
}
public void setReadRestrictTimes(int readRestrictTimes) {
this.readRestrictTimes = readRestrictTimes;
}
public int getThreadCountRestrict() {
return threadCountRestrict;
}
public void setThreadCountRestrict(int threadCountRestrict) {
this.threadCountRestrict = threadCountRestrict;
}
public int getTimeSliceInMillis() {
return timeSliceInMillis;
}
public void setTimeSliceInMillis(int timeSliceInMillis) {
this.timeSliceInMillis = timeSliceInMillis;
}
public int getMaxConcurrentReadRestrict() {
return maxConcurrentReadRestrict;
}
public void setMaxConcurrentReadRestrict(int maxConcurrentReadRestrict) {
this.maxConcurrentReadRestrict = maxConcurrentReadRestrict;
}
public int getMaxConcurrentWriteRestrict() {
return maxConcurrentWriteRestrict;
}
public void setMaxConcurrentWriteRestrict(int maxConcurrentWriteRestrict) {
this.maxConcurrentWriteRestrict = maxConcurrentWriteRestrict;
}
public List<ConnRestrictEntry> getConnRestrictEntries() {
return connRestrictEntries;
}
public void setConnRestrictEntries(List<ConnRestrictEntry> connRestrictEntries) {
this.connRestrictEntries = connRestrictEntries;
}
public TAtomDsConfDO clone() {
TAtomDsConfDO tAtomDsConfDO = null;
try {
tAtomDsConfDO = (TAtomDsConfDO) super.clone();
} catch (CloneNotSupportedException e) {
}
return tAtomDsConfDO;
}
public boolean isSingleInGroup() {
return isSingleInGroup;
}
public void setSingleInGroup(boolean isSingleInGroup) {
this.isSingleInGroup = isSingleInGroup;
}
public String toString() {
return ToStringBuilder.reflectionToString(this, TddlToStringStyle.DEFAULT_STYLE);
}
}