diff -r 6730214fab41 -r e2ba2af0ef40 java/sql-dk/src/info/globalcode/sql/dk/CLIParser.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";