From: SVN by r. <sv...@ca...> - 2009-12-08 10:12:30
|
Author: roy Date: 2009-12-08 10:45:35 +0100 (Tue, 08 Dec 2009) New Revision: 428 Modified: src/main/java/nl/improved/sqlclient/AbstractSQLShellWindow.java src/main/java/nl/improved/sqlclient/SQLShell.java src/main/java/nl/improved/sqlclient/commands/DumpCommand.java src/main/java/nl/improved/sqlclient/commands/ReadCommand.java src/main/java/nl/improved/sqlclient/commands/ReadDumpCommand.java src/main/java/nl/improved/sqlclient/commands/SettingsCommand.java src/test/java/nl/improved/sqlclient/commands/DumpCommandTest.java Log: improved dump/read command with progress output Modified: src/main/java/nl/improved/sqlclient/AbstractSQLShellWindow.java =================================================================== --- src/main/java/nl/improved/sqlclient/AbstractSQLShellWindow.java 2009-10-16 14:12:51 UTC (rev 427) +++ src/main/java/nl/improved/sqlclient/AbstractSQLShellWindow.java 2009-12-08 09:45:35 UTC (rev 428) @@ -141,8 +141,8 @@ commands.register("HELP[\\s]*.*", new HelpCommand()); commands.register("HISTORY[\\s]*.*", new HistoryCommand()); commands.register("SPOOL[\\s]*.*", new SpoolCommand()); - commands.register("DUMP[\\s]*.*[A-Z]+.*", new DumpCommand()); - commands.register("READ[\\s]*.*[A-Z]+.*", new ReadCommand()); + commands.register("DUMP[\\s]*.*[A-Z]+.*", new DumpCommand(this)); + commands.register("READ[\\s]*.*[A-Z]+.*", new ReadCommand(this)); commands.register("QUIT[\\s]*", new QuitCommand("quit")); commands.register("EXIT[\\s]*", new QuitCommand("exit")); commands.register("SAVE[\\s]*.*", new SaveCommand()); @@ -807,9 +807,10 @@ * Output data to the screen. * @param data the data to print to the screen. */ - protected void output(CharSequence data) { + public void output(CharSequence data) { output(data, true); } + protected void output(CharSequence data, boolean spool) { synchronized(this) { List<CharSequence> screenBuffer = screen.getScreenBuffer(); Modified: src/main/java/nl/improved/sqlclient/SQLShell.java =================================================================== --- src/main/java/nl/improved/sqlclient/SQLShell.java 2009-10-16 14:12:51 UTC (rev 427) +++ src/main/java/nl/improved/sqlclient/SQLShell.java 2009-12-08 09:45:35 UTC (rev 428) @@ -169,7 +169,7 @@ } @Override - protected void output(CharSequence data) { + public void output(CharSequence data) { if (!argsMap.containsKey(OUTPUT)) { System.out.println(data); } Modified: src/main/java/nl/improved/sqlclient/commands/DumpCommand.java =================================================================== --- src/main/java/nl/improved/sqlclient/commands/DumpCommand.java 2009-10-16 14:12:51 UTC (rev 427) +++ src/main/java/nl/improved/sqlclient/commands/DumpCommand.java 2009-12-08 09:45:35 UTC (rev 428) @@ -36,6 +36,10 @@ private String fileName; + public DumpCommand(AbstractSQLShellWindow window) { + super(window); + } + // 0 filename // 1 tablename // 2 query @@ -160,9 +164,13 @@ } hd.endElement("", "", "row"); rowCount++; + if (rowCount % 1000 == 0) { + output(Integer.toString(rowCount)+" rows written"); + } } hd.endElement("", "", "dump"); hd.endDocument(); + } catch (SAXException ex) { Logger.getLogger(AbstractSQLShellWindow.class.getName()).log(Level.SEVERE, null, ex); } catch (TransformerConfigurationException e) { Modified: src/main/java/nl/improved/sqlclient/commands/ReadCommand.java =================================================================== --- src/main/java/nl/improved/sqlclient/commands/ReadCommand.java 2009-10-16 14:12:51 UTC (rev 427) +++ src/main/java/nl/improved/sqlclient/commands/ReadCommand.java 2009-12-08 09:45:35 UTC (rev 428) @@ -21,9 +21,20 @@ * Read the result of a dump file. */ public class ReadCommand extends ReadDumpCommand { + private static boolean autoCommit; + static void setAutoCommit(boolean b) { + autoCommit = b; + } + private String fileName; + public ReadCommand(AbstractSQLShellWindow window) { + super(window); + } + + + @Override public CommandResult execute(SQLCommand cmd) { String command = cmd.getCommandString(); @@ -118,6 +129,14 @@ } pstmt.executeUpdate(); rowCount++; + if (rowCount % 1000 == 0) { + if (autoCommit) { + pstmt.getConnection().commit(); + output(Integer.toString(rowCount)+" rows comitted"); + } else { + output(Integer.toString(rowCount)+" rows inserted"); + } + } } } catch (SQLException e) { throw new IllegalStateException("Failed to execute update query for dump(" + fileName + "): " + e.toString(), e); Modified: src/main/java/nl/improved/sqlclient/commands/ReadDumpCommand.java =================================================================== --- src/main/java/nl/improved/sqlclient/commands/ReadDumpCommand.java 2009-10-16 14:12:51 UTC (rev 427) +++ src/main/java/nl/improved/sqlclient/commands/ReadDumpCommand.java 2009-12-08 09:45:35 UTC (rev 428) @@ -1,12 +1,24 @@ package nl.improved.sqlclient.commands; import java.sql.Types; +import nl.improved.sqlclient.AbstractSQLShellWindow; import nl.improved.sqlclient.commands.Command; abstract class ReadDumpCommand implements Command { public static final String DATE_FORMAT = "yyyyMMddHHmmss"; + private final AbstractSQLShellWindow window; + public ReadDumpCommand(AbstractSQLShellWindow window) { + this.window = window; + } + + void output(CharSequence out) { + if (window != null) { + window.output(out); + } + } + boolean isBinary(int columnType) { if (columnType == Types.BINARY || columnType == Types.BLOB || columnType == Types.CLOB || columnType == Types.LONGVARBINARY || columnType == Types.LONGVARCHAR || columnType == Types.OTHER) { return true; Modified: src/main/java/nl/improved/sqlclient/commands/SettingsCommand.java =================================================================== --- src/main/java/nl/improved/sqlclient/commands/SettingsCommand.java 2009-10-16 14:12:51 UTC (rev 427) +++ src/main/java/nl/improved/sqlclient/commands/SettingsCommand.java 2009-12-08 09:45:35 UTC (rev 428) @@ -30,6 +30,15 @@ ResultBuilder.setVerticalSeparator(cmdString.charAt(cmdString.indexOf('=')+1)); return new SimpleCommandResult(true, "Vertical separator updated to '"+ResultBuilder.getVerticalSeparator()+"'."); } + if (setter.equals("readAutoCommit")) { + //ResultBuilder.setVerticalSeparator(cmdString.charAt(cmdString.indexOf('=')+1)); + char readAutoCommit = cmdString.charAt(cmdString.indexOf('=')+1); + if (readAutoCommit == 'Y' || readAutoCommit == 'N') { + return new SimpleCommandResult(true, "Auto commit for the read command is set to '"+ResultBuilder.getVerticalSeparator()+"'."); + } else { + return new SimpleCommandResult(false, "Auto commit for the read command can only be set to 'Y' or 'N' (value: " + readAutoCommit+")"); + } + } if (setter.startsWith("@")) { // variable // see // http://www.science.uva.nl/ict/ossdocs/mysql/manual_Reference.html @@ -58,7 +67,8 @@ return "Change settings of sqlshell properties" + "Settings are:\n"+ "hSeparatorChar\n"+ - "vSeparatorChar\n" + + "vSeparatorChar (values Y/N)\n" + + "readAutoCommit\n" + "@variable=value"; } Modified: src/test/java/nl/improved/sqlclient/commands/DumpCommandTest.java =================================================================== --- src/test/java/nl/improved/sqlclient/commands/DumpCommandTest.java 2009-10-16 14:12:51 UTC (rev 427) +++ src/test/java/nl/improved/sqlclient/commands/DumpCommandTest.java 2009-12-08 09:45:35 UTC (rev 428) @@ -76,7 +76,7 @@ public void testGetTabCompletionInfo() { System.out.println("getTabCompletionInfo"); SQLCommand cmd = new SQLCommand("dump t"); - DumpCommand dcmd = new DumpCommand(); + DumpCommand dcmd = new DumpCommand(null); TabCompletionInfo completionInfo = dcmd.getTabCompletionInfo(cmd, new Point(cmd.getCommandString().length(), 0)); assertNotNull(completionInfo); assertEquals(TabCompletionInfo.MatchType.TABLE_NAMES, completionInfo.getMatchType()); |