[hibernate-commits] Hibernate SVN: r10568 - trunk/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/dialect

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Wed Oct 11 08:51:40 EDT 2006


Author: max.andersen at 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);
 		}	
 	}
 	




More information about the hibernate-commits mailing list