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

com.hundsun.lightdb.unisql.model.UnisqlProperties Maven / Gradle / Ivy

There is a newer version: 24.1.7.0-beta-2
Show newest version
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(); } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy