BATCH-810: added mainframe incrementer as "db2zos", also added to metadata lookup

This commit is contained in:
trisberg
2008-09-25 16:47:19 +00:00
parent 3ae82ebc4b
commit 14fc7bb337
7 changed files with 188 additions and 9 deletions

View File

@@ -32,6 +32,7 @@ import org.springframework.jdbc.support.incrementer.OracleSequenceMaxValueIncrem
import org.springframework.jdbc.support.incrementer.PostgreSQLSequenceMaxValueIncrementer;
import org.springframework.jdbc.support.incrementer.SqlServerMaxValueIncrementer;
import org.springframework.jdbc.support.incrementer.SybaseMaxValueIncrementer;
import org.springframework.jdbc.support.incrementer.DB2MainframeSequenceMaxValueIncrementer;
/**
* Default implementation of the {@link DataFieldMaxValueIncrementerFactory}
@@ -41,6 +42,7 @@ import org.springframework.jdbc.support.incrementer.SybaseMaxValueIncrementer;
*
* <ul>
* <li>db2</li>
* <li>db2zos</li>
* <li>derby</li>
* <li>hsql</li>
* <li>mysql</li>
@@ -81,6 +83,9 @@ public class DefaultDataFieldMaxValueIncrementerFactory implements DataFieldMaxV
if (databaseType == DB2) {
return new DB2SequenceMaxValueIncrementer(dataSource, incrementerName);
}
else if (databaseType == DB2ZOS) {
return new DB2MainframeSequenceMaxValueIncrementer(dataSource, incrementerName);
}
else if (databaseType == DERBY) {
return new DerbyMaxValueIncrementer(dataSource, incrementerName, incrementerColumnName);
}

View File

@@ -41,7 +41,7 @@ public class SimpleDelegatingPagingQueryProvider extends AbstractSqlPagingQueryP
if (type == DERBY) {
delegate = new DerbyPagingQueryProvider();
}
else if (type == DB2) {
else if (type == DB2 || type == DB2ZOS) {
delegate = new Db2PagingQueryProvider();
}
else if (type == HSQL) {

View File

@@ -24,7 +24,8 @@ public enum DatabaseType {
DERBY("Apache Derby"),
DB2("DB2"),
HSQL("HSQL Database Engine"),
DB2ZOS("DB2ZOS"),
HSQL("HSQL Database Engine"),
SQLSERVER("Microsoft SQL Server"),
MYSQL("MySQL"),
ORACLE("Oracle"),
@@ -76,9 +77,21 @@ public enum DatabaseType {
* @throws MetaDataAccessException
*/
public static DatabaseType fromMetaData(DataSource dataSource) throws MetaDataAccessException{
String databaseProductName = JdbcUtils.commonDatabaseName(
JdbcUtils.extractDatabaseMetaData(dataSource, "getDatabaseProductName").toString());
String databaseProductName =
JdbcUtils.extractDatabaseMetaData(dataSource, "getDatabaseProductName").toString();
if ("DB2".equals(databaseProductName)) {
String databaseProductVersion =
JdbcUtils.extractDatabaseMetaData(dataSource, "getDatabaseProductVersion").toString();
if (!databaseProductVersion.startsWith("SQL")) {
databaseProductName = "DB2ZOS";
}
else {
databaseProductName = JdbcUtils.commonDatabaseName(databaseProductName);
}
}
else {
databaseProductName = JdbcUtils.commonDatabaseName(databaseProductName);
}
return fromProductName(databaseProductName);
}
}