package com.taobao.tddl.atom.common; import java.text.MessageFormat; import java.util.Map; import com.taobao.tddl.common.utils.TStringUtil; /** * 数据库连接URL生成工具类 * * @author qihao */ public class TAtomConURLTools { private static MessageFormat MYSQL_URL_FORMAT = new MessageFormat("jdbc:mysql://{0}:{1}/{2}"); private static MessageFormat ORACLE_URL_THIN_FORMAT = new MessageFormat("jdbc:oracle:thin:@{0}:{1}:{2}"); private static MessageFormat ORACLE_URL_OCI_FORMAT = new MessageFormat("jdbc:oracle:oci:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST={0})(PORT={1})))(CONNECT_DATA=(SERVER=DEDICAT)(SERVICE_NAME={2})))"); public static String getOracleConURL(String ip, String port, String sid, String conType) { String conUrl = null; if (checkPrams(ip, port, sid)) { if (TStringUtil.isBlank(conType) || TAtomConstants.DEFAULT_ORACLE_CON_TYPE.equals(conType.toLowerCase().trim())) { conUrl = ORACLE_URL_OCI_FORMAT.format(new String[] { ip, port, sid }); } else { conUrl = ORACLE_URL_THIN_FORMAT.format(new String[] { ip, port, sid }); } } return conUrl; } public static String getMySqlConURL(String ip, String port, String dbName, Map<String, String> prams) { String conUrl = null; if (checkPrams(ip, port, dbName)) { conUrl = MYSQL_URL_FORMAT.format(new String[] { ip, port, dbName }); if (null == prams || prams.isEmpty()) { prams = TAtomConstants.DEFAULT_MYSQL_CONNECTION_PROPERTIES; } StringBuilder sb = new StringBuilder(); for (Map.Entry<String, String> entry : prams.entrySet()) { String key = entry.getKey(); String value = entry.getValue(); if (TStringUtil.isNotBlank(key) && TStringUtil.isNotBlank(value)) { sb.append(key); sb.append("="); sb.append(value); sb.append("&"); } } String pramStr = TStringUtil.substringBeforeLast(sb.toString(), "&"); conUrl = conUrl + "?" + pramStr; } return conUrl; } private static boolean checkPrams(String ip, String port, String dbName) { boolean flag = false; if (TStringUtil.isNotBlank(ip) && TStringUtil.isNotBlank(port) && TStringUtil.isNotBlank(dbName)) { flag = true; } return flag; } }