new option --data-named (then follows name/value pairs without prefix/suffix) v_0
authorFrantišek Kučera <franta-hg@frantovo.cz>
Tue, 24 Dec 2013 12:05:05 +0100
branchv_0
changeset 52 e2ba2af0ef40
parent 51 6730214fab41
child 53 eb30ad93ca8b
new option --data-named (then follows name/value pairs without prefix/suffix)
java/sql-dk/src/info/globalcode/sql/dk/CLIParser.java
java/sql-dk/test/info/globalcode/sql/dk/CLIParserTest.java
--- a/java/sql-dk/src/info/globalcode/sql/dk/CLIParser.java	Tue Dec 24 11:54:58 2013 +0100
+++ b/java/sql-dk/src/info/globalcode/sql/dk/CLIParser.java	Tue Dec 24 12:05:05 2013 +0100
@@ -85,29 +85,29 @@
 				case Tokens.DATA: // --data is the last option
 					for (i++; i < args.length; i++) {
 						arg = args[i];
-
-						if (arg.startsWith(options.getNamePrefix()) && arg.endsWith(options.getNameSuffix())) { // Named parameters:
-							String paramName = arg.substring(options.getNamePrefix().length(), arg.length() - options.getNameSuffix().length());
-							String paramValue = fetchNext(args, ++i);
-							options.addNamedParameter(new NamedParameter(paramName, paramValue, namedTypes.get(paramName)));
-						} else { // Numbered parameters:
-							Parameter parameter;
-							if (numberedTypes.isEmpty()) {
-								parameter = new Parameter(arg, null);
-							} else {
-								int paramIndex = options.getNumberedParameters().size();
-								int paramType;
-								try {
-									paramType = numberedTypes.get(paramIndex);
-								} catch (IndexOutOfBoundsException e) {
-									throw new CLIParserException("Missing type for parameter #" + paramIndex, e);
-								} catch (NullPointerException e) {
-									throw new CLIParserException("Invalid type definition for parameter #" + paramIndex, e);
-								}
-								parameter = new Parameter(arg, paramType);
+						Parameter parameter;
+						if (numberedTypes.isEmpty()) {
+							parameter = new Parameter(arg, null);
+						} else {
+							int paramIndex = options.getNumberedParameters().size();
+							int paramType;
+							try {
+								paramType = numberedTypes.get(paramIndex);
+							} catch (IndexOutOfBoundsException e) {
+								throw new CLIParserException("Missing type for parameter #" + paramIndex, e);
+							} catch (NullPointerException e) {
+								throw new CLIParserException("Invalid type definition for parameter #" + paramIndex, e);
 							}
-							options.addNumberedParameter(parameter);
+							parameter = new Parameter(arg, paramType);
 						}
+						options.addNumberedParameter(parameter);
+					}
+					break;
+				case Tokens.DATA_NAMED:
+					for (i++; i < args.length; i++) {
+						String paramName = args[i];
+						String paramValue = fetchNext(args, ++i);
+						options.addNamedParameter(new NamedParameter(paramName, paramValue, namedTypes.get(paramName)));
 					}
 					break;
 				case Tokens.FORMATTER:
@@ -156,6 +156,7 @@
 		public static final String SQL = "--sql";
 		public static final String BATCH = "--batch";
 		public static final String DATA = "--data";
+		public static final String DATA_NAMED = "--data-named";
 		public static final String NAME_PREFIX = "--name-prefix";
 		public static final String NAME_SUFFIX = "--name-suffix";
 		public static final String TYPES = "--types";
--- a/java/sql-dk/test/info/globalcode/sql/dk/CLIParserTest.java	Tue Dec 24 11:54:58 2013 +0100
+++ b/java/sql-dk/test/info/globalcode/sql/dk/CLIParserTest.java	Tue Dec 24 12:05:05 2013 +0100
@@ -19,7 +19,6 @@
 
 import info.globalcode.sql.dk.CLIParser.Tokens;
 import static info.globalcode.sql.dk.CLIParser.TYPE_NAME_SEPARATOR;
-import static info.globalcode.sql.dk.CLIOptions.DEFAULT_NAME_PREFIX;
 import java.sql.Types;
 import java.util.Collection;
 import static org.testng.Assert.*;
@@ -110,7 +109,7 @@
 		String[] args = new String[]{
 			Tokens.DB, DATABASE_NAME_1,
 			Tokens.SQL, SQL_1,
-			Tokens.DATA, DEFAULT_NAME_PREFIX + NAME_1, DATA_1, DEFAULT_NAME_PREFIX + NAME_2, DATA_2, DEFAULT_NAME_PREFIX + NAME_3, DATA_3};
+			Tokens.DATA_NAMED, NAME_1, DATA_1, NAME_2, DATA_2, NAME_3, DATA_3};
 		CLIOptions options = parser.parseOptions(args);
 		options.validate();
 
@@ -130,7 +129,7 @@
 			Tokens.SQL, SQL_1,
 			Tokens.NAME_PREFIX, "$",
 			Tokens.TYPES, " " + NAME_1 + TYPE_NAME_SEPARATOR + "int" + "," + NAME_3 + TYPE_NAME_SEPARATOR + "boolean",
-			Tokens.DATA, "$" + NAME_1, DATA_1, "$" + NAME_2, DATA_2, "$" + NAME_3, DATA_3};
+			Tokens.DATA_NAMED, NAME_1, DATA_1, NAME_2, DATA_2, NAME_3, DATA_3};
 		CLIOptions options = parser.parseOptions(args);
 		options.validate();