java/sql-dk/src/info/globalcode/sql/dk/CLIParser.java
branchv_0
changeset 166 5488c2dcf680
parent 159 9632b23df30c
child 200 2e351d7c26c4
equal deleted inserted replaced
165:871185e406b3 166:5488c2dcf680
    15  * You should have received a copy of the GNU General Public License
    15  * You should have received a copy of the GNU General Public License
    16  * along with this program. If not, see <http://www.gnu.org/licenses/>.
    16  * along with this program. If not, see <http://www.gnu.org/licenses/>.
    17  */
    17  */
    18 package info.globalcode.sql.dk;
    18 package info.globalcode.sql.dk;
    19 
    19 
       
    20 import static info.globalcode.sql.dk.Functions.readString;
    20 import info.globalcode.sql.dk.InfoLister.InfoType;
    21 import info.globalcode.sql.dk.InfoLister.InfoType;
    21 import info.globalcode.sql.dk.configuration.Property;
    22 import info.globalcode.sql.dk.configuration.Property;
       
    23 import java.io.IOException;
       
    24 import java.io.InputStream;
    22 import java.util.ArrayList;
    25 import java.util.ArrayList;
    23 import java.util.HashMap;
    26 import java.util.HashMap;
    24 import java.util.List;
    27 import java.util.List;
    25 import java.util.Map;
    28 import java.util.Map;
    26 
    29 
    33  */
    36  */
    34 public class CLIParser {
    37 public class CLIParser {
    35 
    38 
    36 	public static final String TYPE_NAME_SEPARATOR = ":";
    39 	public static final String TYPE_NAME_SEPARATOR = ":";
    37 
    40 
    38 	public CLIOptions parseOptions(String[] args) throws CLIParserException {
    41 	public CLIOptions parseOptions(String[] args, InputStream in) throws CLIParserException {
    39 		CLIOptions options = new CLIOptions();
    42 		CLIOptions options = new CLIOptions();
    40 
    43 
    41 		List<SQLType> numberedTypes = new ArrayList<>();
    44 		List<SQLType> numberedTypes = new ArrayList<>();
    42 		Map<String, SQLType> namedTypes = new HashMap<>();
    45 		Map<String, SQLType> namedTypes = new HashMap<>();
    43 
    46 
    67 				case Tokens.DB:
    70 				case Tokens.DB:
    68 					options.setDatabaseName(fetchNext(args, ++i));
    71 					options.setDatabaseName(fetchNext(args, ++i));
    69 					break;
    72 					break;
    70 				case Tokens.SQL:
    73 				case Tokens.SQL:
    71 					options.setSql(fetchNext(args, ++i));
    74 					options.setSql(fetchNext(args, ++i));
       
    75 					break;
       
    76 				case Tokens.SQL_IN:
       
    77 					try {
       
    78 						options.setSql(readString(in));
       
    79 					} catch (IOException e) {
       
    80 						throw new CLIParserException("Unable to read SQL from the input stream", e);
       
    81 					}
    72 					break;
    82 					break;
    73 				case Tokens.BATCH:
    83 				case Tokens.BATCH:
    74 					options.setBatch(true);
    84 					options.setBatch(true);
    75 					break;
    85 					break;
    76 				case Tokens.DATA: // --data is the last option
    86 				case Tokens.DATA: // --data is the last option
   158 
   168 
   159 		// bash-completion:options:
   169 		// bash-completion:options:
   160 		public static final String DB = "--db"; // bash-completion:option // help: database name
   170 		public static final String DB = "--db"; // bash-completion:option // help: database name
   161 		public static final String DB_PROPERTY = "--db-property"; // bash-completion:option // help: name and value
   171 		public static final String DB_PROPERTY = "--db-property"; // bash-completion:option // help: name and value
   162 		public static final String SQL = "--sql"; // bash-completion:option // help: SQL query/command
   172 		public static final String SQL = "--sql"; // bash-completion:option // help: SQL query/command
       
   173 		public static final String SQL_IN = "--sql-in"; // bash-completion:option // help: SQL query/command
   163 		public static final String BATCH = "--batch"; // bash-completion:option // help: batch mode (no argument)
   174 		public static final String BATCH = "--batch"; // bash-completion:option // help: batch mode (no argument)
   164 		public static final String DATA = "--data"; // bash-completion:option // help: list of ordinal parameters
   175 		public static final String DATA = "--data"; // bash-completion:option // help: list of ordinal parameters
   165 		public static final String DATA_NAMED = "--data-named"; // bash-completion:option // help: list of named parameters
   176 		public static final String DATA_NAMED = "--data-named"; // bash-completion:option // help: list of named parameters
   166 		public static final String NAME_PREFIX = "--name-prefix"; // bash-completion:option // help: parameter name prefix – regular expression
   177 		public static final String NAME_PREFIX = "--name-prefix"; // bash-completion:option // help: parameter name prefix – regular expression
   167 		public static final String NAME_SUFFIX = "--name-suffix"; // bash-completion:option // help: parameter name suffix – regular expression
   178 		public static final String NAME_SUFFIX = "--name-suffix"; // bash-completion:option // help: parameter name suffix – regular expression