org.zodiac.datasource.jdbc.util.DataSourceUtil Maven / Gradle / Ivy
The newest version!
package org.zodiac.datasource.jdbc.util;
import org.zodiac.commons.constants.SystemPropertiesConstants;
import org.zodiac.datasource.jdbc.constants.DataSourceConstants;
import org.zodiac.sdk.toolkit.util.lang.StrUtil;
public abstract class DataSourceUtil {
protected DataSourceUtil() {}
/**
* 是否设置默认数据源。
*/
private static final ThreadLocal CUSTOMIZED_DATASOURCE_FLAG_HOLDER = new ThreadLocal() {
@Override
protected Boolean initialValue() {
return Boolean.FALSE;
}
};
/**
* 正规化数据源名称,数据源名称一定是以DataSource为后缀的。
*
* @param name 数据源名称
* @return 数据源名称
*/
public static String normalizeDataSourceName(String name) {
/*由于springboot 2.x的版本中对配置文件中的命名规范有了强制性的要求,在springboot 2.x中不允许使用驼峰形式,因此一般会使用“-”,治先抓转换为“_”,再转换为驼峰风格。*/
if (StrUtil.isBlank(name) || DataSourceConstants.DATA_SOURCE_NAME.equals(name)) {
return DataSourceConstants.DATA_SOURCE_NAME;
}
if (name.endsWith(DataSourceConstants.DATA_SOURCE_NAME_SUFFIX)) {
name = StrUtil.camelCase(name.replace('-', '_'));
return name;
}
name = StrUtil.camelCase(name.replace('-', '_')) + DataSourceConstants.DATA_SOURCE_NAME_SUFFIX;
return name;
}
/**
* 取得原始数据源名称。
*
* @param dsName 原始数据源名称是渠道DataSource后缀的部分
* @return 数据源名称
*/
public static String parseDataSourceKey(String dsName) {
if (dsName.endsWith(DataSourceConstants.DATA_SOURCE_NAME_SUFFIX)) {
return dsName.substring(0, dsName.indexOf(DataSourceConstants.DATA_SOURCE_NAME_SUFFIX));
}
return dsName;
}
/**
* Construct environment aware property prefix.
*
* @param ruleKey rule的key
* @return 结果
*/
public static String envAwarePropertyPrefix(String ruleKey) {
return String.format("%s.%s.props", SystemPropertiesConstants.Zodiac.SPRING_DATASOURCE_JDBC_RULES_PREFIX, ruleKey);
// return SystemPropertiesConstants.Zodiac.SPRING_DATASOURCE_JDBC_RULES_PREFIX + "." + ruleKey + ".props.";
}
/**
* 是否设置默认数据源。
*
* @return 是否使用
*/
public static Boolean useCustomizedDataSource() {
return CUSTOMIZED_DATASOURCE_FLAG_HOLDER.get();
}
/**
* 设置设置默认数据源标记。
*/
public static void setCustomizedDataSourceFlag() {
CUSTOMIZED_DATASOURCE_FLAG_HOLDER.set(Boolean.TRUE);
}
/**
* 清理设置默认数据源标记。
*/
public static void clearCustomizedDataSourceFlag() {
CUSTOMIZED_DATASOURCE_FLAG_HOLDER.set(Boolean.FALSE);
}
}