|
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());
|