support initSqls

This commit is contained in:
wenshao
2013-07-04 23:38:16 +08:00
parent dcda68116d
commit 4b8e847cb1
6 changed files with 130 additions and 15 deletions
@@ -55,6 +55,8 @@ public class MockConnection extends ConnectionBase implements Connection {
private SQLException error;
private String lastSql;
public MockConnection(){
this(null, null, null);
}
@@ -69,6 +71,14 @@ public class MockConnection extends ConnectionBase implements Connection {
}
}
public String getLastSql() {
return lastSql;
}
public void setLastSql(String lastSql) {
this.lastSql = lastSql;
}
public SQLException getError() {
return error;
}
@@ -268,7 +278,7 @@ public class MockConnection extends ConnectionBase implements Connection {
if (error != null) {
throw error;
}
if (closed) {
throw new MockConnectionClosedException();
}
@@ -469,7 +479,7 @@ public class MockConnection extends ConnectionBase implements Connection {
public int getNetworkTimeout() throws SQLException {
throw new SQLFeatureNotSupportedException();
}
@Override
public void setReadOnly(boolean readOnly) throws SQLException {
checkState();
@@ -86,6 +86,7 @@ public class MockStatement extends StatementBase implements MockStatementBase, S
}
if (mockConnection != null) {
mockConnection.setLastSql(sql);
mockConnection.handleSleep();
}
@@ -31,7 +31,6 @@ import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.IdentityHashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Properties;
@@ -598,20 +597,24 @@ public abstract class DruidAbstractDataSource extends WrapperAdapter implements
return result;
}
public void setConnectionInitSqls(Collection<Object> connectionInitSqls) {
public void setConnectionInitSqls(Collection<? extends Object> connectionInitSqls) {
if ((connectionInitSqls != null) && (connectionInitSqls.size() > 0)) {
ArrayList<String> newVal = null;
for (Iterator<Object> iterator = connectionInitSqls.iterator(); iterator.hasNext();) {
Object o = iterator.next();
if (o != null) {
String s = o.toString();
if (s.trim().length() > 0) {
if (newVal == null) {
newVal = new ArrayList<String>();
}
newVal.add(s);
}
for (Object o : connectionInitSqls) {
if (o == null) {
continue;
}
String s = o.toString();
s = s.trim();
if (s.length() == 0) {
continue;
}
if (newVal == null) {
newVal = new ArrayList<String>();
}
newVal.add(s);
}
this.connectionInitSqls = newVal;
} else {
@@ -1456,6 +1459,25 @@ public abstract class DruidAbstractDataSource extends WrapperAdapter implements
if (getDefaultCatalog() != null && getDefaultCatalog().length() != 0) {
conn.setCatalog(getDefaultCatalog());
}
Collection<String> initSqls = getConnectionInitSqls();
if (initSqls.size() == 0) {
return;
}
Statement stmt = null;
try {
stmt = conn.createStatement();
for (String sql : initSqls) {
if (sql == null) {
continue;
}
stmt.execute(sql);
}
} finally {
JdbcUtils.close(stmt);
}
}
public abstract int getActivePeak();