SqlStat添加DbType字段

git-svn-id: http://code.alibabatech.com/svn/druid/trunk@183 b9813039-fb51-4c41-a8b9-e21c2acb5095
This commit is contained in:
wenshao
2011-05-21 12:31:02 +00:00
parent ce68bc1077
commit 0ff09fa554
6 changed files with 85 additions and 5 deletions
@@ -130,6 +130,12 @@ public abstract class DruidAbstractDataSource implements DataSource, DataSourceP
protected List<String> connectionInitSqls;
protected String dbType;
public String getDbType() {
return dbType;
}
public void addConnectionProperty(String name, String value) {
if (inited) {
throw new UnsupportedOperationException();
@@ -653,7 +659,7 @@ public abstract class DruidAbstractDataSource implements DataSource, DataSourceP
} catch (InvocationTargetException e) {
throw new SQLException("passwordCallback Error", e);
}
try {
Method method = passwordCallback.getClass().getMethod("setProperties", Properties.class);
method.invoke(passwordCallback, properties);
@@ -110,6 +110,8 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat
if (this.driverClass == null || this.driverClass.isEmpty()) {
this.driverClass = JdbcUtils.getDriverClassName(this.jdbcUrl);
}
this.dbType = JdbcUtils.getDbType(jdbcUrl, driverClass.getClass().getName());
try {
driver = (Driver) Class.forName(this.driverClass).newInstance();
@@ -26,6 +26,8 @@ import com.alibaba.druid.filter.Filter;
public interface DataSourceProxy {
String getName();
String getDbType();
Driver getRawDriver();
@@ -36,6 +36,7 @@ import javax.security.auth.callback.PasswordCallback;
import com.alibaba.druid.filter.Filter;
import com.alibaba.druid.filter.FilterChain;
import com.alibaba.druid.filter.FilterChainImpl;
import com.alibaba.druid.util.JdbcUtils;
/**
* @author wenshao<szujobs@hotmail.com>
@@ -52,10 +53,17 @@ public class DataSourceProxyImpl implements DataSourceProxy, DataSourceProxyImpl
private Properties properties;
private String dbType;
public DataSourceProxyImpl(Driver rawDriver, DataSourceProxyConfig config){
super();
this.rawDriver = rawDriver;
this.config = config;
this.dbType = JdbcUtils.getDbType(config.getRawUrl(), config.getRawDriverClassName());
}
public String getDbType() {
return dbType;
}
public Driver getRawDriver() {
@@ -61,6 +61,10 @@ public final class JdbcSqlStat implements JdbcSqlStatMBean {
private final AtomicLong updateCount = new AtomicLong();
private final AtomicLong fetchRowCount = new AtomicLong();
public JdbcSqlStat(String sql){
this.sql = sql;
}
public String getDbType() {
return dbType;
}
@@ -117,10 +121,6 @@ public final class JdbcSqlStat implements JdbcSqlStatMBean {
context.setFile(val);
}
public JdbcSqlStat(String sql){
this.sql = sql;
}
public String getName() {
return name;
}
@@ -422,4 +422,66 @@ public final class JdbcUtils {
throw new SQLException("unkow jdbc driver : " + rawUrl);
}
}
public static String getDbType(String rawUrl, String driverClassName) {
if (rawUrl == null) {
return null;
}
if (rawUrl.startsWith("jdbc:derby:")) {
return "derby";
} else if (rawUrl.startsWith("jdbc:mysql:")) {
return "mysql";
} else if (rawUrl.startsWith("jdbc:oracle:")) {
return "oracle";
} else if (rawUrl.startsWith("jdbc:microsoft:")) {
return "sqlserver";
} else if (rawUrl.startsWith("jdbc:sybase:Tds:")) {
return "sybase";
} else if (rawUrl.startsWith("jdbc:jtds:")) {
return "jtds";
} else if (rawUrl.startsWith("jdbc:fake:") || rawUrl.startsWith("jdbc:mock:")) {
return "mock";
} else if (rawUrl.startsWith("jdbc:postgresql:")) {
return "postgresql";
} else if (rawUrl.startsWith("jdbc:hsqldb:")) {
return "hsql";
} else if (rawUrl.startsWith("jdbc:db2:")) {
return "db2";
} else if (rawUrl.startsWith("jdbc:sqlite:")) {
return "sqlite";
} else if (rawUrl.startsWith("jdbc:ingres:")) {
return "ingres";
} else if (rawUrl.startsWith("jdbc:h2:")) {
return "h2";
} else if (rawUrl.startsWith("jdbc:mckoi:")) {
return "mckoi";
} else if (rawUrl.startsWith("jdbc:cloudscape:")) {
return "cloudscape";
} else if (rawUrl.startsWith("jdbc:informix-sqli:")) {
return "informix";
} else if (rawUrl.startsWith("jdbc:timesten:")) {
return "timesten";
} else if (rawUrl.startsWith("jdbc:as400:")) {
return "as400";
} else if (rawUrl.startsWith("jdbc:sapdb:")) {
return "sapdb";
} else if (rawUrl.startsWith("jdbc:JSQLConnect:")) {
return "JSQLConnect";
} else if (rawUrl.startsWith("jdbc:JTurbo:")) {
return "JTurbo";
} else if (rawUrl.startsWith("jdbc:firebirdsql:")) {
return "firebirdsql";
} else if (rawUrl.startsWith("jdbc:interbase:")) {
return "interbase";
} else if (rawUrl.startsWith("jdbc:pointbase:")) {
return "pointbase";
} else if (rawUrl.startsWith("jdbc:edbc:")) {
return "edbc";
} else if (rawUrl.startsWith("jdbc:mimer:multi1:")) {
return "mimer";
} else {
return null;
}
}
}