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

com.pamirs.pradar.pressurement.datasource.DatabaseUtils Maven / Gradle / Ivy

There is a newer version: 1.0.2
Show newest version
package com.pamirs.pradar.pressurement.datasource;

import com.pamirs.pradar.internal.config.ShadowDatabaseConfig;
import com.pamirs.pradar.pressurement.agent.shared.service.GlobalConfig;
import com.pamirs.pradar.pressurement.datasource.util.DbUrlUtils;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;

/**
 * @author xiaobin.zfb
 * @since 2020/9/10 6:00 下午
 */
public final class DatabaseUtils {

    //判断当前数据源是否是影子库压测
    public static Map getUrlUsername(Connection jdbcConnecton) throws SQLException {
        Map map = new HashMap();
        String username = null;
        String url = null;
        if (url == null && jdbcConnecton != null && jdbcConnecton.getMetaData() != null) {
            url = jdbcConnecton.getMetaData().getURL();
            username = jdbcConnecton.getMetaData().getUserName();
        }
        map.put("username", username);
        map.put("url", url);
        return map;
    }

    /**
     * 判断是否是影子数据源
     *
     * @param url
     * @param username
     * @return
     */
    public static boolean isShadowDatasource(String url, String username) {
        String key = DbUrlUtils.getKey(url, username);
        ShadowDatabaseConfig shadowDatabaseConfig = GlobalConfig.getInstance().getShadowDatabaseConfig(key);
        if (shadowDatabaseConfig == null) {
            /**
             * 解决现在影子表配置没有username的问题,再尝试使用非用户名的判断一次
             */
            key = DbUrlUtils.getKey(url, null);
        }

        shadowDatabaseConfig = GlobalConfig.getInstance().getShadowDatabaseConfig(key);
        if (shadowDatabaseConfig == null) {
            return false;
        }
        return shadowDatabaseConfig.isShadowDatabase();
    }

    public static boolean isTestTable(String url, String username) throws SQLException {
        String key = DbUrlUtils.getKey(url, username);
        ShadowDatabaseConfig shadowDatabaseConfig = GlobalConfig.getInstance().getShadowDatabaseConfig(key);
        if (shadowDatabaseConfig == null) {
            /**
             * 解决现在影子表配置没有username的问题,再尝试使用非用户名的判断一次
             */
            key = DbUrlUtils.getKey(url, null);
        }

        shadowDatabaseConfig = GlobalConfig.getInstance().getShadowDatabaseConfig(key);
        if (shadowDatabaseConfig == null) {
            return false;
        }
        return shadowDatabaseConfig.isShadowTable();

    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy