* Implement isMySQL() methods to query if the db behind the mapping/source is MySQL.

This commit is contained in:
hns 2006-06-16 17:31:29 +00:00
parent 46a14e1941
commit 118c9d9f2b
2 changed files with 29 additions and 4 deletions

View file

@ -1185,6 +1185,21 @@ public final class DbMapping {
return false; return false;
} }
/**
* Is the database behind this a MySQL db?
*
* @return true if the dbsource is using a MySQL JDBC driver
*/
public boolean isMySQL() {
if (dbSource != null) {
return dbSource.isMySQL();
}
if (parentMapping != null) {
return parentMapping.isMySQL();
}
return false;
}
/** /**
* Return a string representation for this DbMapping * Return a string representation for this DbMapping
* *

View file

@ -35,7 +35,7 @@ public class DbSource {
private ResourceProperties props; private ResourceProperties props;
protected String url; protected String url;
private String driver; private String driver;
private boolean isOracle; private boolean isOracle, isMySQL;
private long lastRead = 0L; private long lastRead = 0L;
private Hashtable dbmappings = new Hashtable(); private Hashtable dbmappings = new Hashtable();
@ -71,12 +71,11 @@ public class DbSource {
} }
boolean fileUpdated = props.lastModified() > lastRead; boolean fileUpdated = props.lastModified() > lastRead;
if (!fileUpdated && (defaultProps != null)) { if (!fileUpdated && (defaultProps != null)) {
fileUpdated = defaultProps.lastModified() > lastRead; fileUpdated = defaultProps.lastModified() > lastRead;
} }
if ((con == null) || con.isClosed() || fileUpdated) { if (con == null || con.isClosed() || fileUpdated) {
init(); init();
Class.forName(driver); Class.forName(driver);
con = DriverManager.getConnection(url, conProps); con = DriverManager.getConnection(url, conProps);
@ -112,8 +111,10 @@ public class DbSource {
if (driver == null) { if (driver == null) {
throw new NullPointerException(name+".driver class not defined in db.properties"); throw new NullPointerException(name+".driver class not defined in db.properties");
} }
// test if this is an Oracle driver // test if this is an Oracle or MySQL driver
isOracle = driver.startsWith("oracle.jdbc.driver"); isOracle = driver.startsWith("oracle.jdbc.driver");
isMySQL = driver.startsWith("com.mysql.jdbc") ||
driver.startsWith("org.gjt.mm.mysql");
// test if driver class is available // test if driver class is available
Class.forName(driver); Class.forName(driver);
@ -185,6 +186,15 @@ public class DbSource {
return isOracle; return isOracle;
} }
/**
* Check if this DbSource represents a MySQL database
*
* @return true if we're using a MySQL JDBC driver
*/
public boolean isMySQL() {
return isMySQL;
}
/** /**
* Register a dbmapping by its table name. * Register a dbmapping by its table name.
* *