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_")); } }