package jakiro.datasource.threadlocal;
public class DataSourceContextHolder {
private static final ThreadLocal<DataSourceBody> contextHolder = new ThreadLocal<DataSourceBody>();
public static void setDataSourcePrefix(String prefix) {
initDataSourceBody();
contextHolder.get().prefix = prefix;
}
public static void setDataSourceName(String dataSourceName) {
initDataSourceBody();
contextHolder.get().name = dataSourceName;
}
public static void setDataSourceSuffix(String suffix) {
initDataSourceBody();
contextHolder.get().suffix = suffix;
}
public static void setDataSourceRW(boolean isWrite) {
initDataSourceBody();
contextHolder.get().rw = isWrite ? "w" : "r";
}
public static String getDataSourceName() {
return contextHolder.get() != null ? contextHolder.get().buildName() : null;
}
public static void clearDataSourceName() {
contextHolder.remove();
}
private static void initDataSourceBody() {
if (contextHolder.get() == null)
contextHolder.set(new DataSourceBody());
}
}