package de.memtext.db; import java.sql.DriverManager; import java.sql.SQLException; import java.util.Iterator; import java.util.List; import de.memtext.util.StringUtils; public class DBComparison { private DBComparison() { super(); } public static void main(String a[]) { try { Class.forName("org.hsqldb.jdbcDriver"); java.sql.Connection con = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost:9000", "sa", ""); DBAccess.addConnection("ssc", con); java.sql.Connection con2 = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost:9500", "sa", ""); DBAccess.addConnection("ssc-test", con2); compare("ssc", "ssc-test"); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } private static void compare(String db1, String db2) throws SQLException { System.out.println("Start comparing..."); StringBuffer fineTables = new StringBuffer("The following tables are fine: "); List tableList = DBAccess.get(db1).getTableList(); boolean isOk = false; for (Iterator it = tableList.iterator(); it.hasNext();) { String table = (String) it.next(); if (DBAccess.get(db2).hasTable(table)) { isOk = true; if (DBAccess.get(db1).getColumnCount(table) != DBAccess.get(db2).getColumnCount(table)) { System.out.println("Table " + table + " has a different number of columns"); isOk = false; } else { List colList = DBAccess.get(db1).getColumnNames(table); for (Iterator it2 = colList.iterator(); it2.hasNext();) { String colname = (String) it2.next(); if (!DBAccess.get(db2).hasColumn(table, colname)) { System.out.println("Table " + table + " in " + db2 + " doesn't have column:" + colname); isOk = false; } else { if (DBAccess.get(db1).getColumnType(table, colname) != DBAccess.get(db2).getColumnType(table, colname)) { System.out.println("Table " + table + " column:" + colname + " are of different types"); isOk = false; } } } if (isOk) fineTables.append(table + ","); } } else { System.out.println(db2 + " doesn't contain table:" + table); } } StringUtils.deleteLastChar(fineTables); System.out.println(fineTables); System.out.println("..done"); } } //Created on 11.02.2004 at 13:19:36