package org.dayatang.datasource4saas.dscreator;
import org.apache.commons.lang3.StringUtils;
public enum DbType {
MYSQL {
@Override
public String getDriverClassName() {
return "com.mysql.jdbc.Driver";
}
@Override
public String getUrl(DbInfo dbInfo) {
String result = String.format("jdbc:mysql://%s:%s/%s", dbInfo.getHost(), dbInfo.getPort(), dbInfo.getDbname());
return addExtraUrlStringIfExists(result, dbInfo.getExtraUrlString());
}
},
POSTGRESQL {
@Override
public String getDriverClassName() {
return "org.postgresql.Driver";
}
@Override
public String getUrl(DbInfo dbInfo) {
String result = String.format("jdbc:postgresql://%s:%s/%s", dbInfo.getHost(), dbInfo.getPort(), dbInfo.getDbname());
return addExtraUrlStringIfExists(result, dbInfo.getExtraUrlString());
}
},
ORACLE {
@Override
public String getDriverClassName() {
return "oracle.jdbc.OracleDriver";
}
@Override
public String getUrl(DbInfo dbInfo) {
String result = String.format("jdbc:oracle:thin:@%s:%s:%s", dbInfo.getHost(), dbInfo.getPort(), dbInfo.getInstance());
return addExtraUrlStringIfExists(result, dbInfo.getExtraUrlString());
}
},
DB2 {
@Override
public String getDriverClassName() {
return "com.ibm.db2.jcc.DB2Driver";
}
@Override
public String getUrl(DbInfo dbInfo) {
String result = String.format("jdbc:db2://%s:%s/%s", dbInfo.getHost(), dbInfo.getPort(), dbInfo.getDbname());
return addExtraUrlStringIfExists(result, dbInfo.getExtraUrlString());
}
},
SQLSERVER {
@Override
public String getDriverClassName() {
return "net.sourceforge.jtds.jdbc.Driver";
}
@Override
public String getUrl(DbInfo dbInfo) {
String result = String.format("jdbc:jtds:sqlserver://%s:%s/%s", dbInfo.getHost(), dbInfo.getPort(), dbInfo.getDbname());
return addExtraUrlStringIfExists(result, dbInfo.getExtraUrlString());
}
};
public static DbType of(String value) {
for (DbType each : DbType.values()) {
if (each.name().equalsIgnoreCase(value)) {
return each;
}
}
throw new IllegalStateException("DB type '" + value + "' not existsDataSourceOfTenant!");
}
public abstract String getDriverClassName();
public abstract String getUrl(DbInfo dbInfo);
protected String addExtraUrlStringIfExists(String url, String extraUrlString) {
if (StringUtils.isBlank(extraUrlString)) {
return url;
}
return extraUrlString.startsWith("?") ? url + extraUrlString : url + "?" + extraUrlString;
}
}