All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy