From 7a79cef0b125175ffd4bd34ee308b73ea34fcb04 Mon Sep 17 00:00:00 2001 From: Eric Dalquist Date: Fri, 5 Oct 2012 21:27:25 -0500 Subject: [PATCH] UP-3583 Fix DbTest to use groovy shell based execution --- build.xml | 17 +- .../portal/shell/PortalShellBuildHelper.java | 11 + .../java/org/jasig/portal/tools/DbTest.java | 212 +------------ .../org/jasig/portal/tools/DbTestImpl.java | 278 ++++++++++++++++++ 4 files changed, 302 insertions(+), 216 deletions(-) create mode 100644 uportal-war/src/main/java/org/jasig/portal/tools/DbTestImpl.java diff --git a/build.xml b/build.xml index e4ae53cfd25..e8647289a62 100644 --- a/build.xml +++ b/build.xml @@ -416,14 +416,17 @@ - - - - + Creating DBTest Script + + logger.info(""); + logger.info(""); + + portalShellBuildHelper.dbTest(); + - - - + + + diff --git a/uportal-war/src/main/java/org/jasig/portal/shell/PortalShellBuildHelper.java b/uportal-war/src/main/java/org/jasig/portal/shell/PortalShellBuildHelper.java index 4730de2e319..8b511944003 100644 --- a/uportal-war/src/main/java/org/jasig/portal/shell/PortalShellBuildHelper.java +++ b/uportal-war/src/main/java/org/jasig/portal/shell/PortalShellBuildHelper.java @@ -28,6 +28,7 @@ import org.jasig.portal.io.xml.IPortalData; import org.jasig.portal.io.xml.IPortalDataHandlerService; import org.jasig.portal.io.xml.PortalDataHandlerServiceUtils; +import org.jasig.portal.tools.DbTest; import org.jasig.portal.tools.dbloader.DbLoaderConfigBuilder; import org.jasig.portal.tools.dbloader.IDbLoader; import org.jasig.portal.tools.dbloader.ISchemaExport; @@ -50,6 +51,7 @@ public class PortalShellBuildHelper { private Map schemaExportBeans; private IPortalDataHandlerService portalDataHandlerService; private IUserIdentityStore userIdentityStore; + private DbTest dbTest; @Autowired public void setDbLoader(IDbLoader dbLoader) { @@ -71,6 +73,15 @@ public void setUserIdentityStore(IUserIdentityStore userIdentityStore) { this.userIdentityStore = userIdentityStore; } + @Autowired + public void setDbTest(DbTest dbTest) { + this.dbTest = dbTest; + } + + public void dbTest() { + this.dbTest.printDbInfo(); + } + public void db(String target, String tablesFile, String dataFile, String scriptFile, boolean dropTables, boolean createTables, boolean populateTables) { try { diff --git a/uportal-war/src/main/java/org/jasig/portal/tools/DbTest.java b/uportal-war/src/main/java/org/jasig/portal/tools/DbTest.java index 64a9b3f2d9a..e1c347750fa 100644 --- a/uportal-war/src/main/java/org/jasig/portal/tools/DbTest.java +++ b/uportal-war/src/main/java/org/jasig/portal/tools/DbTest.java @@ -1,213 +1,7 @@ -/** - * Licensed to Jasig under one or more contributor license - * agreements. See the NOTICE file distributed with this work - * for additional information regarding copyright ownership. - * Jasig licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a - * copy of the License at: - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on - * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - package org.jasig.portal.tools; -import java.sql.Connection; -import java.sql.DatabaseMetaData; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.Statement; - -import org.jasig.portal.RDBMServices; - -/** - * Title: DbTest - * Description: Displays database metadata information - * Company: - * @author John Fereira - * @version $Revision$ - */ - -public class DbTest { - - public static void main(String[] args) throws Exception { - Connection con = null; - try { - con = RDBMServices.getConnection(); - printInfo(con); - } - finally { - try { - if (con != null) { - RDBMServices.releaseConnection(con); - } - } - catch (Exception e) { - } - } - }//end main - - private static void printInfo (Connection conn ) throws Exception - { - DatabaseMetaData dbMetaData = conn.getMetaData(); - - String dbName = dbMetaData.getDatabaseProductName(); - String dbVersion = dbMetaData.getDatabaseProductVersion(); - String driverName = dbMetaData.getDriverName(); - String driverVersion = dbMetaData.getDriverVersion(); - final int databaseMajorVersion = dbMetaData.getDatabaseMajorVersion(); - final int databaseMinorVersion = dbMetaData.getDatabaseMinorVersion(); - final int driverMajorVersion = dbMetaData.getDriverMajorVersion(); - final int driverMinorVersion = dbMetaData.getDriverMinorVersion(); - - String driverClass = RDBMServices.getJdbcDriver(); - String url = RDBMServices.getJdbcUrl(); - String user = RDBMServices.getJdbcUser(); - - boolean supportsANSI92EntryLevelSQL = dbMetaData.supportsANSI92EntryLevelSQL(); - boolean supportsANSI92FullSQL = dbMetaData.supportsANSI92FullSQL(); - boolean supportsBatchUpdates = dbMetaData.supportsBatchUpdates(); - boolean supportsColumnAliasing = dbMetaData.supportsColumnAliasing(); - boolean supportsCoreSQLGrammar = dbMetaData.supportsCoreSQLGrammar(); - boolean supportsExtendedSQLGrammar = dbMetaData.supportsExtendedSQLGrammar(); - boolean supportsExpressionsInOrderBy = dbMetaData.supportsExpressionsInOrderBy(); - boolean supportsOuterJoins = dbMetaData.supportsOuterJoins(); - boolean supportsFullOuterJoins = dbMetaData.supportsFullOuterJoins(); - boolean supportsLimitedOuterJoins = dbMetaData.supportsLimitedOuterJoins(); - - boolean supportsMultipleTransactions = dbMetaData.supportsMultipleTransactions(); - boolean supportsOpenCursorsAcrossCommit = dbMetaData.supportsOpenCursorsAcrossCommit(); - boolean supportsOpenCursorsAcrossRollback = dbMetaData.supportsOpenCursorsAcrossRollback(); - boolean supportsOpenStatementsAcrossCommit = dbMetaData.supportsOpenStatementsAcrossCommit(); - boolean supportsOpenStatementsAcrossRollback = dbMetaData.supportsOpenStatementsAcrossRollback(); - - boolean supportsOrderByUnrelated = dbMetaData.supportsOrderByUnrelated(); - boolean supportsPositionedDelete = dbMetaData.supportsPositionedDelete(); - - boolean supportsSelectForUpdate = dbMetaData.supportsSelectForUpdate(); - boolean supportsStoredProcedures = dbMetaData.supportsStoredProcedures(); - boolean supportsTransactions = dbMetaData.supportsTransactions(); - boolean supportsUnion = dbMetaData.supportsUnion(); - boolean supportsUnionAll = dbMetaData.supportsUnionAll(); - - int getMaxColumnNameLength = dbMetaData.getMaxColumnNameLength(); - int getMaxColumnsInIndex = dbMetaData.getMaxColumnsInIndex(); - int getMaxColumnsInOrderBy = dbMetaData.getMaxColumnsInOrderBy(); - int getMaxColumnsInSelect = dbMetaData.getMaxColumnsInSelect(); - int getMaxColumnsInTable = dbMetaData.getMaxColumnsInTable(); - int getMaxConnections = dbMetaData.getMaxConnections(); - int getMaxCursorNameLength = dbMetaData.getMaxCursorNameLength(); - int getMaxIndexLength = dbMetaData.getMaxIndexLength(); - int getMaxRowSize = dbMetaData.getMaxRowSize(); - int getMaxStatements = dbMetaData.getMaxStatements(); - int getMaxTableNameLength = dbMetaData.getMaxTableNameLength(); - int getMaxTablesInSelect = dbMetaData.getMaxTablesInSelect(); - int getMaxUserNameLength = dbMetaData.getMaxUserNameLength(); - - String getSearchStringEscape = dbMetaData.getSearchStringEscape(); - String getStringFunctions = dbMetaData.getStringFunctions(); - String getSystemFunctions = dbMetaData.getSystemFunctions(); - String getTimeDateFunctions = dbMetaData.getTimeDateFunctions(); - - ResultSet getTableTypes = null; - ResultSet getTypeInfo = null; - - System.out.println(); - System.out.println("Database name: '" + dbName + "'"); - System.out.println("Database version: '" + dbVersion + "' (" + databaseMajorVersion + "." + databaseMinorVersion + ")"); - System.out.println("Driver name: '" + driverName + "'"); - System.out.println("Driver version: '" + driverVersion + "' (" + driverMajorVersion + "." + driverMinorVersion + ")"); - System.out.println("Driver class: '" + driverClass + "'"); - System.out.println("Connection URL: '" + url + "'"); - System.out.println("User: '" + user + "'"); - System.out.println(); - - System.out.println("supportsANSI92EntryLevelSQL: "+supportsANSI92EntryLevelSQL); - System.out.println("supportsANSI92FullSQL: "+supportsANSI92FullSQL); - System.out.println("supportsCoreSQLGrammar: "+supportsCoreSQLGrammar); - System.out.println("supportsExtendedSQLGrammar: "+supportsExtendedSQLGrammar); - System.out.println(); - - System.out.println("supportsTransactions: "+supportsTransactions); - System.out.println("supportsMultipleTransactions: "+supportsMultipleTransactions); - - System.out.println("supportsOpenCursorsAcrossCommit: "+supportsOpenCursorsAcrossCommit); - System.out.println("supportsOpenCursorsAcrossRollback: "+supportsOpenCursorsAcrossRollback); - System.out.println("supportsOpenStatementsAcrossCommit: "+supportsOpenStatementsAcrossCommit); - System.out.println("supportsOpenStatementsAcrossRollback: "+supportsOpenStatementsAcrossRollback); - System.out.println(); - - System.out.println("supportsStoredProcedures: "+supportsStoredProcedures); - System.out.println("supportsOuterJoins: "+supportsOuterJoins); - System.out.println("supportsFullOuterJoins: "+supportsFullOuterJoins); - System.out.println("supportsLimitedOuterJoins: "+supportsLimitedOuterJoins); - System.out.println("supportsBatchUpdates: "+supportsBatchUpdates); - System.out.println("supportsColumnAliasing: "+supportsColumnAliasing); - System.out.println("supportsExpressionsInOrderBy: "+supportsExpressionsInOrderBy); - System.out.println("supportsOrderByUnrelated: "+supportsOrderByUnrelated); - System.out.println("supportsPositionedDelete: "+supportsPositionedDelete); - System.out.println("supportsSelectForUpdate: "+supportsSelectForUpdate); - System.out.println("supportsUnion: "+supportsUnion); - System.out.println("supportsUnionAll: "+supportsUnionAll); - System.out.println(); - System.out.println("getMaxColumnNameLength: "+getMaxColumnNameLength); - System.out.println("getMaxColumnsInIndex: "+getMaxColumnsInIndex); - System.out.println("getMaxColumnsInOrderBy: "+getMaxColumnsInOrderBy); - System.out.println("getMaxColumnsInSelect: "+getMaxColumnsInSelect); - System.out.println("getMaxColumnsInTable: "+getMaxColumnsInTable); - System.out.println("getMaxConnections: "+getMaxConnections); - System.out.println("getMaxCursorNameLength: "+getMaxCursorNameLength); - System.out.println("getMaxIndexLength: "+getMaxIndexLength); - System.out.println("getMaxRowSize: "+getMaxRowSize); - System.out.println("getMaxStatements: "+getMaxStatements); - System.out.println("getMaxTableNameLength: "+getMaxTableNameLength); - System.out.println("getMaxTablesInSelect: "+getMaxTablesInSelect); - System.out.println("getMaxUserNameLength: "+getMaxUserNameLength); - System.out.println("getSearchStringEscape: "+getSearchStringEscape); - System.out.println("getStringFunctions: "+getStringFunctions); - System.out.println("getSystemFunctions: "+getSystemFunctions); - System.out.println("getTimeDateFunctions: "+getTimeDateFunctions); - System.out.println(); +public interface DbTest { - Statement stmt = null; - StringBuilder tabletypes = new StringBuilder(); - StringBuilder typeinfo = new StringBuilder(); - try { - stmt = conn.createStatement(); - getTableTypes = dbMetaData.getTableTypes(); - while (getTableTypes.next()) { - tabletypes.append(getTableTypes.getString(1)).append(","); - } - tabletypes = tabletypes.deleteCharAt(tabletypes.length() - 1); - System.out.println("Table Types: " + tabletypes); + void printDbInfo(); - getTypeInfo = dbMetaData.getTypeInfo(); - while (getTypeInfo.next()) { - typeinfo.append(getTypeInfo.getString(1)).append(","); - } - typeinfo = typeinfo.deleteCharAt(typeinfo.length() - 1); - System.out.println("SQL Types: " + typeinfo); - } - catch (SQLException ex) { - } - finally { - try { - if (stmt != null) - stmt.close(); - if (getTableTypes != null) - getTableTypes.close(); - if (getTypeInfo != null) - getTypeInfo.close(); - } - catch (SQLException e) { - } - } - } // end printInfo -} +} \ No newline at end of file diff --git a/uportal-war/src/main/java/org/jasig/portal/tools/DbTestImpl.java b/uportal-war/src/main/java/org/jasig/portal/tools/DbTestImpl.java new file mode 100644 index 00000000000..6d56e5e9cf4 --- /dev/null +++ b/uportal-war/src/main/java/org/jasig/portal/tools/DbTestImpl.java @@ -0,0 +1,278 @@ +/** + * Licensed to Jasig under one or more contributor license + * agreements. See the NOTICE file distributed with this work + * for additional information regarding copyright ownership. + * Jasig licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a + * copy of the License at: + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on + * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.jasig.portal.tools; + +import java.sql.Connection; +import java.sql.DatabaseMetaData; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.Map; +import java.util.Map.Entry; +import java.util.concurrent.ConcurrentHashMap; + +import org.hibernate.dialect.Dialect; +import org.hibernate.engine.spi.SessionFactoryImplementor; +import org.jasig.portal.RDBMServices; +import org.jasig.portal.hibernate.DelegatingHibernateIntegrator.HibernateConfiguration; +import org.jasig.portal.hibernate.HibernateConfigurationAware; +import org.jasig.portal.jpa.BaseAggrEventsJpaDao; +import org.jasig.portal.jpa.BasePortalJpaDao; +import org.jasig.portal.jpa.BaseRawEventsJpaDao; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.DependsOn; +import org.springframework.context.annotation.Lazy; +import org.springframework.dao.DataAccessException; +import org.springframework.jdbc.core.ConnectionCallback; +import org.springframework.jdbc.core.JdbcOperations; +import org.springframework.jdbc.support.JdbcUtils; +import org.springframework.stereotype.Component; + +/** + * Title: DbTest Description: Displays database metadata information Company: + * + * @author John Fereira + * @version $Revision$ + */ +@Component("dbTest") +@Lazy +@DependsOn( { + BasePortalJpaDao.PERSISTENCE_UNIT_NAME + "EntityManagerFactory", + BaseAggrEventsJpaDao.PERSISTENCE_UNIT_NAME + "EntityManagerFactory", + BaseRawEventsJpaDao.PERSISTENCE_UNIT_NAME + "EntityManagerFactory", + "jdbcOperations", + "rawEventsJdbcOperations", + "aggrEventsJdbcOperations", + "hibernateConfigurationAwareInjector" +} ) +public class DbTestImpl implements HibernateConfigurationAware, DbTest { + protected final Logger logger = LoggerFactory.getLogger(getClass()); + + private final Map hibernateConfigurations = new ConcurrentHashMap(); + private Map jdbcOperations; + + @Override + public boolean supports(String persistenceUnit) { + return true; + } + + @Override + public void setConfiguration(String persistenceUnit, HibernateConfiguration hibernateConfiguration) { + this.hibernateConfigurations.put(persistenceUnit, hibernateConfiguration); + } + + @Autowired + public void setJdbcOperations(Map jdbcOperations) { + this.jdbcOperations = jdbcOperations; + } + + @Override + public void printDbInfo() { + boolean fail = false; + + logger.info("JDBC DataSources"); + for (final Entry jdbcEntry : this.jdbcOperations.entrySet()) { + final String jdbcName = jdbcEntry.getKey(); + try { + logger.info("\t" + jdbcName); + final JdbcOperations jdbcOps = jdbcEntry.getValue(); + jdbcOps.execute(new ConnectionCallback() { + @Override + public Object doInConnection(Connection con) throws SQLException, DataAccessException { + printInfo(con); + return null; + } + }); + } + catch (Exception e) { + logger.error("\t" + jdbcName + ": parse info", e); + fail = true; + } + logger.info(""); + } + + logger.info("Hibernate Dialects"); + for (final Entry configEntry : this.hibernateConfigurations.entrySet()) { + final String persistenceUnit = configEntry.getKey(); + + try { + final HibernateConfiguration hibernateConfiguration = configEntry.getValue(); + final SessionFactoryImplementor sessionFactory = hibernateConfiguration.getSessionFactory(); + final Dialect dialect = sessionFactory.getDialect(); + + logger.info("\t" + persistenceUnit + ": " + dialect); + } + catch (Exception e) { + logger.error("\t" + persistenceUnit + ": Failed to resolve Dialect", e); + fail = true; + } + logger.info(""); + } + + if (fail) { + throw new RuntimeException("One or more of the portal data sources is not configured correctly or the target database is not available."); + } + } + + private void printInfo(Connection conn) throws SQLException { + DatabaseMetaData dbMetaData = conn.getMetaData(); + + String dbName = dbMetaData.getDatabaseProductName(); + String dbVersion = dbMetaData.getDatabaseProductVersion(); + String driverName = dbMetaData.getDriverName(); + String driverVersion = dbMetaData.getDriverVersion(); + final int databaseMajorVersion = dbMetaData.getDatabaseMajorVersion(); + final int databaseMinorVersion = dbMetaData.getDatabaseMinorVersion(); + final int driverMajorVersion = dbMetaData.getDriverMajorVersion(); + final int driverMinorVersion = dbMetaData.getDriverMinorVersion(); + + String driverClass = RDBMServices.getJdbcDriver(); + String url = RDBMServices.getJdbcUrl(); + String user = RDBMServices.getJdbcUser(); + + boolean supportsANSI92EntryLevelSQL = dbMetaData.supportsANSI92EntryLevelSQL(); + boolean supportsANSI92FullSQL = dbMetaData.supportsANSI92FullSQL(); + boolean supportsBatchUpdates = dbMetaData.supportsBatchUpdates(); + boolean supportsColumnAliasing = dbMetaData.supportsColumnAliasing(); + boolean supportsCoreSQLGrammar = dbMetaData.supportsCoreSQLGrammar(); + boolean supportsExtendedSQLGrammar = dbMetaData.supportsExtendedSQLGrammar(); + boolean supportsExpressionsInOrderBy = dbMetaData.supportsExpressionsInOrderBy(); + boolean supportsOuterJoins = dbMetaData.supportsOuterJoins(); + boolean supportsFullOuterJoins = dbMetaData.supportsFullOuterJoins(); + boolean supportsLimitedOuterJoins = dbMetaData.supportsLimitedOuterJoins(); + + boolean supportsMultipleTransactions = dbMetaData.supportsMultipleTransactions(); + boolean supportsOpenCursorsAcrossCommit = dbMetaData.supportsOpenCursorsAcrossCommit(); + boolean supportsOpenCursorsAcrossRollback = dbMetaData.supportsOpenCursorsAcrossRollback(); + boolean supportsOpenStatementsAcrossCommit = dbMetaData.supportsOpenStatementsAcrossCommit(); + boolean supportsOpenStatementsAcrossRollback = dbMetaData.supportsOpenStatementsAcrossRollback(); + + boolean supportsOrderByUnrelated = dbMetaData.supportsOrderByUnrelated(); + boolean supportsPositionedDelete = dbMetaData.supportsPositionedDelete(); + + boolean supportsSelectForUpdate = dbMetaData.supportsSelectForUpdate(); + boolean supportsStoredProcedures = dbMetaData.supportsStoredProcedures(); + boolean supportsTransactions = dbMetaData.supportsTransactions(); + boolean supportsUnion = dbMetaData.supportsUnion(); + boolean supportsUnionAll = dbMetaData.supportsUnionAll(); + + int getMaxColumnNameLength = dbMetaData.getMaxColumnNameLength(); + int getMaxColumnsInIndex = dbMetaData.getMaxColumnsInIndex(); + int getMaxColumnsInOrderBy = dbMetaData.getMaxColumnsInOrderBy(); + int getMaxColumnsInSelect = dbMetaData.getMaxColumnsInSelect(); + int getMaxColumnsInTable = dbMetaData.getMaxColumnsInTable(); + int getMaxConnections = dbMetaData.getMaxConnections(); + int getMaxCursorNameLength = dbMetaData.getMaxCursorNameLength(); + int getMaxIndexLength = dbMetaData.getMaxIndexLength(); + int getMaxRowSize = dbMetaData.getMaxRowSize(); + int getMaxStatements = dbMetaData.getMaxStatements(); + int getMaxTableNameLength = dbMetaData.getMaxTableNameLength(); + int getMaxTablesInSelect = dbMetaData.getMaxTablesInSelect(); + int getMaxUserNameLength = dbMetaData.getMaxUserNameLength(); + + String getSearchStringEscape = dbMetaData.getSearchStringEscape(); + String getStringFunctions = dbMetaData.getStringFunctions(); + String getSystemFunctions = dbMetaData.getSystemFunctions(); + String getTimeDateFunctions = dbMetaData.getTimeDateFunctions(); + + logger.info("\t\tDatabase name: '" + dbName + "'"); + logger.info("\t\tDatabase version: '" + dbVersion + "' (" + databaseMajorVersion + "." + databaseMinorVersion + ")"); + logger.info("\t\tDriver name: '" + driverName + "'"); + logger.info("\t\tDriver version: '" + driverVersion + "' (" + driverMajorVersion + "." + driverMinorVersion + ")"); + logger.info("\t\tDriver class: '" + driverClass + "'"); + logger.info("\t\tConnection URL: '" + url + "'"); + logger.info("\t\tUser: '" + user + "'"); + logger.info(""); + + logger.info("\t\tsupportsANSI92EntryLevelSQL: " + supportsANSI92EntryLevelSQL); + logger.info("\t\tsupportsANSI92FullSQL: " + supportsANSI92FullSQL); + logger.info("\t\tsupportsCoreSQLGrammar: " + supportsCoreSQLGrammar); + logger.info("\t\tsupportsExtendedSQLGrammar: " + supportsExtendedSQLGrammar); + logger.info(""); + + logger.info("\t\tsupportsTransactions: " + supportsTransactions); + logger.info("\t\tsupportsMultipleTransactions: " + supportsMultipleTransactions); + + logger.info("\t\tsupportsOpenCursorsAcrossCommit: " + supportsOpenCursorsAcrossCommit); + logger.info("\t\tsupportsOpenCursorsAcrossRollback: " + supportsOpenCursorsAcrossRollback); + logger.info("\t\tsupportsOpenStatementsAcrossCommit: " + supportsOpenStatementsAcrossCommit); + logger.info("\t\tsupportsOpenStatementsAcrossRollback: " + supportsOpenStatementsAcrossRollback); + logger.info(""); + + logger.info("\t\tsupportsStoredProcedures: " + supportsStoredProcedures); + logger.info("\t\tsupportsOuterJoins: " + supportsOuterJoins); + logger.info("\t\tsupportsFullOuterJoins: " + supportsFullOuterJoins); + logger.info("\t\tsupportsLimitedOuterJoins: " + supportsLimitedOuterJoins); + logger.info("\t\tsupportsBatchUpdates: " + supportsBatchUpdates); + logger.info("\t\tsupportsColumnAliasing: " + supportsColumnAliasing); + logger.info("\t\tsupportsExpressionsInOrderBy: " + supportsExpressionsInOrderBy); + logger.info("\t\tsupportsOrderByUnrelated: " + supportsOrderByUnrelated); + logger.info("\t\tsupportsPositionedDelete: " + supportsPositionedDelete); + logger.info("\t\tsupportsSelectForUpdate: " + supportsSelectForUpdate); + logger.info("\t\tsupportsUnion: " + supportsUnion); + logger.info("\t\tsupportsUnionAll: " + supportsUnionAll); + logger.info(""); + + logger.info("\t\tmaxColumnNameLength: " + getMaxColumnNameLength); + logger.info("\t\tmaxColumnsInIndex: " + getMaxColumnsInIndex); + logger.info("\t\tmaxColumnsInOrderBy: " + getMaxColumnsInOrderBy); + logger.info("\t\tmaxColumnsInSelect: " + getMaxColumnsInSelect); + logger.info("\t\tmaxColumnsInTable: " + getMaxColumnsInTable); + logger.info("\t\tmaxConnections: " + getMaxConnections); + logger.info("\t\tmaxCursorNameLength: " + getMaxCursorNameLength); + logger.info("\t\tmaxIndexLength: " + getMaxIndexLength); + logger.info("\t\tmaxRowSize: " + getMaxRowSize); + logger.info("\t\tmaxStatements: " + getMaxStatements); + logger.info("\t\tmaxTableNameLength: " + getMaxTableNameLength); + logger.info("\t\tmaxTablesInSelect: " + getMaxTablesInSelect); + logger.info("\t\tmaxUserNameLength: " + getMaxUserNameLength); + logger.info("\t\tsearchStringEscape: " + getSearchStringEscape); + logger.info("\t\tstringFunctions: " + getStringFunctions); + logger.info("\t\tsystemFunctions: " + getSystemFunctions); + logger.info("\t\ttimeDateFunctions: " + getTimeDateFunctions); + logger.info(""); + + + ResultSet getTableTypes = null; + ResultSet getTypeInfo = null; + try { + getTableTypes = dbMetaData.getTableTypes(); + StringBuilder tabletypes = new StringBuilder(); + while (getTableTypes.next()) { + tabletypes.append(getTableTypes.getString(1)).append(","); + } + tabletypes = tabletypes.deleteCharAt(tabletypes.length() - 1); + logger.info("\t\tTable Types: " + tabletypes); + + getTypeInfo = dbMetaData.getTypeInfo(); + StringBuilder typeinfo = new StringBuilder(); + while (getTypeInfo.next()) { + typeinfo.append(getTypeInfo.getString(1)).append(","); + } + typeinfo = typeinfo.deleteCharAt(typeinfo.length() - 1); + logger.info("\t\tSQL Types: " + typeinfo); + } catch (SQLException ex) { + } finally { + JdbcUtils.closeResultSet(getTableTypes); + JdbcUtils.closeResultSet(getTypeInfo); + } + } // end printInfo +}