Author: max.andersen(a)jboss.com
Date: 2006-10-11 08:51:37 -0400 (Wed, 11 Oct 2006)
New Revision: 10568
Modified:
trunk/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/dialect/AbstractMetaDataDialect.java
trunk/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/dialect/JDBCMetaDataDialect.java
Log:
HBX-776 JDBCMetaDataDialect should handle casing according to the underlying db
Modified:
trunk/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/dialect/AbstractMetaDataDialect.java
===================================================================
---
trunk/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/dialect/AbstractMetaDataDialect.java 2006-10-11
05:18:23 UTC (rev 10567)
+++
trunk/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/dialect/AbstractMetaDataDialect.java 2006-10-11
12:51:37 UTC (rev 10568)
@@ -11,6 +11,7 @@
import org.hibernate.cfg.JDBCBinderException;
import org.hibernate.connection.ConnectionProvider;
import org.hibernate.exception.SQLExceptionConverter;
+import org.hibernate.util.StringHelper;
/**
* abstract base class for the metadatadialects to hold the
@@ -31,17 +32,21 @@
public void configure(ConnectionProvider provider, SQLExceptionConverter sec) {
this.provider = provider;
- this.sec = sec;
+ this.sec = sec;
+
}
+
public void close() {
metaData = null;
if(connection != null) {
try {
- provider.closeConnection(connection);
+ provider.closeConnection(connection);
}
catch (SQLException e) {
getSQLExceptionConverter().convert(e, "Problem while closing connection",
null);
+ } finally {
+ connection = null;
}
}
provider = null;
@@ -134,4 +139,16 @@
if(name.indexOf(' ')>0) return true;
return false;
}
+
+ protected String caseForSearch(String value) throws SQLException {
+ // TODO: handle quoted requests (just strip it ?)
+ if ( getMetaData().storesUpperCaseIdentifiers() ) {
+ return StringHelper.toUpperCase( value );
+ } else if( getMetaData().storesUpperCaseIdentifiers() ) {
+ return StringHelper.toLowerCase( value );
+ } else {
+ return value;
+ }
+ }
+
}
Modified:
trunk/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/dialect/JDBCMetaDataDialect.java
===================================================================
---
trunk/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/dialect/JDBCMetaDataDialect.java 2006-10-11
05:18:23 UTC (rev 10567)
+++
trunk/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/dialect/JDBCMetaDataDialect.java 2006-10-11
12:51:37 UTC (rev 10568)
@@ -7,7 +7,9 @@
import java.util.Iterator;
import java.util.Map;
+import org.hibernate.cfg.JDBCBinderException;
import org.hibernate.mapping.Table;
+import org.hibernate.util.StringHelper;
/**
* MetaData dialect that uses standard JDBC for reading metadata.
@@ -16,11 +18,15 @@
*
*/
public class JDBCMetaDataDialect extends AbstractMetaDataDialect {
-
- public Iterator getTables(final String catalog, final String schema, String table) {
- try {
+ public Iterator getTables(String xcatalog, String xschema, String xtable) {
+ try {
+ final String catalog = caseForSearch( xcatalog );
+ final String schema = caseForSearch( xschema );
+ final String table = caseForSearch( xtable );
+
log.debug("getTables(" + catalog + "." + schema + "." +
table + ")");
+
ResultSet tableRs = getMetaData().getTables(catalog , schema , table, new String[] {
"TABLE", "VIEW" });
return new ResultSetIterator(tableRs, getSQLExceptionConverter()) {
@@ -44,7 +50,7 @@
};
} catch (SQLException e) {
// schemaRs and catalogRs are only used for error reporting if we get an exception
- String databaseStructure = getDatabaseStructure(catalog,schema);
+ String databaseStructure = getDatabaseStructure(xcatalog,xschema);
throw getSQLExceptionConverter().convert(e, "Could not get list of tables from
database. Probably a JDBC driver problem. " + databaseStructure, null);
}
}
@@ -73,8 +79,12 @@
- public Iterator getIndexInfo(final String catalog, final String schema, final String
table) {
- try {
+ public Iterator getIndexInfo(final String xcatalog, final String xschema, final String
xtable) {
+ try {
+ final String catalog = caseForSearch( xcatalog );
+ final String schema = caseForSearch( xschema );
+ final String table = caseForSearch( xtable );
+
log.debug("getIndexInfo(" + catalog + "." + schema + "."
+ table + ")");
ResultSet tableRs = getMetaData().getIndexInfo(catalog , schema , table, false,
true);
@@ -95,7 +105,7 @@
}
};
} catch (SQLException e) {
- throw getSQLExceptionConverter().convert(e, "Exception while getting index info
for " + Table.qualify(catalog, schema, table), null);
+ throw getSQLExceptionConverter().convert(e, "Exception while getting index info
for " + Table.qualify(xcatalog, xschema, xtable), null);
}
}
@@ -105,8 +115,13 @@
element.put("TABLE_CAT", tableRs.getString("TABLE_CAT"));
}
- public Iterator getColumns(final String catalog, final String schema, final String
table, String column) {
+ public Iterator getColumns(final String xcatalog, final String xschema, final String
xtable, String xcolumn) {
try {
+ final String catalog = caseForSearch( xcatalog );
+ final String schema = caseForSearch( xschema );
+ final String table = caseForSearch( xtable );
+ final String column = caseForSearch( xcolumn );
+
log.debug("getColumns(" + catalog + "." + schema + "." +
table + "." + column + ")");
ResultSet tableRs = getMetaData().getColumns(catalog, schema, table, column);
@@ -130,12 +145,16 @@
}
};
} catch (SQLException e) {
- throw getSQLExceptionConverter().convert(e, "Error while reading column meta data
for " + Table.qualify(catalog, schema, table), null);
+ throw getSQLExceptionConverter().convert(e, "Error while reading column meta data
for " + Table.qualify(xcatalog, xschema, xtable), null);
}
}
- public Iterator getPrimaryKeys(final String catalog, final String schema, final String
table) {
- try {
+ public Iterator getPrimaryKeys(final String xcatalog, final String xschema, final String
xtable) {
+ try {
+ final String catalog = caseForSearch( xcatalog );
+ final String schema = caseForSearch( xschema );
+ final String table = caseForSearch( xtable );
+
log.debug("getPrimaryKeys(" + catalog + "." + schema +
"." + table + ")");
ResultSet tableRs = getMetaData().getPrimaryKeys(catalog, schema, table);
@@ -155,12 +174,16 @@
}
};
} catch (SQLException e) {
- throw getSQLExceptionConverter().convert(e, "Error while reading primary key meta
data for " + Table.qualify(catalog, schema, table), null);
+ throw getSQLExceptionConverter().convert(e, "Error while reading primary key meta
data for " + Table.qualify(xcatalog, xschema, xtable), null);
}
}
- public Iterator getExportedKeys(final String catalog, final String schema, final String
table) {
- try {
+ public Iterator getExportedKeys(final String xcatalog, final String xschema, final
String xtable) {
+ try {
+ final String catalog = caseForSearch( xcatalog );
+ final String schema = caseForSearch( xschema );
+ final String table = caseForSearch( xtable );
+
log.debug("getExportedKeys(" + catalog + "." + schema +
"." + table + ")");
ResultSet tableRs = getMetaData().getExportedKeys(catalog, schema, table);
@@ -186,7 +209,7 @@
}
};
} catch (SQLException e) {
- throw getSQLExceptionConverter().convert(e, "Error while reading exported keys
meta data for " + Table.qualify(catalog, schema, table), null);
+ throw getSQLExceptionConverter().convert(e, "Error while reading exported keys
meta data for " + Table.qualify(xcatalog, xschema, xtable), null);
}
}