This is an automated email from the git hooks/post-receive script. New commit to branch feature/2892 in repository topia. See http://git.nuiton.org/topia.git commit 88376837f07bbc48adc7020a790828517a10827f Author: Brendan Le Ny <bleny@codelutin.com> Date: Mon Jan 26 18:45:15 2015 +0100 fix dialect detection for H2 compatibility mode --- .../persistence/internal/HibernateProvider.java | 50 ++++++++++++++++------ 1 file changed, 38 insertions(+), 12 deletions(-) diff --git a/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/HibernateProvider.java b/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/HibernateProvider.java index b90b94f..6a15209 100644 --- a/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/HibernateProvider.java +++ b/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/HibernateProvider.java @@ -155,39 +155,65 @@ public class HibernateProvider { public static String getHibernateDialect(TopiaConfiguration topiaConfiguration) { String hibernateDialect = topiaConfiguration.getHibernateExtraConfiguration().get(AvailableSettings.DIALECT); if (hibernateDialect == null) { - hibernateDialect = guessHibernateDialect(topiaConfiguration.getJdbcConnectionUrl(), topiaConfiguration.getJdbcDriverClass().getName()); + hibernateDialect = guessHibernateDialect(topiaConfiguration.getJdbcConnectionUrl()); } return hibernateDialect; } - public static String guessHibernateDialect(String jdbcConnectionUrl, String jdbcDriverClassName) { + public static String guessHibernateDialect(String jdbcConnectionUrl) { JdbcConfigurationBuilder jdbcConfigurationBuilder = new JdbcConfigurationBuilder(); String guessedHibernateDialect = null; - if (jdbcConfigurationBuilder.isDb2Url(jdbcConnectionUrl)) { + + // DB2 + if (jdbcConfigurationBuilder.isDb2Url(jdbcConnectionUrl) + || jdbcConfigurationBuilder.isH2Url(jdbcConnectionUrl) && jdbcConnectionUrl.contains("MODE=DB2")) { guessedHibernateDialect = DB2Dialect.class.getName(); - } else if (jdbcConfigurationBuilder.isDerbyUrl(jdbcConnectionUrl)) { + + // Derby + } else if (jdbcConfigurationBuilder.isDerbyUrl(jdbcConnectionUrl) + || jdbcConfigurationBuilder.isH2Url(jdbcConnectionUrl) && jdbcConnectionUrl.contains("MODE=Derby")) { guessedHibernateDialect = DerbyDialect.class.getName(); - } else if (jdbcConfigurationBuilder.isH2Url(jdbcConnectionUrl)) { - guessedHibernateDialect = H2Dialect.class.getName(); - } else if (jdbcConfigurationBuilder.isHsqlDbUrl(jdbcConnectionUrl)) { + + // HSQLDB + } else if (jdbcConfigurationBuilder.isHsqlDbUrl(jdbcConnectionUrl) + || jdbcConfigurationBuilder.isH2Url(jdbcConnectionUrl) && jdbcConnectionUrl.contains("MODE=HSQLDB")) { guessedHibernateDialect = HSQLDialect.class.getName(); + + // MySQL } else if (jdbcConfigurationBuilder.isMysqlUrl(jdbcConnectionUrl) || jdbcConfigurationBuilder.isMariaDbUrl(jdbcConnectionUrl) - || jdbcConfigurationBuilder.isGoogleAppEngineUrl(jdbcConnectionUrl)) { + || jdbcConfigurationBuilder.isGoogleAppEngineUrl(jdbcConnectionUrl) + || jdbcConfigurationBuilder.isH2Url(jdbcConnectionUrl) && jdbcConnectionUrl.contains("MODE=MySQL")) { guessedHibernateDialect = MySQL5Dialect.class.getName(); - } else if (jdbcConfigurationBuilder.isOracleUrl(jdbcConnectionUrl)) { + + // Oracle + } else if (jdbcConfigurationBuilder.isOracleUrl(jdbcConnectionUrl) + || jdbcConfigurationBuilder.isH2Url(jdbcConnectionUrl) && jdbcConnectionUrl.contains("MODE=Oracle")) { guessedHibernateDialect = Oracle10gDialect.class.getName(); - } else if (jdbcConfigurationBuilder.isPostgreSqlUrl(jdbcConnectionUrl)) { + + // PostgreSQL + } else if (jdbcConfigurationBuilder.isPostgreSqlUrl(jdbcConnectionUrl) + || jdbcConfigurationBuilder.isH2Url(jdbcConnectionUrl) && jdbcConnectionUrl.contains("MODE=PostgreSQL")) { guessedHibernateDialect = PostgreSQL9Dialect.class.getName(); + + // MS SQLServer } else if (jdbcConfigurationBuilder.isJtdsUrl(jdbcConnectionUrl) - || jdbcConfigurationBuilder.isSqlServerUrl(jdbcConnectionUrl)) { + || jdbcConfigurationBuilder.isSqlServerUrl(jdbcConnectionUrl) + || jdbcConfigurationBuilder.isH2Url(jdbcConnectionUrl) && jdbcConnectionUrl.contains("MODE=MSSQLServer")) { guessedHibernateDialect = SQLServer2012Dialect.class.getName(); + + // SQLite } else if (jdbcConfigurationBuilder.isSqliteUrl(jdbcConnectionUrl) || jdbcConfigurationBuilder.isSqlDroidUrl(jdbcConnectionUrl)) { guessedHibernateDialect = null; + + // H2 + } else if (jdbcConfigurationBuilder.isH2Url(jdbcConnectionUrl)) { + guessedHibernateDialect = H2Dialect.class.getName(); + } else { if (log.isWarnEnabled()) { - log.warn("unable to guess Hibernate dialect for JDBC URL " + jdbcConnectionUrl + " and JDBC driver " + jdbcDriverClassName + ". Please, submit a patch!"); + log.warn("unable to guess Hibernate dialect for JDBC URL " + jdbcConnectionUrl + ". Please, submit a patch!"); } } return guessedHibernateDialect; -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.