package com.taobao.tddl.atom.common; import java.text.MessageFormat; import java.util.HashMap; import java.util.Map; import org.apache.commons.lang.StringUtils; /** * TAtom数据源的常量设置类 * * @author qihao */ public class TAtomConstants { public final static String DEFAULT_DIAMOND_GROUP = null; public final static String DEFAULT_MYSQL_CHAR_SET = "gbk"; // public final static String ORACLE_DBTYPE_STR = "ORACLE"; // public final static String MYSQL_DBTYPE_STR = "MYSQL"; public final static String DEFAULT_ORACLE_CON_TYPE = "oci"; public final static String DB_STATUS_R = "R"; public final static String DB_STATUS_W = "W"; public final static String DB_STATUS_RW = "RW"; public final static String DB_STATUS_NA = "NA"; public static Map<String, String> DEFAULT_ORACLE_CONNECTION_PROPERTIES = new HashMap<String, String>(2); static { TAtomConstants.DEFAULT_ORACLE_CONNECTION_PROPERTIES.put("SetBigStringTryClob", "true"); TAtomConstants.DEFAULT_ORACLE_CONNECTION_PROPERTIES.put("defaultRowPrefetch", "50"); } public static Map<String, String> DEFAULT_MYSQL_CONNECTION_PROPERTIES = new HashMap<String, String>(1); static { TAtomConstants.DEFAULT_MYSQL_CONNECTION_PROPERTIES.put("characterEncoding", "gbk"); } public final static String DEFAULT_ORACLE_DRIVER_CLASS = "oracle.jdbc.driver.OracleDriver"; public final static String DEFAULT_MYSQL_DRIVER_CLASS = "com.mysql.jdbc.Driver"; public final static String DEFAULT_DRUID_ORACLE_SORTER_CLASS = "com.alibaba.druid.pool.vendor.OracleExceptionSorter"; public final static String DEFAULT_DRUID_MYSQL_SORTER_CLASS = "com.alibaba.druid.pool.vendor.MySqlExceptionSorter"; public final static String DRUID_MYSQL_INTEGRATION_SORTER_CLASS = "com.alibaba.druid.pool.vendor.NullExceptionSorter"; public final static String DEFAULT_DRUID_MYSQL_VALID_CONNECTION_CHECKERCLASS = "com.alibaba.druid.pool.vendor.MySqlValidConnectionChecker"; public final static String DEFAULT_DRUID_ORACLE_VALIDATION_QUERY = "select 'x' from dual"; public final static String DEFAULT_DRUID_MYSQL_VALIDATION_QUERY = "select 'x'"; /** * 全局配置dataId模板 */ private static MessageFormat GLOBAL_FORMAT = new MessageFormat("com.taobao.tddl.atom.global.{0}"); /** * 应用配置dataId模板 */ private static MessageFormat APP_FORMAT = new MessageFormat("com.taobao.tddl.atom.app.{0}.{1}"); private static MessageFormat PASSWD_FORMAT = new MessageFormat("com.taobao.tddl.atom.passwd.{0}.{1}.{2}"); /** * dbName模板 */ private static final MessageFormat DB_NAME_FORMAT = new MessageFormat("atom.dbkey.{0}^{1}^{2}"); private static final String NULL_UNIT_NAME = "DEFAULT_UNIT"; /** * 根据dbKey获取全局配置dataId * * @param dbKey 数据库名KEY * @return */ public static String getGlobalDataId(String dbKey) { return GLOBAL_FORMAT.format(new Object[] { dbKey }); } /** * 根据应用名和dbKey获取指定的应用配置dataId * * @param appName * @param dbKey * @return */ public static String getAppDataId(String appName, String dbKey) { return APP_FORMAT.format(new Object[] { appName, dbKey }); } /** * 根据dbKey和userName获得对应的passwd的dataId * * @param dbKey * @param userName * @return */ public static String getPasswdDataId(String dbName, String dbType, String userName) { return PASSWD_FORMAT.format(new Object[] { dbName, dbType, userName }); } /** * @param unitName * @param appName * @param dbkey * @return */ public static String getDbNameStr(String unitName, String appName, String dbkey) { if (StringUtils.isEmpty(unitName)) { return DB_NAME_FORMAT.format(new Object[] { NULL_UNIT_NAME, appName, dbkey }); } else { return DB_NAME_FORMAT.format(new Object[] { appName, dbkey }); } } }