Thread: [Squirrel-sql-commits] sql12/plugins/dbcopy/src/net/sourceforge/squirrel_sql/plugins/dbcopy/command
A Java SQL client for any JDBC compliant database
Brought to you by:
colbell,
gerdwagner
From: Rob M. <man...@us...> - 2007-02-18 22:50:51
|
Update of /cvsroot/squirrel-sql/sql12/plugins/dbcopy/src/net/sourceforge/squirrel_sql/plugins/dbcopy/commands In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv13865/plugins/dbcopy/src/net/sourceforge/squirrel_sql/plugins/dbcopy/commands Modified Files: CopyTableCommand.java Log Message: DBCopy plugin now orders source tables to satisfy FK dependencies when copying data into existing tables with similar constraints. Index: CopyTableCommand.java =================================================================== RCS file: /cvsroot/squirrel-sql/sql12/plugins/dbcopy/src/net/sourceforge/squirrel_sql/plugins/dbcopy/commands/CopyTableCommand.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** CopyTableCommand.java 24 Aug 2006 10:15:45 -0000 1.5 --- CopyTableCommand.java 18 Feb 2007 22:50:40 -0000 1.6 *************** *** 20,28 **** */ import net.sourceforge.squirrel_sql.client.session.IObjectTreeAPI; import net.sourceforge.squirrel_sql.client.session.ISession; - import net.sourceforge.squirrel_sql.fw.sql.DatabaseObjectType; import net.sourceforge.squirrel_sql.fw.sql.IDatabaseObjectInfo; import net.sourceforge.squirrel_sql.fw.sql.ITableInfo; import net.sourceforge.squirrel_sql.fw.util.ICommand; import net.sourceforge.squirrel_sql.fw.util.log.ILogger; --- 20,33 ---- */ + import java.sql.SQLException; + import java.util.ArrayList; + import java.util.List; + import net.sourceforge.squirrel_sql.client.session.IObjectTreeAPI; import net.sourceforge.squirrel_sql.client.session.ISession; import net.sourceforge.squirrel_sql.fw.sql.IDatabaseObjectInfo; import net.sourceforge.squirrel_sql.fw.sql.ITableInfo; + import net.sourceforge.squirrel_sql.fw.sql.SQLDatabaseMetaData; + import net.sourceforge.squirrel_sql.fw.sql.SQLUtilities; import net.sourceforge.squirrel_sql.fw.util.ICommand; import net.sourceforge.squirrel_sql.fw.util.log.ILogger; *************** *** 81,89 **** } } ! _plugin.setCopySourceSession(_session); ! _plugin.setSelectedDatabaseObjects(dbObjs); ! _plugin.setPasteMenuEnabled(true); } } } \ No newline at end of file --- 86,111 ---- } } ! try { ! _plugin.setCopySourceSession(_session); ! _plugin.setSelectedDatabaseObjects(getInsertionOrder(dbObjs)); ! _plugin.setPasteMenuEnabled(true); ! } catch (SQLException e) { ! log.error("Unexected exception: ", e); ! } } } + + private IDatabaseObjectInfo[] getInsertionOrder(IDatabaseObjectInfo[] dbObjs) + throws SQLException + { + SQLDatabaseMetaData md = _session.getSQLConnection().getSQLMetaData(); + IDatabaseObjectInfo[] result = new IDatabaseObjectInfo[dbObjs.length]; + List<ITableInfo> selectedTables = new ArrayList<ITableInfo>(); + for (int i = 0; i < dbObjs.length; i++) { + selectedTables.add((ITableInfo)dbObjs[i]); + } + selectedTables = SQLUtilities.getInsertionOrder(md, selectedTables); + return selectedTables.toArray(new IDatabaseObjectInfo[dbObjs.length]); + } } \ No newline at end of file |