package com.taobao.tddl.qatest.util;
import java.util.List;
import javax.sql.DataSource;
import org.apache.commons.lang.StringUtils;
public class FixDataSourceImpl implements FixDataSource {
private int dbCount;
private int tableCount;
private int tableLength;
private List<DataSource> masterDsList;
private List<DataSource> slaveDsList;
public DataSource getMasterDsByColumn(long column) {
int dbIndex = getDbIndex(column);
return masterDsList.get(dbIndex);
}
public DataSource getSlaveDsByColumn(long column) {
int dbIndex = getDbIndex(column);
return slaveDsList.get(dbIndex);
}
public DataSource getMasterDsByIndex(int index) {
return masterDsList.get(index);
}
public DataSource getSlaveDsByIndex(int index) {
return slaveDsList.get(index);
}
public String getTableName(long userId, String tablePrefix) {
long tableIndex = userId % tableCount;
String tableFullName = tablePrefix + "_" + StringUtils.leftPad(tableIndex + "", tableLength, "0");
return tableFullName;
}
public int getDbIndex(long column) {
return (int) ((column / (tableCount / dbCount)) % dbCount);
}
public int getDbCount() {
return dbCount;
}
public void setDbCount(int dbCount) {
this.dbCount = dbCount;
}
public int getTableCount() {
return tableCount;
}
public void setTableCount(int tableCount) {
this.tableCount = tableCount;
}
public int getTableLength() {
return tableLength;
}
public void setTableLength(int tableLength) {
this.tableLength = tableLength;
}
public List<DataSource> getMasterDsList() {
return masterDsList;
}
public void setMasterDsList(List<DataSource> masterDsList) {
this.masterDsList = masterDsList;
}
public List<DataSource> getSlaveDsList() {
return slaveDsList;
}
public void setSlaveDsList(List<DataSource> slaveDsList) {
this.slaveDsList = slaveDsList;
}
public static void main(String[] args) {
FixDataSourceImpl fixDataSource = new FixDataSourceImpl();
fixDataSource.setDbCount(16);
fixDataSource.setTableCount(1024);
fixDataSource.setTableLength(4);
System.out.println(fixDataSource.getTableName(1234567890123456789l, "bmw_users_"));
}
}