# HG changeset patch # User František Kučera # Date 1389997447 -3600 # Node ID 5488c2dcf68041acf8cf4202e18bda155b5dd914 # Parent 871185e406b3f5df9f70bcd8ed0f5b2248ed9cc0 SQL from STDIN: --sql-in diff -r 871185e406b3 -r 5488c2dcf680 java/sql-dk/src/info/globalcode/sql/dk/CLIParser.java --- 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 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 diff -r 871185e406b3 -r 5488c2dcf680 java/sql-dk/src/info/globalcode/sql/dk/CLIStarter.java --- 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(); diff -r 871185e406b3 -r 5488c2dcf680 java/sql-dk/src/info/globalcode/sql/dk/Functions.java --- 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(); + } + } }