--- a/java/sql-dk/src/info/globalcode/sql/dk/CLIParser.java Thu Jan 16 12:28:08 2014 +0100
+++ b/java/sql-dk/src/info/globalcode/sql/dk/CLIParser.java Fri Jan 17 23:24:07 2014 +0100
@@ -17,8 +17,11 @@
*/
package info.globalcode.sql.dk;
+import static info.globalcode.sql.dk.Functions.readString;
import info.globalcode.sql.dk.InfoLister.InfoType;
import info.globalcode.sql.dk.configuration.Property;
+import java.io.IOException;
+import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -35,7 +38,7 @@
public static final String TYPE_NAME_SEPARATOR = ":";
- public CLIOptions parseOptions(String[] args) throws CLIParserException {
+ public CLIOptions parseOptions(String[] args, InputStream in) throws CLIParserException {
CLIOptions options = new CLIOptions();
List<SQLType> numberedTypes = new ArrayList<>();
@@ -70,6 +73,13 @@
case Tokens.SQL:
options.setSql(fetchNext(args, ++i));
break;
+ case Tokens.SQL_IN:
+ try {
+ options.setSql(readString(in));
+ } catch (IOException e) {
+ throw new CLIParserException("Unable to read SQL from the input stream", e);
+ }
+ break;
case Tokens.BATCH:
options.setBatch(true);
break;
@@ -160,6 +170,7 @@
public static final String DB = "--db"; // bash-completion:option // help: database name
public static final String DB_PROPERTY = "--db-property"; // bash-completion:option // help: name and value
public static final String SQL = "--sql"; // bash-completion:option // help: SQL query/command
+ public static final String SQL_IN = "--sql-in"; // bash-completion:option // help: SQL query/command
public static final String BATCH = "--batch"; // bash-completion:option // help: batch mode (no argument)
public static final String DATA = "--data"; // bash-completion:option // help: list of ordinal parameters
public static final String DATA_NAMED = "--data-named"; // bash-completion:option // help: list of named parameters
--- a/java/sql-dk/src/info/globalcode/sql/dk/CLIStarter.java Thu Jan 16 12:28:08 2014 +0100
+++ b/java/sql-dk/src/info/globalcode/sql/dk/CLIStarter.java Fri Jan 17 23:24:07 2014 +0100
@@ -75,7 +75,7 @@
try {
CLIParser parser = new CLIParser();
- CLIOptions options = parser.parseOptions(args);
+ CLIOptions options = parser.parseOptions(args, System.in);
options.validate();
CLIStarter starter = new CLIStarter(options);
starter.installDefaultConfiguration();
--- a/java/sql-dk/src/info/globalcode/sql/dk/Functions.java Thu Jan 16 12:28:08 2014 +0100
+++ b/java/sql-dk/src/info/globalcode/sql/dk/Functions.java Fri Jan 17 23:24:07 2014 +0100
@@ -21,12 +21,14 @@
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
+import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Map;
+import java.util.Scanner;
/**
*
@@ -152,4 +154,15 @@
}
return new String(hexChars);
}
+
+ public static String readString(InputStream in) throws IOException {
+ try (BufferedReader br = new BufferedReader(new InputStreamReader(in))) {
+ StringBuilder result = new StringBuilder();
+ for (String line = br.readLine(); line != null; line = br.readLine()) {
+ result.append(line);
+ result.append('\n');
+ }
+ return result.toString();
+ }
+ }
}