com.hundsun.lightdb.unisql.model.UnisqlProperties Maven / Gradle / Ivy
package com.hundsun.lightdb.unisql.model;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Properties;
/**
* 统一 SQL 系统参数与环境变量管理类,统一管理各类环境变量、系统参数
*
* @author yangrl14628
* @date 2023-07-19 10:17:53
*
* Copyright © 2023 Hundsun Technologies Inc. All Rights Reserved
*/
@Slf4j
public class UnisqlProperties {
/** single instance */
private static final UnisqlProperties INSTANCE = new UnisqlProperties();
// region 动态库相关常量
/** 代表动态库所在目录的 property */
private static final String PROP_LIB_DIR = "unisql.lib.dir";
/** 代表动态库所在目录的系统环境变量 */
private static final String ENV_LIB_DIR = "unisql_lib_dir";
/** 代表动态库所在目录的 property ,已弃用,应当用上面 lib 的 */
private static final String PROP_DLL_DIR_DEPRECATED = "unisql.dll.dir";
/** 代表动态库所在目录的系统环境变量,已弃用,应当用上面 lib 的 */
private static final String ENV_DLL_DIR_DEPRECATED = "unisql_dll_dir";
/** 定死操作系统架构名称 property,允许非标准操作系统的用户指定自己的操作系统架构名称 */
private static final String PROP_LIB_FULL_PATH = "unisql.lib.full-path";
/** 定死操作系统架构名称系统环境变量,允许非标准操作系统的用户指定自己的操作系统架构名称 */
private static final String ENV_LIB_FULL_PATH = "unisql_lib_full_path";
// endregion 动态库相关常量
// region 转换器性能参数相关常量
/** 环境变量 */
private static final String ENV_GOGC = "GOGC";
/** 环境变量 */
private static final String ENV_GOMEMLIMIT = "GOMEMLIMIT";
/** 缓存最大大小 */
private static final String PROP_UNISQL_CACHE_MAXIMUM_SIZE = "unisql.cache.maximum-size";
/** 缓存最大大小 驼峰 */
private static final String PROP_UNISQL_CACHE_MAXIMUM_SIZE_CAMEL = "unisql.cache.maximumSize";
/** 缓存过期时间 */
private static final String PROP_UNISQL_CACHE_EXPIRE_SECONDS = "unisql.cache.expire-seconds";
/** 缓存过期时间 驼峰 */
private static final String PROP_UNISQL_CACHE_EXPIRE_SECONDS_CAMEL = "unisql.cache.expireSeconds";
/** GOGC 参数,可指定 go gc 每次的增长比例 */
private static final String PROP_UNISQL_GO_GOGC = "unisql.go.gogc";
/** GOMEMLIMIT 参数,可指定 go 最大内存使用量,我们以 MB 为单位 */
private static final String PROP_UNISQL_GO_GOMEMLIMIT = "unisql.go.gomemlimit";
/** 默认缓存大小 */
private static final int DEFAULT_MAX_CACHE_SIZE = 10000;
/** 默认缓存过期时间 */
private static final int DEFAULT_EXPIRE_SECONDS = 900;
/** 默认 GOGC 大小 */
private static final long DEFAULT_GO_GOGC = 1000;
/** 默认 GOMEMLIMIT 大小,MB 为单位 */
private static final long DEFAULT_GO_GOMEMLIMIT = 256;
// endregion 转换器性能参数相关常量
// region Debug 与 Check 相关常量
/** 开启 debug 模式 */
private static final String PROP_UNISQL_DEBUG = "unisql.debug";
/**
* 配置项字面量,表示是否跳过`依赖统一sql动态库执行运行时sql转换`步骤。默认值false
*/
private static final String SKIP_UNISQL_RUNTIME_CONVERT = "unisql.skipUnisqlRuntimeConvert";
/**
* 配置项字面量,表示是否采集微服务参数,默认值false
*/
private static final String COLLECT_MICRO_SERVICE_PARAMETERS_ENABLED = "unisql.collectMicroServiceParametersEnabled";
/**
* 表示是否跳过`依赖统一sql动态库执行运行时sql转换`步骤。默认值false
*/
public static boolean skipUnisqlRuntimeConvertProperty = false;
/**
* 表示是否采集微服务参数。默认值false
*/
public static boolean collectMicroServiceParametersEnabled = false;
/** 是否开启对目标为 POSTGRESQL 的统一 SQL URL 的检查 */
private static final String PROP_UNISQL_CHECK_POSTGRESQL = "unisql.check.postgresql";
/** 是否开启对目标为 POSTGRESQL 的统一 SQL URL 的 schema 检查 */
private static final String PROP_UNISQL_CHECK_POSTGRESQL_SCHEMA = "unisql.check.postgresql.schema";
/** 是否开启对目标为 MYSQL 的统一 SQL URL 的检查 */
private static final String PROP_UNISQL_CHECK_MYSQL = "unisql.check.mysql";
/** 开启 errSkip 模式 */
private static final String PROP_UNISQL_ERROR_SKIP = "unisql.error.skip";
/** 转换后的sql中自定义表或字段名称结尾是否使用随机数0不随机,1随机 默认1随机 */
private static final String PROP_UNISQL_TABLE_COLUMN_NAME_RANDOM = "unisql.table.column.name.random";
/** oracle源端是否使用反引号转为双引号 0不转 1转 默认0不转 */
private static final String PROP_UNISQL_BACK_QUOTES_TO_DOUBLE_QUOTES = "unisql.change.backquotes.to.doublequotes";
/** 开启 skip 模式 */
private static final String PROP_UNISQL_SKIP = "unisql.skip";
/** 开启 缓存 模式 */
private static final String PROP_UNISQL_CACHE = "unisql.cache";
/** 统一 SQL 对比 http请求的url */
private static final String PROP_UNISQL_COMPARE_SERVER_URL = "unisql.compare.server.url";
/**
* 将 alter table XXX move tablespace XXX 替换为该SQL配置项
*/
private static final String MOVE_TABLESPACE_REPLACE_SQL = "unisql.move.tablespace.replace.sql";
/** 统一SQL自定义函数脚本执行所在的schema或database; 默认unisql -D参数优先级最高 */
private static final String PROP_UNISQL_SCHEMA = "unisql.schema";
/** 环境变量 统一 SQL 配置文件目录 */
private static final String ENV_UNISQL_CONF_DIR = "unisql_conf_dir";
/** 移除列上的双引号 0 不移除 1移除 */
private static final String PROP_UNISQL_REMOVEDOUBLEQUOTED = "unisql.remove.doubleQuoted";
/* gaussdb decode函数的参数为下列函数,函数之间用英文逗号分割,则decode的值类型参数转化为text类型 */
private static final String PROP_UNISQL_DECODEPARAMETERSFUNCNAMES = "unisql.decode.parameters.funcnames";
/*mysql是否识别'/'为转义字符, 0 false,1 true*/
private static final String PROP_UNISQL_MYSQLBACKSLASHESCAPES = "unisql.mysql.backslash.escapes";
private static final String PROP_UNISQL_CHANGE_DATABASE_TO_SCHEMA = "unisql.change.database.to.schema";
/** 配置关键字,对象名如果匹配到了此配置参数中配置的关键字则使用双引号包裹,每个关键字之间用逗号分隔 */
private static final String PROP_UNISQL_KEYWORD_DOUBLE_QUOTES = "unisql.keyword.doublequotes";
private static final String UNISQL_CONF_DIR;
/** 默认开启 debug 模式 */
private static final boolean DEFAULT_UNISQL_DEBUG = false;
/** 默认是否开启对目标为 POSTGRESQL 的统一 SQL URL 的检查 */
private static final boolean DEFAULT_UNISQL_CHECK_POSTGRESQL = true;
/** 默认是否开启对目标为 POSTGRESQL 的统一 SQL URL 的 schema 检查 */
private static final boolean DEFAULT_UNISQL_CHECK_POSTGRESQL_SCHEMA = true;
/** 默认是否开启对目标为 MYSQL 的统一 SQL URL 的检查 */
private static final boolean DEFAULT_UNISQL_CHECK_MYSQL = true;
/** 默认不开启 errSkip 模式 */
private static final boolean DEFAULT_UNISQL_ERROR_SKIP = false;
/** 转换后的sql中自定义表或字段名称结尾是否使用随机数 默认1随机 */
private static final int DEFAULT_UNISQL_TABLE_COLUMN_NAME_RANDOM = 1;
/** oracle源端是否使用反引号转为双引号 默认0不转 */
private static final int DEFAULT_UNISQL_BACK_QUOTES_TO_DOUBLE_QUOTES = 0;
/** 默认不开启 skip 模式 */
private static final boolean DEFAULT_UNISQL_SKIP = false;
/** 默认开启 缓存 模式 */
private static final boolean DEFAULT_UNISQL_CACHE = true;
/** 默认对比 http请求的url */
private static final String DEFAULT_UNISQL_COMPARE_SERVER_URL = "";
/** 配置关键字,对象名如果匹配到了此配置参数中配置的关键字则使用双引号包裹,每个关键字之间用逗号分隔,默认为空 */
private static final String DEFAULT_UNISQL_KEYWORD_DOUBLE_QUOTES = "";
/** 统一SQL自定义函数脚本执行所在的schema或database; 默认unisql */
private static final String DEFAULT_UNISQL_SCHEMA = "unisql";
/**
* MOVE_TABLESPACE_REPLACE_SQL 默认值
*/
private static final String DEFAULT_MOVE_TABLESPACE_REPLACE_SQL = "select 1";
private static final String TRUE = "true";
private static final String FALSE = "false";
private static final String OPEN = "1";
private static final String CLOSE = "0";
/** 多发模式配置路径 */
private static final String UNISQL_MULTI_CONFIGURATION_PATH = "unisql.multi.configuration.path";
private static final Properties PROPERTIES;
private static final String WORK_DIR = "user.dir";
private static final String UNISQL_CONF = "unisqlconf";
private static final String UNISQL_CONF_NAME = "unisql.conf";
/** 移除列上的双引号参数默认值 0 不移除 1移除 */
private static final int DEFAULT_UNISQL_REMOVEDOUBLEQUOTED = 0;
private static final String DEFAULT_UNISQL_DECODEPARAMETERSFUNCNAMES ="";
/*MySQL2Gaussdb-Oracle关于create database是否转换成create schema,默认0不转换 1转换*/
private static final int DEFAULT_CHANGE_DATABASE_TO_SCHEMA = 0;
// endregion Debug 与 Check 相关常量
/**
* get INSTANCE
*
* @return INSTANCE
*/
public static UnisqlProperties getInstance() {
return INSTANCE;
}
static {
String dir = System.getenv(ENV_UNISQL_CONF_DIR);
if (StringUtils.isBlank(dir)) {
UNISQL_CONF_DIR = System.getProperty(WORK_DIR) + File.separator + UNISQL_CONF;
} else {
UNISQL_CONF_DIR = dir;
}
PROPERTIES = new Properties();
String conf = String.format(UNISQL_CONF_DIR + File.separator + "%s", UNISQL_CONF_NAME);
File file = new File(conf);
if (file.exists()) {
try (InputStream input = new FileInputStream(file)) {
PROPERTIES.load(input);
} catch (Exception e) {
if (log.isErrorEnabled()) {
log.error("Failed to load properties from " + conf, e);
}
}
} else {
if (log.isInfoEnabled()) {
log.info("unisql conf file not find :{} .Please use unisql.conf file or -D system parameter configuration,Otherwise, the default value will be used.", conf);
}
}
if (getInstance().isDebug()) {
if (log.isInfoEnabled()) {
log.info("unisql.conf.dir:{}", UNISQL_CONF_DIR);
}
}
// 是否跳过统一sql运行时sql转换
skipUnisqlRuntimeConvertProperty =
getInstance().handleSwitchConfig(UnisqlProperties.SKIP_UNISQL_RUNTIME_CONVERT);
// 是否采集微服务参数
collectMicroServiceParametersEnabled =
getInstance().handleSwitchConfig(UnisqlProperties.COLLECT_MICRO_SERVICE_PARAMETERS_ENABLED);
}
protected UnisqlProperties() {
}
/**
* 字符串为空
*
* @param str 字符串
* @return true 为空,false 不为空
*/
private boolean isEmpty(String str) {
return str == null || "".equals(str);
}
/**
* 开关是否开启
*
* @param str 字符串
* @return true 开 / 1 开
*/
private boolean isOpen(String str) {
return TRUE.equalsIgnoreCase(str.trim()) || OPEN.equalsIgnoreCase(str.trim());
}
public String getPropMultiConfigurationPath() {
return System.getProperty(UNISQL_MULTI_CONFIGURATION_PATH);
}
// region 动态库相关函数
/**
* 获取动态库完整路径配置
*
* @return 动态库完整路径配置,可能为空
*/
public String getLibFullPath() {
return System.getProperty(PROP_LIB_FULL_PATH, System.getenv(ENV_LIB_FULL_PATH));
}
/**
* 获取动态库搜索路径
*
* @return 动态库搜索路径,可能为空
*/
public String getLibDir() {
String configDir;
configDir = System.getProperty(PROP_LIB_DIR, System.getenv(ENV_LIB_DIR));
if (isEmpty(configDir)) {
configDir = System.getProperty(PROP_DLL_DIR_DEPRECATED, System.getenv(ENV_DLL_DIR_DEPRECATED));
if (configDir != null) {
log.warn("The property '{}' or the environment variable '{}' " +
"has been deprecated. Please use the property '{}' " +
"or the environment variable '{}' instead.",
PROP_DLL_DIR_DEPRECATED, ENV_DLL_DIR_DEPRECATED,
PROP_LIB_DIR, ENV_LIB_DIR);
}
}
return configDir;
}
// endregion 动态库相关函数
// region 转换器性能参数相关函数
/**
* 获取统一 SQL 缓存最大大小数字,默认 {@link #DEFAULT_MAX_CACHE_SIZE}
*
* @return 缓存大小
*/
public int getCacheMaximumSize() {
final int def = DEFAULT_MAX_CACHE_SIZE;
String using;
String str;
using = PROP_UNISQL_CACHE_MAXIMUM_SIZE;
str = System.getProperty(using);
if (StringUtils.isBlank(str)) {
using = PROP_UNISQL_CACHE_MAXIMUM_SIZE_CAMEL;
str = System.getProperty(using);
if (StringUtils.isBlank(str)) {
// 没有则判断配置文件配置
str = PROPERTIES.getProperty(PROP_UNISQL_CACHE_MAXIMUM_SIZE_CAMEL);
}
}
if (StringUtils.isBlank(str)) {
return def;
}
try {
int value = Integer.parseInt(str);
if (value >= 0) {
return value;
}
return def;
} catch (Exception e) {
if (log.isErrorEnabled()) {
log.error(String.format(
"System property '%s' value '%s' is not a valid number! Using default maximum cache size %d%n",
using, str, def));
}
return def;
}
}
/**
* 获取统一 SQL 缓存最大过期时长秒,默认 {@link #DEFAULT_EXPIRE_SECONDS}
*
* @return 缓存大小
*/
public int getCacheExpireSeconds() {
final int def = DEFAULT_EXPIRE_SECONDS;
String using;
String str;
using = PROP_UNISQL_CACHE_EXPIRE_SECONDS;
str = System.getProperty(using);
if (StringUtils.isBlank(str)) {
using = PROP_UNISQL_CACHE_EXPIRE_SECONDS_CAMEL;
str = System.getProperty(using);
if (StringUtils.isBlank(str)) {
// 没有则判断配置文件配置
str = PROPERTIES.getProperty(PROP_UNISQL_CACHE_EXPIRE_SECONDS_CAMEL);
}
}
if (StringUtils.isBlank(str)) {
return def;
}
try {
int value = Integer.parseInt(str);
if (value >= 0) {
return value;
}
return def;
} catch (Exception e) {
if (log.isErrorEnabled()) {
log.error(String.format(
"System property '%s' value '%s' is not a valid number! Using default cache expire seconds %d%n",
using, str, def));
}
return def;
}
}
/**
* 未设置 GOGC 环境变量
*
* @return 是否‘未设置 GOGC 环境变量’,true 无 GOGC,false 有 GOGC
*/
public boolean isEnvironmentGOGCNotSet() {
return System.getenv(ENV_GOGC) == null;
}
/**
* 获取统一 SQL 的 GOGC 配置
*
* @return GOGC 配置数值
*/
public long getGOGC() {
final long def = DEFAULT_GO_GOGC;
String str = System.getProperty(PROP_UNISQL_GO_GOGC);
if (isEmpty(str)) {
return def;
}
try {
return Long.parseLong(str);
} catch (Exception e) {
if (log.isErrorEnabled()) {
log.error(String.format(
"System property '%s' value '%s' is not a valid number! Using default GOGC %d%n",
PROP_UNISQL_GO_GOGC, str, def));
}
return def;
}
}
/**
* 未设置 GOMEMLIMIT 环境变量
*
* @return 是否‘未设置 GOMEMLIMIT 环境变量’,true 无 GOMEMLIMIT,false 有 GOMEMLIMIT
*/
public boolean isEnvironmentGOMEMLIMITNotSet() {
return System.getenv(ENV_GOMEMLIMIT) == null;
}
/**
* 获取统一 SQL 的 GOMEMLIMIT 配置,注意以 MB 为单位
*
* @return GOMEMLIMIT 配置数值
*/
public long getGOMEMLIMIT() {
final long def = DEFAULT_GO_GOMEMLIMIT;
String str = System.getProperty(PROP_UNISQL_GO_GOMEMLIMIT);
if (isEmpty(str)) {
return def;
}
try {
return Long.parseLong(str);
} catch (Exception e) {
if (log.isErrorEnabled()) {
log.error(String.format(
"System property '%s' value '%s' is not a valid number! Using default GOMEMLIMIT %d%n",
PROP_UNISQL_GO_GOMEMLIMIT, str, def));
}
return def;
}
}
// endregion 转换器性能参数相关函数
// region Debug 与 Check 相关函数
/**
* 是否开启 debug 模式
* 开关默认是关闭,则只有1或true才能开启,其余值都会设置为关闭
*
* @return debug 模式
*/
public boolean isDebug() {
// 先判断-D
String got = System.getProperty(PROP_UNISQL_DEBUG);
if (StringUtils.isBlank(got)) {
// 没有则判断配置文件配置
got = PROPERTIES.getProperty(PROP_UNISQL_DEBUG);
}
// 开关默认是关闭,则只有1或true才能开启,其余值都会设置为关闭
if (defaultClose(got)) {
return DEFAULT_UNISQL_DEBUG;
}
return isOpen(got);
}
/**
* 处理开关配置项,配置项范围{@link UnisqlProperties#SKIP_UNISQL_RUNTIME_CONVERT,UnisqlProperties#COLLECT_SQL_PARAMETERS_ENABLED}
*
* @param: configName 配置项名称
* @return: boolean
* @Author: liangdong30629
* @Date: 2024/6/12 10:45
*/
private boolean handleSwitchConfig(String configName) {
// 先判断-Dxxx
final String got = System.getProperty(configName);
// 系统参数(-D)为空
if (isEmpty(got)) {
// 获取配置文件(unisql.conf)中配置项`xxx`内容
String configContent = PROPERTIES.getProperty(configName);
// 默认关闭
if (defaultClose(configContent)) {
return false;
}
return isOpen(configContent);
}
return isOpen(got);
}
/**
* 是否开启对 POSTGRESQL 目标的统一 SQL 检查
*
* @return true 开启,false 不开启
*/
public boolean isCheckPostgreSQL() {
final String got = System.getProperty(PROP_UNISQL_CHECK_POSTGRESQL);
// 开关默认是开启,则只有0或false才能关闭,其余值都会设置为开启
if (defaultOpen(got)) {
return DEFAULT_UNISQL_CHECK_POSTGRESQL;
}
return isOpen(got);
}
/**
* 是否开启对 POSTGRESQL 目标的统一 SQL Schema 检查。
*
* 注意要与 {@link #isCheckPostgreSQL} 配套使用,若上面为 false ,则不要用这个继续判断
*
* @return true 开启,false 不开启
*/
public boolean isCheckPostgreSQLSchema() {
final String got = System.getProperty(PROP_UNISQL_CHECK_POSTGRESQL_SCHEMA);
// 开关默认是开启,则只有0或false才能关闭,其余值都会设置为开启
if (defaultOpen(got)) {
return DEFAULT_UNISQL_CHECK_POSTGRESQL_SCHEMA;
}
return isOpen(got);
}
/**
* 开关默认是开启,则只有0或false才能关闭,其余值都会设置为开启
*
* @param got 配置值
* @return true 开启,false 不开启
*/
private boolean defaultOpen(String got) {
return StringUtils.isBlank(got) || (!CLOSE.equalsIgnoreCase(got.trim()) && !FALSE.equalsIgnoreCase(got.trim()));
}
/**
* 开关默认是关闭,则只有1或true才能开启,其余值都会设置为关闭
*
* @param got 配置值
* @return true 不开启,false 开启
*/
private boolean defaultClose(String got) {
return StringUtils.isBlank(got) || (!OPEN.equalsIgnoreCase(got.trim()) && !TRUE.equalsIgnoreCase(got.trim()));
}
/**
* 是否开启 全局异常透传 模式
* 开关默认是关闭,则只有1或true才能开启,其余值都会设置为关闭
*
* @return errSkip 模式
*/
public boolean isErrorSkip() {
// 先判断-D
String got = System.getProperty(PROP_UNISQL_ERROR_SKIP);
if (StringUtils.isBlank(got)) {
// 没有则判断配置文件配置
got = PROPERTIES.getProperty(PROP_UNISQL_ERROR_SKIP);
}
// 开关默认是关闭,则只有1或true才能开启,其余值都会设置为关闭
if (defaultClose(got)) {
return DEFAULT_UNISQL_ERROR_SKIP;
}
return isOpen(got);
}
/**
* 是否开启 全局异常透传 模式
* 开关默认是关闭,则只有1才能开启,其余值都会设置为关闭
*
* @return errSkip 模式
*/
public boolean isSkip() {
// 先判断-D
String got = System.getProperty(PROP_UNISQL_SKIP);
if (StringUtils.isBlank(got)) {
// 没有则判断配置文件配置
got = PROPERTIES.getProperty(PROP_UNISQL_SKIP);
}
// 开关默认是关闭,则只有1才能开启,其余值都会设置为关闭
if (StringUtils.isBlank(got) || !OPEN.equalsIgnoreCase(got.trim())) {
return DEFAULT_UNISQL_SKIP;
}
return OPEN.equalsIgnoreCase(got.trim());
}
/**
* 是否开启 全局异常透传 模式
* 开关默认是关闭,则只有1才能开启,其余值都会设置为关闭
*
* @return errSkip 模式
*/
public boolean isMysqlBackslashEscapes() {
// 先判断-D
String got = System.getProperty(PROP_UNISQL_MYSQLBACKSLASHESCAPES);
if (StringUtils.isBlank(got)) {
// 没有则判断配置文件配置
got = PROPERTIES.getProperty(PROP_UNISQL_MYSQLBACKSLASHESCAPES);
}
// 开关默认是关闭,则只有1才能开启,其余值都会设置为关闭
if (StringUtils.isBlank(got) || !OPEN.equalsIgnoreCase(got.trim())) {
return Boolean.FALSE;
}
return OPEN.equalsIgnoreCase(got.trim());
}
/**
* 是否开启 缓存模式
* 开关默认是开启,则只有0或false才能关闭,其余值都会设置为开启
*
* @return true 开启,false 不开启 默认开启
*/
public boolean isOpenCache() {
// 先判断-D
String got = System.getProperty(PROP_UNISQL_CACHE);
if (StringUtils.isBlank(got)) {
// 没有则判断配置文件配置
got = PROPERTIES.getProperty(PROP_UNISQL_CACHE);
}
// 开关默认是开启,则只有0或false才能关闭,其余值都会设置为开启
if (defaultOpen(got)) {
return DEFAULT_UNISQL_CACHE;
}
return isOpen(got);
}
/**
* 是否开启对 MYSQL 目标的统一 SQL 检查。
*
* @return true 开启,false 不开启 默认开启
*/
public boolean isCheckMySQLSchema() {
final String got = System.getProperty(PROP_UNISQL_CHECK_MYSQL);
// 开关默认是开启,则只有0或false才能关闭,其余值都会设置为开启
if (defaultOpen(got)) {
return DEFAULT_UNISQL_CHECK_MYSQL;
}
return isOpen(got);
}
/**
* 统一 SQL 对比 http请求的url
*
* @return
*/
public String getCompareServerUrl() {
// 先判断-D
String got = System.getProperty(PROP_UNISQL_COMPARE_SERVER_URL);
if (StringUtils.isBlank(got)) {
// 没有则判断配置文件配置
got = PROPERTIES.getProperty(PROP_UNISQL_COMPARE_SERVER_URL);
}
if (StringUtils.isBlank(got)) {
return DEFAULT_UNISQL_COMPARE_SERVER_URL;
}
return got.trim();
}
/**
* 统一SQL自定义函数脚本执行所在的schema或database; 默认unisql
*
*/
public String getSchema() {
// 先判断-D
String got = System.getProperty(PROP_UNISQL_SCHEMA);
if (StringUtils.isBlank(got)) {
// 没有则判断配置文件配置
got = PROPERTIES.getProperty(PROP_UNISQL_SCHEMA);
}
if (StringUtils.isBlank(got)) {
return DEFAULT_UNISQL_SCHEMA;
}
return got.trim();
}
// endregion Debug 与 Check 相关函数
public int getRemoveDoublequoted() {
// 先判断-D
String got = System.getProperty(PROP_UNISQL_REMOVEDOUBLEQUOTED);
if (StringUtils.isBlank(got)) {
// 没有则判断配置文件配置
got = PROPERTIES.getProperty(PROP_UNISQL_REMOVEDOUBLEQUOTED);
}
if (StringUtils.isBlank(got)) {
return DEFAULT_UNISQL_REMOVEDOUBLEQUOTED;
}
return Integer.parseInt(got.trim());
}
public String getDecodeParametersFuncNames() {
// 先判断-D
String got = System.getProperty(PROP_UNISQL_DECODEPARAMETERSFUNCNAMES);
if (StringUtils.isBlank(got)) {
// 没有则判断配置文件配置
got = PROPERTIES.getProperty(PROP_UNISQL_DECODEPARAMETERSFUNCNAMES);
}
if (StringUtils.isBlank(got)) {
return DEFAULT_UNISQL_DECODEPARAMETERSFUNCNAMES;
}
return got.trim();
}
public String getMoveTablespaceReplaceSql() {
// 先判断-D
String got = System.getProperty(MOVE_TABLESPACE_REPLACE_SQL);
if (StringUtils.isBlank(got)) {
// 没有则判断配置文件配置
got = PROPERTIES.getProperty(MOVE_TABLESPACE_REPLACE_SQL);
}
if (StringUtils.isBlank(got)) {
return DEFAULT_MOVE_TABLESPACE_REPLACE_SQL;
}
return got.trim();
}
/**
* [需求编号]:202407175094
* 获取MySQL2Gaussdb-Oracle关于create database是否转换成create schema 的配置参数;默认0不转换 1转换
* @return
*/
public int getDefaultChangeDatabaseToSchema(){
// 先判断-D
String got = System.getProperty(PROP_UNISQL_CHANGE_DATABASE_TO_SCHEMA);
if (StringUtils.isBlank(got)){
// 没有则判断配置文件配置
got = PROPERTIES.getProperty(PROP_UNISQL_CHANGE_DATABASE_TO_SCHEMA);
}
if (StringUtils.isBlank(got)){
return DEFAULT_CHANGE_DATABASE_TO_SCHEMA;
}
return Integer.parseInt(got.trim());
}
/**
* 转换后的sql中自定义表或字段名称结尾是否使用随机数0不随机,1随机 默认1随机
* 开关默认是开启,则只有0才能关闭,其余值都会设置为开启及随机
*
* @return TableOrColumnNameRandom 模式
*/
public int isTableOrColumnNameRandom() {
// 先判断-D
String got = System.getProperty(PROP_UNISQL_TABLE_COLUMN_NAME_RANDOM);
if (StringUtils.isBlank(got)) {
// 没有则判断配置文件配置
got = PROPERTIES.getProperty(PROP_UNISQL_TABLE_COLUMN_NAME_RANDOM);
}
// 开关默认是开启,则只有0才能关闭,其余值都会设置为开启
if (StringUtils.isNotBlank(got) && CLOSE.equalsIgnoreCase(got.trim())) {
return 0;
}
return DEFAULT_UNISQL_TABLE_COLUMN_NAME_RANDOM;
}
/**
* unisql.change.backquotes.to.doublequotes
* oracle源端是否使用反引号转为双引号 0不转 1转 默认0不转;除1之外的其他值都被认为是0
*
* @return ChangeBackQuotesToDoubleQuotes 模式
*/
public int isChangeBackQuotesToDoubleQuotes() {
// 先判断-D
String got = System.getProperty(PROP_UNISQL_BACK_QUOTES_TO_DOUBLE_QUOTES);
if (StringUtils.isBlank(got)) {
// 没有则判断配置文件配置
got = PROPERTIES.getProperty(PROP_UNISQL_BACK_QUOTES_TO_DOUBLE_QUOTES);
}
// 开关默认是关闭,则只有1才能开启,其余值都会设置为关闭
if (StringUtils.isNotBlank(got) && OPEN.equalsIgnoreCase(got.trim())) {
return 1;
}
return DEFAULT_UNISQL_BACK_QUOTES_TO_DOUBLE_QUOTES;
}
/**
* unisql.keyword.doublequotes
* 配置关键字,对象名如果匹配到了此配置参数中配置的关键字则使用双引号包裹,每个关键字之间用逗号分隔
*
*/
public String getKeywordDoubleQuotes() {
// 先判断-D
String got = System.getProperty(PROP_UNISQL_KEYWORD_DOUBLE_QUOTES);
if (StringUtils.isBlank(got)) {
// 没有则判断配置文件配置
got = PROPERTIES.getProperty(PROP_UNISQL_KEYWORD_DOUBLE_QUOTES);
}
if (StringUtils.isBlank(got)) {
return DEFAULT_UNISQL_KEYWORD_DOUBLE_QUOTES;
}
return got.trim();
}
}