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