/** * A static factory of positional {@link ParsedParameters} instances. * The count given in the argument must indicate how many positional * parameters are available in the statement. * * @param count the number of positional parameters in statement * @return New {@link ParsedParameters} instance */ public static ParsedParameters positional(int count) { return new ParsedParameters(true, Collections.nCopies(count, "?")); } }
/** * A static factory of named {@link ParsedParameters} instances. * List given in argument must contain parameter names from the * related statement. They must be bare names, free of SQL * variable processing syntax such as a prefixed colon or other * delimiters. * * @param names the parameter names from SQL statement * @return New {@link ParsedParameters} instance * @throws IllegalArgumentException if names list contains positional parameter */ public static ParsedParameters named(List<String> names) { if (names.contains(ParsedSql.POSITIONAL_PARAM)) { throw new IllegalArgumentException("Named parameters " + "list must not contain positional parameter " + "\"" + ParsedSql.POSITIONAL_PARAM + "\""); } return new ParsedParameters(false, names); }
/** * @return the finalized {@link ParsedSql} object. */ public ParsedSql build() { if (positional && named) { throw new UnableToExecuteStatementException( "Cannot mix named and positional parameters in a SQL statement: " + parameterNames); } ParsedParameters parameters = new ParsedParameters(positional, parameterNames); return new ParsedSql(sql.toString(), parameters); } }
private ParsedParameters positionalParams(int size) { String[] names = new String[size]; Arrays.fill(names, "?"); return new ParsedParameters(true, Arrays.asList(names)); }
private ParsedParameters namedParams(String... names) { return new ParsedParameters(false, Arrays.asList(names)); }
/** * @return the finalized {@link ParsedSql} object. */ public ParsedSql build() { if (positional && named) { throw new UnableToExecuteStatementException( "Cannot mix named and positional parameters in a SQL statement: " + parameterNames); } ParsedParameters parameters = new ParsedParameters(positional, parameterNames); return new ParsedSql(sql.toString(), parameters); } }