From 593fe96a36b3a77100669d0778cba4a2ee4dea73 Mon Sep 17 00:00:00 2001 From: chenson42 Date: Sat, 26 Jun 2010 02:32:16 +0000 Subject: [PATCH] Moving informix to the ddl project --- .../ddl/platform/JdbcModelReader.java | 14 ++-- .../informix/InformixModelReader.java | 9 ++- .../ddlutils/JdbcModelReaderSupport.java | 65 ------------------- 3 files changed, 17 insertions(+), 71 deletions(-) diff --git a/symmetric/symmetric-ddl/src/main/java/org/jumpmind/symmetric/ddl/platform/JdbcModelReader.java b/symmetric/symmetric-ddl/src/main/java/org/jumpmind/symmetric/ddl/platform/JdbcModelReader.java index b39800ee20..4dc5bf7712 100644 --- a/symmetric/symmetric-ddl/src/main/java/org/jumpmind/symmetric/ddl/platform/JdbcModelReader.java +++ b/symmetric/symmetric-ddl/src/main/java/org/jumpmind/symmetric/ddl/platform/JdbcModelReader.java @@ -855,7 +855,7 @@ protected String readPrimaryKeyName(DatabaseMetaDataWrapper metaData, Map values */ protected Collection readForeignKeys(DatabaseMetaDataWrapper metaData, String tableName) throws SQLException { - Map fks = new ListOrderedMap(); + Map fks = new ListOrderedMap(); ResultSet fkData = null; try @@ -864,7 +864,7 @@ protected Collection readForeignKeys(DatabaseMetaDataWrapper metaData, S while (fkData.next()) { - Map values = readColumns(fkData, getColumnsForFK()); + Map values = readColumns(fkData, getColumnsForFK()); readForeignKey(metaData, values, fks); } @@ -1013,9 +1013,13 @@ protected Map readColumns(ResultSet resultSet, List values) throws SQLException { Table table = super.readTable(metaData, values); if (table != null) { - determineAutoIncrementFromResultSetMetaData(table, table.getColumns(), ":"); + determineAutoIncrementFromResultSetMetaData(table, table.getColumns()); } return table; } + + @Override + protected void determineAutoIncrementFromResultSetMetaData(Table table, Column[] columnsToCheck) + throws SQLException { + determineAutoIncrementFromResultSetMetaData(getConnection(), table, columnsToCheck, ":"); + } @Override public Collection readIndices(DatabaseMetaDataWrapper metaData, String tableName) diff --git a/symmetric/symmetric-ds/src/main/java/org/jumpmind/symmetric/ddlutils/JdbcModelReaderSupport.java b/symmetric/symmetric-ds/src/main/java/org/jumpmind/symmetric/ddlutils/JdbcModelReaderSupport.java index 977c91eab3..6cd7c4bd98 100644 --- a/symmetric/symmetric-ds/src/main/java/org/jumpmind/symmetric/ddlutils/JdbcModelReaderSupport.java +++ b/symmetric/symmetric-ds/src/main/java/org/jumpmind/symmetric/ddlutils/JdbcModelReaderSupport.java @@ -2,13 +2,10 @@ import java.sql.Connection; import java.sql.ResultSet; -import java.sql.ResultSetMetaData; import java.sql.SQLException; -import java.sql.Statement; import java.util.Map; import org.jumpmind.symmetric.ddl.Platform; -import org.jumpmind.symmetric.ddl.model.Column; import org.jumpmind.symmetric.ddl.model.Table; import org.jumpmind.symmetric.ddl.platform.DatabaseMetaDataWrapper; import org.jumpmind.symmetric.ddl.platform.JdbcModelReader; @@ -76,66 +73,4 @@ protected boolean doesMatch(Table table, String catalogName, String schemaName, } } - public void determineAutoIncrementFromResultSetMetaData(Connection conn, Table table, - final Column columnsToCheck[]) throws SQLException { - determineAutoIncrementFromResultSetMetaData(conn, table, columnsToCheck, "."); - } - - /** - * Fix problems following problems: 1) identifiers that use keywords 2) - * different catalog and schema 3) different catalog separator character - */ - public void determineAutoIncrementFromResultSetMetaData(Connection conn, Table table, - final Column columnsToCheck[], String catalogSeparator) throws SQLException { - if (columnsToCheck == null || columnsToCheck.length == 0) { - return; - } - StringBuilder query = new StringBuilder(); - query.append("SELECT "); - for (int idx = 0; idx < columnsToCheck.length; idx++) { - if (idx > 0) { - query.append(","); - } - query.append("t."); - appendIdentifier(query, columnsToCheck[idx].getName()); - } - query.append(" FROM "); - - if (table.getCatalog() != null && !table.getCatalog().trim().equals("")) { - appendIdentifier(query, table.getCatalog()); - query.append(catalogSeparator); - } - if (table.getSchema() != null && !table.getSchema().trim().equals("")) { - appendIdentifier(query, table.getSchema()).append("."); - } - appendIdentifier(query, table.getName()).append(" t WHERE 1 = 0"); - - Statement stmt = null; - try { - stmt = conn.createStatement(); - ResultSet rs = stmt.executeQuery(query.toString()); - ResultSetMetaData rsMetaData = rs.getMetaData(); - - for (int idx = 0; idx < columnsToCheck.length; idx++) { - if (rsMetaData.isAutoIncrement(idx + 1)) { - columnsToCheck[idx].setAutoIncrement(true); - } - } - } finally { - if (stmt != null) { - stmt.close(); - } - } - } - - public StringBuilder appendIdentifier(StringBuilder query, String identifier) { - if (getPlatform().isDelimitedIdentifierModeOn()) { - query.append(getPlatformInfo().getDelimiterToken()); - } - query.append(identifier); - if (getPlatform().isDelimitedIdentifierModeOn()) { - query.append(getPlatformInfo().getDelimiterToken()); - } - return query; - } }